2025-08-05 13:24:21
|
Before Width: | Height: | Size: 448 KiB |
|
Before Width: | Height: | Size: 950 KiB |
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -161,10 +161,10 @@
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -285,7 +285,7 @@
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -514,10 +514,10 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -641,9 +641,9 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
@@ -826,11 +826,126 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section class="mt-10 prose dark:prose-invert">
|
||||
<p class="py-8 border-t">
|
||||
<em>There are no articles to list here yet.</em>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/projects/embedded/pet_feeder/" class="min-w-full">
|
||||
|
||||
<div class="min-h-full border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
|
||||
|
||||
<div class="w-full thumbnail_card nozoom" style="background-image:url(/projects/embedded/pet_feeder/feature_hu_220bc25b73a6b8fe.jpg);"></div>
|
||||
|
||||
|
||||
|
||||
<div class="px-6 py-4">
|
||||
|
||||
|
||||
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
|
||||
href="/projects/embedded/pet_feeder/">A pet feeder</div>
|
||||
|
||||
|
||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>1783 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">9 mins</span>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="px-6 pt-4 pb-2">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
public/projects/embedded/pet_feeder/Pic/backend.png
Normal file
|
After Width: | Height: | Size: 324 KiB |
|
After Width: | Height: | Size: 141 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 54 KiB |
BIN
public/projects/embedded/pet_feeder/Pic/blockdiagram.png
Normal file
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 164 KiB |
|
After Width: | Height: | Size: 139 KiB |
BIN
public/projects/embedded/pet_feeder/Pic/board2D.png
Normal file
|
After Width: | Height: | Size: 616 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 304 KiB |
|
After Width: | Height: | Size: 495 KiB |
|
After Width: | Height: | Size: 441 KiB |
BIN
public/projects/embedded/pet_feeder/Pic/board3D.png
Normal file
|
After Width: | Height: | Size: 528 KiB |
|
After Width: | Height: | Size: 560 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 503 KiB |
|
After Width: | Height: | Size: 314 KiB |
BIN
public/projects/embedded/pet_feeder/Pic/dashboard.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
BIN
public/projects/embedded/pet_feeder/Pic/finalproject.jpg
Normal file
|
After Width: | Height: | Size: 5.9 MiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 17 KiB |
BIN
public/projects/embedded/pet_feeder/Pic/pcbbottom.jpg
Normal file
|
After Width: | Height: | Size: 3.4 MiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 27 KiB |
BIN
public/projects/embedded/pet_feeder/Pic/pcbtop.jpg
Normal file
|
After Width: | Height: | Size: 4.3 MiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 145 KiB |
BIN
public/projects/embedded/pet_feeder/Pic/thermal.jpg
Normal file
|
After Width: | Height: | Size: 4.0 MiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 13 KiB |
BIN
public/projects/embedded/pet_feeder/feature.jpg
Normal file
|
After Width: | Height: | Size: 5.9 MiB |
|
After Width: | Height: | Size: 15 KiB |
BIN
public/projects/embedded/pet_feeder/finalproject.jpg
Normal file
|
After Width: | Height: | Size: 5.9 MiB |
1487
public/projects/embedded/pet_feeder/index.html
Normal file
13
public/projects/embedded/pet_feeder/index.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>A pet feeder on SWangNice</title>
|
||||
<link>http://localhost:1313/projects/embedded/pet_feeder/</link>
|
||||
<description>Recent content in A pet feeder on SWangNice</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en</language>
|
||||
<copyright>© 2025 SWang</copyright>
|
||||
<lastBuildDate>Fri, 20 Sep 2024 04:17:50 +0000</lastBuildDate><atom:link href="http://localhost:1313/projects/embedded/pet_feeder/index.xml" rel="self" type="application/rss+xml" />
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -1,10 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>http://localhost:1313/projects/self_host/stock_bot/</title>
|
||||
<link rel="canonical" href="http://localhost:1313/projects/self_host/stock_bot/">
|
||||
<title>http://localhost:1313/projects/embedded/pet_feeder/</title>
|
||||
<link rel="canonical" href="http://localhost:1313/projects/embedded/pet_feeder/">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url=http://localhost:1313/projects/self_host/stock_bot/">
|
||||
<meta http-equiv="refresh" content="0; url=http://localhost:1313/projects/embedded/pet_feeder/">
|
||||
</head>
|
||||
</html>
|
||||
1536
public/projects/embedded/pet_feeder/readme/index.html
Normal file
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -165,10 +165,10 @@ Idea, Ongoing, Improving, Archived: These tags indicate the current state of a p
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -289,7 +289,7 @@ Idea, Ongoing, Improving, Archived: These tags indicate the current state of a p
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -588,10 +588,10 @@ Idea, Ongoing, Improving, Archived: These tags indicate the current state of a p
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -715,9 +715,9 @@ Idea, Ongoing, Improving, Archived: These tags indicate the current state of a p
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
|
||||
|
Before Width: | Height: | Size: 249 KiB |
|
Before Width: | Height: | Size: 967 KiB |
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -163,10 +163,10 @@ A collection on GitHub selfh.st ❓ Why Self-Host? # I enjoy automating tasks an
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -287,7 +287,7 @@ A collection on GitHub selfh.st ❓ Why Self-Host? # I enjoy automating tasks an
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -586,10 +586,10 @@ A collection on GitHub selfh.st ❓ Why Self-Host? # I enjoy automating tasks an
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -713,9 +713,9 @@ A collection on GitHub selfh.st ❓ Why Self-Host? # I enjoy automating tasks an
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
@@ -1145,136 +1145,6 @@ Income Goals:
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="px-6 pt-4 pb-2">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/projects/self_host/stock_bot/" class="min-w-full">
|
||||
|
||||
<div class="min-h-full border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
|
||||
|
||||
<div class="w-full thumbnail_card nozoom" style="background-image:url(/projects/self_host/stock_bot/feature_hu_a34f2b6ec6aba749.png);"></div>
|
||||
|
||||
|
||||
|
||||
<div class="px-6 py-4">
|
||||
|
||||
|
||||
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
|
||||
href="/projects/self_host/stock_bot/">StockBot</div>
|
||||
|
||||
|
||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>142 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/private/",'_self');return false;">
|
||||
<span class="flex" style="cursor: pointer;">
|
||||
<span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||||
Private
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/ongoing/",'_self');return false;">
|
||||
<span class="flex" style="cursor: pointer;">
|
||||
<span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||||
Ongoing
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/original/",'_self');return false;">
|
||||
<span class="flex" style="cursor: pointer;">
|
||||
<span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||||
Original
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span style="margin-top:0.5rem" class="mr-2" onclick="window.open("/tags/ai/",'_self');return false;">
|
||||
<span class="flex" style="cursor: pointer;">
|
||||
<span class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||||
AI
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -78,6 +78,9 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<meta property="article:modified_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/02_nas/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
@@ -112,7 +115,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
|
||||
"mainEntityOfPage": "true",
|
||||
"wordCount": "234"
|
||||
"wordCount": "260"
|
||||
}]
|
||||
</script>
|
||||
|
||||
@@ -195,10 +198,10 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -319,7 +322,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -548,10 +551,10 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -675,9 +678,9 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
@@ -849,7 +852,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>234 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">2 mins</span>
|
||||
<span>260 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">2 mins</span>
|
||||
|
||||
|
||||
|
||||
@@ -1015,6 +1018,33 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
@@ -1058,7 +1088,7 @@ while true; do
|
||||
ping -c 1 <ip address> > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
pkill -f autossh
|
||||
autossh -M 0 -f -N -R 0.0.0.0:9000:localhost:1313 <ip address>
|
||||
autossh -M 0 -f -N -R 0.0.0.0:1313:localhost:1313 <ip address>
|
||||
fi
|
||||
sleep 60
|
||||
done
|
||||
@@ -1080,12 +1110,16 @@ done
|
||||
server_name www.<your domain> <your domain>;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:9000;
|
||||
proxy_pass http://localhost:1313;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
</code></pre><p>Then, link the config file to <code>sites-enabled</code>, check and reload the Nginx configuration:</p>
|
||||
<pre tabindex="0"><code>ln -s /etc/nginx/sites-available/<your config file> /etc/nginx/sites-enabled/
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
</code></pre><p>To obtain a security certificate, use the certbot:</p>
|
||||
<pre tabindex="0"><code>sudo apt update
|
||||
sudo apt install certbot python3-certbot-nginx
|
||||
@@ -1132,6 +1166,33 @@ sudo certbot --nginx -d swangnice.cn
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -77,6 +77,9 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
<meta property="article:modified_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
@@ -110,7 +113,7 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
|
||||
|
||||
"mainEntityOfPage": "true",
|
||||
"wordCount": "122"
|
||||
"wordCount": "117"
|
||||
}]
|
||||
</script>
|
||||
|
||||
@@ -193,10 +196,10 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -317,7 +320,7 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -546,10 +549,10 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -673,9 +676,9 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
@@ -847,7 +850,7 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>122 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
<span>117 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
|
||||
|
||||
|
||||
@@ -1011,6 +1014,33 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
@@ -1035,8 +1065,7 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
<p>Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring drive health a hassle. That was a big deal-breaker for me.</p>
|
||||
<p>Still, none of the other options really fit my expectations either. One day, I might just go all-in and make my own enclosure—design the PCB, write the firmware, the whole deal. Maybe not today… but someday.</p>
|
||||
<pre tabindex="0"><code>diskutil list
|
||||
</code></pre><p>Solution: HFS+ + SMB3.0, 客户端设置“延迟加载目录”或“按需索引”</p>
|
||||
<p><code>diskutil list</code></p>
|
||||
</code></pre><p><code>diskutil list</code></p>
|
||||
<pre tabindex="0"><code>sudo smartctl -a /dev/disk2
|
||||
</code></pre><p><code>brew install smartmontools</code></p>
|
||||
|
||||
@@ -1081,6 +1110,33 @@ Even worse, it doesn’t support S.M.A.R.T passthrough, which makes monitoring d
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -68,11 +68,10 @@
|
||||
<meta property="og:site_name" content="SWangNice">
|
||||
<meta property="og:title" content="My Own Code Vault: Gitea on Mac Mini">
|
||||
<meta property="og:description" content="Install dependence of gitea:
|
||||
brew install git brew install gitea Start the configuration page of Gitea:
|
||||
gitea web Install MySQL:
|
||||
brew install git brew install gitea The database # Install MySQL:
|
||||
brew install mysql brew services start mysql Login MySQL and create the database and user:
|
||||
mysql -u root Then, execute:
|
||||
CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'gitea'@'localhost' IDENTIFIED BY '<yourpassword>'; GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost'; FLUSH PRIVILEGES; CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER ‘gitea’@’localhost’ IDENTIFIED BY ‘gitea’; GRANT ALL PRIVILEGES ON gitea.* TO ‘gitea’@’localhost’; FLUSH PRIVILEGES;">
|
||||
CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'gitea'@'localhost' IDENTIFIED BY '<yourpassword>'; GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost'; FLUSH PRIVILEGES; Config the Gitea # Start the configuration page of Gitea:">
|
||||
<meta property="og:locale" content="en">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="projects">
|
||||
@@ -80,16 +79,18 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
<meta property="article:modified_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/02_nas/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="My Own Code Vault: Gitea on Mac Mini">
|
||||
<meta name="twitter:description" content="Install dependence of gitea:
|
||||
brew install git brew install gitea Start the configuration page of Gitea:
|
||||
gitea web Install MySQL:
|
||||
brew install git brew install gitea The database # Install MySQL:
|
||||
brew install mysql brew services start mysql Login MySQL and create the database and user:
|
||||
mysql -u root Then, execute:
|
||||
CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'gitea'@'localhost' IDENTIFIED BY '<yourpassword>'; GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost'; FLUSH PRIVILEGES; CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER ‘gitea’@’localhost’ IDENTIFIED BY ‘gitea’; GRANT ALL PRIVILEGES ON gitea.* TO ‘gitea’@’localhost’; FLUSH PRIVILEGES;">
|
||||
CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'gitea'@'localhost' IDENTIFIED BY '<yourpassword>'; GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost'; FLUSH PRIVILEGES; Config the Gitea # Start the configuration page of Gitea:">
|
||||
|
||||
|
||||
<script type="application/ld+json">
|
||||
@@ -100,7 +101,7 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
"name": "My Own Code Vault: Gitea on Mac Mini",
|
||||
"headline": "My Own Code Vault: Gitea on Mac Mini",
|
||||
|
||||
"abstract": "\u003cp\u003eInstall dependence of gitea:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003ebrew install git\nbrew install gitea\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eStart the configuration page of Gitea:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003egitea web\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eInstall MySQL:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003ebrew install mysql\nbrew services start mysql\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eLogin MySQL and create the database and user:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003emysql -u root\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eThen, execute:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003eCREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;\nCREATE USER \u0026#39;gitea\u0026#39;@\u0026#39;localhost\u0026#39; IDENTIFIED BY \u0026#39;\u0026lt;yourpassword\u0026gt;\u0026#39;;\nGRANT ALL PRIVILEGES ON gitea.* TO \u0026#39;gitea\u0026#39;@\u0026#39;localhost\u0026#39;;\nFLUSH PRIVILEGES;\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eCREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;\nCREATE USER \u0026lsquo;gitea\u0026rsquo;@\u0026rsquo;localhost\u0026rsquo; IDENTIFIED BY \u0026lsquo;gitea\u0026rsquo;;\nGRANT ALL PRIVILEGES ON gitea.* TO \u0026lsquo;gitea\u0026rsquo;@\u0026rsquo;localhost\u0026rsquo;;\nFLUSH PRIVILEGES;\u003c\/p\u003e",
|
||||
"abstract": "\u003cp\u003eInstall dependence of gitea:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003ebrew install git\nbrew install gitea\n\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2 class=\u0022relative group\u0022\u003eThe database \n \u003cdiv id=\u0022the-database\u0022 class=\u0022anchor\u0022\u003e\u003c\/div\u003e\n \n \u003cspan\n class=\u0022absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\u0022\u003e\n \u003ca class=\u0022group-hover:text-primary-300 dark:group-hover:text-neutral-700\u0022\n style=\u0022text-decoration-line: none !important;\u0022 href=\u0022#the-database\u0022 aria-label=\u0022Anchor\u0022\u003e#\u003c\/a\u003e\n \u003c\/span\u003e \n \n\u003c\/h2\u003e\n\u003cp\u003eInstall MySQL:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003ebrew install mysql\nbrew services start mysql\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eLogin MySQL and create the database and user:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003emysql -u root\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eThen, execute:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003eCREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;\nCREATE USER \u0026#39;gitea\u0026#39;@\u0026#39;localhost\u0026#39; IDENTIFIED BY \u0026#39;\u0026lt;yourpassword\u0026gt;\u0026#39;;\nGRANT ALL PRIVILEGES ON gitea.* TO \u0026#39;gitea\u0026#39;@\u0026#39;localhost\u0026#39;;\nFLUSH PRIVILEGES;\n\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2 class=\u0022relative group\u0022\u003eConfig the Gitea \n \u003cdiv id=\u0022config-the-gitea\u0022 class=\u0022anchor\u0022\u003e\u003c\/div\u003e\n \n \u003cspan\n class=\u0022absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\u0022\u003e\n \u003ca class=\u0022group-hover:text-primary-300 dark:group-hover:text-neutral-700\u0022\n style=\u0022text-decoration-line: none !important;\u0022 href=\u0022#config-the-gitea\u0022 aria-label=\u0022Anchor\u0022\u003e#\u003c\/a\u003e\n \u003c\/span\u003e \n \n\u003c\/h2\u003e\n\u003cp\u003eStart the configuration page of Gitea:\u003c\/p\u003e",
|
||||
"inLanguage": "en",
|
||||
"url" : "http:\/\/localhost:1313\/projects\/self_host\/mac_mini_m4\/03_gitea\/",
|
||||
"author" : {
|
||||
@@ -116,7 +117,7 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
|
||||
|
||||
"mainEntityOfPage": "true",
|
||||
"wordCount": "86"
|
||||
"wordCount": "161"
|
||||
}]
|
||||
</script>
|
||||
|
||||
@@ -199,10 +200,10 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -323,7 +324,7 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -552,10 +553,10 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -679,9 +680,9 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
@@ -853,7 +854,7 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>86 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
<span>161 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
|
||||
|
||||
|
||||
@@ -907,7 +908,81 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
|
||||
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">
|
||||
|
||||
|
||||
<div
|
||||
class="order-first lg:ml-auto px-0 lg:order-last ltr:lg:pl-8 rtl:lg:pr-8">
|
||||
<div class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky lg:top-10">
|
||||
|
||||
<details open id="TOCView"
|
||||
class="toc-right mt-0 overflow-y-scroll overscroll-contain scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600 rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 hidden lg:block">
|
||||
<summary
|
||||
class="block py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden">
|
||||
Table of Contents
|
||||
</summary>
|
||||
<div
|
||||
class="min-w-[220px] py-2 border-dotted ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<nav id="TableOfContents">
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li><a href="#the-database">The database</a></li>
|
||||
<li><a href="#config-the-gitea">Config the Gitea</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</details>
|
||||
<details class="toc-inside mt-0 overflow-hidden rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 lg:hidden">
|
||||
<summary
|
||||
class="py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden">
|
||||
Table of Contents
|
||||
</summary>
|
||||
<div
|
||||
class="py-2 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<nav id="TableOfContents">
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li><a href="#the-database">The database</a></li>
|
||||
<li><a href="#config-the-gitea">Config the Gitea</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<script>
|
||||
|
||||
var margin = 200;
|
||||
var marginError = 50;
|
||||
|
||||
(function () {
|
||||
var $window = $(window);
|
||||
var $toc = $('#TOCView');
|
||||
var tocHeight = $toc.height();
|
||||
|
||||
function onResize() {
|
||||
var windowAndMarginHeight = $window.height() - margin;
|
||||
if(tocHeight >= windowAndMarginHeight) {
|
||||
$toc.css("overflow-y", "scroll")
|
||||
$toc.css("max-height", (windowAndMarginHeight + marginError) + "px")
|
||||
} else {
|
||||
$toc.css("overflow-y", "hidden")
|
||||
$toc.css("max-height", "9999999px")
|
||||
}
|
||||
}
|
||||
|
||||
$window.on('resize', onResize);
|
||||
$(document).ready(onResize);
|
||||
})();
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="min-w-0 min-h-0 max-w-fit">
|
||||
|
||||
@@ -945,6 +1020,33 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
@@ -955,9 +1057,19 @@ CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE U
|
||||
<p>Install dependence of gitea:</p>
|
||||
<pre tabindex="0"><code>brew install git
|
||||
brew install gitea
|
||||
</code></pre><p>Start the configuration page of Gitea:</p>
|
||||
<pre tabindex="0"><code>gitea web
|
||||
</code></pre><p>Install MySQL:</p>
|
||||
</code></pre>
|
||||
|
||||
<h2 class="relative group">The database
|
||||
<div id="the-database" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#the-database" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Install MySQL:</p>
|
||||
<pre tabindex="0"><code>brew install mysql
|
||||
brew services start mysql
|
||||
</code></pre><p>Login MySQL and create the database and user:</p>
|
||||
@@ -967,10 +1079,29 @@ brew services start mysql
|
||||
CREATE USER 'gitea'@'localhost' IDENTIFIED BY '<yourpassword>';
|
||||
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
</code></pre><p>CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
CREATE USER ‘gitea’@’localhost’ IDENTIFIED BY ‘gitea’;
|
||||
GRANT ALL PRIVILEGES ON gitea.* TO ‘gitea’@’localhost’;
|
||||
FLUSH PRIVILEGES;</p>
|
||||
</code></pre>
|
||||
|
||||
<h2 class="relative group">Config the Gitea
|
||||
<div id="config-the-gitea" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#config-the-gitea" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Start the configuration page of Gitea:</p>
|
||||
<pre tabindex="0"><code>gitea web
|
||||
</code></pre><p>After filling all information it required, it will generate a config file, for me, it’s in<code>/opt/homebrew/var/gitea/custom/conf/app.ini</code>, then you can configure more details in this file. I strongly recommend close the public registration.</p>
|
||||
<p>🚫outdated – Use autossh to build the new connection</p>
|
||||
<pre tabindex="0"><code>autossh -M 0 -f -N \
|
||||
-i ~/.ssh/id_ed25519 \
|
||||
-o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" \
|
||||
-R 127.0.0.1:3000:localhost:3000 \
|
||||
-R 127.0.0.1:9000:localhost:1313 \
|
||||
root@<ip_address>
|
||||
</code></pre><p>✅ Now, I wrote a script to keep the connection alive, it contains some sensitive info like IP and ports, so I will not share it here.</p>
|
||||
|
||||
|
||||
|
||||
@@ -1013,6 +1144,33 @@ FLUSH PRIVILEGES;</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
@@ -1051,6 +1209,26 @@ FLUSH PRIVILEGES;</p>
|
||||
<div class="flex justify-between pt-3">
|
||||
<span>
|
||||
|
||||
<a class="flex group mr-3" href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
<span
|
||||
class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>←</span
|
||||
>
|
||||
<span
|
||||
class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>→</span
|
||||
>
|
||||
<span class="flex flex-col">
|
||||
<span
|
||||
class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500"
|
||||
>MCU Benchmark</span
|
||||
>
|
||||
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</span>
|
||||
<span>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -8,14 +8,14 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||
|
||||
<title>Showcases · SWangNice</title>
|
||||
<meta name="title" content="Showcases · SWangNice" />
|
||||
<title>MCU Benchmark · SWangNice</title>
|
||||
<meta name="title" content="MCU Benchmark · SWangNice" />
|
||||
|
||||
<meta name="description" content="My awesome website (English)" />
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="http://localhost:1313/projects/self_host/stock_bot/2_results/" />
|
||||
<link rel="canonical" href="http://localhost:1313/projects/self_host/mac_mini_m4/04_mcu_markbench/" />
|
||||
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.36c3cd7950e4533fa7da3150d972e3edf34d07f83c0264ff04cad0969dfdb3b8a7065b0ed6c730c6d34a7bad516cfc6f6a5917ab1fdb10b25f481f8a17b54c16.css"
|
||||
integrity="sha512-NsPNeVDkUz+n2jFQ2XLj7fNNB/g8AmT/BMrQlp39s7inBlsO1scwxtNKe61RbPxvalkXqx/bELJfSB+KF7VMFg==" />
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.3d98b0e3c7886b2be13facfb539c8f79843dd3cff84d1c41763deb363c668c308c7c7ac9ecb3923f8602e257866ff553de4228ff50492074acc6d07b3d232fb1.css"
|
||||
integrity="sha512-PZiw48eIayvhP6z7U5yPeYQ908/4TRxBdj3rNjxmjDCMfHrJ7LOSP4YC4leGb/VT3kIo/1BJIHSsxtB7PSMvsQ==" />
|
||||
|
||||
|
||||
<script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js"
|
||||
@@ -43,8 +43,8 @@
|
||||
|
||||
|
||||
|
||||
<script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.52b8d61b061c90a738102a0eac69eaa1479fdf5de882a0b0741d7515240617156a6c4477fcc91f9c962062804fe62d2932bb9f57d0aded208c762c2e1ed2e202.js"
|
||||
integrity="sha512-UrjWGwYckKc4ECoOrGnqoUef313ogqCwdB11FSQGFxVqbER3/MkfnJYgYoBP5i0pMrufV9Ct7SCMdiwuHtLiAg==" data-copy="Copy" data-copied="Copied"></script>
|
||||
<script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.f8f2cec11308434554dfdbe3a0963bc19265192ebb9e2d644f3f9250731c879dfb09b44d2d58fcd06e8a1c9051b57f594719b37d21689d366ffd2db050df40a0.js"
|
||||
integrity="sha512-+PLOwRMIQ0VU39vjoJY7wZJlGS67ni1kTz+SUHMch537CbRNLVj80G6KHJBRtX9ZRxmzfSFonTZv/S2wUN9AoA==" data-copy="Copy" data-copied="Copied"></script>
|
||||
|
||||
|
||||
|
||||
@@ -64,21 +64,25 @@
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="http://localhost:1313/projects/self_host/stock_bot/2_results/">
|
||||
<meta property="og:url" content="http://localhost:1313/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
<meta property="og:site_name" content="SWangNice">
|
||||
<meta property="og:title" content="Showcases">
|
||||
<meta property="og:description" content="My awesome website (English)">
|
||||
<meta property="og:title" content="MCU Benchmark">
|
||||
<meta property="og:description" content="swangnice/mcu-benchmark A markbench of MCUs to help to you choose the right one.">
|
||||
<meta property="og:locale" content="en">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="projects">
|
||||
<meta property="article:published_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="article:modified_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/stock_bot/01_todo/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/02_nas/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Showcases">
|
||||
<meta name="twitter:description" content="My awesome website (English)">
|
||||
<meta name="twitter:title" content="MCU Benchmark">
|
||||
<meta name="twitter:description" content="swangnice/mcu-benchmark A markbench of MCUs to help to you choose the right one.">
|
||||
|
||||
|
||||
<script type="application/ld+json">
|
||||
@@ -86,12 +90,12 @@
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"articleSection": "Projects",
|
||||
"name": "Showcases",
|
||||
"headline": "Showcases",
|
||||
|
||||
"name": "MCU Benchmark",
|
||||
"headline": "MCU Benchmark",
|
||||
|
||||
"abstract": "\u003ca id=\u0022gitea-557b8590fb1ca3d7d5e6d0761887bbe0\u0022 target=\u0022_blank\u0022 href=\u0022https:\/\/code.swangnice.cn\/swangnice\/mcu-benchmark\u0022 class=\u0022cursor-pointer\u0022\u003e\n \u003cdiv\n class=\u0022w-full md:w-auto pt-3 p-5 border border-neutral-200 dark:border-neutral-700 border rounded-md shadow-2xl\u0022\u003e\n\n \u003cdiv class=\u0022flex items-center\u0022\u003e\n \u003cspan class=\u0022text-2xl text-neutral-800 dark:text-neutral\u0022 style=\u0022margin-right:10px;\u0022\u003e\n \n\n \u003cspan class=\u0022relative block icon\u0022\u003e\n \u003csvg xmlns=\u0022http:\/\/www.w3.org\/2000\/svg\u0022 xml:space=\u0022preserve\u0022 viewBox=\u00225.67 143.05 628.65 387.55\u0022\u003e\u003cpath fill=\u0022currentColor\u0022 d=\u0022M115.912 143.075c-6.462 0-13.762.525-22.012 2.325-8.7 1.8-33.5 7.4-53.8 26.9C-4.9 212.4 6.6 276.2 8 285.8c1.7 11.7 6.9 44.2 31.7 72.5 45.8 56.1 144.4 54.8 144.4 54.8s12.1 28.9 30.6 55.5c25 33.1 50.7 58.9 75.7 62 63 0 188.9-.1 188.9-.1s12 .1 28.3-10.3c14-8.5 26.5-23.4 26.5-23.4S547 483 565 451.5c5.5-9.7 10.1-19.1 14.1-28 0 0 55.2-117.1 55.2-231.1-1.1-34.5-9.6-40.6-11.6-42.6-4.1-4.1-9.6-4-9.6-4s-117.2 6.6-177.9 8c-13.267.3-26.433.597-39.5.697l.1 117.002s57.4 24.202 83.1 40.102c3.7 2.3 10.2 6.798 12.9 14.398 2.1 6.1 2 13.101-1 19.301l-61 126.9c-6.2 12.7-21.4 18.1-33.9 12l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5 21.2-17.9 33.8-11.8a5290.322 5290.322 0 0 0 27 12.954c0-36.449-.1-109.053-.1-109.053-29 .4-89.2-2.201-89.2-2.201s-141.4-7.1-156.8-8.5c-4.9-.3-10.525-.825-16.988-.825zm12.188 48.026s7.1 59.399 15.7 94.199c7.2 29.2 24.8 77.7 24.8 77.7s-26.1-3.1-43-9.1c-25.9-8.5-36.9-18.7-36.9-18.7S69.6 321.8 60 295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5 38.5-30c13.8-3.7 31-3.1 31-3.1z\u0022\/\u003e\u003cpath fill=\u0022currentColor\u0022 d=\u0022M326.8 380.1c-8.2.1-15.4 5.8-17.3 13.8-1.9 8 2 16.3 9.1 20 7.7 4 17.5 1.8 22.7-5.4 5.1-7.1 4.3-16.9-1.8-23.1l24-49.1c1.5.1 3.7.2 6.2-.5 4.1-.9 7.1-3.6 7.1-3.6 4.2 1.8 8.6 3.8 13.2 6.1 4.8 2.4 9.3 4.9 13.4 7.3.9.5 1.8 1.1 2.8 1.9 1.6 1.3 3.4 3.1 4.7 5.5 1.9 5.5-1.9 14.9-1.9 14.9-2.3 7.6-18.4 40.6-18.4 40.6-8.1-.2-15.3 5-17.7 12.5-2.6 8.1 1.1 17.3 8.9 21.3 7.8 4 17.4 1.7 22.5-5.3 5-6.8 4.6-16.3-1.1-22.6 1.9-3.7 3.7-7.4 5.6-11.3 5-10.4 13.5-30.4 13.5-30.4.9-1.7 5.7-10.3 2.7-21.3-2.5-11.4-12.6-16.7-12.6-16.7-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3 4.7-9.7 9.4-19.3 14.1-29-4.1-2-8.1-4-12.2-6.1-4.8 9.8-9.7 19.7-14.5 29.5-6.7-.1-12.9 3.5-16.1 9.4-3.4 6.3-2.7 14.1 1.9 19.8l-24.6 50.4z\u0022\/\u003e\u003c\/svg\u003e\n \u003c\/span\u003e\n\n\n \u003c\/span\u003e\n \u003cdiv\n id=\u0022gitea-557b8590fb1ca3d7d5e6d0761887bbe0-full_name\u0022\n class=\u0022m-0 font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral\u0022\u003e\n swangnice\/mcu-benchmark\n \u003c\/div\u003e\n \u003c\/div\u003e\n\n \u003cp id=\u0022gitea-557b8590fb1ca3d7d5e6d0761887bbe0-description\u0022 class=\u0022m-0 mt-2 text-md text-neutral-800 dark:text-neutral\u0022\u003e\n A markbench of MCUs to help to you choose the right one.\n \u003c\/p\u003e",
|
||||
"inLanguage": "en",
|
||||
"url" : "http:\/\/localhost:1313\/projects\/self_host\/stock_bot\/2_results\/",
|
||||
"url" : "http:\/\/localhost:1313\/projects\/self_host\/mac_mini_m4\/04_mcu_markbench\/",
|
||||
"author" : {
|
||||
"@type": "Person",
|
||||
"name": "SWang"
|
||||
@@ -105,7 +109,7 @@
|
||||
|
||||
|
||||
"mainEntityOfPage": "true",
|
||||
"wordCount": "0"
|
||||
"wordCount": "217"
|
||||
}]
|
||||
</script>
|
||||
|
||||
@@ -188,10 +192,10 @@
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -202,7 +206,7 @@
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a href="/notes/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/notes/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Notes">
|
||||
Notes
|
||||
</a>
|
||||
<span>
|
||||
@@ -253,13 +257,57 @@
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/projects/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Projects
|
||||
</p>
|
||||
</a>
|
||||
<a href="/projects/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Projects">
|
||||
Projects
|
||||
</a>
|
||||
<span>
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<div class="absolute menuhide">
|
||||
<div class="pt-2 p-5 mt-2 rounded-xl backdrop-blur shadow-2xl">
|
||||
<div class="flex flex-col space-y-3">
|
||||
|
||||
<a href="/projects/embedded/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-sm" title="">
|
||||
Fancy Things on Boards
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="/projects/self_host/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-sm" title="">
|
||||
Self-host
|
||||
</p>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -268,7 +316,7 @@
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -497,10 +545,10 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -514,7 +562,7 @@
|
||||
<li class="mt-1">
|
||||
<a href="/notes/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Notes">
|
||||
Notes
|
||||
</p>
|
||||
<span>
|
||||
@@ -566,16 +614,57 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/projects/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/projects/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Projects">
|
||||
Projects
|
||||
</p>
|
||||
<span>
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/projects/embedded/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-small" title="">
|
||||
Fancy Things on Boards
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/projects/self_host/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-small" title="">
|
||||
Self-host
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mb-2"></li>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -583,9 +672,9 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
@@ -714,7 +803,7 @@
|
||||
<header id="single_header" class="mt-5 max-w-prose">
|
||||
|
||||
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
|
||||
Showcases
|
||||
MCU Benchmark
|
||||
</h1>
|
||||
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
||||
|
||||
@@ -736,7 +825,11 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -753,6 +846,8 @@
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>217 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">2 mins</span>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -805,7 +900,79 @@
|
||||
|
||||
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">
|
||||
|
||||
|
||||
<div
|
||||
class="order-first lg:ml-auto px-0 lg:order-last ltr:lg:pl-8 rtl:lg:pr-8">
|
||||
<div class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky lg:top-10">
|
||||
|
||||
<details open id="TOCView"
|
||||
class="toc-right mt-0 overflow-y-scroll overscroll-contain scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600 rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 hidden lg:block">
|
||||
<summary
|
||||
class="block py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden">
|
||||
Table of Contents
|
||||
</summary>
|
||||
<div
|
||||
class="min-w-[220px] py-2 border-dotted ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<nav id="TableOfContents">
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li><a href="#how-to-use">How to use?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</details>
|
||||
<details class="toc-inside mt-0 overflow-hidden rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 lg:hidden">
|
||||
<summary
|
||||
class="py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden">
|
||||
Table of Contents
|
||||
</summary>
|
||||
<div
|
||||
class="py-2 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<nav id="TableOfContents">
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li><a href="#how-to-use">How to use?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<script>
|
||||
|
||||
var margin = 200;
|
||||
var marginError = 50;
|
||||
|
||||
(function () {
|
||||
var $window = $(window);
|
||||
var $toc = $('#TOCView');
|
||||
var tocHeight = $toc.height();
|
||||
|
||||
function onResize() {
|
||||
var windowAndMarginHeight = $window.height() - margin;
|
||||
if(tocHeight >= windowAndMarginHeight) {
|
||||
$toc.css("overflow-y", "scroll")
|
||||
$toc.css("max-height", (windowAndMarginHeight + marginError) + "px")
|
||||
} else {
|
||||
$toc.css("overflow-y", "hidden")
|
||||
$toc.css("max-height", "9999999px")
|
||||
}
|
||||
}
|
||||
|
||||
$window.on('resize', onResize);
|
||||
$(document).ready(onResize);
|
||||
})();
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="min-w-0 min-h-0 max-w-fit">
|
||||
|
||||
@@ -814,15 +981,15 @@
|
||||
|
||||
<summary
|
||||
class="py-1 text-lg font-semibold cursor-pointer bg-primary-200 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-primary-800 dark:text-neutral-100">
|
||||
StockBot - This article is part of a series.
|
||||
My First Server in Room - This article is part of a series.
|
||||
</summary>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/stock_bot/01_todo/">
|
||||
Part 1: TODO List
|
||||
<a href="/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
Part 1: Website Setup
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -830,7 +997,43 @@
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 2: This Article
|
||||
<a href="/projects/self_host/mac_mini_m4/02_nas/">
|
||||
Part 2: NAS: Network Attachment Storage
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
Part 3: My Own Code Vault: Gitea on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 4: This Article
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -841,7 +1044,131 @@
|
||||
|
||||
|
||||
<div class="article-content max-w-prose mb-20">
|
||||
|
||||
<a id="gitea-557b8590fb1ca3d7d5e6d0761887bbe0" target="_blank" href="https://code.swangnice.cn/swangnice/mcu-benchmark" class="cursor-pointer">
|
||||
<div
|
||||
class="w-full md:w-auto pt-3 p-5 border border-neutral-200 dark:border-neutral-700 border rounded-md shadow-2xl">
|
||||
|
||||
<div class="flex items-center">
|
||||
<span class="text-2xl text-neutral-800 dark:text-neutral" style="margin-right:10px;">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="5.67 143.05 628.65 387.55"><path fill="currentColor" d="M115.912 143.075c-6.462 0-13.762.525-22.012 2.325-8.7 1.8-33.5 7.4-53.8 26.9C-4.9 212.4 6.6 276.2 8 285.8c1.7 11.7 6.9 44.2 31.7 72.5 45.8 56.1 144.4 54.8 144.4 54.8s12.1 28.9 30.6 55.5c25 33.1 50.7 58.9 75.7 62 63 0 188.9-.1 188.9-.1s12 .1 28.3-10.3c14-8.5 26.5-23.4 26.5-23.4S547 483 565 451.5c5.5-9.7 10.1-19.1 14.1-28 0 0 55.2-117.1 55.2-231.1-1.1-34.5-9.6-40.6-11.6-42.6-4.1-4.1-9.6-4-9.6-4s-117.2 6.6-177.9 8c-13.267.3-26.433.597-39.5.697l.1 117.002s57.4 24.202 83.1 40.102c3.7 2.3 10.2 6.798 12.9 14.398 2.1 6.1 2 13.101-1 19.301l-61 126.9c-6.2 12.7-21.4 18.1-33.9 12l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5 21.2-17.9 33.8-11.8a5290.322 5290.322 0 0 0 27 12.954c0-36.449-.1-109.053-.1-109.053-29 .4-89.2-2.201-89.2-2.201s-141.4-7.1-156.8-8.5c-4.9-.3-10.525-.825-16.988-.825zm12.188 48.026s7.1 59.399 15.7 94.199c7.2 29.2 24.8 77.7 24.8 77.7s-26.1-3.1-43-9.1c-25.9-8.5-36.9-18.7-36.9-18.7S69.6 321.8 60 295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5 38.5-30c13.8-3.7 31-3.1 31-3.1z"/><path fill="currentColor" d="M326.8 380.1c-8.2.1-15.4 5.8-17.3 13.8-1.9 8 2 16.3 9.1 20 7.7 4 17.5 1.8 22.7-5.4 5.1-7.1 4.3-16.9-1.8-23.1l24-49.1c1.5.1 3.7.2 6.2-.5 4.1-.9 7.1-3.6 7.1-3.6 4.2 1.8 8.6 3.8 13.2 6.1 4.8 2.4 9.3 4.9 13.4 7.3.9.5 1.8 1.1 2.8 1.9 1.6 1.3 3.4 3.1 4.7 5.5 1.9 5.5-1.9 14.9-1.9 14.9-2.3 7.6-18.4 40.6-18.4 40.6-8.1-.2-15.3 5-17.7 12.5-2.6 8.1 1.1 17.3 8.9 21.3 7.8 4 17.4 1.7 22.5-5.3 5-6.8 4.6-16.3-1.1-22.6 1.9-3.7 3.7-7.4 5.6-11.3 5-10.4 13.5-30.4 13.5-30.4.9-1.7 5.7-10.3 2.7-21.3-2.5-11.4-12.6-16.7-12.6-16.7-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3 4.7-9.7 9.4-19.3 14.1-29-4.1-2-8.1-4-12.2-6.1-4.8 9.8-9.7 19.7-14.5 29.5-6.7-.1-12.9 3.5-16.1 9.4-3.4 6.3-2.7 14.1 1.9 19.8l-24.6 50.4z"/></svg>
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
<div
|
||||
id="gitea-557b8590fb1ca3d7d5e6d0761887bbe0-full_name"
|
||||
class="m-0 font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral">
|
||||
swangnice/mcu-benchmark
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p id="gitea-557b8590fb1ca3d7d5e6d0761887bbe0-description" class="m-0 mt-2 text-md text-neutral-800 dark:text-neutral">
|
||||
A markbench of MCUs to help to you choose the right one.
|
||||
</p>
|
||||
|
||||
<div class="m-0 mt-2 flex items-center">
|
||||
|
||||
<span class="mr-1 inline-block h-3 w-3 rounded-full"
|
||||
style="background-color: #3572A5"></span>
|
||||
<div class="m-0 mr-5 text-md text-neutral-800 dark:text-neutral">
|
||||
Python
|
||||
</div>
|
||||
|
||||
<span class="text-md mr-1 text-neutral-800 dark:text-neutral">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z"/></svg>
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
<div id="gitea-557b8590fb1ca3d7d5e6d0761887bbe0-stars_count" class="m-0 mr-5 text-md text-neutral-800 dark:text-neutral">
|
||||
0
|
||||
</div>
|
||||
|
||||
<span class="text-md mr-1 text-neutral-800 dark:text-neutral">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM248 432c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z"/></svg>
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
<div id="gitea-557b8590fb1ca3d7d5e6d0761887bbe0-forks_count" class="m-0 mr-5 text-md text-neutral-800 dark:text-neutral">
|
||||
0
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
fetch("https://code.swangnice.cn/api/v1/repos/swangnice/mcu-benchmark", {
|
||||
headers: new Headers({
|
||||
'User-agent': 'Mozilla/4.0 Custom User Agent'
|
||||
})
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
document.getElementById('gitea-557b8590fb1ca3d7d5e6d0761887bbe0-full_name').innerHTML = data.full_name;
|
||||
document.getElementById('gitea-557b8590fb1ca3d7d5e6d0761887bbe0-description').innerHTML = data.description;
|
||||
document.getElementById('gitea-557b8590fb1ca3d7d5e6d0761887bbe0-stars_count').innerHTML = data.stars_count;
|
||||
document.getElementById('gitea-557b8590fb1ca3d7d5e6d0761887bbe0-forks_count').innerHTML = data.forks_count;
|
||||
})
|
||||
.catch(error => console.error(error))
|
||||
</script>
|
||||
</a>
|
||||
<p>This is a personal project to benchmark various MCUs (Microcontroller Units) using FastAPI and SQLite for the backend and Vue.js for the frontend. The project allows you to add, list, and compare different MCUs.</p>
|
||||
<p>You can access the project at <a href="https://mcubenchmark.swangnice.cn" target="_blank">HERE</a>.</p>
|
||||
<pre tabindex="0"><code>mcubenchmark/
|
||||
├── backend/
|
||||
│ ├── main.py # FastAPI Entrance
|
||||
│ ├── database.py # SQLite Base operations
|
||||
│ ├── admin.py # SQLite CURD
|
||||
│ └── mcu.db
|
||||
├── frontend/
|
||||
│ ├── public/
|
||||
│ ├── src/
|
||||
│ │ ├── views/
|
||||
│ │ │ ├── ListView.vue
|
||||
│ │ │ ├── DetailView.vue
|
||||
│ │ │ └── CompareView.vue
|
||||
│ │ ├── App.vue
|
||||
│ │ └── main.js
|
||||
├── README.md
|
||||
└── requirements.txt
|
||||
</code></pre>
|
||||
|
||||
<h2 class="relative group">How to use?
|
||||
<div id="how-to-use" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#how-to-use" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Clone this repo, and install the requirements:</p>
|
||||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> mcu-benchmark
|
||||
</span></span><span class="line"><span class="cl">conda create -n mcu-benchmark
|
||||
</span></span><span class="line"><span class="cl">conda activate mcu-benchmark
|
||||
</span></span><span class="line"><span class="cl">pip install -r requirements.txt
|
||||
</span></span></code></pre></div><p>Then, start the backend server:</p>
|
||||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> backend
|
||||
</span></span><span class="line"><span class="cl">uvicorn main:app --host 0.0.0.0 --port <span class="m">3010</span> --reload
|
||||
</span></span></code></pre></div><p>Use <code>admin.py</code> and follow the instructions to add MCUs to the database:</p>
|
||||
<pre tabindex="0"><code>python admin.py
|
||||
</code></pre><p>Now, you can access the backend API at <code>http://localhost:3010/api/mcus</code>.</p>
|
||||
<p>Run the frontend (before this step, you need to install Node.js, npm and other dependencies):</p>
|
||||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> backend
|
||||
</span></span><span class="line"><span class="cl">npm run dev
|
||||
</span></span></code></pre></div><p>Now, you can access the frontend at <code>http://localhost:<port></code>. The default port of Vite is <code>5173</code>.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -854,15 +1181,15 @@
|
||||
|
||||
<summary
|
||||
class="py-1 text-lg font-semibold cursor-pointer bg-primary-200 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-primary-800 dark:text-neutral-100">
|
||||
StockBot - This article is part of a series.
|
||||
My First Server in Room - This article is part of a series.
|
||||
</summary>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/stock_bot/01_todo/">
|
||||
Part 1: TODO List
|
||||
<a href="/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
Part 1: Website Setup
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -870,7 +1197,43 @@
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 2: This Article
|
||||
<a href="/projects/self_host/mac_mini_m4/02_nas/">
|
||||
Part 2: NAS: Network Attachment Storage
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
Part 3: My Own Code Vault: Gitea on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 4: This Article
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -891,8 +1254,8 @@
|
||||
|
||||
|
||||
<script>
|
||||
var oid = "views_projects\/self_host\/stock_bot\/2_results.md"
|
||||
var oid_likes = "likes_projects\/self_host\/stock_bot\/2_results.md"
|
||||
var oid = "views_projects\/self_host\/mac_mini_m4\/04_mcu_markbench.md"
|
||||
var oid_likes = "likes_projects\/self_host\/mac_mini_m4\/04_mcu_markbench.md"
|
||||
</script>
|
||||
|
||||
|
||||
@@ -912,14 +1275,34 @@
|
||||
<div class="flex justify-between pt-3">
|
||||
<span>
|
||||
|
||||
</span>
|
||||
<span>
|
||||
|
||||
<a class="flex text-right group ml-3" href="/projects/self_host/stock_bot/01_todo/">
|
||||
<a class="flex group mr-3" href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
<span
|
||||
class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>←</span
|
||||
>
|
||||
<span
|
||||
class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>→</span
|
||||
>
|
||||
<span class="flex flex-col">
|
||||
<span
|
||||
class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500"
|
||||
>TODO List</span
|
||||
>My Own PDF Shelf: pdfding on Mac Mini</span
|
||||
>
|
||||
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</span>
|
||||
<span>
|
||||
|
||||
<a class="flex text-right group ml-3" href="/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
<span class="flex flex-col">
|
||||
<span
|
||||
class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500"
|
||||
>My Own Code Vault: Gitea on Mac Mini</span
|
||||
>
|
||||
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
@@ -945,7 +1328,13 @@
|
||||
</footer>
|
||||
</article>
|
||||
|
||||
|
||||
<div id="top-scroller" class="pointer-events-none absolute top-[110vh] bottom-0 w-12 ltr:right-0 rtl:left-0">
|
||||
<a href="#the-top"
|
||||
class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
||||
aria-label="Scroll to top" title="Scroll to top">
|
||||
↑
|
||||
</a>
|
||||
</div>
|
||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
||||
|
||||
|
||||
@@ -955,7 +1344,7 @@
|
||||
|
||||
<li class="flex mb-1 ltr:text-right rtl:text-left sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0">
|
||||
<a class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2 flex items-center" href="/tags/"
|
||||
title="">
|
||||
title="Tags">
|
||||
|
||||
Tags
|
||||
</a>
|
||||
@@ -977,6 +1366,14 @@
|
||||
|
||||
|
||||
|
||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener noreferrer">
|
||||
苏ICP备2024145451号
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -8,16 +8,14 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||
|
||||
<title>StockBot · SWangNice</title>
|
||||
<meta name="title" content="StockBot · SWangNice" />
|
||||
<title>My Own PDF Shelf: pdfding on Mac Mini · SWangNice</title>
|
||||
<meta name="title" content="My Own PDF Shelf: pdfding on Mac Mini · SWangNice" />
|
||||
|
||||
<meta name="description" content="My awesome website (English)" />
|
||||
<meta name="keywords" content="Private, Ongoing, Original, AI, " />
|
||||
|
||||
|
||||
<link rel="canonical" href="http://localhost:1313/projects/self_host/stock_bot/" />
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" href="/projects/self_host/stock_bot/index.xml" title="SWangNice" />
|
||||
<link rel="canonical" href="http://localhost:1313/projects/self_host/mac_mini_m4/05_pdf_shelf/" />
|
||||
|
||||
|
||||
|
||||
@@ -66,24 +64,57 @@
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="http://localhost:1313/projects/self_host/stock_bot/">
|
||||
<meta property="og:url" content="http://localhost:1313/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
<meta property="og:site_name" content="SWangNice">
|
||||
<meta property="og:title" content="StockBot">
|
||||
<meta property="og:description" content="This is a bot that assists in making daily index fund trading decisions.
|
||||
Introduction # This project was inspired by my mother. Over the course of ten years, she watched my father struggle in the stock market. From those hard lessons, she developed her own strategy—one that focuses on the predictable fluctuations in index fund values. Armed with nothing more than paper, a pen, and a calculator, she’s been able to achieve steady profits.">
|
||||
<meta property="og:title" content="My Own PDF Shelf: pdfding on Mac Mini">
|
||||
<meta property="og:description" content="PDFding is a self-hosted PDF library management system, which is perfect for managing my personal PDF collection. It allows me to organize, search, and read PDFs directly from my Mac Mini. Later, I will list a contents of my PDF library, if you need any of them, just email me. No commercial use, please.
|
||||
Install Docker and Prepare Directories # Download Docker Desktop, and install it.">
|
||||
<meta property="og:locale" content="en">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:image" content="http://localhost:1313/projects/self_host/stock_bot/feature.png">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="projects">
|
||||
<meta property="article:published_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="article:modified_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/02_nas/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:image" content="http://localhost:1313/projects/self_host/stock_bot/feature.png">
|
||||
<meta name="twitter:title" content="StockBot">
|
||||
<meta name="twitter:description" content="This is a bot that assists in making daily index fund trading decisions.
|
||||
Introduction # This project was inspired by my mother. Over the course of ten years, she watched my father struggle in the stock market. From those hard lessons, she developed her own strategy—one that focuses on the predictable fluctuations in index fund values. Armed with nothing more than paper, a pen, and a calculator, she’s been able to achieve steady profits.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="My Own PDF Shelf: pdfding on Mac Mini">
|
||||
<meta name="twitter:description" content="PDFding is a self-hosted PDF library management system, which is perfect for managing my personal PDF collection. It allows me to organize, search, and read PDFs directly from my Mac Mini. Later, I will list a contents of my PDF library, if you need any of them, just email me. No commercial use, please.
|
||||
Install Docker and Prepare Directories # Download Docker Desktop, and install it.">
|
||||
|
||||
|
||||
|
||||
<script type="application/ld+json">
|
||||
[{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"articleSection": "Projects",
|
||||
"name": "My Own PDF Shelf: pdfding on Mac Mini",
|
||||
"headline": "My Own PDF Shelf: pdfding on Mac Mini",
|
||||
|
||||
"abstract": "\u003cp\u003ePDFding is a self-hosted PDF library management system, which is perfect for managing my personal PDF collection. It allows me to organize, search, and read PDFs directly from my Mac Mini. Later, I will list a contents of my PDF library, if you need any of them, just email me. No commercial use, please.\u003c\/p\u003e\n\n\n\u003ch2 class=\u0022relative group\u0022\u003eInstall Docker and Prepare Directories \n \u003cdiv id=\u0022install-docker-and-prepare-directories\u0022 class=\u0022anchor\u0022\u003e\u003c\/div\u003e\n \n \u003cspan\n class=\u0022absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\u0022\u003e\n \u003ca class=\u0022group-hover:text-primary-300 dark:group-hover:text-neutral-700\u0022\n style=\u0022text-decoration-line: none !important;\u0022 href=\u0022#install-docker-and-prepare-directories\u0022 aria-label=\u0022Anchor\u0022\u003e#\u003c\/a\u003e\n \u003c\/span\u003e \n \n\u003c\/h2\u003e\n\u003cp\u003eDownload \u003ca href=\u0022https:\/\/www.docker.com\/products\/docker-desktop\/\u0022 target=\u0022_blank\u0022\u003eDocker Desktop\u003c\/a\u003e, and install it.\u003c\/p\u003e",
|
||||
"inLanguage": "en",
|
||||
"url" : "http:\/\/localhost:1313\/projects\/self_host\/mac_mini_m4\/05_pdf_shelf\/",
|
||||
"author" : {
|
||||
"@type": "Person",
|
||||
"name": "SWang"
|
||||
},
|
||||
"copyrightYear": "2024",
|
||||
"dateCreated": "2024-09-20T04:17:50\u002b00:00",
|
||||
"datePublished": "2024-09-20T04:17:50\u002b00:00",
|
||||
|
||||
"dateModified": "2024-09-20T04:17:50\u002b00:00",
|
||||
|
||||
|
||||
|
||||
"mainEntityOfPage": "true",
|
||||
"wordCount": "251"
|
||||
}]
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -163,10 +194,10 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -287,7 +318,7 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -385,41 +416,6 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
<span class="ltr:mr-1 rtl:ml-1">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg>
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
<div class="text-sm font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="StockBot">EN</div>
|
||||
</div>
|
||||
<div class="absolute menuhide">
|
||||
<div class="pt-2 p-5 mt-2 rounded-xl backdrop-blur shadow-2xl">
|
||||
<div class="flex flex-col space-y-3">
|
||||
|
||||
<a href="/projects/self_host/stock_bot/" class="flex items-center">
|
||||
<p class="text-sm font-sm text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="StockBot">
|
||||
EN
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="/zh-cn/projects/self_host/stock_bot/" class="flex items-center">
|
||||
<p class="text-sm font-sm text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="StockBot">
|
||||
中文
|
||||
</p>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -472,41 +468,6 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
<span></span>
|
||||
|
||||
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
<span class="ltr:mr-1 rtl:ml-1">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg>
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
<div class="text-sm font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="StockBot">EN</div>
|
||||
</div>
|
||||
<div class="absolute menuhide">
|
||||
<div class="pt-2 p-5 mt-2 rounded-xl backdrop-blur shadow-2xl">
|
||||
<div class="flex flex-col space-y-3">
|
||||
|
||||
<a href="/projects/self_host/stock_bot/" class="flex items-center">
|
||||
<p class="text-sm font-sm text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="StockBot">
|
||||
EN
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="/zh-cn/projects/self_host/stock_bot/" class="flex items-center">
|
||||
<p class="text-sm font-sm text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="StockBot">
|
||||
中文
|
||||
</p>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -586,10 +547,10 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -713,9 +674,9 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
@@ -838,11 +799,23 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
|
||||
|
||||
|
||||
<header>
|
||||
<article>
|
||||
|
||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">StockBot</h1>
|
||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
||||
|
||||
<header id="single_header" class="mt-5 max-w-prose">
|
||||
|
||||
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
|
||||
My Own PDF Shelf: pdfding on Mac Mini
|
||||
</h1>
|
||||
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -851,6 +824,14 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -867,34 +848,65 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>251 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">2 mins</span>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var oid = "views_projects\/self_host\/stock_bot\/_index.md"
|
||||
var oid_likes = "likes_projects\/self_host\/stock_bot\/_index.md"
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/js/page.min.0860cf4e04fa2d72cc33ddba263083464d48f67de06114529043cb4623319efed4f484fd7f1730df5abea0e2da6f3538855634081d02f2d6e920b956f063e823.js" integrity="sha512-CGDPTgT6LXLMM926JjCDRk1I9n3gYRRSkEPLRiMxnv7U9IT9fxcw31q+oOLabzU4hVY0CB0C8tbpILlW8GPoIw=="></script>
|
||||
|
||||
|
||||
</header>
|
||||
<section class="mt-12 prose flex max-w-full flex-col dark:prose-invert lg:flex-row">
|
||||
|
||||
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">
|
||||
|
||||
<div class="order-first px-0 lg:order-last lg:max-w-xs ltr:lg:pl-8 rtl:lg:pr-8">
|
||||
<div class="toc ltr:pl-5 rtl:pr-5 lg:sticky lg:top-10">
|
||||
<details open id="TOCView"
|
||||
<div
|
||||
class="order-first lg:ml-auto px-0 lg:order-last ltr:lg:pl-8 rtl:lg:pr-8">
|
||||
<div class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky lg:top-10">
|
||||
|
||||
<details open id="TOCView"
|
||||
class="toc-right mt-0 overflow-y-scroll overscroll-contain scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600 rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 hidden lg:block">
|
||||
<summary
|
||||
class="block py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden">
|
||||
@@ -906,8 +918,9 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li><a href="#introduction">Introduction</a></li>
|
||||
<li><a href="#list">List</a></li>
|
||||
<li><a href="#install-docker-and-prepare-directories">Install Docker and Prepare Directories</a></li>
|
||||
<li><a href="#build-the-container">Build the Container</a></li>
|
||||
<li><a href="#create-an-account-and-disable-registration">Create an Account and Disable Registration</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -925,8 +938,9 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li><a href="#introduction">Introduction</a></li>
|
||||
<li><a href="#list">List</a></li>
|
||||
<li><a href="#install-docker-and-prepare-directories">Install Docker and Prepare Directories</a></li>
|
||||
<li><a href="#build-the-container">Build the Container</a></li>
|
||||
<li><a href="#create-an-account-and-disable-registration">Create an Account and Disable Registration</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -962,261 +976,308 @@ Introduction # This project was inspired by my mother. Over the course of ten ye
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="min-w-0 min-h-0 max-w-prose">
|
||||
<p>This is a bot that assists in making daily index fund trading decisions.</p>
|
||||
|
||||
|
||||
<h2 class="relative group">Introduction
|
||||
<div id="introduction" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#introduction" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>This project was inspired by my mother. Over the course of ten years, she watched my father struggle in the stock market. From those hard lessons, she developed her own strategy—one that focuses on the predictable fluctuations in index fund values. Armed with nothing more than paper, a pen, and a calculator, she’s been able to achieve steady profits.</p>
|
||||
<p>I believe there’s even more potential here.</p>
|
||||
<p>By digitizing her process and gradually introducing quantifiable algorithms, I hope to both increase efficiency and explore new edges for profitability. My strategy might cause others’ losses, so this project is private permanently.</p>
|
||||
|
||||
|
||||
<h2 class="relative group">List
|
||||
<div id="list" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#list" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Here, I’ll keep track of the to-do list and showcase the results as the project evolves. I’ll also highlight some interesting technical insights along the way.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3">
|
||||
<div class="min-w-0 min-h-0 max-w-fit">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/projects/self_host/stock_bot/01_todo/" class="min-w-full">
|
||||
<details style="margin-left:0px" class="mt-2 mb-5 overflow-hidden rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5" >
|
||||
|
||||
<summary
|
||||
class="py-1 text-lg font-semibold cursor-pointer bg-primary-200 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-primary-800 dark:text-neutral-100">
|
||||
My First Server in Room - This article is part of a series.
|
||||
</summary>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
Part 1: Website Setup
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/02_nas/">
|
||||
Part 2: NAS: Network Attachment Storage
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
Part 3: My Own Code Vault: Gitea on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 5: This Article
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="min-h-full border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
|
||||
|
||||
<div class="px-6 py-4">
|
||||
|
||||
|
||||
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
|
||||
href="/projects/self_host/stock_bot/01_todo/">TODO List</div>
|
||||
|
||||
</details>
|
||||
|
||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
|
||||
<div class="article-content max-w-prose mb-20">
|
||||
<p>PDFding is a self-hosted PDF library management system, which is perfect for managing my personal PDF collection. It allows me to organize, search, and read PDFs directly from my Mac Mini. Later, I will list a contents of my PDF library, if you need any of them, just email me. No commercial use, please.</p>
|
||||
|
||||
|
||||
<h2 class="relative group">Install Docker and Prepare Directories
|
||||
<div id="install-docker-and-prepare-directories" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#install-docker-and-prepare-directories" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Download <a href="https://www.docker.com/products/docker-desktop/" target="_blank">Docker Desktop</a>, and install it.</p>
|
||||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mkdir -p <where you like>/pdfding/<span class="o">{</span>data,media<span class="o">}</span>
|
||||
</span></span><span class="line"><span class="cl">chmod a+w <where you like>/pdfding/<span class="o">{</span>data,media<span class="o">}</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> <where you like>/pdfding/
|
||||
</span></span></code></pre></div><p>data is used to store the database, media is used to store the PDF files.</p>
|
||||
|
||||
|
||||
<h2 class="relative group">Build the Container
|
||||
<div id="build-the-container" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#build-the-container" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<pre tabindex="0"><code>docker run --name pdfding \
|
||||
-p <port>:<port> \
|
||||
-v ./db:/home/nonroot/pdfding/db -v ./media:/home/nonroot/pdfding/media \
|
||||
-e HOST_NAME=127.0.0.1,<your_domain> -e SECRET_KEY=<you_key> -e CSRF_COOKIE_SECURE=FALSE -e SESSION_COOKIE_SECURE=FALSE \
|
||||
-d \
|
||||
mrmn/pdfding:latest
|
||||
</code></pre><p>Then, you should be able to access the PDFding web interface at <code>http://localhost:<port></code>.</p>
|
||||
|
||||
|
||||
<h2 class="relative group">Create an Account and Disable Registration
|
||||
<div id="create-an-account-and-disable-registration" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#create-an-account-and-disable-registration" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>If it’s your first time using PDFding, you will need to create an account. After that, I strongly recommend disabling the public registration to prevent unauthorized access. You can do this by editing the <code>/home/nonroot/pdfding/users/views.py</code> file in the container.</p>
|
||||
<pre tabindex="0"><code>docker cp pdfding:/home/nonroot/pdfding/users/views.py ./views.py
|
||||
</code></pre><p>Then, find a function named <code>PdfDingSignupView</code>, change it:</p>
|
||||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">django.http</span> <span class="kn">import</span> <span class="n">HttpResponseForbidden</span>
|
||||
</span></span><span class="line"><span class="cl">
|
||||
</span></span><span class="line"><span class="cl"><span class="nd">@method_decorator</span><span class="p">(</span><span class="n">login_not_required</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"dispatch"</span><span class="p">)</span>
|
||||
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">PdfDingSignupView</span><span class="p">(</span><span class="n">SignupView</span><span class="p">):</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="s2">"""
|
||||
</span></span></span><span class="line"><span class="cl"><span class="s2"> Overwrite allauths signup to be accessed without being logged in
|
||||
</span></span></span><span class="line"><span class="cl"><span class="s2"> """</span>
|
||||
</span></span><span class="line"><span class="cl">
|
||||
</span></span><span class="line"><span class="cl"> <span class="nd">@login_not_required</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">dispatch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="c1">#return super(PdfDingSignupView, self).dispatch(request, *args, **kwargs)</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">HttpResponseForbidden</span><span class="p">(</span><span class="s2">"Registration is disabled by the administrator."</span><span class="p">)</span>
|
||||
</span></span></code></pre></div><p>Then, copy it back to the container:</p>
|
||||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker cp ./views.py pdfding:/home/nonroot/pdfding/users/views.py
|
||||
</span></span></code></pre></div><p>Finally, restart the container:</p>
|
||||
<pre tabindex="0"><code>docker restart pdfding
|
||||
</code></pre>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>51 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="px-6 pt-4 pb-2">
|
||||
<details style="margin-left:0px" class="mt-2 mb-5 overflow-hidden rounded-lg ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5">
|
||||
|
||||
<summary
|
||||
class="py-1 text-lg font-semibold cursor-pointer bg-primary-200 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-primary-800 dark:text-neutral-100">
|
||||
My First Server in Room - This article is part of a series.
|
||||
</summary>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
Part 1: Website Setup
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/02_nas/">
|
||||
Part 2: NAS: Network Attachment Storage
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
Part 3: My Own Code Vault: Gitea on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 5: This Article
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
Part 6: My Own Photo Server: Immich on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var oid = "views_projects\/self_host\/mac_mini_m4\/05_pdf_shelf.md"
|
||||
var oid_likes = "likes_projects\/self_host\/mac_mini_m4\/05_pdf_shelf.md"
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/js/page.min.0860cf4e04fa2d72cc33ddba263083464d48f67de06114529043cb4623319efed4f484fd7f1730df5abea0e2da6f3538855634081d02f2d6e920b956f063e823.js" integrity="sha512-CGDPTgT6LXLMM926JjCDRk1I9n3gYRRSkEPLRiMxnv7U9IT9fxcw31q+oOLabzU4hVY0CB0C8tbpILlW8GPoIw=="></script>
|
||||
|
||||
|
||||
</section>
|
||||
<footer class="pt-8 max-w-prose print:hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="pt-8">
|
||||
<hr class="border-dotted border-neutral-300 dark:border-neutral-600" />
|
||||
<div class="flex justify-between pt-3">
|
||||
<span>
|
||||
|
||||
<a class="flex group mr-3" href="/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
<span
|
||||
class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>←</span
|
||||
>
|
||||
<span
|
||||
class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>→</span
|
||||
>
|
||||
<span class="flex flex-col">
|
||||
<span
|
||||
class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500"
|
||||
>My Own Photo Server: Immich on Mac Mini</span
|
||||
>
|
||||
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</span>
|
||||
<span>
|
||||
|
||||
<a class="flex text-right group ml-3" href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
<span class="flex flex-col">
|
||||
<span
|
||||
class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500"
|
||||
>MCU Benchmark</span
|
||||
>
|
||||
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
</span>
|
||||
</span>
|
||||
<span
|
||||
class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>→</span
|
||||
>
|
||||
<span
|
||||
class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>←</span
|
||||
>
|
||||
</a>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/projects/self_host/stock_bot/02_results/" class="min-w-full">
|
||||
|
||||
<div class="min-h-full border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
|
||||
|
||||
<div class="px-6 py-4">
|
||||
|
||||
|
||||
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
|
||||
href="/projects/self_host/stock_bot/02_results/">Showcases</div>
|
||||
|
||||
|
||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>18 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="px-6 pt-4 pb-2">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="top-scroller" class="pointer-events-none absolute top-[110vh] bottom-0 w-12 ltr:right-0 rtl:left-0">
|
||||
<a href="#the-top"
|
||||
class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -8,14 +8,14 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||
|
||||
<title>Setup · SWangNice</title>
|
||||
<meta name="title" content="Setup · SWangNice" />
|
||||
<title>My Own Photo Server: Immich on Mac Mini · SWangNice</title>
|
||||
<meta name="title" content="My Own Photo Server: Immich on Mac Mini · SWangNice" />
|
||||
|
||||
<meta name="description" content="My awesome website (English)" />
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="http://localhost:1313/projects/self_host/mac_mini_m4/01_ssh/" />
|
||||
<link rel="canonical" href="http://localhost:1313/projects/self_host/mac_mini_m4/06_photo_server/" />
|
||||
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.36c3cd7950e4533fa7da3150d972e3edf34d07f83c0264ff04cad0969dfdb3b8a7065b0ed6c730c6d34a7bad516cfc6f6a5917ab1fdb10b25f481f8a17b54c16.css"
|
||||
integrity="sha512-NsPNeVDkUz+n2jFQ2XLj7fNNB/g8AmT/BMrQlp39s7inBlsO1scwxtNKe61RbPxvalkXqx/bELJfSB+KF7VMFg==" />
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.3d98b0e3c7886b2be13facfb539c8f79843dd3cff84d1c41763deb363c668c308c7c7ac9ecb3923f8602e257866ff553de4228ff50492074acc6d07b3d232fb1.css"
|
||||
integrity="sha512-PZiw48eIayvhP6z7U5yPeYQ908/4TRxBdj3rNjxmjDCMfHrJ7LOSP4YC4leGb/VT3kIo/1BJIHSsxtB7PSMvsQ==" />
|
||||
|
||||
|
||||
<script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js"
|
||||
@@ -43,8 +43,8 @@
|
||||
|
||||
|
||||
|
||||
<script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.52b8d61b061c90a738102a0eac69eaa1479fdf5de882a0b0741d7515240617156a6c4477fcc91f9c962062804fe62d2932bb9f57d0aded208c762c2e1ed2e202.js"
|
||||
integrity="sha512-UrjWGwYckKc4ECoOrGnqoUef313ogqCwdB11FSQGFxVqbER3/MkfnJYgYoBP5i0pMrufV9Ct7SCMdiwuHtLiAg==" data-copy="Copy" data-copied="Copied"></script>
|
||||
<script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.f8f2cec11308434554dfdbe3a0963bc19265192ebb9e2d644f3f9250731c879dfb09b44d2d58fcd06e8a1c9051b57f594719b37d21689d366ffd2db050df40a0.js"
|
||||
integrity="sha512-+PLOwRMIQ0VU39vjoJY7wZJlGS67ni1kTz+SUHMch537CbRNLVj80G6KHJBRtX9ZRxmzfSFonTZv/S2wUN9AoA==" data-copy="Copy" data-copied="Copied"></script>
|
||||
|
||||
|
||||
|
||||
@@ -64,26 +64,29 @@
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="http://localhost:1313/projects/self_host/mac_mini_m4/01_ssh/">
|
||||
<meta property="og:url" content="http://localhost:1313/projects/self_host/mac_mini_m4/06_photo_server/">
|
||||
<meta property="og:site_name" content="SWangNice">
|
||||
<meta property="og:title" content="Setup">
|
||||
<meta property="og:description" content="🍎Mac Mini Side # As a server, my Mac won’t sleep, so change the setting firstly.
|
||||
sudo systemsetup -setcomputersleep Never # never sleep sudo systemsetup -setdisplaysleep 10 # display will sleep in 10 min Use autossh to avoid timeout:
|
||||
brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini will send package per 30 seconds to keep the connection alive.">
|
||||
<meta property="og:title" content="My Own Photo Server: Immich on Mac Mini">
|
||||
<meta property="og:description" content="Immich is a self-hosted photo and video management solution that allows you to organize, share, and access your media files from anywhere. It provides features like automatic backups, facial recognition, and easy sharing options.
|
||||
Installation # Follow the official Immich installation guide for detailed instructions. Below is a quick overview of the steps to get started.
|
||||
cd <where you like> mkdir ./immich-app cd ./immich-app wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env cp example.env .env Edit the .env file to set your desired configuration options, such as database settings and server URLs. Make sure to set the APP_URL to your server’s URL.">
|
||||
<meta property="og:locale" content="en">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="projects">
|
||||
<meta property="article:published_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="article:modified_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/stock_bot/01_todo/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/stock_bot/02_results/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/02_nas/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
<meta property="og:see_also" content="http://localhost:1313/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Setup">
|
||||
<meta name="twitter:description" content="🍎Mac Mini Side # As a server, my Mac won’t sleep, so change the setting firstly.
|
||||
sudo systemsetup -setcomputersleep Never # never sleep sudo systemsetup -setdisplaysleep 10 # display will sleep in 10 min Use autossh to avoid timeout:
|
||||
brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini will send package per 30 seconds to keep the connection alive.">
|
||||
<meta name="twitter:title" content="My Own Photo Server: Immich on Mac Mini">
|
||||
<meta name="twitter:description" content="Immich is a self-hosted photo and video management solution that allows you to organize, share, and access your media files from anywhere. It provides features like automatic backups, facial recognition, and easy sharing options.
|
||||
Installation # Follow the official Immich installation guide for detailed instructions. Below is a quick overview of the steps to get started.
|
||||
cd <where you like> mkdir ./immich-app cd ./immich-app wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env cp example.env .env Edit the .env file to set your desired configuration options, such as database settings and server URLs. Make sure to set the APP_URL to your server’s URL.">
|
||||
|
||||
|
||||
<script type="application/ld+json">
|
||||
@@ -91,12 +94,12 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"articleSection": "Projects",
|
||||
"name": "Setup",
|
||||
"headline": "Setup",
|
||||
"name": "My Own Photo Server: Immich on Mac Mini",
|
||||
"headline": "My Own Photo Server: Immich on Mac Mini",
|
||||
|
||||
"abstract": "\u003ch2 class=\u0022relative group\u0022\u003e🍎Mac Mini Side \n \u003cdiv id=\u0022mac-mini-side\u0022 class=\u0022anchor\u0022\u003e\u003c\/div\u003e\n \n \u003cspan\n class=\u0022absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\u0022\u003e\n \u003ca class=\u0022group-hover:text-primary-300 dark:group-hover:text-neutral-700\u0022\n style=\u0022text-decoration-line: none !important;\u0022 href=\u0022#mac-mini-side\u0022 aria-label=\u0022Anchor\u0022\u003e#\u003c\/a\u003e\n \u003c\/span\u003e \n \n\u003c\/h2\u003e\n\u003cp\u003eAs a server, my Mac won\u0026rsquo;t sleep, so change the setting firstly.\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003esudo systemsetup -setcomputersleep Never # never sleep\nsudo systemsetup -setdisplaysleep 10 # display will sleep in 10 min\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eUse autossh to avoid timeout:\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003ebrew install autossh\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eAdd the configuration below in \u003ccode\u003e~\/.ssh\/config\u003c\/code\u003e, Mac Mini will send package per 30 seconds to keep the connection alive.\u003c\/p\u003e",
|
||||
"abstract": "\u003cp\u003eImmich is a self-hosted photo and video management solution that allows you to organize, share, and access your media files from anywhere. It provides features like automatic backups, facial recognition, and easy sharing options.\u003c\/p\u003e\n\n\n\u003ch2 class=\u0022relative group\u0022\u003eInstallation \n \u003cdiv id=\u0022installation\u0022 class=\u0022anchor\u0022\u003e\u003c\/div\u003e\n \n \u003cspan\n class=\u0022absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\u0022\u003e\n \u003ca class=\u0022group-hover:text-primary-300 dark:group-hover:text-neutral-700\u0022\n style=\u0022text-decoration-line: none !important;\u0022 href=\u0022#installation\u0022 aria-label=\u0022Anchor\u0022\u003e#\u003c\/a\u003e\n \u003c\/span\u003e \n \n\u003c\/h2\u003e\n\u003cp\u003eFollow the official \u003ca href=\u0022https:\/\/immich.app\/docs\/overview\/quick-start\u0022 target=\u0022_blank\u0022\u003eImmich installation guide\u003c\/a\u003e for detailed instructions. Below is a quick overview of the steps to get started.\u003c\/p\u003e\n\u003cpre tabindex=\u00220\u0022\u003e\u003ccode\u003ecd \u0026lt;where you like\u0026gt;\nmkdir .\/immich-app\ncd .\/immich-app\nwget -O docker-compose.yml https:\/\/github.com\/immich-app\/immich\/releases\/latest\/download\/docker-compose.yml\nwget -O .env https:\/\/github.com\/immich-app\/immich\/releases\/latest\/download\/example.env\ncp example.env .env\n\u003c\/code\u003e\u003c\/pre\u003e\u003cp\u003eEdit the \u003ccode\u003e.env\u003c\/code\u003e file to set your desired configuration options, such as database settings and server URLs. Make sure to set the \u003ccode\u003eAPP_URL\u003c\/code\u003e to your server\u0026rsquo;s URL.\u003c\/p\u003e",
|
||||
"inLanguage": "en",
|
||||
"url" : "http:\/\/localhost:1313\/projects\/self_host\/mac_mini_m4\/01_ssh\/",
|
||||
"url" : "http:\/\/localhost:1313\/projects\/self_host\/mac_mini_m4\/06_photo_server\/",
|
||||
"author" : {
|
||||
"@type": "Person",
|
||||
"name": "SWang"
|
||||
@@ -110,7 +113,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
|
||||
"mainEntityOfPage": "true",
|
||||
"wordCount": "127"
|
||||
"wordCount": "180"
|
||||
}]
|
||||
</script>
|
||||
|
||||
@@ -193,10 +196,10 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -207,7 +210,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a href="/notes/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/notes/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Notes">
|
||||
Notes
|
||||
</a>
|
||||
<span>
|
||||
@@ -262,7 +265,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a href="/projects/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/projects/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Projects">
|
||||
Projects
|
||||
</a>
|
||||
<span>
|
||||
@@ -291,6 +294,13 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<div class="pt-2 p-5 mt-2 rounded-xl backdrop-blur shadow-2xl">
|
||||
<div class="flex flex-col space-y-3">
|
||||
|
||||
<a href="/projects/embedded/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-sm" title="">
|
||||
Fancy Things on Boards
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="/projects/self_host/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-sm" title="">
|
||||
@@ -310,7 +320,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -539,10 +549,10 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -556,7 +566,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<li class="mt-1">
|
||||
<a href="/notes/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Notes">
|
||||
Notes
|
||||
</p>
|
||||
<span>
|
||||
@@ -612,7 +622,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<li class="mt-1">
|
||||
<a href="/projects/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Projects">
|
||||
Projects
|
||||
</p>
|
||||
<span>
|
||||
@@ -639,6 +649,15 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/projects/embedded/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-small" title="">
|
||||
Fancy Things on Boards
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/projects/self_host/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
@@ -657,9 +676,9 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
@@ -788,7 +807,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<header id="single_header" class="mt-5 max-w-prose">
|
||||
|
||||
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
|
||||
Setup
|
||||
My Own Photo Server: Immich on Mac Mini
|
||||
</h1>
|
||||
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
||||
|
||||
@@ -831,7 +850,7 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>127 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
<span>180 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
|
||||
|
||||
|
||||
@@ -901,8 +920,8 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li><a href="#mac-mini-side">🍎Mac Mini Side</a></li>
|
||||
<li><a href="#server-side">💻Server Side</a></li>
|
||||
<li><a href="#installation">Installation</a></li>
|
||||
<li><a href="#quote-photos-in-hugo-page">Quote Photos in Hugo page</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -920,8 +939,8 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
<ul>
|
||||
<li>
|
||||
<ul>
|
||||
<li><a href="#mac-mini-side">🍎Mac Mini Side</a></li>
|
||||
<li><a href="#server-side">💻Server Side</a></li>
|
||||
<li><a href="#installation">Installation</a></li>
|
||||
<li><a href="#quote-photos-in-hugo-page">Quote Photos in Hugo page</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -968,22 +987,15 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
<summary
|
||||
class="py-1 text-lg font-semibold cursor-pointer bg-primary-200 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-primary-800 dark:text-neutral-100">
|
||||
StockBot - This article is part of a series.
|
||||
My First Server in Room - This article is part of a series.
|
||||
</summary>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 1: This Article
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/stock_bot/01_todo/">
|
||||
Part 1: TODO List
|
||||
<a href="/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
Part 1: Website Setup
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -991,12 +1003,46 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/stock_bot/02_results/">
|
||||
Part 2: Showcases
|
||||
<a href="/projects/self_host/mac_mini_m4/02_nas/">
|
||||
Part 2: NAS: Network Attachment Storage
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
Part 3: My Own Code Vault: Gitea on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 6: This Article
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
@@ -1004,58 +1050,49 @@ brew install autossh Add the configuration below in ~/.ssh/config, Mac Mini wi
|
||||
|
||||
|
||||
<div class="article-content max-w-prose mb-20">
|
||||
|
||||
<p>Immich is a self-hosted photo and video management solution that allows you to organize, share, and access your media files from anywhere. It provides features like automatic backups, facial recognition, and easy sharing options.</p>
|
||||
|
||||
<h2 class="relative group">🍎Mac Mini Side
|
||||
<div id="mac-mini-side" class="anchor"></div>
|
||||
|
||||
<h2 class="relative group">Installation
|
||||
<div id="installation" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#mac-mini-side" aria-label="Anchor">#</a>
|
||||
style="text-decoration-line: none !important;" href="#installation" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>As a server, my Mac won’t sleep, so change the setting firstly.</p>
|
||||
<pre tabindex="0"><code>sudo systemsetup -setcomputersleep Never # never sleep
|
||||
sudo systemsetup -setdisplaysleep 10 # display will sleep in 10 min
|
||||
</code></pre><p>Use autossh to avoid timeout:</p>
|
||||
<pre tabindex="0"><code>brew install autossh
|
||||
</code></pre><p>Add the configuration below in <code>~/.ssh/config</code>, Mac Mini will send package per 30 seconds to keep the connection alive.</p>
|
||||
<pre tabindex="0"><code>Host <ip address>
|
||||
ServerAliveInterval 30
|
||||
ServerAliveCountMax 5
|
||||
TCPKeepAlive yes
|
||||
</code></pre><p>Build the connection:</p>
|
||||
<pre tabindex="0"><code>autossh -M 0 -f -N \
|
||||
-i ~/.ssh/id_ed25519 \
|
||||
-R 0.0.0.0:9000:localhost:1313 \
|
||||
root@<ip address>
|
||||
</code></pre>
|
||||
<p>Follow the official <a href="https://immich.app/docs/overview/quick-start" target="_blank">Immich installation guide</a> for detailed instructions. Below is a quick overview of the steps to get started.</p>
|
||||
<pre tabindex="0"><code>cd <where you like>
|
||||
mkdir ./immich-app
|
||||
cd ./immich-app
|
||||
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
||||
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
|
||||
cp example.env .env
|
||||
</code></pre><p>Edit the <code>.env</code> file to set your desired configuration options, such as database settings and server URLs. Make sure to set the <code>APP_URL</code> to your server’s URL.</p>
|
||||
<p>Then, run the following command to start Immich:</p>
|
||||
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker compose up -d
|
||||
</span></span></code></pre></div><p>Then Enjoy!!!</p>
|
||||
|
||||
<h2 class="relative group">💻Server Side
|
||||
<div id="server-side" class="anchor"></div>
|
||||
|
||||
<h2 class="relative group">Quote Photos in Hugo page
|
||||
<div id="quote-photos-in-hugo-page" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#server-side" aria-label="Anchor">#</a>
|
||||
style="text-decoration-line: none !important;" href="#quote-photos-in-hugo-page" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Install and config the Nginx, for me the config file in <code>/etc/nginx/sites-available</code>:</p>
|
||||
<pre tabindex="0"><code>server {
|
||||
listen 80;
|
||||
server_name www.<your domain> <your domain>;
|
||||
<ol>
|
||||
<li>Share the photo using Immich.</li>
|
||||
<li>Navigate to <code>Sharing</code> > <code>Shared links</code> and select the tab corresponding to your shared content.</li>
|
||||
<li>Open the web developer tools by pressing <code>F12</code>, then click on the photo you wish to quote.</li>
|
||||
<li>In the <code>Network</code> tab, locate the request that displays the image preview and copy the URL. This URL should resemble <code>https://your-immich-domain.cn/api/assets/xxxxxxxxx/thumbnail?key=xxxxxxxxxxx=preview&c=xxxxxxxxx</code>.</li>
|
||||
</ol>
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:9000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
|
||||
|
||||
@@ -1068,22 +1105,15 @@ root@<ip address>
|
||||
|
||||
<summary
|
||||
class="py-1 text-lg font-semibold cursor-pointer bg-primary-200 text-neutral-800 ltr:-ml-5 ltr:pl-5 rtl:-mr-5 rtl:pr-5 dark:bg-primary-800 dark:text-neutral-100">
|
||||
StockBot - This article is part of a series.
|
||||
My First Server in Room - This article is part of a series.
|
||||
</summary>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 1: This Article
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/stock_bot/01_todo/">
|
||||
Part 1: TODO List
|
||||
<a href="/projects/self_host/mac_mini_m4/01_website_hosting/">
|
||||
Part 1: Website Setup
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -1091,12 +1121,46 @@ root@<ip address>
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/stock_bot/02_results/">
|
||||
Part 2: Showcases
|
||||
<a href="/projects/self_host/mac_mini_m4/02_nas/">
|
||||
Part 2: NAS: Network Attachment Storage
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/03_gitea/">
|
||||
Part 3: My Own Code Vault: Gitea on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">
|
||||
Part 4: MCU Benchmark
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
Part 5: My Own PDF Shelf: pdfding on Mac Mini
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
|
||||
Part 6: This Article
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
@@ -1114,8 +1178,8 @@ root@<ip address>
|
||||
|
||||
|
||||
<script>
|
||||
var oid = "views_projects\/self_host\/mac_mini_m4\/01_ssh.md"
|
||||
var oid_likes = "likes_projects\/self_host\/mac_mini_m4\/01_ssh.md"
|
||||
var oid = "views_projects\/self_host\/mac_mini_m4\/06_photo_server.md"
|
||||
var oid_likes = "likes_projects\/self_host\/mac_mini_m4\/06_photo_server.md"
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1127,6 +1191,41 @@ root@<ip address>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="pt-8">
|
||||
<hr class="border-dotted border-neutral-300 dark:border-neutral-600" />
|
||||
<div class="flex justify-between pt-3">
|
||||
<span>
|
||||
|
||||
</span>
|
||||
<span>
|
||||
|
||||
<a class="flex text-right group ml-3" href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">
|
||||
<span class="flex flex-col">
|
||||
<span
|
||||
class="mt-[0.1rem] leading-6 group-hover:underline group-hover:decoration-primary-500"
|
||||
>My Own PDF Shelf: pdfding on Mac Mini</span
|
||||
>
|
||||
<span class="mt-[0.1rem] text-xs text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
</span>
|
||||
</span>
|
||||
<span
|
||||
class="ml-3 text-neutral-700 group-hover:text-primary-600 ltr:inline rtl:hidden dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>→</span
|
||||
>
|
||||
<span
|
||||
class="mr-3 text-neutral-700 group-hover:text-primary-600 ltr:hidden rtl:inline dark:text-neutral dark:group-hover:text-primary-400"
|
||||
>←</span
|
||||
>
|
||||
</a>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1149,7 +1248,7 @@ root@<ip address>
|
||||
|
||||
<li class="flex mb-1 ltr:text-right rtl:text-left sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0">
|
||||
<a class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2 flex items-center" href="/tags/"
|
||||
title="">
|
||||
title="Tags">
|
||||
|
||||
Tags
|
||||
</a>
|
||||
@@ -1171,6 +1270,14 @@ root@<ip address>
|
||||
|
||||
|
||||
|
||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener noreferrer">
|
||||
苏ICP备2024145451号
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
|
Before Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 118 KiB |
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -161,10 +161,10 @@
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -285,7 +285,7 @@
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -514,10 +514,10 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -641,9 +641,9 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
@@ -894,7 +894,7 @@
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>234 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">2 mins</span>
|
||||
<span>260 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">2 mins</span>
|
||||
|
||||
|
||||
|
||||
@@ -986,7 +986,7 @@
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>122 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
<span>117 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
|
||||
|
||||
|
||||
@@ -1078,7 +1078,283 @@
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>86 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
<span>161 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="px-6 pt-4 pb-2">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/projects/self_host/mac_mini_m4/04_mcu_markbench/" class="min-w-full">
|
||||
|
||||
<div class="min-h-full border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
|
||||
|
||||
<div class="px-6 py-4">
|
||||
|
||||
|
||||
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
|
||||
href="/projects/self_host/mac_mini_m4/04_mcu_markbench/">MCU Benchmark</div>
|
||||
|
||||
|
||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>217 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">2 mins</span>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="px-6 pt-4 pb-2">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/projects/self_host/mac_mini_m4/05_pdf_shelf/" class="min-w-full">
|
||||
|
||||
<div class="min-h-full border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
|
||||
|
||||
<div class="px-6 py-4">
|
||||
|
||||
|
||||
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
|
||||
href="/projects/self_host/mac_mini_m4/05_pdf_shelf/">My Own PDF Shelf: pdfding on Mac Mini</div>
|
||||
|
||||
|
||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>251 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">2 mins</span>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="px-6 pt-4 pb-2">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/projects/self_host/mac_mini_m4/06_photo_server/" class="min-w-full">
|
||||
|
||||
<div class="min-h-full border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative">
|
||||
|
||||
<div class="px-6 py-4">
|
||||
|
||||
|
||||
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
|
||||
href="/projects/self_host/mac_mini_m4/06_photo_server/">My Own Photo Server: Immich on Mac Mini</div>
|
||||
|
||||
|
||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
<span>180 words</span><span class="px-2 text-primary-500">·</span><span title="Reading time">1 min</span>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -68,9 +68,19 @@ sudo systemsetup -setdisplaysleep 10 # display will sleep in 10 min
|
||||
<description><p>Install dependence of gitea:</p>
|
||||
<pre tabindex="0"><code>brew install git
|
||||
brew install gitea
|
||||
</code></pre><p>Start the configuration page of Gitea:</p>
|
||||
<pre tabindex="0"><code>gitea web
|
||||
</code></pre><p>Install MySQL:</p>
|
||||
</code></pre>
|
||||
|
||||
<h2 class="relative group">The database
|
||||
<div id="the-database" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#the-database" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Install MySQL:</p>
|
||||
<pre tabindex="0"><code>brew install mysql
|
||||
brew services start mysql
|
||||
</code></pre><p>Login MySQL and create the database and user:</p>
|
||||
@@ -80,10 +90,105 @@ brew services start mysql
|
||||
CREATE USER &#39;gitea&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;&lt;yourpassword&gt;&#39;;
|
||||
GRANT ALL PRIVILEGES ON gitea.* TO &#39;gitea&#39;@&#39;localhost&#39;;
|
||||
FLUSH PRIVILEGES;
|
||||
</code></pre><p>CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
CREATE USER &lsquo;gitea&rsquo;@&rsquo;localhost&rsquo; IDENTIFIED BY &lsquo;gitea&rsquo;;
|
||||
GRANT ALL PRIVILEGES ON gitea.* TO &lsquo;gitea&rsquo;@&rsquo;localhost&rsquo;;
|
||||
FLUSH PRIVILEGES;</p></description>
|
||||
</code></pre>
|
||||
|
||||
<h2 class="relative group">Config the Gitea
|
||||
<div id="config-the-gitea" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#config-the-gitea" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Start the configuration page of Gitea:</p></description>
|
||||
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>MCU Benchmark</title>
|
||||
<link>http://localhost:1313/projects/self_host/mac_mini_m4/04_mcu_markbench/</link>
|
||||
<pubDate>Fri, 20 Sep 2024 04:17:50 +0000</pubDate>
|
||||
|
||||
<guid>http://localhost:1313/projects/self_host/mac_mini_m4/04_mcu_markbench/</guid>
|
||||
<description><a id="gitea-557b8590fb1ca3d7d5e6d0761887bbe0" target="_blank" href="https://code.swangnice.cn/swangnice/mcu-benchmark" class="cursor-pointer">
|
||||
<div
|
||||
class="w-full md:w-auto pt-3 p-5 border border-neutral-200 dark:border-neutral-700 border rounded-md shadow-2xl">
|
||||
|
||||
<div class="flex items-center">
|
||||
<span class="text-2xl text-neutral-800 dark:text-neutral" style="margin-right:10px;">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="5.67 143.05 628.65 387.55"><path fill="currentColor" d="M115.912 143.075c-6.462 0-13.762.525-22.012 2.325-8.7 1.8-33.5 7.4-53.8 26.9C-4.9 212.4 6.6 276.2 8 285.8c1.7 11.7 6.9 44.2 31.7 72.5 45.8 56.1 144.4 54.8 144.4 54.8s12.1 28.9 30.6 55.5c25 33.1 50.7 58.9 75.7 62 63 0 188.9-.1 188.9-.1s12 .1 28.3-10.3c14-8.5 26.5-23.4 26.5-23.4S547 483 565 451.5c5.5-9.7 10.1-19.1 14.1-28 0 0 55.2-117.1 55.2-231.1-1.1-34.5-9.6-40.6-11.6-42.6-4.1-4.1-9.6-4-9.6-4s-117.2 6.6-177.9 8c-13.267.3-26.433.597-39.5.697l.1 117.002s57.4 24.202 83.1 40.102c3.7 2.3 10.2 6.798 12.9 14.398 2.1 6.1 2 13.101-1 19.301l-61 126.9c-6.2 12.7-21.4 18.1-33.9 12l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5 21.2-17.9 33.8-11.8a5290.322 5290.322 0 0 0 27 12.954c0-36.449-.1-109.053-.1-109.053-29 .4-89.2-2.201-89.2-2.201s-141.4-7.1-156.8-8.5c-4.9-.3-10.525-.825-16.988-.825zm12.188 48.026s7.1 59.399 15.7 94.199c7.2 29.2 24.8 77.7 24.8 77.7s-26.1-3.1-43-9.1c-25.9-8.5-36.9-18.7-36.9-18.7S69.6 321.8 60 295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5 38.5-30c13.8-3.7 31-3.1 31-3.1z"/><path fill="currentColor" d="M326.8 380.1c-8.2.1-15.4 5.8-17.3 13.8-1.9 8 2 16.3 9.1 20 7.7 4 17.5 1.8 22.7-5.4 5.1-7.1 4.3-16.9-1.8-23.1l24-49.1c1.5.1 3.7.2 6.2-.5 4.1-.9 7.1-3.6 7.1-3.6 4.2 1.8 8.6 3.8 13.2 6.1 4.8 2.4 9.3 4.9 13.4 7.3.9.5 1.8 1.1 2.8 1.9 1.6 1.3 3.4 3.1 4.7 5.5 1.9 5.5-1.9 14.9-1.9 14.9-2.3 7.6-18.4 40.6-18.4 40.6-8.1-.2-15.3 5-17.7 12.5-2.6 8.1 1.1 17.3 8.9 21.3 7.8 4 17.4 1.7 22.5-5.3 5-6.8 4.6-16.3-1.1-22.6 1.9-3.7 3.7-7.4 5.6-11.3 5-10.4 13.5-30.4 13.5-30.4.9-1.7 5.7-10.3 2.7-21.3-2.5-11.4-12.6-16.7-12.6-16.7-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3 4.7-9.7 9.4-19.3 14.1-29-4.1-2-8.1-4-12.2-6.1-4.8 9.8-9.7 19.7-14.5 29.5-6.7-.1-12.9 3.5-16.1 9.4-3.4 6.3-2.7 14.1 1.9 19.8l-24.6 50.4z"/></svg>
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
<div
|
||||
id="gitea-557b8590fb1ca3d7d5e6d0761887bbe0-full_name"
|
||||
class="m-0 font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral">
|
||||
swangnice/mcu-benchmark
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p id="gitea-557b8590fb1ca3d7d5e6d0761887bbe0-description" class="m-0 mt-2 text-md text-neutral-800 dark:text-neutral">
|
||||
A markbench of MCUs to help to you choose the right one.
|
||||
</p></description>
|
||||
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>My Own PDF Shelf: pdfding on Mac Mini</title>
|
||||
<link>http://localhost:1313/projects/self_host/mac_mini_m4/05_pdf_shelf/</link>
|
||||
<pubDate>Fri, 20 Sep 2024 04:17:50 +0000</pubDate>
|
||||
|
||||
<guid>http://localhost:1313/projects/self_host/mac_mini_m4/05_pdf_shelf/</guid>
|
||||
<description><p>PDFding is a self-hosted PDF library management system, which is perfect for managing my personal PDF collection. It allows me to organize, search, and read PDFs directly from my Mac Mini. Later, I will list a contents of my PDF library, if you need any of them, just email me. No commercial use, please.</p>
|
||||
|
||||
|
||||
<h2 class="relative group">Install Docker and Prepare Directories
|
||||
<div id="install-docker-and-prepare-directories" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#install-docker-and-prepare-directories" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Download <a href="https://www.docker.com/products/docker-desktop/" target="_blank">Docker Desktop</a>, and install it.</p></description>
|
||||
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>My Own Photo Server: Immich on Mac Mini</title>
|
||||
<link>http://localhost:1313/projects/self_host/mac_mini_m4/06_photo_server/</link>
|
||||
<pubDate>Fri, 20 Sep 2024 04:17:50 +0000</pubDate>
|
||||
|
||||
<guid>http://localhost:1313/projects/self_host/mac_mini_m4/06_photo_server/</guid>
|
||||
<description><p>Immich is a self-hosted photo and video management solution that allows you to organize, share, and access your media files from anywhere. It provides features like automatic backups, facial recognition, and easy sharing options.</p>
|
||||
|
||||
|
||||
<h2 class="relative group">Installation
|
||||
<div id="installation" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#installation" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<p>Follow the official <a href="https://immich.app/docs/overview/quick-start" target="_blank">Immich installation guide</a> for detailed instructions. Below is a quick overview of the steps to get started.</p>
|
||||
<pre tabindex="0"><code>cd &lt;where you like&gt;
|
||||
mkdir ./immich-app
|
||||
cd ./immich-app
|
||||
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
||||
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
|
||||
cp example.env .env
|
||||
</code></pre><p>Edit the <code>.env</code> file to set your desired configuration options, such as database settings and server URLs. Make sure to set the <code>APP_URL</code> to your server&rsquo;s URL.</p></description>
|
||||
|
||||
</item>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -188,10 +188,10 @@
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -611,10 +611,10 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -738,9 +738,9 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
data-auto-appearance="true"><head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
@@ -188,10 +188,10 @@
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
<p class="text-base font-medium" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
<a href="/life/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="Rest Here">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
@@ -611,10 +611,10 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/about/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
<p class="text-bg font-bg" title="About">
|
||||
About
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
@@ -738,9 +738,9 @@
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<a href="/life/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
<p class="text-bg font-bg" title="Rest Here">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
|
||||
@@ -1,970 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr" class="scroll-smooth" data-default-appearance="light"
|
||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta http-equiv="content-language" content="en" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||
|
||||
<title>TODO List · SWangNice</title>
|
||||
<meta name="title" content="TODO List · SWangNice" />
|
||||
|
||||
<meta name="description" content="My awesome website (English)" />
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="http://localhost:1313/projects/self_host/stock_bot/10_todo/" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.36c3cd7950e4533fa7da3150d972e3edf34d07f83c0264ff04cad0969dfdb3b8a7065b0ed6c730c6d34a7bad516cfc6f6a5917ab1fdb10b25f481f8a17b54c16.css"
|
||||
integrity="sha512-NsPNeVDkUz+n2jFQ2XLj7fNNB/g8AmT/BMrQlp39s7inBlsO1scwxtNKe61RbPxvalkXqx/bELJfSB+KF7VMFg==" />
|
||||
|
||||
|
||||
<script type="text/javascript" src="/js/appearance.min.516a16745bea5a9bd011138d254cc0fd3973cd55ce6e15f3dec763e7c7c2c7448f8fe7b54cca811cb821b0c7e12cd161caace1dd794ac3d34d40937cbcc9ee12.js"
|
||||
integrity="sha512-UWoWdFvqWpvQERONJUzA/TlzzVXObhXz3sdj58fCx0SPj+e1TMqBHLghsMfhLNFhyqzh3XlKw9NNQJN8vMnuEg=="></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer type="text/javascript" id="script-bundle" src="/js/main.bundle.min.52b8d61b061c90a738102a0eac69eaa1479fdf5de882a0b0741d7515240617156a6c4477fcc91f9c962062804fe62d2932bb9f57d0aded208c762c2e1ed2e202.js"
|
||||
integrity="sha512-UrjWGwYckKc4ECoOrGnqoUef313ogqCwdB11FSQGFxVqbER3/MkfnJYgYoBP5i0pMrufV9Ct7SCMdiwuHtLiAg==" data-copy="Copy" data-copied="Copied"></script>
|
||||
|
||||
|
||||
|
||||
<script src="/lib/zoom/zoom.min.f592a181a15d2a5b042daa7f746c3721acf9063f8b6acd175d989129865a37d400ae0e85b640f9ad42cd98d1f8ad30931718cf8811abdcc5fcb264400d1a2b0c.js" integrity="sha512-9ZKhgaFdKlsELap/dGw3Iaz5Bj+Las0XXZiRKYZaN9QArg6FtkD5rULNmNH4rTCTFxjPiBGr3MX8smRADRorDA=="></script>
|
||||
|
||||
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||
<link rel="manifest" href="/site.webmanifest" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="http://localhost:1313/projects/self_host/stock_bot/10_todo/">
|
||||
<meta property="og:site_name" content="SWangNice">
|
||||
<meta property="og:title" content="TODO List">
|
||||
<meta property="og:description" content="My awesome website (English)">
|
||||
<meta property="og:locale" content="en">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="projects">
|
||||
<meta property="article:published_time" content="2024-09-20T04:17:50+00:00">
|
||||
<meta property="article:modified_time" content="2024-09-20T04:17:50+00:00">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="TODO List">
|
||||
<meta name="twitter:description" content="My awesome website (English)">
|
||||
|
||||
|
||||
<script type="application/ld+json">
|
||||
[{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"articleSection": "Projects",
|
||||
"name": "TODO List",
|
||||
"headline": "TODO List",
|
||||
|
||||
|
||||
"inLanguage": "en",
|
||||
"url" : "http:\/\/localhost:1313\/projects\/self_host\/stock_bot\/10_todo\/",
|
||||
"author" : {
|
||||
"@type": "Person",
|
||||
"name": "SWang"
|
||||
},
|
||||
"copyrightYear": "2024",
|
||||
"dateCreated": "2024-09-20T04:17:50\u002b00:00",
|
||||
"datePublished": "2024-09-20T04:17:50\u002b00:00",
|
||||
|
||||
"dateModified": "2024-09-20T04:17:50\u002b00:00",
|
||||
|
||||
|
||||
|
||||
"mainEntityOfPage": "true",
|
||||
"wordCount": "0"
|
||||
}]
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="author" content="SWang" />
|
||||
|
||||
|
||||
|
||||
|
||||
<link href="https://swangnice.com" rel="me" />
|
||||
|
||||
|
||||
|
||||
|
||||
<link href="https://github.com/swangnice" rel="me" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="/lib/jquery/jquery.slim.min.b0dca576e87d7eaa5850ae4e61759c065786cdb6489d68fcc82240539eebd5da522bdb4fda085ffd245808c8fe2acb2516408eb774ef26b5f6015fc6737c0ea8.js" integrity="sha512-sNylduh9fqpYUK5OYXWcBleGzbZInWj8yCJAU57r1dpSK9tP2ghf/SRYCMj+KsslFkCOt3TvJrX2AV/Gc3wOqA=="></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta name="theme-color"/>
|
||||
|
||||
|
||||
</head>
|
||||
<body
|
||||
class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32 scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600">
|
||||
<div id="the-top" class="absolute flex self-center">
|
||||
<a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
||||
href="#main-content"><span
|
||||
class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</span>Skip to main content</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px"
|
||||
class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start gap-x-3">
|
||||
|
||||
<div class="flex flex-1 items-center justify-between">
|
||||
<nav class="flex space-x-3">
|
||||
|
||||
|
||||
<a href="/" class="text-base font-medium text-gray-500 hover:text-gray-900">SWangNice</a>
|
||||
|
||||
|
||||
</nav>
|
||||
<nav class="hidden md:flex items-center gap-x-5 md:ml-12 h-12">
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Home
|
||||
</p>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a href="/notes/" class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
Notes
|
||||
</a>
|
||||
<span>
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<div class="absolute menuhide">
|
||||
<div class="pt-2 p-5 mt-2 rounded-xl backdrop-blur shadow-2xl">
|
||||
<div class="flex flex-col space-y-3">
|
||||
|
||||
<a href="/notes/coding/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-sm" title="">
|
||||
Coding
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="/notes/pdf/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-sm" title="">
|
||||
PDF Collection
|
||||
</p>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/projects/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
Projects
|
||||
</p>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
<div class="cursor-pointer flex items-center nested-menu">
|
||||
|
||||
<a class="text-base font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="">
|
||||
RestHere
|
||||
</a>
|
||||
<span>
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<div class="absolute menuhide">
|
||||
<div class="pt-2 p-5 mt-2 rounded-xl backdrop-blur shadow-2xl">
|
||||
<div class="flex flex-col space-y-3">
|
||||
|
||||
<a href="/life/pet/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-sm" title="">
|
||||
My Pet
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<a href="/life/travel/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-sm" title="">
|
||||
My Travel
|
||||
</p>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="https://swangnice.com" target="_blank" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<span >
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M172.5 131.1C228.1 75.51 320.5 75.51 376.1 131.1C426.1 181.1 433.5 260.8 392.4 318.3L391.3 319.9C381 334.2 361 337.6 346.7 327.3C332.3 317 328.9 297 339.2 282.7L340.3 281.1C363.2 249 359.6 205.1 331.7 177.2C300.3 145.8 249.2 145.8 217.7 177.2L105.5 289.5C73.99 320.1 73.99 372 105.5 403.5C133.3 431.4 177.3 435 209.3 412.1L210.9 410.1C225.3 400.7 245.3 404 255.5 418.4C265.8 432.8 262.5 452.8 248.1 463.1L246.5 464.2C188.1 505.3 110.2 498.7 60.21 448.8C3.741 392.3 3.741 300.7 60.21 244.3L172.5 131.1zM467.5 380C411 436.5 319.5 436.5 263 380C213 330 206.5 251.2 247.6 193.7L248.7 192.1C258.1 177.8 278.1 174.4 293.3 184.7C307.7 194.1 311.1 214.1 300.8 229.3L299.7 230.9C276.8 262.1 280.4 306.9 308.3 334.8C339.7 366.2 390.8 366.2 422.3 334.8L534.5 222.5C566 191 566 139.1 534.5 108.5C506.7 80.63 462.7 76.99 430.7 99.9L429.1 101C414.7 111.3 394.7 107.1 384.5 93.58C374.2 79.2 377.5 59.21 391.9 48.94L393.5 47.82C451 6.731 529.8 13.25 579.8 63.24C636.3 119.7 636.3 211.3 579.8 267.7L467.5 380z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
|
||||
</p>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="https://github.com/swangnice" target="_blank" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<span >
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
<p class="text-base font-medium" title="">
|
||||
|
||||
</p>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<button id="search-button" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400"
|
||||
title="">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div
|
||||
class=" flex items-center">
|
||||
<button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400">
|
||||
<div class="flex items-center justify-center dark:hidden">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="items-center justify-center hidden dark:flex">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
</nav>
|
||||
<div class="flex md:hidden items-center gap-x-5 md:ml-12 h-12">
|
||||
|
||||
<span></span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<button id="search-button-mobile" aria-label="Search" class="text-base hover:text-primary-600 dark:hover:text-primary-400"
|
||||
title="">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
|
||||
<button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400 ltr:mr-1 rtl:ml-1">
|
||||
<div class="flex items-center justify-center dark:hidden">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="items-center justify-center hidden dark:flex">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
</button>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="-my-2 md:hidden">
|
||||
|
||||
<label id="menu-button" class="block">
|
||||
|
||||
<div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="menu-wrapper" style="padding-top:5px;"
|
||||
class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50">
|
||||
<ul
|
||||
class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl">
|
||||
|
||||
<li id="menu-close-button">
|
||||
<span
|
||||
class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
</span>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/en/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Home
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/notes/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Notes
|
||||
</p>
|
||||
<span>
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/notes/coding/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-small" title="">
|
||||
Coding
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/notes/pdf/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-small" title="">
|
||||
PDF Collection
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mb-2"></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/projects/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
Projects
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
RestHere
|
||||
</p>
|
||||
<span>
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/life/pet/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-small" title="">
|
||||
My Pet
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="/life/travel/" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<p class="text-sm font-small" title="">
|
||||
My Travel
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="mb-2"></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="https://swangnice.com" target="_blank" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<div >
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M172.5 131.1C228.1 75.51 320.5 75.51 376.1 131.1C426.1 181.1 433.5 260.8 392.4 318.3L391.3 319.9C381 334.2 361 337.6 346.7 327.3C332.3 317 328.9 297 339.2 282.7L340.3 281.1C363.2 249 359.6 205.1 331.7 177.2C300.3 145.8 249.2 145.8 217.7 177.2L105.5 289.5C73.99 320.1 73.99 372 105.5 403.5C133.3 431.4 177.3 435 209.3 412.1L210.9 410.1C225.3 400.7 245.3 404 255.5 418.4C265.8 432.8 262.5 452.8 248.1 463.1L246.5 464.2C188.1 505.3 110.2 498.7 60.21 448.8C3.741 392.3 3.741 300.7 60.21 244.3L172.5 131.1zM467.5 380C411 436.5 319.5 436.5 263 380C213 330 206.5 251.2 247.6 193.7L248.7 192.1C258.1 177.8 278.1 174.4 293.3 184.7C307.7 194.1 311.1 214.1 300.8 229.3L299.7 230.9C276.8 262.1 280.4 306.9 308.3 334.8C339.7 366.2 390.8 366.2 422.3 334.8L534.5 222.5C566 191 566 139.1 534.5 108.5C506.7 80.63 462.7 76.99 430.7 99.9L429.1 101C414.7 111.3 394.7 107.1 384.5 93.58C374.2 79.2 377.5 59.21 391.9 48.94L393.5 47.82C451 6.731 529.8 13.25 579.8 63.24C636.3 119.7 636.3 211.3 579.8 267.7L467.5 380z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="mt-1">
|
||||
<a href="https://github.com/swangnice" target="_blank" class="flex items-center text-gray-500 hover:text-primary-600 dark:hover:text-primary-400">
|
||||
|
||||
<div >
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<p class="text-bg font-bg" title="">
|
||||
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="relative flex flex-col grow">
|
||||
<main id="main-content" class="grow">
|
||||
|
||||
|
||||
|
||||
<article>
|
||||
|
||||
|
||||
<header id="single_header" class="mt-5 max-w-prose">
|
||||
|
||||
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
|
||||
TODO List
|
||||
</h1>
|
||||
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-row flex-wrap items-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">
|
||||
|
||||
|
||||
|
||||
<div class="min-w-0 min-h-0 max-w-fit">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="article-content max-w-prose mb-20">
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var oid = "views_projects\/self_host\/stock_bot\/10_todo.md"
|
||||
var oid_likes = "likes_projects\/self_host\/stock_bot\/10_todo.md"
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/js/page.min.0860cf4e04fa2d72cc33ddba263083464d48f67de06114529043cb4623319efed4f484fd7f1730df5abea0e2da6f3538855634081d02f2d6e920b956f063e823.js" integrity="sha512-CGDPTgT6LXLMM926JjCDRk1I9n3gYRRSkEPLRiMxnv7U9IT9fxcw31q+oOLabzU4hVY0CB0C8tbpILlW8GPoIw=="></script>
|
||||
|
||||
|
||||
</section>
|
||||
<footer class="pt-8 max-w-prose print:hidden">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
</article>
|
||||
|
||||
|
||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
||||
|
||||
|
||||
|
||||
<nav class="flex flex-row pb-4 text-base font-medium text-neutral-500 dark:text-neutral-400">
|
||||
<ul class="flex flex-col list-none sm:flex-row">
|
||||
|
||||
<li class="flex mb-1 ltr:text-right rtl:text-left sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0">
|
||||
<a class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2 flex items-center" href="/tags/"
|
||||
title="">
|
||||
|
||||
Tags
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="flex items-center justify-between">
|
||||
|
||||
|
||||
|
||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
©
|
||||
2025
|
||||
SWang
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
||||
|
||||
|
||||
Powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
||||
</p>
|
||||
|
||||
|
||||
</div>
|
||||
<script>
|
||||
|
||||
mediumZoom(document.querySelectorAll("img:not(.nozoom)"), {
|
||||
margin: 24,
|
||||
background: 'rgba(0,0,0,0.5)',
|
||||
scrollOffset: 0,
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/js/process.min.ee03488f19c93c2efb199e2e3014ea5f3cb2ce7d45154adb3399a158cac27ca52831db249ede5bb602700ef87eb02434139de0858af1818ab0fb4182472204a4.js" integrity="sha512-7gNIjxnJPC77GZ4uMBTqXzyyzn1FFUrbM5mhWMrCfKUoMdsknt5btgJwDvh+sCQ0E53ghYrxgYqw+0GCRyIEpA=="></script>
|
||||
|
||||
|
||||
</footer>
|
||||
<div
|
||||
id="search-wrapper"
|
||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh]"
|
||||
data-url="http://localhost:1313/"
|
||||
style="z-index:500"
|
||||
>
|
||||
<div
|
||||
id="search-modal"
|
||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800"
|
||||
>
|
||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
||||
<form class="flex items-center flex-auto min-w-0">
|
||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
<input
|
||||
type="search"
|
||||
id="search-query"
|
||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
||||
placeholder="Search"
|
||||
tabindex="0"
|
||||
/>
|
||||
</form>
|
||||
<button
|
||||
id="close-search-button"
|
||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
||||
title="Close (Esc)"
|
||||
>
|
||||
|
||||
|
||||
<span class="relative block icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
</button>
|
||||
</header>
|
||||
<section class="flex-auto px-2 overflow-auto">
|
||||
<ul id="search-results">
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 86 KiB |
@@ -1,49 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>StockBot on SWangNice</title>
|
||||
<link>http://localhost:1313/projects/self_host/stock_bot/</link>
|
||||
<description>Recent content in StockBot on SWangNice</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en</language>
|
||||
<copyright>© 2025 SWang</copyright>
|
||||
<lastBuildDate>Fri, 20 Sep 2024 04:17:50 +0000</lastBuildDate><atom:link href="http://localhost:1313/projects/self_host/stock_bot/index.xml" rel="self" type="application/rss+xml" />
|
||||
|
||||
<item>
|
||||
<title>TODO List</title>
|
||||
<link>http://localhost:1313/projects/self_host/stock_bot/01_todo/</link>
|
||||
<pubDate>Fri, 20 Sep 2024 04:17:50 +0000</pubDate>
|
||||
|
||||
<guid>http://localhost:1313/projects/self_host/stock_bot/01_todo/</guid>
|
||||
<description><h2 class="relative group">Short-term TODO
|
||||
<div id="short-term-todo" class="anchor"></div>
|
||||
|
||||
<span
|
||||
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
|
||||
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700"
|
||||
style="text-decoration-line: none !important;" href="#short-term-todo" aria-label="Anchor">#</a>
|
||||
</span>
|
||||
|
||||
</h2>
|
||||
<ul>
|
||||
<li>🚧 The Initial Policy implement (Parameterizing transaction variables)</li>
|
||||
<li>⬜️ The evaluate &amp; logger script</li>
|
||||
<li>⬜ The automatic scripts with Email Sender deployed on the Server</li>
|
||||
<li>⬜ Web UI, will not be too complex just a simple one to synchronous my account for customized policy</li>
|
||||
<li>⬜️ Implement RL algorithms</li>
|
||||
</ul></description>
|
||||
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Showcases</title>
|
||||
<link>http://localhost:1313/projects/self_host/stock_bot/02_results/</link>
|
||||
<pubDate>Fri, 20 Sep 2024 04:17:50 +0000</pubDate>
|
||||
|
||||
<guid>http://localhost:1313/projects/self_host/stock_bot/02_results/</guid>
|
||||
<description><p>This section will feature occasional showcases of my technical achievements—focused purely on the engineering side, not the income.</p></description>
|
||||
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||