???
This commit is contained in:
parent
a0cd390178
commit
f69dff2f14
37 changed files with 77324 additions and 19 deletions
11
eslint.config.js
Normal file
11
eslint.config.js
Normal file
|
@ -0,0 +1,11 @@
|
|||
import globals from "globals";
|
||||
import pluginJs from "@eslint/js";
|
||||
import tseslint from "typescript-eslint";
|
||||
|
||||
|
||||
export default [
|
||||
{files: ["**/*.{js,mjs,cjs,ts}"]},
|
||||
{languageOptions: { globals: globals.browser }},
|
||||
pluginJs.configs.recommended,
|
||||
...tseslint.configs.recommended,
|
||||
];
|
0
eslint.config.mjs
Normal file
0
eslint.config.mjs
Normal file
36
src/content/blog/.obsidian/app.json
vendored
Normal file
36
src/content/blog/.obsidian/app.json
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"useMarkdownLinks": true,
|
||||
"attachmentFolderPath": "./images",
|
||||
"vimMode": true,
|
||||
"mobileToolbarCommands": [
|
||||
"editor:insert-wikilink",
|
||||
"editor:insert-embed",
|
||||
"editor:insert-tag",
|
||||
"editor:attach-file",
|
||||
"editor:set-heading",
|
||||
"editor:toggle-bold",
|
||||
"editor:toggle-italics",
|
||||
"editor:toggle-strikethrough",
|
||||
"editor:toggle-highlight",
|
||||
"editor:toggle-code",
|
||||
"editor:toggle-blockquote",
|
||||
"editor:insert-link",
|
||||
"editor:toggle-bullet-list",
|
||||
"editor:toggle-numbered-list",
|
||||
"editor:toggle-checklist-status",
|
||||
"editor:indent-list",
|
||||
"editor:unindent-list",
|
||||
"editor:undo",
|
||||
"editor:redo",
|
||||
"editor:configure-toolbar",
|
||||
"editor:insert-callout",
|
||||
"editor:insert-table"
|
||||
],
|
||||
"pdfExportSettings": {
|
||||
"includeName": true,
|
||||
"pageSize": "Letter",
|
||||
"landscape": true,
|
||||
"margin": "0",
|
||||
"downscalePercent": 100
|
||||
}
|
||||
}
|
10
src/content/blog/.obsidian/appearance.json
vendored
Normal file
10
src/content/blog/.obsidian/appearance.json
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"accentColor": "#1a538d",
|
||||
"interfaceFontFamily": "Atkinson Hyperlegible",
|
||||
"textFontFamily": "Atkinson Hyperlegible",
|
||||
"baseFontSize": 16,
|
||||
"baseFontSizeAction": true,
|
||||
"monospaceFontFamily": "Fairfax Hax HD",
|
||||
"cssTheme": "Lunar Witch",
|
||||
"theme": "obsidian"
|
||||
}
|
4
src/content/blog/.obsidian/community-plugins.json
vendored
Normal file
4
src/content/blog/.obsidian/community-plugins.json
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
[
|
||||
"obsidian-git",
|
||||
"templater-obsidian"
|
||||
]
|
30
src/content/blog/.obsidian/core-plugins-migration.json
vendored
Normal file
30
src/content/blog/.obsidian/core-plugins-migration.json
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"properties": true,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": true,
|
||||
"editor-status": true,
|
||||
"bookmarks": true,
|
||||
"markdown-importer": false,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": true,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": false
|
||||
}
|
23
src/content/blog/.obsidian/core-plugins.json
vendored
Normal file
23
src/content/blog/.obsidian/core-plugins.json
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
[
|
||||
"file-explorer",
|
||||
"global-search",
|
||||
"switcher",
|
||||
"graph",
|
||||
"backlink",
|
||||
"canvas",
|
||||
"outgoing-link",
|
||||
"tag-pane",
|
||||
"properties",
|
||||
"page-preview",
|
||||
"daily-notes",
|
||||
"templates",
|
||||
"note-composer",
|
||||
"command-palette",
|
||||
"slash-command",
|
||||
"editor-status",
|
||||
"bookmarks",
|
||||
"outline",
|
||||
"word-count",
|
||||
"slides",
|
||||
"file-recovery"
|
||||
]
|
11
src/content/blog/.obsidian/hotkeys.json
vendored
Normal file
11
src/content/blog/.obsidian/hotkeys.json
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"editor:toggle-source": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "/"
|
||||
}
|
||||
],
|
||||
"editor:toggle-comments": []
|
||||
}
|
58
src/content/blog/.obsidian/plugins/obsidian-git/data.json
vendored
Normal file
58
src/content/blog/.obsidian/plugins/obsidian-git/data.json
vendored
Normal file
|
@ -0,0 +1,58 @@
|
|||
{
|
||||
"commitMessage": "vault backup: {{date}}",
|
||||
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"autoSaveInterval": 0,
|
||||
"autoPushInterval": 10,
|
||||
"autoPullInterval": 10,
|
||||
"autoPullOnBoot": true,
|
||||
"disablePush": false,
|
||||
"pullBeforePush": true,
|
||||
"disablePopups": false,
|
||||
"disablePopupsForNoChanges": true,
|
||||
"listChangedFilesInMessageBody": false,
|
||||
"showStatusBar": true,
|
||||
"updateSubmodules": false,
|
||||
"syncMethod": "rebase",
|
||||
"customMessageOnAutoBackup": false,
|
||||
"autoBackupAfterFileChange": false,
|
||||
"treeStructure": false,
|
||||
"refreshSourceControl": true,
|
||||
"basePath": "",
|
||||
"differentIntervalCommitAndPush": true,
|
||||
"changedFilesInStatusBar": false,
|
||||
"showedMobileNotice": true,
|
||||
"refreshSourceControlTimer": 7000,
|
||||
"showBranchStatusBar": true,
|
||||
"setLastSaveToLastCommit": false,
|
||||
"submoduleRecurseCheckout": false,
|
||||
"gitDir": "",
|
||||
"showFileMenu": true,
|
||||
"authorInHistoryView": "hide",
|
||||
"dateInHistoryView": false,
|
||||
"lineAuthor": {
|
||||
"show": false,
|
||||
"followMovement": "inactive",
|
||||
"authorDisplay": "initials",
|
||||
"showCommitHash": false,
|
||||
"dateTimeFormatOptions": "date",
|
||||
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
|
||||
"dateTimeTimezone": "viewer-local",
|
||||
"coloringMaxAge": "1y",
|
||||
"colorNew": {
|
||||
"r": 255,
|
||||
"g": 150,
|
||||
"b": 150
|
||||
},
|
||||
"colorOld": {
|
||||
"r": 120,
|
||||
"g": 160,
|
||||
"b": 255
|
||||
},
|
||||
"textColorCss": "var(--text-muted)",
|
||||
"ignoreWhitespace": false,
|
||||
"gutterSpacingFallbackLength": 5,
|
||||
"lastShownAuthorDisplay": "initials",
|
||||
"lastShownDateTimeFormatOptions": "date"
|
||||
},
|
||||
"autoCommitMessage": "vault backup: {{date}}"
|
||||
}
|
45283
src/content/blog/.obsidian/plugins/obsidian-git/main.js
vendored
Normal file
45283
src/content/blog/.obsidian/plugins/obsidian-git/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
src/content/blog/.obsidian/plugins/obsidian-git/manifest.json
vendored
Normal file
9
src/content/blog/.obsidian/plugins/obsidian-git/manifest.json
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"id": "obsidian-git",
|
||||
"name": "Git",
|
||||
"description": "Backup your vault with Git.",
|
||||
"isDesktopOnly": false,
|
||||
"fundingUrl": "https://ko-fi.com/vinzent",
|
||||
"js": "main.js",
|
||||
"version": "2.24.2"
|
||||
}
|
558
src/content/blog/.obsidian/plugins/obsidian-git/styles.css
vendored
Normal file
558
src/content/blog/.obsidian/plugins/obsidian-git/styles.css
vendored
Normal file
|
@ -0,0 +1,558 @@
|
|||
@keyframes loading {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="git-view"] .button-border {
|
||||
border: 2px solid var(--interactive-accent);
|
||||
border-radius: var(--radius-s);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="git-view"] .view-content {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="git-history-view"] .view-content {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.loading > svg {
|
||||
animation: 2s linear infinite loading;
|
||||
transform-origin: 50% 50%;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.obsidian-git-center {
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.obsidian-git-textarea {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.obsidian-git-center-button {
|
||||
display: block;
|
||||
margin: 20px auto;
|
||||
}
|
||||
|
||||
.tooltip.mod-left {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
.tooltip.mod-right {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.git-tools {
|
||||
display: flex;
|
||||
margin-left: auto;
|
||||
}
|
||||
.git-tools .type {
|
||||
padding-left: var(--size-2-1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 11px;
|
||||
}
|
||||
|
||||
.git-tools .type[data-type="M"] {
|
||||
color: orange;
|
||||
}
|
||||
.git-tools .type[data-type="D"] {
|
||||
color: red;
|
||||
}
|
||||
.git-tools .buttons {
|
||||
display: flex;
|
||||
}
|
||||
.git-tools .buttons > * {
|
||||
padding: 0 0;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.git-author {
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
.git-date {
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
.git-ref {
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-d-none {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-wrapper {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header {
|
||||
background-color: var(--background-primary);
|
||||
border-bottom: 1px solid var(--interactive-accent);
|
||||
font-family: var(--font-monospace);
|
||||
height: 35px;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
|
||||
font-size: 14px;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-added {
|
||||
border: 1px solid #b4e2b4;
|
||||
border-radius: 5px 0 0 5px;
|
||||
color: #399839;
|
||||
padding: 2px;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted {
|
||||
border: 1px solid #e9aeae;
|
||||
border-radius: 0 5px 5px 0;
|
||||
color: #c33;
|
||||
margin-left: 1px;
|
||||
padding: 2px;
|
||||
text-align: left;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper {
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
font-size: 15px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name {
|
||||
overflow-x: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper {
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 3px;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse {
|
||||
-webkit-box-pack: end;
|
||||
-ms-flex-pack: end;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 3px;
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
font-size: 12px;
|
||||
justify-content: flex-end;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected {
|
||||
background-color: #c8e1ff;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input {
|
||||
margin: 0 4px 0 0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-table {
|
||||
border-collapse: collapse;
|
||||
font-family: Menlo, Consolas, monospace;
|
||||
font-size: 13px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-files-diff {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-diff {
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff {
|
||||
display: inline-block;
|
||||
margin-bottom: -8px;
|
||||
margin-right: -4px;
|
||||
overflow-x: scroll;
|
||||
overflow-y: hidden;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line {
|
||||
padding: 0 8em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
|
||||
display: inline-block;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
|
||||
padding: 0 4.5em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn {
|
||||
word-wrap: normal;
|
||||
background: none;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
-webkit-user-select: text;
|
||||
-moz-user-select: text;
|
||||
-ms-user-select: text;
|
||||
user-select: text;
|
||||
vertical-align: middle;
|
||||
white-space: pre;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||
.theme-light
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-code-side-line
|
||||
del {
|
||||
background-color: #ffb6ba;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||
.theme-dark
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-code-side-line
|
||||
del {
|
||||
background-color: #8d232881;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
|
||||
border-radius: 0.2em;
|
||||
display: inline-block;
|
||||
margin-top: -1px;
|
||||
text-decoration: none;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||
.theme-light
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-code-side-line
|
||||
ins {
|
||||
background-color: #97f295;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
|
||||
.theme-dark
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-code-side-line
|
||||
ins {
|
||||
background-color: #1d921996;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix {
|
||||
word-wrap: normal;
|
||||
background: none;
|
||||
display: inline;
|
||||
padding: 0;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num1 {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num1,
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
padding: 0 0.5em;
|
||||
text-overflow: ellipsis;
|
||||
width: 3.5em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .line-num2 {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber {
|
||||
background-color: var(--background-primary);
|
||||
border: solid var(--background-modifier-border);
|
||||
border-width: 0 1px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: var(--text-muted);
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
width: 7.5em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after {
|
||||
content: "\200b";
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
|
||||
background-color: var(--background-primary);
|
||||
border: solid var(--background-modifier-border);
|
||||
border-width: 0 1px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: var(--text-muted);
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
padding: 0 0.5em;
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
text-overflow: ellipsis;
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after {
|
||||
content: "\200b";
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
|
||||
background-color: var(--background-primary);
|
||||
border-color: var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del {
|
||||
background-color: #fee8e9;
|
||||
border-color: #e9aeae;
|
||||
}
|
||||
|
||||
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
|
||||
background-color: #dfd;
|
||||
border-color: #b4e2b4;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del {
|
||||
background-color: #521b1d83;
|
||||
border-color: #691d1d73;
|
||||
}
|
||||
|
||||
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
|
||||
background-color: rgba(30, 71, 30, 0.5);
|
||||
border-color: #13501381;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-info {
|
||||
background-color: var(--background-primary);
|
||||
border-color: var(--background-modifier-border);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.theme-light
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-diff
|
||||
.d2h-del.d2h-change {
|
||||
background-color: #fdf2d0;
|
||||
}
|
||||
|
||||
.theme-dark
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-diff
|
||||
.d2h-del.d2h-change {
|
||||
background-color: #55492480;
|
||||
}
|
||||
|
||||
.theme-light
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-diff
|
||||
.d2h-ins.d2h-change {
|
||||
background-color: #ded;
|
||||
}
|
||||
|
||||
.theme-dark
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-diff
|
||||
.d2h-ins.d2h-change {
|
||||
background-color: rgba(37, 78, 37, 0.418);
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a {
|
||||
color: #3572b0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"]
|
||||
.d2h-file-list-wrapper
|
||||
a:visited {
|
||||
color: #3572b0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list {
|
||||
display: block;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li {
|
||||
border-bottom: 1px solid var(--background-modifier-border);
|
||||
margin: 0;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-file-switch {
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-icon {
|
||||
fill: currentColor;
|
||||
margin-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted {
|
||||
color: #c33;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-added {
|
||||
color: #399839;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-changed {
|
||||
color: #d0b44c;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-moved {
|
||||
color: #3572b0;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-tag {
|
||||
background-color: var(--background-primary);
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
font-size: 10px;
|
||||
margin-left: 5px;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag {
|
||||
border: 2px solid #c33;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-added-tag {
|
||||
border: 1px solid #399839;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag {
|
||||
border: 1px solid #d0b44c;
|
||||
}
|
||||
|
||||
.workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag {
|
||||
border: 1px solid #3572b0;
|
||||
}
|
||||
|
||||
/* ====================== Line Authoring Information ====================== */
|
||||
|
||||
.cm-gutterElement.obs-git-blame-gutter {
|
||||
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
|
||||
border-width: 0px 2px 0.2px 2px;
|
||||
border-style: solid;
|
||||
border-color: var(--background-secondary);
|
||||
background-color: var(--background-secondary);
|
||||
}
|
||||
|
||||
.cm-gutterElement.obs-git-blame-gutter > div,
|
||||
.line-author-settings-preview {
|
||||
/* delegate text color to settings */
|
||||
color: var(--obs-git-gutter-text);
|
||||
font-family: monospace;
|
||||
height: 100%; /* ensure, that age-based background color occupies entire parent */
|
||||
text-align: right;
|
||||
padding: 0px 6px 0px 6px;
|
||||
white-space: pre; /* Keep spaces and do not collapse them. */
|
||||
}
|
||||
|
||||
@media(max-width:800px){
|
||||
/* hide git blame gutter not to superpose text */
|
||||
.cm-gutterElement.obs-git-blame-gutter {
|
||||
display: none;
|
||||
}
|
||||
}
|
70
src/content/blog/.obsidian/plugins/obsidian-livesync/data.json
vendored
Normal file
70
src/content/blog/.obsidian/plugins/obsidian-livesync/data.json
vendored
Normal file
|
@ -0,0 +1,70 @@
|
|||
{
|
||||
"couchDB_URI": "",
|
||||
"couchDB_USER": "",
|
||||
"couchDB_PASSWORD": "",
|
||||
"couchDB_DBNAME": "",
|
||||
"liveSync": true,
|
||||
"syncOnSave": false,
|
||||
"syncOnStart": false,
|
||||
"savingDelay": 200,
|
||||
"lessInformationInLog": false,
|
||||
"gcDelay": 0,
|
||||
"versionUpFlash": "",
|
||||
"minimumChunkSize": 20,
|
||||
"longLineThreshold": 250,
|
||||
"showVerboseLog": false,
|
||||
"suspendFileWatching": false,
|
||||
"trashInsteadDelete": true,
|
||||
"periodicReplication": false,
|
||||
"periodicReplicationInterval": 60,
|
||||
"syncOnFileOpen": false,
|
||||
"encrypt": false,
|
||||
"passphrase": "",
|
||||
"doNotDeleteFolder": false,
|
||||
"resolveConflictsByNewerFile": false,
|
||||
"batchSave": false,
|
||||
"deviceAndVaultName": "",
|
||||
"usePluginSettings": false,
|
||||
"showOwnPlugins": false,
|
||||
"showStatusOnEditor": false,
|
||||
"usePluginSync": false,
|
||||
"autoSweepPlugins": false,
|
||||
"autoSweepPluginsPeriodic": false,
|
||||
"notifyPluginOrSettingUpdated": false,
|
||||
"checkIntegrityOnSave": false,
|
||||
"batch_size": 50,
|
||||
"batches_limit": 40,
|
||||
"useHistory": true,
|
||||
"disableRequestURI": true,
|
||||
"skipOlderFilesOnSync": true,
|
||||
"checkConflictOnlyOnOpen": false,
|
||||
"syncInternalFiles": false,
|
||||
"syncInternalFilesBeforeReplication": false,
|
||||
"syncInternalFilesIgnorePatterns": "\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",
|
||||
"syncInternalFilesInterval": 60,
|
||||
"additionalSuffixOfDatabaseName": "",
|
||||
"ignoreVersionCheck": false,
|
||||
"lastReadUpdates": 0,
|
||||
"deleteMetadataOfDeletedFiles": false,
|
||||
"syncIgnoreRegEx": "",
|
||||
"syncOnlyRegEx": "",
|
||||
"customChunkSize": 100,
|
||||
"readChunksOnline": true,
|
||||
"watchInternalFileChanges": true,
|
||||
"automaticallyDeleteMetadataOfDeletedFiles": 0,
|
||||
"disableMarkdownAutoMerge": false,
|
||||
"writeDocumentsIfConflicted": false,
|
||||
"useDynamicIterationCount": false,
|
||||
"syncAfterMerge": false,
|
||||
"configPassphraseStore": "",
|
||||
"encryptedPassphrase": "",
|
||||
"encryptedCouchDBConnection": "[\"WxsQs2gfmXFZCqA8MYSo/ZGeKOHSq6hYKM77yVJdih4mKrTXFIRZVtrGbF7q80eivURsqjAoSzWCWdL8nrEOzSZoWULLtYGb5t/JpQqfP6o+ubYimw63IGCQPxpOLlyGLYm/RITk0sLXDTMCIkKUzeiMB0kQ6bnmQyfnRsD105xIZVnGjbgdVtQTFk0b/PTs0R6FgcG2DSjSbKGgyZw=\",\"49337be5455b0d06216a912b20000000\",\"7aa93e29c36d6c9ce6a9126b1dbb8ee5\"]",
|
||||
"permitEmptyPassphrase": false,
|
||||
"useIndexedDBAdapter": false,
|
||||
"useTimeouts": false,
|
||||
"writeLogToTheFile": false,
|
||||
"hashCacheMaxCount": 300,
|
||||
"hashCacheMaxAmount": 50,
|
||||
"concurrencyOfReadChunksOnline": 100,
|
||||
"minimumIntervalOfReadChunksOnline": 333
|
||||
}
|
24242
src/content/blog/.obsidian/plugins/obsidian-livesync/main.js
vendored
Normal file
24242
src/content/blog/.obsidian/plugins/obsidian-livesync/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
src/content/blog/.obsidian/plugins/obsidian-livesync/manifest.json
vendored
Normal file
10
src/content/blog/.obsidian/plugins/obsidian-livesync/manifest.json
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "obsidian-livesync",
|
||||
"name": "Self-hosted LiveSync",
|
||||
"version": "0.17.34",
|
||||
"minAppVersion": "0.9.12",
|
||||
"description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
|
||||
"author": "vorotamoroz",
|
||||
"authorUrl": "https://github.com/vrtmrz",
|
||||
"isDesktopOnly": false
|
||||
}
|
254
src/content/blog/.obsidian/plugins/obsidian-livesync/styles.css
vendored
Normal file
254
src/content/blog/.obsidian/plugins/obsidian-livesync/styles.css
vendored
Normal file
|
@ -0,0 +1,254 @@
|
|||
.added {
|
||||
color: var(--text-on-accent);
|
||||
background-color: var(--text-accent);
|
||||
}
|
||||
|
||||
.normal {
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.deleted {
|
||||
color: var(--text-on-accent);
|
||||
background-color: var(--text-muted);
|
||||
}
|
||||
|
||||
.op-scrollable {
|
||||
overflow-y: scroll;
|
||||
/* min-height: 280px; */
|
||||
max-height: 280px;
|
||||
user-select: text;
|
||||
}
|
||||
|
||||
.op-pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.op-warn {
|
||||
border: 1px solid salmon;
|
||||
padding: 2px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.op-warn::before {
|
||||
content: "Warning";
|
||||
font-weight: bold;
|
||||
color: salmon;
|
||||
position: relative;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.op-warn-info {
|
||||
border: 1px solid rgb(255, 209, 81);
|
||||
padding: 2px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.op-warn-info::before {
|
||||
content: "Notice";
|
||||
font-weight: bold;
|
||||
color: rgb(255, 209, 81);
|
||||
position: relative;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.syncstatusbar {
|
||||
-webkit-filter: grayscale(100%);
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
|
||||
.tcenter {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sls-plugins-wrap {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
max-height: 50vh;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.sls-plugins-tbl {
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
width: 100%;
|
||||
max-height: 80%;
|
||||
}
|
||||
|
||||
.divider th {
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
/* .sls-table-head{
|
||||
width:50%;
|
||||
}
|
||||
.sls-table-tail{
|
||||
width:50%;
|
||||
|
||||
} */
|
||||
|
||||
|
||||
.sls-header-button {
|
||||
margin-left: 2em;
|
||||
}
|
||||
|
||||
.sls-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
:root {
|
||||
--slsmessage: "";
|
||||
}
|
||||
|
||||
.CodeMirror-wrap::before,
|
||||
.cm-s-obsidian>.cm-editor::before,
|
||||
.canvas-wrapper::before {
|
||||
content: attr(data-log);
|
||||
text-align: right;
|
||||
white-space: pre-wrap;
|
||||
position: absolute;
|
||||
border-radius: 4px;
|
||||
/* border:1px solid --background-modifier-border; */
|
||||
display: inline-block;
|
||||
top: 8px;
|
||||
color: --text-normal;
|
||||
opacity: 0.5;
|
||||
font-size: 80%;
|
||||
-webkit-filter: grayscale(100%);
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
|
||||
.canvas-wrapper::before {
|
||||
right: 48px;
|
||||
}
|
||||
|
||||
.CodeMirror-wrap::before {
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
.cm-s-obsidian>.cm-editor::before {
|
||||
right: 16px;
|
||||
}
|
||||
|
||||
.sls-setting-tab {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.sls-setting-menu-btn {
|
||||
color: var(--text-normal);
|
||||
background-color: var(--background-secondary-alt);
|
||||
border-radius: 4px 4px 0 0;
|
||||
padding: 6px 10px;
|
||||
cursor: pointer;
|
||||
margin-right: 12px;
|
||||
font-family: "Inter", sans-serif;
|
||||
outline: none;
|
||||
user-select: none;
|
||||
flex-grow: 1;
|
||||
text-align: center;
|
||||
flex-shrink: 1;
|
||||
}
|
||||
|
||||
.sls-setting-label.selected {
|
||||
/* order: 1; */
|
||||
flex-grow: 1;
|
||||
/* width: 100%; */
|
||||
}
|
||||
|
||||
.sls-setting-tab:hover~div.sls-setting-menu-btn,
|
||||
.sls-setting-label.selected .sls-setting-tab:checked~div.sls-setting-menu-btn {
|
||||
background-color: var(--interactive-accent);
|
||||
color: var(--text-on-accent);
|
||||
}
|
||||
|
||||
.sls-setting-menu {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
/* flex-wrap: wrap; */
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.sls-setting-label {
|
||||
flex-grow: 1;
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.setting-collapsed {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sls-plugins-tbl-buttons {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.sls-plugins-tbl-buttons button {
|
||||
flex-grow: 0;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
.sls-plugins-tbl-device-head {
|
||||
background-color: var(--background-secondary-alt);
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
.op-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.op-flex input {
|
||||
display: inline-flex;
|
||||
flex-grow: 1;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.op-info {
|
||||
display: inline-flex;
|
||||
flex-grow: 1;
|
||||
border-bottom: 1px solid var(--background-modifier-border);
|
||||
width: 100%;
|
||||
margin-bottom: 4px;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
.history-added {
|
||||
color: var(--text-on-accent);
|
||||
background-color: var(--text-accent);
|
||||
}
|
||||
|
||||
.history-normal {
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.history-deleted {
|
||||
color: var(--text-on-accent);
|
||||
background-color: var(--text-muted);
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.ob-btn-config-fix label {
|
||||
margin-right: 40px;
|
||||
}
|
||||
|
||||
.ob-btn-config-info {
|
||||
border: 1px solid salmon;
|
||||
padding: 2px;
|
||||
margin: 1px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.ob-btn-config-head {
|
||||
padding: 2px;
|
||||
margin: 1px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.isWizard .wizardHidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sls-setting:not(.isWizard) .wizardOnly {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sls-item-dirty::before {
|
||||
content: "✏";
|
||||
}
|
61
src/content/blog/.obsidian/plugins/obsidian-markdown-file-suffix/main.js
vendored
Normal file
61
src/content/blog/.obsidian/plugins/obsidian-markdown-file-suffix/main.js
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||
if you want to view the source, please visit the github repository of this plugin
|
||||
*/
|
||||
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __reflectGet = Reflect.get;
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
||||
var __async = (__this, __arguments, generator) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
var fulfilled = (value) => {
|
||||
try {
|
||||
step(generator.next(value));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
};
|
||||
var rejected = (value) => {
|
||||
try {
|
||||
step(generator.throw(value));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
};
|
||||
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
||||
step((generator = generator.apply(__this, __arguments)).next());
|
||||
});
|
||||
};
|
||||
|
||||
// main.ts
|
||||
var main_exports = {};
|
||||
__export(main_exports, {
|
||||
default: () => MarkdownSuffixPlugin
|
||||
});
|
||||
module.exports = __toCommonJS(main_exports);
|
||||
var import_obsidian = require("obsidian");
|
||||
var MarkdownSuffixPlugin = class extends import_obsidian.Plugin {
|
||||
onload() {
|
||||
return __async(this, null, function* () {
|
||||
__superGet(MarkdownSuffixPlugin.prototype, this, "onload").call(this);
|
||||
this.registerExtensions(["mdx", "svx"], "markdown");
|
||||
});
|
||||
}
|
||||
};
|
10
src/content/blog/.obsidian/plugins/obsidian-markdown-file-suffix/manifest.json
vendored
Normal file
10
src/content/blog/.obsidian/plugins/obsidian-markdown-file-suffix/manifest.json
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "obsidian-markdown-file-suffix",
|
||||
"name": "Addional Markdown suffix (.mdx/.svx).",
|
||||
"version": "1.0.0",
|
||||
"minAppVersion": "0.10.12",
|
||||
"description": "Use additional files like .mdx / .svx as if they were markdown.",
|
||||
"author": "swissmation",
|
||||
"authorUrl": "https://github.com/swissmation",
|
||||
"isDesktopOnly": false
|
||||
}
|
8
src/content/blog/.obsidian/plugins/obsidian-markdown-file-suffix/styles.css
vendored
Normal file
8
src/content/blog/.obsidian/plugins/obsidian-markdown-file-suffix/styles.css
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
/*
|
||||
|
||||
This CSS file will be included with your plugin, and
|
||||
available in the app when your plugin is enabled.
|
||||
|
||||
If your plugin does not need CSS, delete this file.
|
||||
|
||||
*/
|
30
src/content/blog/.obsidian/plugins/templater-obsidian/data.json
vendored
Normal file
30
src/content/blog/.obsidian/plugins/templater-obsidian/data.json
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"command_timeout": 5,
|
||||
"templates_folder": "_templates",
|
||||
"templates_pairs": [
|
||||
[
|
||||
"",
|
||||
""
|
||||
]
|
||||
],
|
||||
"trigger_on_file_creation": true,
|
||||
"auto_jump_to_cursor": false,
|
||||
"enable_system_commands": false,
|
||||
"shell_path": "",
|
||||
"user_scripts_folder": "",
|
||||
"enable_folder_templates": true,
|
||||
"folder_templates": [
|
||||
{
|
||||
"folder": "",
|
||||
"template": ""
|
||||
}
|
||||
],
|
||||
"syntax_highlighting": true,
|
||||
"syntax_highlighting_mobile": true,
|
||||
"enabled_templates_hotkeys": [
|
||||
""
|
||||
],
|
||||
"startup_templates": [
|
||||
""
|
||||
]
|
||||
}
|
5624
src/content/blog/.obsidian/plugins/templater-obsidian/main.js
vendored
Normal file
5624
src/content/blog/.obsidian/plugins/templater-obsidian/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
src/content/blog/.obsidian/plugins/templater-obsidian/manifest.json
vendored
Normal file
11
src/content/blog/.obsidian/plugins/templater-obsidian/manifest.json
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"id": "templater-obsidian",
|
||||
"name": "Templater",
|
||||
"version": "2.4.1",
|
||||
"description": "Create and use templates",
|
||||
"minAppVersion": "1.5.0",
|
||||
"author": "SilentVoid",
|
||||
"authorUrl": "https://github.com/SilentVoid13",
|
||||
"helpUrl": "https://silentvoid13.github.io/Templater/",
|
||||
"isDesktopOnly": false
|
||||
}
|
220
src/content/blog/.obsidian/plugins/templater-obsidian/styles.css
vendored
Normal file
220
src/content/blog/.obsidian/plugins/templater-obsidian/styles.css
vendored
Normal file
|
@ -0,0 +1,220 @@
|
|||
.templater_search {
|
||||
width: calc(100% - 20px);
|
||||
}
|
||||
|
||||
.templater_div {
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.templater_div > .setting-item {
|
||||
border-top: none !important;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.templater_div > .setting-item > .setting-item-control {
|
||||
justify-content: space-around;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.templater_div
|
||||
> .setting-item
|
||||
> .setting-item-control
|
||||
> .setting-editor-extra-setting-button {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.templater_donating {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.templater_title {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin-top: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.templater_template {
|
||||
align-self: center;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.templater_cmd {
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.templater_div2 > .setting-item {
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.templater-prompt-div {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.templater-prompt-form {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.templater-prompt-input {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.templater-button-div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
textarea.templater-prompt-input {
|
||||
height: 10rem;
|
||||
}
|
||||
|
||||
textarea.templater-prompt-input:focus {
|
||||
border-color: var(--interactive-accent);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .templater-command-bg {
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
background-color: var(--background-primary-alt);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command {
|
||||
font-size: 0.85em;
|
||||
font-family: var(--font-monospace);
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .templater-inline .cm-templater-command {
|
||||
background-color: var(--background-primary-alt);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-opening-tag {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-closing-tag {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-interpolation-tag {
|
||||
color: var(--code-property, #008bff);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-execution-tag {
|
||||
color: var(--code-function, #c0d700);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-keyword {
|
||||
color: var(--code-keyword, #00a7aa);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-atom {
|
||||
color: var(--code-normal, #f39b35);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-value,
|
||||
.cm-s-obsidian .cm-templater-command.cm-number,
|
||||
.cm-s-obsidian .cm-templater-command.cm-type {
|
||||
color: var(--code-value, #a06fca);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-def,
|
||||
.cm-s-obsidian .cm-templater-command.cm-type.cm-def {
|
||||
color: var(--code-normal, var(--text-normal));
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-property,
|
||||
.cm-s-obsidian .cm-templater-command.cm-property.cm-def,
|
||||
.cm-s-obsidian .cm-templater-command.cm-attribute {
|
||||
color: var(--code-function, #98e342);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-variable,
|
||||
.cm-s-obsidian .cm-templater-command.cm-variable-2,
|
||||
.cm-s-obsidian .cm-templater-command.cm-variable-3,
|
||||
.cm-s-obsidian .cm-templater-command.cm-meta {
|
||||
color: var(--code-property, #d4d4d4);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-callee,
|
||||
.cm-s-obsidian .cm-templater-command.cm-operator,
|
||||
.cm-s-obsidian .cm-templater-command.cm-qualifier,
|
||||
.cm-s-obsidian .cm-templater-command.cm-builtin {
|
||||
color: var(--code-operator, #fc4384);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-tag {
|
||||
color: var(--code-tag, #fc4384);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-comment,
|
||||
.cm-s-obsidian .cm-templater-command.cm-comment.cm-tag,
|
||||
.cm-s-obsidian .cm-templater-command.cm-comment.cm-attribute {
|
||||
color: var(--code-comment, #696d70);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-string,
|
||||
.cm-s-obsidian .cm-templater-command.cm-string-2 {
|
||||
color: var(--code-string, #e6db74);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-header,
|
||||
.cm-s-obsidian .cm-templater-command.cm-hr {
|
||||
color: var(--code-keyword, #da7dae);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-link {
|
||||
color: var(--code-normal, #696d70);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-error {
|
||||
border-bottom: 1px solid #c42412;
|
||||
}
|
||||
|
||||
.CodeMirror-hints {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
overflow: hidden;
|
||||
list-style: none;
|
||||
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
|
||||
-webkit-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
border-radius: 3px;
|
||||
border: 1px solid silver;
|
||||
|
||||
background: white;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
|
||||
max-height: 20em;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.CodeMirror-hint {
|
||||
margin: 0;
|
||||
padding: 0 4px;
|
||||
border-radius: 2px;
|
||||
white-space: pre;
|
||||
color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
li.CodeMirror-hint-active {
|
||||
background: #08f;
|
||||
color: white;
|
||||
}
|
3
src/content/blog/.obsidian/templates.json
vendored
Normal file
3
src/content/blog/.obsidian/templates.json
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"folder": "_templates"
|
||||
}
|
1
src/content/blog/.obsidian/themes/Lunar Witch
vendored
Submodule
1
src/content/blog/.obsidian/themes/Lunar Witch
vendored
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit be9db886ee504a5b261304a072efed8dd95477d9
|
189
src/content/blog/.obsidian/workspace-mobile.json
vendored
Normal file
189
src/content/blog/.obsidian/workspace-mobile.json
vendored
Normal file
|
@ -0,0 +1,189 @@
|
|||
{
|
||||
"main": {
|
||||
"id": "7663cfdec50a2e60",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "88b63dcf6741e6f9",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "4e7fb0fa8a91a644",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "empty",
|
||||
"state": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "9906b890c36b6299",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "disorganized-notes.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "d09a5378edd6a804",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Cluster(fuck).md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 2
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "f4b976b97e7fd228",
|
||||
"type": "mobile-drawer",
|
||||
"children": [
|
||||
{
|
||||
"id": "9a9092e5af389cad",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "2d68e3a0b9422237",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "5f7d922fec445f5f",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "d6ada5d7cc6d1556",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "all-properties",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "4a8876ca2b9a89ff",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bookmarks",
|
||||
"state": {}
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 0
|
||||
},
|
||||
"right": {
|
||||
"id": "218c19081cc9759e",
|
||||
"type": "mobile-drawer",
|
||||
"children": [
|
||||
{
|
||||
"id": "960abadb2f6d83be",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "Cluster(fuck).md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "f1269aab005c7711",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "Cluster(fuck).md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e52f324db672aadb",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "Cluster(fuck).md"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 0
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"templater-obsidian:Templater": false,
|
||||
"switcher:Open quick switcher": false,
|
||||
"graph:Open graph view": false,
|
||||
"canvas:Create new canvas": false,
|
||||
"daily-notes:Open today's daily note": false,
|
||||
"templates:Insert template": false,
|
||||
"command-palette:Open command palette": false
|
||||
}
|
||||
},
|
||||
"active": "d09a5378edd6a804",
|
||||
"lastOpenFiles": [
|
||||
"images/image-7.png",
|
||||
"disorganized-notes.md",
|
||||
"Cluster(fuck).md",
|
||||
"gpg.md",
|
||||
"_drafts/hypercomplex-interest.md",
|
||||
"_drafts/olc-codes.md",
|
||||
"hypercomplex-interest.md",
|
||||
"_drafts/numbers.md",
|
||||
"traefik-setup.mdx",
|
||||
"traefik-setup.md",
|
||||
"self-hosting.md",
|
||||
"post-1.md",
|
||||
"olc-codes.md",
|
||||
"modern-unix.md",
|
||||
"numbers.md",
|
||||
"btrfs.md",
|
||||
"Numbers.md",
|
||||
"post-1.mdx"
|
||||
]
|
||||
}
|
195
src/content/blog/.obsidian/workspace.json
vendored
Normal file
195
src/content/blog/.obsidian/workspace.json
vendored
Normal file
|
@ -0,0 +1,195 @@
|
|||
{
|
||||
"main": {
|
||||
"id": "ab75e1a8295cbca5",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "a4abf8e6b36b57d5",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "a519de38d2e49486",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Cluster(fuck).md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "bded18fe7fea77f1",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "2aae19a12ff084d4",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "e720579404769582",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "6ebf02f3e8539b39",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "8ebfcda9ac2bec1f",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bookmarks",
|
||||
"state": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 200
|
||||
},
|
||||
"right": {
|
||||
"id": "8305c95260129b96",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "2fe64cfa3b21eac0",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "96089a301fb95140",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "Cluster(fuck).md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "07b1190b9f080756",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "Cluster(fuck).md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "7039859502237cad",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "a83852de6ab674f8",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "Cluster(fuck).md"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b1ea4546b2c351a8",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "all-properties",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300,
|
||||
"collapsed": true
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"switcher:Open quick switcher": false,
|
||||
"graph:Open graph view": false,
|
||||
"canvas:Create new canvas": false,
|
||||
"daily-notes:Open today's daily note": false,
|
||||
"templates:Insert template": false,
|
||||
"command-palette:Open command palette": false,
|
||||
"templater-obsidian:Templater": false
|
||||
}
|
||||
},
|
||||
"active": "a519de38d2e49486",
|
||||
"lastOpenFiles": [
|
||||
"traefik-setup.md",
|
||||
"images/minecraft-srv-01.png",
|
||||
"_drafts/olc-codes.md",
|
||||
"_drafts/numbers.md",
|
||||
"images/btrfs.md",
|
||||
"_drafts/eigencode.md",
|
||||
"_drafts/hypercomplex-interest.md",
|
||||
"_drafts/luka_pona.md",
|
||||
"_drafts/modern-unix.md",
|
||||
"_drafts/monogatari.md",
|
||||
"_drafts/nonfree.md",
|
||||
"_drafts/self-hosting.md",
|
||||
"_drafts/Wolfgrads bot.md",
|
||||
"disorganized-notes.md",
|
||||
"Cluster(fuck).md",
|
||||
"gpg.md",
|
||||
"modern-unix.md",
|
||||
"post-1.md",
|
||||
"self-hosting.md",
|
||||
"_templates/post-template.md",
|
||||
"test post.md",
|
||||
"_templates",
|
||||
"btrfs.sync-conflict-20240624-164405-EI6QHE3.md",
|
||||
"btrfs.sync-conflict-20240624-164402-EI6QHE3.md",
|
||||
"post-1.mdx",
|
||||
"traefik-setup.mdx",
|
||||
"drafts/self-hosting.md",
|
||||
"drafts/modern-unix.md",
|
||||
"drafts/Wolfgrads bot.md",
|
||||
"drafts"
|
||||
]
|
||||
}
|
41
src/content/blog/.trash/post-1.mdx
Normal file
41
src/content/blog/.trash/post-1.mdx
Normal file
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
title: "Generating an SSH Resident Key"
|
||||
author: "ArgentumCation"
|
||||
layout: ../../layouts/Layout.astro
|
||||
pubDate: "19 Mar, 2023"
|
||||
slug: "post-1"
|
||||
---
|
||||
|
||||
import { Accordion, AccordionItem } from "accessible-astro-components";
|
||||
|
||||
## Here's how to create a resident SSH Key using a security key
|
||||
|
||||
```bash
|
||||
ssh-keygen -t ed25519-sk -Oresident
|
||||
```
|
||||
|
||||
## If that one doesn't work,
|
||||
|
||||
```bash
|
||||
ssh-keygen -t ed25519-sk -Oresident -Oapplication=ssh:key
|
||||
```
|
||||
|
||||
{
|
||||
// ```js
|
||||
// import { defineConfig } from "astro/config";
|
||||
// import mdx from "@astrojs/mdx";
|
||||
|
||||
// export default defineConfig({
|
||||
// markdown: {
|
||||
// syntaxHighlight: "prism",
|
||||
// },
|
||||
// integrations: [
|
||||
// mdx({
|
||||
// // Markdown config now ignored
|
||||
// extendMarkdownConfig: true,
|
||||
// // No `remarkPlugins` applied
|
||||
// }),
|
||||
// ],
|
||||
// });
|
||||
// ```
|
||||
}
|
143
src/content/blog/.trash/traefik-setup.mdx
Normal file
143
src/content/blog/.trash/traefik-setup.mdx
Normal file
|
@ -0,0 +1,143 @@
|
|||
---
|
||||
title: "Getting up and running with Traefik"
|
||||
author: "ArgentumCation"
|
||||
layout: ../../layouts/Layout.astro
|
||||
pubDate: "03 Apr, 2023"
|
||||
slug: "traefik-setup"
|
||||
---
|
||||
|
||||
- Okay so you've got a server now and need a reverse proxy
|
||||
- Traefik is pretty decent at that, it'll set up your HTTPS certs and auto generate routes from your docker images
|
||||
- only problem is its an absolute bitch to set up
|
||||
- Here's a stripped down `docker-compose.yml` to give you an idea of how I have it set up
|
||||
- The end result should be a lighttpd server running on `blog.argentumcation.com`
|
||||
```yaml
|
||||
# Just setting some default values for my containers
|
||||
x-service_defaults:
|
||||
&service_defaults
|
||||
env_file: .env
|
||||
restart: unless-stopped
|
||||
extra_hosts:
|
||||
- host.docker.internal:host-gateway
|
||||
services:
|
||||
traefik:
|
||||
<<: *service_defaults
|
||||
container_name: traefik
|
||||
env_file:
|
||||
- .env
|
||||
# Cloudflare API token to add new paths
|
||||
- $ENV_DIR/traefik.secrets.env
|
||||
hostname: traefik
|
||||
image: traefik:latest
|
||||
labels:
|
||||
- traefik.http.services.traefik-docker.loadbalancer.server.port=8080
|
||||
# For the management interface
|
||||
- '8080:8080'
|
||||
# To let traefik receive incoming HTTP traffic
|
||||
- '80:80'
|
||||
# To let traefik receive incoming HTTPS traffic
|
||||
- '443:443'
|
||||
volumes:
|
||||
# This lets traefik see your docker services
|
||||
- $DOCKER_SOCK:/var/run/docker.sock:ro
|
||||
# Traefik Configs
|
||||
- $CONF_DIR/traefik/traefik.yml:/traefik.yml
|
||||
- $CONF_DIR/traefik/traefik_dynamic.yml:/etc/traefik/traefik_dynamic.yml
|
||||
# Let's Encrypt folder (for storing HTTPS cert related stuff)
|
||||
- $CONF_DIR/letsencrypt:/letsencrypt
|
||||
# Example container we're proxying with traefik
|
||||
lighttpd:
|
||||
<<: *service_defaults
|
||||
container_name: public_lighttpd
|
||||
image: sebp/lighttpd
|
||||
labels:
|
||||
# This is the hostname that traefik will proxy to this container
|
||||
- traefik.http.routers.lighttpd-docker.rule=Host(`blog.$PUBLIC`)
|
||||
# This is the port the container is listening on, often traefik can detect this
|
||||
# automatically, but we'll just be explicit here
|
||||
- traefik.http.services.lighttpd-docker.loadbalancer.server.port=80
|
||||
```
|
||||
- `traefik.secrets.env` contains my cloudflare API key so that Traefik can automatically add DNS routes
|
||||
- For reference, here's my `.env` file
|
||||
```sh
|
||||
# GENERAL
|
||||
PUBLIC=argentumcation.com
|
||||
TZ=America/New_York
|
||||
|
||||
#for container specific env vars
|
||||
ENV_DIR=./env
|
||||
|
||||
CONF_DIR=./config
|
||||
|
||||
DOCKER_DIR=/home/mira/docker
|
||||
DOCKER_SOCK=/var/run/docker.sock
|
||||
|
||||
# So my containers run as a non-root user
|
||||
UID=1000
|
||||
GID=1000
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
USER_UID=1000
|
||||
USER_GID=1000
|
||||
```
|
||||
- And of course, the actual traefik configuration files:
|
||||
- `traefik.yml`:
|
||||
```yaml
|
||||
accessLog:
|
||||
filePath: ./traefik-access.log
|
||||
|
||||
api:
|
||||
dashboard: true
|
||||
debug: true
|
||||
insecure: true
|
||||
certificatesResolvers:
|
||||
letsencrypt:
|
||||
acme:
|
||||
dnschallenge:
|
||||
provider: cloudflare #look, I know, don't judge me
|
||||
email: [redacted]
|
||||
storage: /letsencrypt/acme.json
|
||||
entryPoints:
|
||||
web:
|
||||
address: ":80"
|
||||
forwardedHeaders:
|
||||
insecure: true
|
||||
http:
|
||||
middlewares:
|
||||
- https_redirect@file
|
||||
|
||||
websecure:
|
||||
address: ":443"
|
||||
forwardedHeaders:
|
||||
insecure: true
|
||||
http:
|
||||
tls:
|
||||
certresolver: letsencrypt
|
||||
domains:
|
||||
- main: argentumcation.com
|
||||
sans:
|
||||
- "*.argentumcation.com"
|
||||
log:
|
||||
level: INFO
|
||||
providers:
|
||||
docker:
|
||||
# Routes will be set to [container-name].argentumcation.com by default
|
||||
defaultRule: Host(`{{ index .Labels "com.docker.compose.service" }}.argentumcation.com`)
|
||||
endpoint: unix:///var/run/docker.sock
|
||||
exposedByDefault: true # exposes auto-discovered containers by default, not secure but I'm lazy
|
||||
network: docker_default
|
||||
watch: true
|
||||
file:
|
||||
directory: /etc/traefik/
|
||||
watch: true
|
||||
|
||||
```
|
||||
- `traefik-dynamic.yml`
|
||||
```yaml
|
||||
http:
|
||||
middlewares: #This should redirect incoming http connections to https
|
||||
https_redirect:
|
||||
redirectscheme:
|
||||
scheme: https
|
||||
permanent: true
|
||||
```
|
37
src/content/blog/Cluster(fuck).md
Normal file
37
src/content/blog/Cluster(fuck).md
Normal file
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
author: ArgentumCation
|
||||
title: Cluster(fuck)
|
||||
pubDate: 01 Jan, 1970
|
||||
slug: cluster
|
||||
---
|
||||
|
||||
|
||||
| Hostname | IPv4 | Hardware | Function | OS | Arch | Cores | Ram | USB power? | Power |
|
||||
| -------------- | ---- | -------------- | --------------- | -------------- | ------------------------ | ----- | ---- | ---------- | ------- |
|
||||
| | -- | Meraki MR44 | | | | | | | 15/30W? |
|
||||
| | 248 | Meraki MX68W | | | | | | | 19-87W |
|
||||
| | | TODO | Switch | | | | | | |
|
||||
| | | TODO | Switch | | | | | | |
|
||||
| Amylin | 65 | Nest Pro | WAP | | | | | | |
|
||||
| Auxin | 153 | | NAS | Nix | x86_64 | 8 | 48 | | |
|
||||
| Cortisol | 119 | Framework 13 | Personal laptop | Arch | x86_64 | 16 | 32 | X | |
|
||||
| Epinephrine | | | Desktop | Arch + Windows | x86_64 | TODO | TODO | | |
|
||||
| Ethylene | 213 | Pi Zero W | | Raspi | arm | 1 | 0.5 | X | 1W |
|
||||
| Florigen | 108 | Pixel 9 Pro XL | Phone | Android | aarch64 | | | X | |
|
||||
| Galanin | 129 | Thinkpad x270 | | Nix | x86_64 | 4 | 16 | X | 45/65W |
|
||||
| Gastrin | 187 | HP x360 G3 EE | Kitchen tablet | Nix | x86_64 | 2 | 4 | X | 45W |
|
||||
| Histamine | 27 | iPad Air 2 | Tablet | iOS | aarch64 | | | \* | |
|
||||
| Kinetin | | Milk V Duo | | Buildroot? | RV64<br>(or aarch64)<br> | TODO | 0.25 | X | 5W |
|
||||
| Leptin | 117 | iMac | Darwin builds | mac | aarch64 | 8 | 8 | | |
|
||||
| Melatonin | | Erista | Switch | Horizon | aarch64 | | | X | |
|
||||
| Mellinoë | 226 | | Work laptop | | x86_64 | | | X | |
|
||||
| Norepinephrine | 179 | | Phone | Android | aarch64 | | | X | |
|
||||
| Orexin | 224 | Inspiron 7577 | | Nix | x86_64 | 8 | 16 | \* | 130W |
|
||||
| Pectin | 79 | Ender 3 V3 | 3D printer | Klipper | | | | | |
|
||||
| Relaxin | 182 | Pi B+ | | Raspi | arm | 1 | 0.5 | X | 2W |
|
||||
| Rhodopsin | | | TV | | | | | | |
|
||||
| Ribosome/mRNA | 64 | -- | | -- | -- | -- | -- | -- | -- |
|
||||
| Strigolactone | 214 | Pi Pico W | power button | ESP32Home | | | | | |
|
||||
| Vasopressin | 1 | Pi 4 | Router | OpenWRT | aarch64 | 4 | 8 | X | 6W |
|
||||
| Zeatin | | Milk V Duo S | | Buildroot? | aarch64<br>(or RV64) | TODO | 0.5 | X | 5W |
|
||||
|
1
src/content/blog/_drafts/eigencode.md
Normal file
1
src/content/blog/_drafts/eigencode.md
Normal file
|
@ -0,0 +1 @@
|
|||
- Okay so like the existence of Unicode is fucking based, and we have the Private Use Area (PUA) for things that the
|
22
src/content/blog/_drafts/luka_pona.md
Normal file
22
src/content/blog/_drafts/luka_pona.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
- wan: 1
|
||||
- tu: 2
|
||||
- tawa: L
|
||||
- kiwen: fist with extended thumb
|
||||
- supa: flat, fingers together
|
||||
- nena: fingers together, bent at knuckle
|
||||
- sike: 0
|
||||
- telo: fingers spread
|
||||
- lili: ok
|
||||
|
||||
| english | toki pona | handshape | location | orientation | movement |
|
||||
| ---------------- | --------- | --------- | ----------- | ----------- | ---------- |
|
||||
| no/none | ala | supa | at shoulder | face down | |
|
||||
| at/in/exist/true | lon | wan | | | flick down |
|
||||
| which/what | seme | | | | |
|
||||
| side/next to | poka | | | | |
|
||||
| bump/hill/nose | nena | | | | |
|
||||
| down | anpa | | | | |
|
||||
| face/front | sinpin | | | | |
|
||||
| hand/arm/five | luka | | | | |
|
||||
| body/torso | sijelo | | | | |
|
||||
| eyes | oko | | | | |
|
|
@ -1,3 +1,36 @@
|
|||
- 87G8P632+H8X2Q262
|
||||
- 87000000+
|
||||
- P632+
|
||||
- P632+
|
||||
|
||||
> [!NOTE] foo
|
||||
> bar
|
||||
|
||||
> [!TLDR] foo
|
||||
> bar
|
||||
|
||||
> [!tip] foo
|
||||
> bar
|
||||
|
||||
> [!done] foo
|
||||
> bar
|
||||
|
||||
> [!faq] foo
|
||||
> bar
|
||||
|
||||
> [!WARNING] foo
|
||||
> bar
|
||||
|
||||
> [!fail] foo
|
||||
> bar
|
||||
|
||||
> [!bug] foo
|
||||
> bar
|
||||
|
||||
> [!example] foo
|
||||
> bar
|
||||
|
||||
> [!quote] foo
|
||||
> bar
|
||||
|
||||
> blockquote
|
||||
>
|
8
src/content/blog/_templates/post-template.md
Normal file
8
src/content/blog/_templates/post-template.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
title: <% tp.file.title %>
|
||||
pubDate: <%tp.file.creation_date("YYYY-MM-DDTHH:mm:ssZ")%>
|
||||
layout: ../../layouts/Layout.astro
|
||||
slug: <% encodeURI(tp.file.title.toLowerCase().replaceAll(/[ -]/g,'_')) %>
|
||||
author: ArgentumCation
|
||||
---
|
||||
# <% tp.file.title %>
|
|
@ -7,38 +7,46 @@ slug: disorganized-notes
|
|||
---
|
||||
|
||||
# NixOS/Nix
|
||||
|
||||
- Show channels: `sudo nix-channel --list`
|
||||
- add unstable channel: `sudo nix-channel --add https://nixos.org/channels/nixpkgs-unstable unstable`
|
||||
- update repos: `sudo nix-channel --update; sudo nix search -u`
|
||||
|
||||
---
|
||||
|
||||
# Vim
|
||||
|
||||
- Sort selected lines: `:sort`
|
||||
- Open man page: `:man [command]` or `\K`
|
||||
- Open URL: `gx`
|
||||
- Move between splits: `ctrl+w [direction]`
|
||||
- [vim-commentary](https://github.com/tpope/vim-commentary): `gc [motion]` to comment out
|
||||
- Case switching:
|
||||
- `gU` to uppercase
|
||||
- `gu` to lowercase
|
||||
-`g~` to toggle
|
||||
- [vim-commentary](https://github.com/tpope/vim-commentary): `gc [motion]` to comment out
|
||||
- Case switching:
|
||||
- `gU` to uppercase
|
||||
- `gu` to lowercase -`g~` to toggle
|
||||
- Substitute:
|
||||
- `/g` **global** - sub all in line
|
||||
- `:%s/` - substitute in all lines
|
||||
- `:5,12s/` substitute from lines 5 to 12
|
||||
- `:.,+2s/` substitute this line (`.`) and the next 2
|
||||
- `:g/^foo/s/bar/baz/g` substitute all instances of bar with baz on lines beginning with foo
|
||||
- `/c` - ask for confirmation
|
||||
- `/g` **global** - sub all in line
|
||||
- `:%s/` - substitute in all lines
|
||||
- `:5,12s/` substitute from lines 5 to 12
|
||||
- `:.,+2s/` substitute this line (`.`) and the next 2
|
||||
- `:g/^foo/s/bar/baz/g` substitute all instances of bar with baz on lines beginning with foo
|
||||
- `/c` - ask for confirmation
|
||||
- Windows
|
||||
- `:sp [filename]` horizontal split, optionally open file
|
||||
- `vsp` vertical split
|
||||
- `ctrl+w w` move between windows
|
||||
- `ctrl+w =` resize windows to be equal
|
||||
- `ctrl+w q` close window
|
||||
- `ctrl+w <direction>` move window
|
||||
- `:sp [filename]` horizontal split, optionally open file
|
||||
- `vsp` vertical split
|
||||
- `ctrl+w w` move between windows
|
||||
- `ctrl+w =` resize windows to be equal
|
||||
- `ctrl+w q` close window
|
||||
- `ctrl+w <direction>` move window
|
||||
|
||||
# McFly
|
||||
|
||||
---
|
||||
|
||||
# SSH
|
||||
|
||||
- Set up port forwarding in existing connection:
|
||||
|
||||
```sh
|
||||
$ ~C
|
||||
ssh> -D [port number]
|
||||
|
@ -47,8 +55,59 @@ ssh> -D [port number]
|
|||
$
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Shell
|
||||
|
||||
- `!!:s/foo/bar/`, replace first instance of `foo` with `bar` in the previous command
|
||||
- `^foo^bar` same thing but shorter and less flexible
|
||||
- `!foo` rerun last command containing `foo`
|
||||
-
|
||||
|
||||
---
|
||||
|
||||
# K8s
|
||||
|
||||
- **Pod**: Group of containers
|
||||
- Seems like this is what gets distributed across nodes
|
||||
- Seems like this is the same as an **application**
|
||||
- **Service**: handles networking for applications
|
||||
|
||||
- **Helm**: the package manager
|
||||
|
||||
- k3s is a lighter weight version
|
||||
- kind runs k8s in docker
|
||||
- minikube is another option, maintained by k8s, supports more arches
|
||||
|
||||
- in this case, armv6
|
||||
- still looking for rv32/rv64
|
||||
|
||||
- `kubectl get nodes`
|
||||
- `kubectl expose`
|
||||
- `--type=NodePort` picks an ephermal ingress port
|
||||
- allows external access?
|
||||
- seems to create the service?
|
||||
- `kubectl get`: basic info
|
||||
- `kubectl describe`: more info
|
||||
- `kubectl create deployment ribosome --image 'pihole/pihole'`
|
||||
- does idek
|
||||
- seems to pull and run the image
|
||||
- deployment
|
||||
- `spec.repilicas`: how many instances of the container?
|
||||
- `minikube docker-env` does fuckery to let you use docker with k8s
|
||||
- `kube-vip` is used for failover?
|
||||
- Helm is package manager for k8s
|
||||
- `helm repo add` for adding repos
|
||||
- `helm repo update`
|
||||
|
||||
---
|
||||
|
||||
# Keepalived
|
||||
|
||||
- don't ever use use_vmac, it's fucky
|
||||
|
||||
---
|
||||
|
||||
# Seaweedfs
|
||||
|
||||
- mount: `weed mount -filer=localhost:8888 -dir=/weed -filer.path=/`
|
||||
- master: `weed server -master.port=9333 -volume.port=8081 -dir="/mnt" -filer=true`
|
||||
|
|
BIN
src/content/blog/images/image-7.png
Normal file
BIN
src/content/blog/images/image-7.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 120 KiB |
Loading…
Add table
Reference in a new issue