migrate to hugo static site generator
This commit is contained in:
parent
83e81919a0
commit
7f01f154a6
82 changed files with 951 additions and 1858 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,3 +1,2 @@
|
||||||
/build/
|
/public/
|
||||||
/build_*/
|
/resources/
|
||||||
/.venv/
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
image: python:3.9.16-slim-bullseye
|
image: debian:bookworm
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- analyse
|
- analyse
|
||||||
|
@ -15,35 +15,25 @@ cache:
|
||||||
- apt-get dist-upgrade -y
|
- apt-get dist-upgrade -y
|
||||||
- >
|
- >
|
||||||
apt-get install --no-install-recommends -y
|
apt-get install --no-install-recommends -y
|
||||||
curl
|
|
||||||
git
|
git
|
||||||
make
|
hugo
|
||||||
plantuml
|
|
||||||
python3
|
|
||||||
python3-distutils
|
|
||||||
rsync
|
rsync
|
||||||
- ln -s /usr/bin/python3 /usr/bin/python
|
|
||||||
- curl -sSL https://install.python-poetry.org | python3 - --version 1.4.1
|
|
||||||
- export PATH="/root/.local/bin:$PATH"
|
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
stage: test
|
stage: test
|
||||||
needs: []
|
needs: []
|
||||||
script:
|
script:
|
||||||
- *setup_build
|
- *setup_build
|
||||||
- poetry install -n
|
- hugo --minify
|
||||||
- make
|
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- build/doc
|
- public
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
rules:
|
rules:
|
||||||
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
||||||
needs: ["doc"]
|
needs: ["doc"]
|
||||||
script:
|
|
||||||
- mv build/doc public
|
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
|
|
0
.hugo_build.lock
Normal file
0
.hugo_build.lock
Normal file
|
@ -1,59 +0,0 @@
|
||||||
# 3.8.2 required because template/c requires it
|
|
||||||
cmake_minimum_required(VERSION 3.8.2 FATAL_ERROR)
|
|
||||||
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
||||||
|
|
||||||
# set build type to release if none is specified
|
|
||||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|
||||||
set(CMAKE_BUILD_TYPE Release CACHE STRING
|
|
||||||
"Choose the type of build." FORCE)
|
|
||||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
|
|
||||||
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# options
|
|
||||||
option(LINE_LIMIT "Check files with line_limit." OFF)
|
|
||||||
option(REGEX_CHECK "Check files with regex_check." OFF)
|
|
||||||
option(WERROR "Make all warnings into errors." OFF)
|
|
||||||
if(NOT DEFINED DOC)
|
|
||||||
set(DOC html CACHE STRING
|
|
||||||
"The documentation type to generate." FORCE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# disable base languages
|
|
||||||
unset(PROJECT_LANGUAGES)
|
|
||||||
|
|
||||||
project(shione
|
|
||||||
VERSION 0.0.0
|
|
||||||
DESCRIPTION "shione"
|
|
||||||
LANGUAGES ${PROJECT_LANGUAGES})
|
|
||||||
set(PROJECT_VERSION_SUFFIX "") # alpha/beta/rc, e.g. "-rc0"
|
|
||||||
set(PROJECT_VERSION "${PROJECT_VERSION}${PROJECT_VERSION_SUFFIX}")
|
|
||||||
set(PROJECT_AUTHOR "renken")
|
|
||||||
set(PROJECT_COPYRIGHT "2023, renken")
|
|
||||||
set(PROJECT_MAIL "renken@shione.net")
|
|
||||||
# only set CMAKE variant when local name matches CMAKE name
|
|
||||||
# this avoids clashing when being used as a subproject
|
|
||||||
if(PROJECT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
|
|
||||||
set(CMAKE_PROJECT_VERSION "${PROJECT_VERSION}")
|
|
||||||
set(CMAKE_PROJECT_VERSION_SUFFIX "${PROJECT_VERSION_SUFFIX}")
|
|
||||||
set(CMAKE_PROJECT_AUTHOR "${PROJECT_AUTHOR}")
|
|
||||||
set(CMAKE_PROJECT_COPYRIGHT "${PROJECT_COPYRIGHT}")
|
|
||||||
set(CMAKE_PROJECT_MAIL "${PROJECT_MAIL}")
|
|
||||||
endif()
|
|
||||||
include(version)
|
|
||||||
|
|
||||||
if(NOT DOC STREQUAL "OFF")
|
|
||||||
add_subdirectory(doc)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(${LINE_LIMIT})
|
|
||||||
include(line_limit)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(${REGEX_CHECK})
|
|
||||||
include(regex_check)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(${LINE_LIMIT} OR ${REGEX_CHECK})
|
|
||||||
include(check)
|
|
||||||
endif()
|
|
5
Makefile
5
Makefile
|
@ -1,5 +0,0 @@
|
||||||
default: html
|
|
||||||
|
|
||||||
.PHONY: html
|
|
||||||
html:
|
|
||||||
poetry run sphinx-build -b html src/shione build/doc
|
|
6
archetypes/default.md
Normal file
6
archetypes/default.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
date: {{ .Date }}
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
|
|
341
assets/main.scss
Normal file
341
assets/main.scss
Normal file
|
@ -0,0 +1,341 @@
|
||||||
|
$black: #080808;
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-family: sans-serif;
|
||||||
|
color: $black;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
max-width: 920px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin-top: 0;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
|
||||||
|
small {
|
||||||
|
display: block;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.index {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
|
||||||
|
.article-list {
|
||||||
|
flex-grow: 1;
|
||||||
|
|
||||||
|
.article {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date {
|
||||||
|
display: block;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
aside {
|
||||||
|
width: 40%;
|
||||||
|
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto 1rem;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
dt {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd {
|
||||||
|
margin-left: 0;
|
||||||
|
|
||||||
|
&:not(:last-child) {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media(max-width: 640px) {
|
||||||
|
aside {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
article {
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 720px;
|
||||||
|
line-height: 1.3;
|
||||||
|
|
||||||
|
img, video, iframe {
|
||||||
|
// !important for asciinema frames
|
||||||
|
display: block !important;
|
||||||
|
margin: 0 auto !important;
|
||||||
|
max-width: 90%;
|
||||||
|
|
||||||
|
@media(max-width: 640px) {
|
||||||
|
max-width: calc(100% - 2rem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment {
|
||||||
|
margin: 2rem auto 0;
|
||||||
|
max-width: 80%;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnotes {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
margin-top: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.float-img {
|
||||||
|
float: right;
|
||||||
|
display: inline;
|
||||||
|
padding-left: 1rem;
|
||||||
|
|
||||||
|
@media(max-width: 640px) {
|
||||||
|
display: block;
|
||||||
|
float: none;
|
||||||
|
padding-left: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background-color: #eee;
|
||||||
|
padding: 0.25rem 1rem;
|
||||||
|
margin: 0 -1rem;
|
||||||
|
max-width: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
|
|
||||||
|
.cp {
|
||||||
|
color: #800;
|
||||||
|
}
|
||||||
|
|
||||||
|
.k {
|
||||||
|
color: #008;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kt, .kd, .kc {
|
||||||
|
color: #44F;
|
||||||
|
}
|
||||||
|
|
||||||
|
.s {
|
||||||
|
color: #484;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm, .c1 {
|
||||||
|
color: #333;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gi {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gd {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gu {
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.webring {
|
||||||
|
margin-top: 2rem;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.articles {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
@media(max-width: 640px) {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.article {
|
||||||
|
flex: 1 1 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #eee;
|
||||||
|
padding: 0.5rem;
|
||||||
|
|
||||||
|
margin: 0 0.5rem;
|
||||||
|
|
||||||
|
@media(max-width: 640px) {
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.article:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.article:last-child {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
flex: 1 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.attribution {
|
||||||
|
float: right;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: #555;
|
||||||
|
line-height: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
summary {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #eee;
|
||||||
|
padding: 0.25rem 1rem;
|
||||||
|
margin: 0 -1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
details[open] {
|
||||||
|
border-bottom: 1rem solid #eee;
|
||||||
|
margin: 0 -1rem 1rem;
|
||||||
|
padding: 0 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
border-left: 5px solid #777;
|
||||||
|
background-color: #eee;
|
||||||
|
padding: 0 1rem;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin-right: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dl {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: auto 1fr;
|
||||||
|
grid-gap: 0.2rem 1rem;
|
||||||
|
|
||||||
|
dt {
|
||||||
|
font-weight: bold;
|
||||||
|
grid-column-start: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd {
|
||||||
|
grid-column-start: 2;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert {
|
||||||
|
padding: 0.5rem;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
|
||||||
|
&.alert-danger {
|
||||||
|
background: #f8d7da;
|
||||||
|
color: #721c24;
|
||||||
|
border-color: #f5c6cb;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.alert-info {
|
||||||
|
background: #d1ecf1;
|
||||||
|
color: #0c5460;
|
||||||
|
border-color: #bee5eb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
color: #333;
|
||||||
|
background: white;
|
||||||
|
border: 1px solid grey;
|
||||||
|
font-size: 12pt;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
table thead th,
|
||||||
|
table tfoot th {
|
||||||
|
background: rgba(0,0,0,.1);
|
||||||
|
}
|
||||||
|
table caption {
|
||||||
|
padding:.5em;
|
||||||
|
}
|
||||||
|
table th,
|
||||||
|
table td {
|
||||||
|
padding: .5em;
|
||||||
|
border: 1px solid lightgrey;
|
||||||
|
}
|
||||||
|
td.red {
|
||||||
|
background: #F8D7DA;
|
||||||
|
}
|
||||||
|
td.yellow {
|
||||||
|
background: #FFF3CD;
|
||||||
|
}
|
||||||
|
td.blue {
|
||||||
|
background: #CFE2FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error,
|
||||||
|
.info,
|
||||||
|
.warn
|
||||||
|
.todo {
|
||||||
|
background: #efefef;
|
||||||
|
border-left-style: solid;
|
||||||
|
border-left-width: 0.4rem;
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
margin-left: 0;
|
||||||
|
> p {
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.warn {
|
||||||
|
border-left-color: #ffbb00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info {
|
||||||
|
border-left-color: #0000ee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error {
|
||||||
|
border-left-color: #ee0000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.todo {
|
||||||
|
border-left-color: #eeee00;
|
||||||
|
}
|
22
config.toml
Normal file
22
config.toml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
baseURL = "https://shione.net/"
|
||||||
|
title = "shione"
|
||||||
|
pygmentsUseClasses = true
|
||||||
|
uglyurls = true
|
||||||
|
disablePathToLower = true
|
||||||
|
rssLimit = 10
|
||||||
|
|
||||||
|
[permalinks]
|
||||||
|
blog = "/:year/:month/:day/:slugorfilename"
|
||||||
|
|
||||||
|
[markup.goldmark.renderer]
|
||||||
|
unsafe = true
|
||||||
|
|
||||||
|
[markup.tableOfContents]
|
||||||
|
ordered = true
|
||||||
|
|
||||||
|
[outputs]
|
||||||
|
section = ["HTML", "RSS"]
|
||||||
|
|
||||||
|
[markup.goldmark.parser.attribute]
|
||||||
|
block = true
|
||||||
|
title = true
|
3
content/_index.html
Normal file
3
content/_index.html
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
title: renken's weblog
|
||||||
|
---
|
|
@ -1,10 +1,11 @@
|
||||||
Random rant
|
---
|
||||||
===========
|
title: Random rant
|
||||||
|
date: 2022-03-12
|
||||||
|
slug: random-rant
|
||||||
|
---
|
||||||
|
|
||||||
.. contents::
|
|
||||||
|
|
||||||
The lurking problem
|
## The lurking problem
|
||||||
-------------------
|
|
||||||
|
|
||||||
It's been quite a while since I wrote my last blog post. While I've been always
|
It's been quite a while since I wrote my last blog post. While I've been always
|
||||||
thinking that the reason behind this was the lack of having interesting/advanced
|
thinking that the reason behind this was the lack of having interesting/advanced
|
||||||
|
@ -18,16 +19,15 @@ add, how I lack expertise in such advanced topics... etc, but in reality, I'm
|
||||||
just holding myself from doing so because it's easier not to engage, it's easier
|
just holding myself from doing so because it's easier not to engage, it's easier
|
||||||
to be lazy.
|
to be lazy.
|
||||||
|
|
||||||
Imperfection
|
## Imperfection
|
||||||
------------
|
|
||||||
|
|
||||||
It's easier to find excuses as for why my next project will suck, not be used by
|
It's easier to find excuses as for why my next project will suck, not be used by
|
||||||
others and so on compared to simply working on it. I think my main problem is
|
others and so on compared to simply working on it. I think my main problem is
|
||||||
losing motivation over time, I need to figure out how to get motivation out of
|
losing motivation over time, I need to figure out how to get motivation out of
|
||||||
the equation and possibly discipline myself more.
|
the equation and possibly discipline myself more.
|
||||||
|
|
||||||
Close-up
|
## Close-up
|
||||||
--------
|
|
||||||
|
|
||||||
Oh well, my thoughts are still unclear and messy but I will push them online
|
Oh well, my thoughts are still unclear and messy but I will push them online
|
||||||
anyway. It's something I plan on working on over time not ship only after it's
|
anyway. It's something I plan on working on over time not ship only after it's
|
|
@ -1,7 +1,8 @@
|
||||||
TODO: Explore meson
|
---
|
||||||
===================
|
title: 'TODO: Explore meson'
|
||||||
|
date: 2022-03-13
|
||||||
.. contents::
|
slug: todo-explore-meson
|
||||||
|
---
|
||||||
|
|
||||||
I should definitely play around with meson one day, maybe add template/c support
|
I should definitely play around with meson one day, maybe add template/c support
|
||||||
for it. I think working on template/c is a good entry to understanding how build
|
for it. I think working on template/c is a good entry to understanding how build
|
13
content/blog/2022-04-02_frustration_with_web_developers.md
Normal file
13
content/blog/2022-04-02_frustration_with_web_developers.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
title: Frustration with web developers
|
||||||
|
date: 2022-04-02
|
||||||
|
slug: frustration-with-web-devs
|
||||||
|
---
|
||||||
|
|
||||||
|
Past few days, at least 5 websites rejected my email address
|
||||||
|
`mail@renken.systems` because it doesn't match their regular expression. I
|
||||||
|
might consider switching to something shorter/common that isn't taken already.
|
||||||
|
|
||||||
|
I was thinking of renken.no maybe but that would imply I am from/live in Norway
|
||||||
|
which isn't an assumption I want others to have. I'll see what I can do about
|
||||||
|
this.
|
|
@ -1,10 +1,13 @@
|
||||||
My manga collection is growing!
|
---
|
||||||
===============================
|
title: My manga collection is growing!
|
||||||
|
date: 2022-06-01
|
||||||
|
slug: my-manga-collection-growing
|
||||||
|
---
|
||||||
|
|
||||||
I visited fnac, https://www.fnac.com/, around a month ago or so and noticed that
|
I visited [fnac](https://www.fnac.com) around a month ago or so and noticed
|
||||||
they sell manga. I wasn't aware that the French are huge weebs, they have a wide
|
that they sell manga. I wasn't aware that the French are huge weebs, they have
|
||||||
variety of titles, separated by genres mainly shounen, shoujo and seinen and
|
a wide variety of titles, separated by genres mainly shounen, shoujo and seinen
|
||||||
*all* of them are in French.
|
and *all* of them are in French.
|
||||||
|
|
||||||
While the majority of their selection consists of popular and recent titles out
|
While the majority of their selection consists of popular and recent titles out
|
||||||
there, you might also find niche ones like Yokohama Kaidashi Kikou and Yotsuba.
|
there, you might also find niche ones like Yokohama Kaidashi Kikou and Yotsuba.
|
||||||
|
@ -16,7 +19,4 @@ Yesterday I ended up buying YKK's first three volumes because I figured gazing
|
||||||
at the landscapes on paper would make me appreciate it even more and I was
|
at the landscapes on paper would make me appreciate it even more and I was
|
||||||
right! They're also helping me improve my French too which is nice.
|
right! They're also helping me improve my French too which is nice.
|
||||||
|
|
||||||
.. image:: ../../../../../_static/manga_1654960885.jpg
|
![My manga collection 11/06/2022](/blog/2022-06-11_manga_collection.jpg)
|
||||||
:name: My manga collection 11/06/2022
|
|
||||||
:alt: My manga collection 11/06/2022
|
|
||||||
:align: center
|
|
|
@ -1,5 +1,8 @@
|
||||||
Graduation and moving forward with Munic
|
---
|
||||||
========================================
|
title: Graduation and moving forward with Munic
|
||||||
|
date: 2022-07-12
|
||||||
|
slug: graduation-munic
|
||||||
|
---
|
||||||
|
|
||||||
I graduated from my school last Thursday, I am officially a certified (tm)
|
I graduated from my school last Thursday, I am officially a certified (tm)
|
||||||
engineer! Consequently, I'm joining Munic as a full-time employee after my
|
engineer! Consequently, I'm joining Munic as a full-time employee after my
|
11
content/blog/2022-07-12_switching_to_markdown.md
Normal file
11
content/blog/2022-07-12_switching_to_markdown.md
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
title: Switching to Markdown
|
||||||
|
date: 2022-07-12T23:59:00+02:00
|
||||||
|
slug: switching-to-markdown
|
||||||
|
---
|
||||||
|
|
||||||
|
Sphinx supports Markdown through `myst-parser` as documented
|
||||||
|
[here](https://www.sphinx-doc.org/en/master/usage/markdown.html). This is nice
|
||||||
|
because most of the time I am writing Markdown especially on GitLab, I don't
|
||||||
|
have a hard dependency on RestructuredText itself meaning I can safely just
|
||||||
|
make the switch.
|
|
@ -1,8 +1,8 @@
|
||||||
# Conventional commits
|
---
|
||||||
*Written 2023-04-10 12:47*
|
title: Conventional commits
|
||||||
|
date: 2023-04-10T12:47:00+01:00
|
||||||
```{contents}
|
slug: conventional-commits
|
||||||
```
|
---
|
||||||
|
|
||||||
I recently came across [conventional
|
I recently came across [conventional
|
||||||
commits](https://www.conventionalcommits.org/en/v1.0.0/) and I find the idea
|
commits](https://www.conventionalcommits.org/en/v1.0.0/) and I find the idea
|
|
@ -1,8 +1,8 @@
|
||||||
# Siga desktop has joined the game.
|
---
|
||||||
*Written 2023-06-18 18:14*
|
title: Siga desktop has joined the game.
|
||||||
|
date: 2023-06-18T18:14:00
|
||||||
```{contents}
|
slug: siga-desktop
|
||||||
```
|
---
|
||||||
|
|
||||||
Around the 25th of May, I ended up building siga in its Desktop PC form. It's
|
Around the 25th of May, I ended up building siga in its Desktop PC form. It's
|
||||||
entirely based on AMD because I wanted the best possible compatibility with
|
entirely based on AMD because I wanted the best possible compatibility with
|
|
@ -1,10 +1,11 @@
|
||||||
# Self-hosting shione.net
|
---
|
||||||
*Written 2023-12-23 18:47*
|
title: Self-hosting shione.net
|
||||||
|
date: 2023-12-23T18:47:00
|
||||||
|
slug: self-hosting-shione
|
||||||
|
---
|
||||||
|
|
||||||
```{contents}
|
I recently managed to get my hands on a mini PC, [Union NiPoGi CK10 -
|
||||||
```
|
10810U](https://www.notebookcheck.net/NiPoGi-CK10-with-the-Intel-Core-i7-10810U-reviewed-Small-office-PC-offering-space-for-three-SSDs.671211.0.html)
|
||||||
|
|
||||||
I recently managed to get my hands on a mini PC, [Union NiPoGi CK10 - 10810U](https://www.notebookcheck.net/NiPoGi-CK10-with-the-Intel-Core-i7-10810U-reviewed-Small-office-PC-offering-space-for-three-SSDs.671211.0.html)
|
|
||||||
thanks to my friend Lucien and thought it'd be a good opportunity to host my
|
thanks to my friend Lucien and thought it'd be a good opportunity to host my
|
||||||
own server to experiment with a bunch of stuff.
|
own server to experiment with a bunch of stuff.
|
||||||
|
|
13
content/misc.md
Normal file
13
content/misc.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
title: Miscellaneous links
|
||||||
|
layout: page
|
||||||
|
---
|
||||||
|
|
||||||
|
# Multimedia
|
||||||
|
|
||||||
|
- [Birthday drawings](/misc/p/birthday.html)
|
||||||
|
|
||||||
|
# Archived
|
||||||
|
|
||||||
|
- [German notes](/misc/archived/de.html)
|
||||||
|
- [MQTT notes](/misc/archived/mqtt.html)
|
|
@ -1,53 +1,34 @@
|
||||||
Chapter 1: introduction
|
---
|
||||||
=======================
|
title: German notes
|
||||||
|
date: 2019-04-23
|
||||||
|
layout: page
|
||||||
|
---
|
||||||
|
|
||||||
Cognates
|
An abandoned series of posts highlighting things I have learned about the
|
||||||
--------
|
German language.
|
||||||
|
|
||||||
|
# Chapter 1: introduction
|
||||||
|
|
||||||
|
## Cognates
|
||||||
|
|
||||||
A cognate is a word that is derived from the same original form such as kühl and
|
A cognate is a word that is derived from the same original form such as kühl and
|
||||||
cool. We'll explore some consonant relationships that exist between German and
|
cool. We'll explore some consonant relationships that exist between German and
|
||||||
English to make guessing more accurate and faster but of course, always consider
|
English to make guessing more accurate and faster but of course, always consider
|
||||||
checking the dictionary for the definitive answer.
|
checking the dictionary for the definitive answer.
|
||||||
|
|
||||||
.. list-table:: Cognates
|
| German | English | Examples |
|
||||||
:header-rows: 1
|
| --- | --- | --- |
|
||||||
|
| f, ff (medial or final) | p | hoffen - to hope, scharf - sharp |
|
||||||
* * German
|
| pf | p, pp | Apfel - apple, Pfeife - pipe |
|
||||||
* English
|
| b (medial or final) | v or f | geben - to give, halb - half |
|
||||||
* Examples
|
| d | th | Ding - thing |
|
||||||
* * f, ff (medial or final)
|
| ch | k | Buch - book, machen - to make, suchen - to seek |
|
||||||
* p
|
| cht | ght | Macht - might, Sicht - sight, Recht - right, Nacht - night |
|
||||||
* hoffen - to hope, scharf - sharp
|
| g | y or i | sagen - to say, legen - to lay, Nagel - nail, fliegen - to fly |
|
||||||
* * pf
|
| k | c | kommen - to come, kritisch - critical |
|
||||||
* p, pp
|
| s, ss, ß (medial or final) | t | hassen - to hate, grüßen - to greet, besser - better, Fuß - foot |
|
||||||
* Apfel - apple, Pfeife - pipe
|
| tz, z | t | Katze - cat |
|
||||||
* * b (medial or final)
|
| t | d | trinken - to drink, kalt - cold, Tochter - daughter |
|
||||||
* v or f
|
|
||||||
* geben - to give, halb - half
|
|
||||||
* * d
|
|
||||||
* th
|
|
||||||
* Ding - thing
|
|
||||||
* * ch
|
|
||||||
* k
|
|
||||||
* Buch - book, machen - to make, suchen - to seek
|
|
||||||
* * cht
|
|
||||||
* ght
|
|
||||||
* Macht - might, Sicht - sight, Recht - right, Nacht - night
|
|
||||||
* * g
|
|
||||||
* y or i
|
|
||||||
* sagen - to say, legen - to lay, Nagel - nail, fliegen - to fly
|
|
||||||
* * k
|
|
||||||
* c
|
|
||||||
* kommen - to come, kritisch - critical
|
|
||||||
* * s, ss, ß (medial or final)
|
|
||||||
* t
|
|
||||||
* hassen - to hate, grüßen - to greet, besser - better, Fuß - foot
|
|
||||||
* * tz, z
|
|
||||||
* t
|
|
||||||
* Katze - cat
|
|
||||||
* * t
|
|
||||||
* d
|
|
||||||
* trinken - to drink, kalt - cold, Tochter - daughter
|
|
||||||
|
|
||||||
Note that sometimes it may require some flexibility with vowels to get the
|
Note that sometimes it may require some flexibility with vowels to get the
|
||||||
correct word e.g., hören - to hear. Try to figure out the following words: Haus,
|
correct word e.g., hören - to hear. Try to figure out the following words: Haus,
|
||||||
|
@ -71,8 +52,7 @@ Book titles! Buchtitel, apparently used for both singular and plural.
|
||||||
* Yasmina Khadra, was der Tag der Nacht schuldet (haven't read it yet by the
|
* Yasmina Khadra, was der Tag der Nacht schuldet (haven't read it yet by the
|
||||||
way).
|
way).
|
||||||
|
|
||||||
Genders
|
## Genders
|
||||||
-------
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Find a way to ease the process of memorizing these? being able to
|
Find a way to ease the process of memorizing these? being able to
|
||||||
|
@ -85,22 +65,14 @@ It's very important to know what your subject's gender is to understand the
|
||||||
context of the passage in hand. The corresponding German definite articles are
|
context of the passage in hand. The corresponding German definite articles are
|
||||||
as follows
|
as follows
|
||||||
|
|
||||||
.. list-table:: Genders articles
|
| Gender | Article |
|
||||||
:header-rows: 1
|
| --- | --- |
|
||||||
|
| Masculine | der |
|
||||||
|
| Feminine | die |
|
||||||
|
| Neuter | das |
|
||||||
|
| Plural | die |
|
||||||
|
|
||||||
* * Gender
|
### Masculine
|
||||||
* Article
|
|
||||||
* * Masculine
|
|
||||||
* der
|
|
||||||
* * Feminine
|
|
||||||
* die
|
|
||||||
* * Neuter
|
|
||||||
* das
|
|
||||||
* * Plural
|
|
||||||
* die
|
|
||||||
|
|
||||||
Masculine
|
|
||||||
^^^^^^^^^
|
|
||||||
|
|
||||||
1. Nouns denoting male beings.
|
1. Nouns denoting male beings.
|
||||||
2. Most nouns ending with -er that are agents of a specific activity e.g., der
|
2. Most nouns ending with -er that are agents of a specific activity e.g., der
|
||||||
|
@ -110,20 +82,19 @@ Masculine
|
||||||
Socialismus (Socialism).
|
Socialismus (Socialism).
|
||||||
5. Points of compass. Norden, Süden, Oster und Westen.
|
5. Points of compass. Norden, Süden, Oster und Westen.
|
||||||
|
|
||||||
Feminine
|
### Feminine
|
||||||
^^^^^^^^
|
|
||||||
1. Nouns denoting female beings.
|
1. Nouns denoting female beings.
|
||||||
2. Nouns of most trees, fruits and flowers. Look your favorites up!
|
2. Nouns of most trees, fruits and flowers. Look your favorites up!
|
||||||
3. Nouns ending with -er, -ie, -ik, -in, -ion, -hiet, kiet, -schaft, -tät,
|
3. Nouns ending with -er, -ie, -ik, -in, -ion, -hiet, kiet, -schaft, -tät,
|
||||||
-ung, -ur e.g., die Gesundheit (health), die Gesellschaft (society) und die
|
-ung, -ur e.g., die Gesundheit (health), die Gesellschaft (society) und die
|
||||||
Hoffung.
|
Hoffung.
|
||||||
|
|
||||||
Neuter
|
### Neuter
|
||||||
^^^^^^
|
|
||||||
|
|
||||||
.. note::
|
> Diminutive nouns usually have an umlaut if the stem vowel is a, o, u or au
|
||||||
Diminutive nouns usually have an umlaut if the stem vowel is a, o, u or
|
so a becomes ä...
|
||||||
au so a becomes ä...
|
{.info}
|
||||||
|
|
||||||
1. Nouns with diminutive endings -chen, -lein e.g., das Buch -> das Büchlein,
|
1. Nouns with diminutive endings -chen, -lein e.g., das Buch -> das Büchlein,
|
||||||
das Männlein.
|
das Männlein.
|
||||||
|
@ -131,8 +102,7 @@ Neuter
|
||||||
3. Infinitives used as a noun e.g., das Kommen.
|
3. Infinitives used as a noun e.g., das Kommen.
|
||||||
4. Nouns ending with -ium, -um e.g., das Vism.
|
4. Nouns ending with -ium, -um e.g., das Vism.
|
||||||
|
|
||||||
Compounds
|
## Compounds
|
||||||
---------
|
|
||||||
|
|
||||||
New words in German sometimes can be formed by combining simpler words. Some of
|
New words in German sometimes can be formed by combining simpler words. Some of
|
||||||
these words can be particularly graphic. For example.
|
these words can be particularly graphic. For example.
|
||||||
|
@ -154,5 +124,52 @@ difficult...
|
||||||
unterteilt. Die Länder habt lokal Kontrolle uber Bildung und jeder hat sein
|
unterteilt. Die Länder habt lokal Kontrolle uber Bildung und jeder hat sein
|
||||||
Landesregierung.
|
Landesregierung.
|
||||||
|
|
||||||
Plural
|
# Chapter 2: Pronunciation
|
||||||
------
|
|
||||||
|
This, in addition to the tables provided by Colloquial German, should serve as a
|
||||||
|
good document for how German pronunciation is like. Of course, you *should*
|
||||||
|
always look up the pronunciation in its audio format and/or learn how to read
|
||||||
|
IPA table efficiently to improve your pronunciation skills.
|
||||||
|
|
||||||
|
This is also helpful to have a, sometimes misleading, sometimes correct guess of
|
||||||
|
the word's definition simply by saying them. For example, jung is pronounced
|
||||||
|
young and indeed does mean young.
|
||||||
|
|
||||||
|
Keep in mind that all German nouns are capitalized e.g., Buch for book.
|
||||||
|
|
||||||
|
## Vowels
|
||||||
|
|
||||||
|
> Keep in mind that I myself don't know most of these words. They're used
|
||||||
|
to simply give an example on how German sounds like in a way. It'd be
|
||||||
|
good if you pick up a word or two from this guide. I don't think you'll
|
||||||
|
be revisiting this page much. Maybe I'll consider updating the tables
|
||||||
|
with better/more fitting examples that you *may* find interesting.
|
||||||
|
{.info}
|
||||||
|
|
||||||
|
Vowels are either short or long like most languages. They are long when
|
||||||
|
|
||||||
|
* They are doubled: Paar (Pair), Haar (hair), Schnee (Snow).
|
||||||
|
* They are followed by h: sehen (to look. Sehen is the noun view, notice the
|
||||||
|
capitalization matters!), Jahr (year), Ohr (ear).
|
||||||
|
* They are followed by a single consonant: gut (good), rot (red).
|
||||||
|
|
||||||
|
They are shower when
|
||||||
|
|
||||||
|
* They are followed a double consonant: Bett (bed), Mann (man), hoffen (to
|
||||||
|
hope).
|
||||||
|
* They are followed by two or more consonants: sitzen (to sit), ernst (serious,
|
||||||
|
look it up!).
|
||||||
|
|
||||||
|
| Vowel | Type | English equivalent sound | German words |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| a | long | father | Vater, haben, sagen |
|
||||||
|
| a | short | hot | Vasser, Hand, alt |
|
||||||
|
| e | long | may | See, geben |
|
||||||
|
| e | short | let | Ende |
|
||||||
|
| i | long | greet | Tiger, Universität |
|
||||||
|
| i | short | sit | ist, dick, Mitte, Mittag, Mittwoch |
|
||||||
|
| ie | long | similar to here, look up how the following are pronounced. | Bier, hier, fliegen, liegen |
|
||||||
|
| o | long | open | Sohn, Brot, Segelboot |
|
||||||
|
| o | song | Sonne, Sommer | (none) |
|
||||||
|
| u | long | dune | Blume, Pudel, Handschuh |
|
||||||
|
| u | short | bush | Mutter, und, unter |
|
136
content/misc/archived/mqtt/index.md
Normal file
136
content/misc/archived/mqtt/index.md
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
---
|
||||||
|
title: MQTT notes
|
||||||
|
layout: page
|
||||||
|
---
|
||||||
|
|
||||||
|
I first came across the MQTT protocol when I was looking for possible
|
||||||
|
alternative ideas and implementations to Syncplay. The key concept was that
|
||||||
|
video players such as mpv would connect to a central server, share information
|
||||||
|
about their media they're playing and synchronize their state with other peers.
|
||||||
|
|
||||||
|
MQTT stands for Message Queuing Telemetry Transport and is an open OASIS and ISO
|
||||||
|
standard. It is designed to be lightweight and primarily for as a
|
||||||
|
publish-subscribe protocol which is what synchronization-based software such as
|
||||||
|
Syncplay *should* use. Another aspect of MQTT that makes it a viable design
|
||||||
|
option for media synchronization is its simplicity of design. That leaves the
|
||||||
|
implementer with a small well-defined logic to implement which means higher
|
||||||
|
chances of an efficient implementation and less unintentional errors. It also is
|
||||||
|
reasonable to go for a minimal transport protocol to provide a minimal service
|
||||||
|
such as media synchronization.
|
||||||
|
|
||||||
|
I'll be reading through the standard version 5.0.0 published in 07 March 2019
|
||||||
|
and trying to provide a UML-based representation of the MQTT standard with few
|
||||||
|
notes to the C implementation. Keep in mind that at the time of writing this, I
|
||||||
|
do not plan on implementing myself but I believe these notes would be helpful
|
||||||
|
for anyone wishing to implement MQTT themselves.
|
||||||
|
|
||||||
|
Another note to keep in mind is that I do not have prior MQTT experience so I'm
|
||||||
|
not familiar with "best solutions" or "practice workarounds". I'll solely view
|
||||||
|
MQTT through the lens of the standards I have downloaded. Possible notes *may*
|
||||||
|
be added in the future.
|
||||||
|
|
||||||
|
* Keep in mind that I'm by no means an expert and have very little experience
|
||||||
|
with real-word software. I'll be researching things I do not understand and
|
||||||
|
share my explanation here if possible. I suggest you double-check every
|
||||||
|
information provided here as well in order to spot any misconception or
|
||||||
|
misunderstanding.
|
||||||
|
|
||||||
|
* Do note expect a strict and regulated publishing schedule, I'll only read the
|
||||||
|
standard and write about it in my free time whenever I wish. You *may*
|
||||||
|
contribute if you wish too. Alternatively you may advance on your own.
|
||||||
|
|
||||||
|
* I *may not* respect the styling and indentation of the standard e.g., I *may*
|
||||||
|
choose to merge a sub-header back with its parent-head.
|
||||||
|
|
||||||
|
Below are notes about each chapter in separate pages in the order provided by
|
||||||
|
the standard.
|
||||||
|
|
||||||
|
# Introduction
|
||||||
|
|
||||||
|
## Terminology
|
||||||
|
|
||||||
|
MQTT is a server-client protocol in which all clients *must* connect to a server
|
||||||
|
in order to exchange information which have to go through the server.
|
||||||
|
|
||||||
|
## Network connection
|
||||||
|
|
||||||
|
The standard defines network connection as the following.
|
||||||
|
|
||||||
|
> A construct provided by the underlying transport protocol that is being
|
||||||
|
used by MQTT. <br>
|
||||||
|
> * It connects the Client to the Server.
|
||||||
|
> * It provides the means to send an ordered, lossless, stream of bytes in
|
||||||
|
both directions.
|
||||||
|
|
||||||
|
I believe that this definition was mainly provided as to not limit the network
|
||||||
|
connection, specifically the network protocol, to TCP as it is possibly the most
|
||||||
|
common network protocol used when implementing MQTT. You can emulate the bullet
|
||||||
|
points under non-TCP network protocols e.g., UDP and implement MQTT on top of
|
||||||
|
it.
|
||||||
|
|
||||||
|
## Session
|
||||||
|
|
||||||
|
> A stateful interaction between a Client and a Server. Some Sessions last
|
||||||
|
only as long as the Network Connection, others can span multiple
|
||||||
|
consecutive Network Connections between a Client and a Server.
|
||||||
|
|
||||||
|
This allows for the possibility of attempting re-connection after it has been
|
||||||
|
lost to preserve the same session.
|
||||||
|
|
||||||
|
## Application message
|
||||||
|
|
||||||
|
The information sent between clients through servers is called the application
|
||||||
|
message which is carried by the MQTT protocol across the network. It contains
|
||||||
|
payload data, a Quality of Service (QoS), a collection of properties and a topic
|
||||||
|
name.
|
||||||
|
|
||||||
|
### Subscription
|
||||||
|
|
||||||
|
A subscription comprises a topic filter and a maximum QoS. A subscription is
|
||||||
|
associated with a single session. A session can contain more than one
|
||||||
|
subscription. Each subscription within a session has a different topic filter.
|
||||||
|
|
||||||
|
Shared subscription can be associated with more than one session. I assume this
|
||||||
|
is used for the case of multiple servers? I don't see the need to have multiple
|
||||||
|
sessions to the same server but it is allowed by the standard.
|
||||||
|
|
||||||
|
Wildcard subscription is a subscription with a topic filter containing one or
|
||||||
|
more wildcard characters. This allows the subscription to match more than one
|
||||||
|
topic name. Basically ``*`` in regular expression.
|
||||||
|
|
||||||
|
> TODO: write UML diagram about user <-- session 0..* -- 1..1 subscription
|
||||||
|
{.todo}
|
||||||
|
|
||||||
|
### Topic name
|
||||||
|
|
||||||
|
The label attached to an application message which is matched against the
|
||||||
|
subscriptions known to the server. This is up to the application to use it
|
||||||
|
efficiently. In the case of media synchronization, would you rather use do
|
||||||
|
central topics e.g., ``/media/filename`` and users push to that topic or would
|
||||||
|
you do per-user topics ``/renken/media/filename`` and only ``renken`` can
|
||||||
|
publish to that topic. Similar ideas to that come to mind I guess.
|
||||||
|
|
||||||
|
### Topic filter
|
||||||
|
|
||||||
|
An expression contained in a subscription to indicate an interest in one or more
|
||||||
|
topics. A topic filter can include wildcard characters.
|
||||||
|
|
||||||
|
### Client
|
||||||
|
|
||||||
|
As discussed before, in MQTT, the client can only communicate with a server and
|
||||||
|
not with other clients. Note that the client is not limited to a single server.
|
||||||
|
It also not limited to a fixed number of application messages published or
|
||||||
|
requested.
|
||||||
|
|
||||||
|
The server acts as an intermediary between clients which publish application
|
||||||
|
messages and clients which have made subscriptions.
|
||||||
|
|
||||||
|
<figure style="text-align: center;">
|
||||||
|
<img
|
||||||
|
src="https://www.planttext.com/api/plantuml/svg/ZSyn3i8m38NXdLFu0bo0WILYHweuG18zQ4Hg5pifrsypm50oiFlxzUno0XSwdcc0Bj0JNQpua9EDCFB4A6_H9qLXHYn9-E1-oBL-0PEVvvoYRwSqmVm37J7KO55Js4WHKhmghEnfizR1DxOTdsJ1DlRJkOl-st9Ph5L6z5vT0G00"
|
||||||
|
name="client UML diagram"
|
||||||
|
alt="client UML diagram">
|
||||||
|
<figcaption>
|
||||||
|
<a href="https://www.planttext.com/?text=ZSyn3i8m38NXdLFu0bo0WILYHweuG18zQ4Hg5pifrsypm50oiFlxzUno0XSwdcc0Bj0JNQpua9EDCFB4A6_H9qLXHYn9-E1-oBL-0PEVvvoYRwSqmVm37J7KO55Js4WHKhmghEnfizR1DxOTdsJ1DlRJkOl-st9Ph5L6z5vT0G00">client UML diagram</a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
81
content/misc/p/birthday/index.md
Normal file
81
content/misc/p/birthday/index.md
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
---
|
||||||
|
title: Birthday drawings
|
||||||
|
layout: page
|
||||||
|
---
|
||||||
|
|
||||||
|
# Happy birthday!!
|
||||||
|
|
||||||
|
I'd like to thank pika and verm for this lovely picture, it never fails to put
|
||||||
|
a smile on my face. Hacker/Artist pika can be found on
|
||||||
|
[Pixiv](https://www.pixiv.net/en/users/46770896).
|
||||||
|
|
||||||
|
|
||||||
|
<figure style="text-align: center;">
|
||||||
|
<img
|
||||||
|
src="./birthday/renkenwaifu.png"
|
||||||
|
name="nonoka-birthday"
|
||||||
|
alt="nonoka-birthday"
|
||||||
|
width="407.5px"
|
||||||
|
height="671.75px">
|
||||||
|
<figcaption>
|
||||||
|
<a href="./birthday/renkenwaifu.kra">renkenwaifu.kra</a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
# Wednyasday's nyan night!!
|
||||||
|
|
||||||
|
pikanyan drew another picture of nonoka on a late Wednesday night comfy stream
|
||||||
|
and it's amazing. I love it!
|
||||||
|
|
||||||
|
<figure style="text-align: center;">
|
||||||
|
<img
|
||||||
|
src="./birthday/nonokasayshi.png"
|
||||||
|
name="nonoka-wednyasday"
|
||||||
|
alt="nonoka-wednyasday"
|
||||||
|
width="50%"
|
||||||
|
height="50%">
|
||||||
|
<figcaption>
|
||||||
|
<a href="./birthday/nonokasayshi.kra">nonokasayshi.kra</a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
# Original Do NOT Steal!!
|
||||||
|
|
||||||
|
pikapyon drew yet another amazing picture, this time with the three of us
|
||||||
|
together. From left to right.
|
||||||
|
|
||||||
|
1. ximin @ [ximinity.net](https://ximinity.net)
|
||||||
|
2. verm @ [mel.vin](https://mel.vin), spam him with emails if his website still
|
||||||
|
doesn't have a proper homepage
|
||||||
|
3. renken @ [shione.net](https://shione.net)
|
||||||
|
|
||||||
|
<figure style="text-align: center;">
|
||||||
|
<img
|
||||||
|
src="./birthday/originalOCdonotsteal.png"
|
||||||
|
name="nonoka-wednyasday"
|
||||||
|
alt="nonoka-wednyasday"
|
||||||
|
width="80%"
|
||||||
|
height="80%">
|
||||||
|
<figcaption>
|
||||||
|
<a href="./birthday/originalOCdonotsteal.kra">originalOCdonotsteal.kra</a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
# Happy nichijou birthday!!
|
||||||
|
|
||||||
|
pikadesu picked an amazing theme for this year's birthday's gift, nichijou! I
|
||||||
|
really love it and I'm looking forward to using sakamoto as my avatar in case
|
||||||
|
nonoka was considered too much for wörk :^) Thank you very much for this
|
||||||
|
pikadesu!
|
||||||
|
|
||||||
|
<figure style="text-align: center;">
|
||||||
|
<img
|
||||||
|
src="./birthday/renkenbirthdaynichijou.png"
|
||||||
|
name="nonoka-wednyasday"
|
||||||
|
alt="nonoka-wednyasday"
|
||||||
|
width="80%"
|
||||||
|
height="80%">
|
||||||
|
<figcaption>
|
||||||
|
<a href="./birthday/renkenbirthdaynichijou.kra">renkenbirthdaynichijou.kra</a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
|
@ -2,10 +2,11 @@
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
make
|
hugo --minify
|
||||||
|
|
||||||
rsync \
|
rsync \
|
||||||
-a \
|
-a \
|
||||||
--delete \
|
--delete \
|
||||||
--progress \
|
--progress \
|
||||||
build/doc/ \
|
public/ \
|
||||||
'root@shione:/var/www/html/www.shione.net'
|
'root@shione:/var/www/html/www.shione.net'
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
timestamp="$(date '+%s')"
|
|
||||||
title="$(date '+%Y-%m-%d %H:%M' --date="@$timestamp")"
|
|
||||||
year="$(date '+%Y')"
|
|
||||||
month="$(date '+%m')"
|
|
||||||
|
|
||||||
archive=./src/shione/log/archive
|
|
||||||
|
|
||||||
for dir in "$archive" "$archive/$year" "$archive/$year/$month"; do
|
|
||||||
if [ ! -d "$dir" ]; then
|
|
||||||
mkdir -- "$dir"
|
|
||||||
name="$(basename -- "$dir")"
|
|
||||||
if [ "$name" = archive ]; then
|
|
||||||
name=Archive
|
|
||||||
fi
|
|
||||||
<<-EOF cat - >"$dir/index.md"
|
|
||||||
# $name
|
|
||||||
|
|
||||||
\`\`\`{toctree}
|
|
||||||
---
|
|
||||||
maxdepth: 1
|
|
||||||
glob:
|
|
||||||
---
|
|
||||||
|
|
||||||
*/index
|
|
||||||
\`\`\`
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
mkdir -- "$archive/$year/$month/$timestamp"
|
|
||||||
|
|
||||||
|
|
||||||
<<-EOF cat - >"$archive/$year/$month/$timestamp/index.md"
|
|
||||||
# $title
|
|
||||||
*Written $title*
|
|
||||||
|
|
||||||
\`\`\`{contents}
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
## TODO
|
|
||||||
EOF
|
|
||||||
|
|
||||||
printf '%s\n' "$archive/$year/$month/$timestamp"
|
|
||||||
exit 0
|
|
11
layouts/_default/single.html
Normal file
11
layouts/_default/single.html
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{{ partial "head.html" . }}
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
{{$.Title}}
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
{{.Content}}
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{{ partial "foot.html" }}
|
41
layouts/blog/rss.xml
Normal file
41
layouts/blog/rss.xml
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{{- $pctx := . -}}
|
||||||
|
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
|
||||||
|
{{- $pages := slice -}}
|
||||||
|
{{- if or $.IsHome $.IsSection -}}
|
||||||
|
{{- $pages = $pctx.RegularPages -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $pages = $pctx.Pages -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $limit := .Site.Config.Services.RSS.Limit -}}
|
||||||
|
{{- if ge $limit 1 -}}
|
||||||
|
{{- $pages = $pages | first $limit -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>renken's weblog</title>
|
||||||
|
<link>https://shione.net</link>
|
||||||
|
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
||||||
|
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||||
|
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||||
|
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||||
|
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||||
|
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||||
|
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||||
|
{{ with .OutputFormats.Get "RSS" }}
|
||||||
|
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
||||||
|
{{ end }}
|
||||||
|
{{ range $pages }}
|
||||||
|
{{- if .OutputFormats.Get "HTML" -}}
|
||||||
|
<item>
|
||||||
|
<title>{{ .Title }}</title>
|
||||||
|
<link>{{ .Permalink }}</link>
|
||||||
|
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||||
|
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||||
|
<guid>{{ .Permalink }}</guid>
|
||||||
|
<description>{{- .Content | html -}}</description>
|
||||||
|
</item>
|
||||||
|
{{- end -}}
|
||||||
|
{{ end }}
|
||||||
|
</channel>
|
||||||
|
</rss>
|
10
layouts/blog/section.html
Normal file
10
layouts/blog/section.html
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>{{.Title}}</title>
|
||||||
|
{{ $style := resources.Get "main.scss" | resources.ToCSS | resources.Minify | resources.Fingerprint }}
|
||||||
|
<link rel="stylesheet" href="{{ $style.RelPermalink }}">
|
||||||
|
|
||||||
|
<main>
|
||||||
|
{{.Content}}
|
||||||
|
</main>
|
18
layouts/blog/single.html
Normal file
18
layouts/blog/single.html
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{{ partial "head.html" . }}
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
{{$.Title}}
|
||||||
|
<small>
|
||||||
|
<span class="date">{{.Date.Format "January 2, 2006"}}</span>
|
||||||
|
on
|
||||||
|
<span class="site"><a href="{{.Site.BaseURL}}">{{.Site.Title}}</a></span>
|
||||||
|
</small>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<article>
|
||||||
|
{{.Content}}
|
||||||
|
</article>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{{ partial "foot.html" }}
|
51
layouts/index.html
Normal file
51
layouts/index.html
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
{{ partial "head.html" . }}
|
||||||
|
|
||||||
|
<main class="index">
|
||||||
|
<section class="article-list">
|
||||||
|
<h1>{{$.Title}}</h1>
|
||||||
|
|
||||||
|
{{ range (where (where .Site.RegularPages "Section" "blog") "Params.nohtml" "!=" "true") }}
|
||||||
|
{{- if .OutputFormats.Get "html" }}
|
||||||
|
<div class="article">
|
||||||
|
<span class="date">{{.Date.Format "January 2, 2006"}}</span>
|
||||||
|
<a href="{{.Permalink}}">{{.Title}}</a>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<aside>
|
||||||
|
<img
|
||||||
|
src="/avatar.png"
|
||||||
|
alt="My avatar: Nonoka Sasaki from Mitsuboshi Colors"
|
||||||
|
width="148" height="148" />
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<a class="rss" href="/blog/index.xml">rss</a>
|
||||||
|
·
|
||||||
|
<a href="misc.html">misc</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<dl class="external-links">
|
||||||
|
<dt>email</dt>
|
||||||
|
<dd><a href="mailto:renken@shione.net">renken@shione.net</a></dd>
|
||||||
|
<dt>gitlab</dt>
|
||||||
|
<dd><a href="https://gitlab.com/renken">renken</a></dd>
|
||||||
|
<dt>telegram</dt>
|
||||||
|
<dd><a href="https://t.me/renken">renken</a></dd>
|
||||||
|
<dt>last.fm</dt>
|
||||||
|
<dd><a href="https://www.last.fm/user/renkenrc">renkenrc</a></dd>
|
||||||
|
<dt>pgp</dt>
|
||||||
|
<dd><a href="/renken.asc">53334B09D2066FCF</a></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<small>
|
||||||
|
|
||||||
|
Hi, I’m Renken, 25 years old from Algeria and I manage shione. The name
|
||||||
|
Shione translates to “sound of tide” (汐音).
|
||||||
|
|
||||||
|
</small>
|
||||||
|
</aside>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{{ partial "foot.html" . }}
|
6
layouts/partials/foot.html
Normal file
6
layouts/partials/foot.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<footer>
|
||||||
|
<a href="https://www.debian.org"><img id="rss" src="/debian.png" alt="debian"></a>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<a href="https://gitlab.com/renken/shione">source code</a>
|
||||||
|
</footer>
|
14
layouts/partials/head.html
Normal file
14
layouts/partials/head.html
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
{{ if $.Params.noindex }}
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
|
{{ end }}
|
||||||
|
<title>{{$.Title}}</title>
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS" href="/index.xml">
|
||||||
|
<link rel="icon" type="image/png" href="/avatar.png">
|
||||||
|
{{ $style := resources.Get "main.scss" | resources.ToCSS | resources.Minify | resources.Fingerprint }}
|
||||||
|
<link rel="stylesheet" href="{{ $style.RelPermalink }}">
|
||||||
|
</head>
|
661
poetry.lock
generated
661
poetry.lock
generated
|
@ -1,661 +0,0 @@
|
||||||
# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand.
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "alabaster"
|
|
||||||
version = "0.7.13"
|
|
||||||
description = "A configurable sidebar-enabled Sphinx theme"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.6"
|
|
||||||
files = [
|
|
||||||
{file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"},
|
|
||||||
{file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "babel"
|
|
||||||
version = "2.12.1"
|
|
||||||
description = "Internationalization utilities"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"},
|
|
||||||
{file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "certifi"
|
|
||||||
version = "2022.12.7"
|
|
||||||
description = "Python package for providing Mozilla's CA Bundle."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.6"
|
|
||||||
files = [
|
|
||||||
{file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"},
|
|
||||||
{file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "charset-normalizer"
|
|
||||||
version = "3.1.0"
|
|
||||||
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7.0"
|
|
||||||
files = [
|
|
||||||
{file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"},
|
|
||||||
{file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"},
|
|
||||||
{file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "colorama"
|
|
||||||
version = "0.4.6"
|
|
||||||
description = "Cross-platform colored terminal text."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
|
||||||
files = [
|
|
||||||
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
|
|
||||||
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "docutils"
|
|
||||||
version = "0.19"
|
|
||||||
description = "Docutils -- Python Documentation Utilities"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"},
|
|
||||||
{file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "idna"
|
|
||||||
version = "3.4"
|
|
||||||
description = "Internationalized Domain Names in Applications (IDNA)"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.5"
|
|
||||||
files = [
|
|
||||||
{file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
|
|
||||||
{file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "imagesize"
|
|
||||||
version = "1.4.1"
|
|
||||||
description = "Getting image size from png/jpeg/jpeg2000/gif file"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|
||||||
files = [
|
|
||||||
{file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"},
|
|
||||||
{file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "6.3.0"
|
|
||||||
description = "Read metadata from Python packages"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "importlib_metadata-6.3.0-py3-none-any.whl", hash = "sha256:8f8bd2af397cf33bd344d35cfe7f489219b7d14fc79a3f854b75b8417e9226b0"},
|
|
||||||
{file = "importlib_metadata-6.3.0.tar.gz", hash = "sha256:23c2bcae4762dfb0bbe072d358faec24957901d75b6c4ab11172c0c982532402"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
zipp = ">=0.5"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
|
|
||||||
perf = ["ipython"]
|
|
||||||
testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "jinja2"
|
|
||||||
version = "3.1.2"
|
|
||||||
description = "A very fast and expressive template engine."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
|
|
||||||
{file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
MarkupSafe = ">=2.0"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
i18n = ["Babel (>=2.7)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "markdown-it-py"
|
|
||||||
version = "2.2.0"
|
|
||||||
description = "Python port of markdown-it. Markdown parsing, done right!"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"},
|
|
||||||
{file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
mdurl = ">=0.1,<1.0"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
benchmarking = ["psutil", "pytest", "pytest-benchmark"]
|
|
||||||
code-style = ["pre-commit (>=3.0,<4.0)"]
|
|
||||||
compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"]
|
|
||||||
linkify = ["linkify-it-py (>=1,<3)"]
|
|
||||||
plugins = ["mdit-py-plugins"]
|
|
||||||
profiling = ["gprof2dot"]
|
|
||||||
rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"]
|
|
||||||
testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "markupsafe"
|
|
||||||
version = "2.1.2"
|
|
||||||
description = "Safely add untrusted strings to HTML/XML markup."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"},
|
|
||||||
{file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"},
|
|
||||||
{file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mdit-py-plugins"
|
|
||||||
version = "0.3.5"
|
|
||||||
description = "Collection of plugins for markdown-it-py"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "mdit-py-plugins-0.3.5.tar.gz", hash = "sha256:eee0adc7195e5827e17e02d2a258a2ba159944a0748f59c5099a4a27f78fcf6a"},
|
|
||||||
{file = "mdit_py_plugins-0.3.5-py3-none-any.whl", hash = "sha256:ca9a0714ea59a24b2b044a1831f48d817dd0c817e84339f20e7889f392d77c4e"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
markdown-it-py = ">=1.0.0,<3.0.0"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
code-style = ["pre-commit"]
|
|
||||||
rtd = ["attrs", "myst-parser (>=0.16.1,<0.17.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"]
|
|
||||||
testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mdurl"
|
|
||||||
version = "0.1.2"
|
|
||||||
description = "Markdown URL utilities"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"},
|
|
||||||
{file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "myst-parser"
|
|
||||||
version = "1.0.0"
|
|
||||||
description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser,"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "myst-parser-1.0.0.tar.gz", hash = "sha256:502845659313099542bd38a2ae62f01360e7dd4b1310f025dd014dfc0439cdae"},
|
|
||||||
{file = "myst_parser-1.0.0-py3-none-any.whl", hash = "sha256:69fb40a586c6fa68995e6521ac0a525793935db7e724ca9bac1d33be51be9a4c"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
docutils = ">=0.15,<0.20"
|
|
||||||
jinja2 = "*"
|
|
||||||
markdown-it-py = ">=1.0.0,<3.0.0"
|
|
||||||
mdit-py-plugins = ">=0.3.4,<0.4.0"
|
|
||||||
pyyaml = "*"
|
|
||||||
sphinx = ">=5,<7"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
code-style = ["pre-commit (>=3.0,<4.0)"]
|
|
||||||
linkify = ["linkify-it-py (>=1.0,<2.0)"]
|
|
||||||
rtd = ["ipython", "pydata-sphinx-theme (==v0.13.0rc4)", "sphinx-autodoc2 (>=0.4.2,<0.5.0)", "sphinx-book-theme (==1.0.0rc2)", "sphinx-copybutton", "sphinx-design2", "sphinx-pyscript", "sphinx-tippy (>=0.3.1)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.7.5,<0.8.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"]
|
|
||||||
testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=7,<8)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"]
|
|
||||||
testing-docutils = ["pygments", "pytest (>=7,<8)", "pytest-param-files (>=0.3.4,<0.4.0)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "packaging"
|
|
||||||
version = "23.1"
|
|
||||||
description = "Core utilities for Python packages"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"},
|
|
||||||
{file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pygments"
|
|
||||||
version = "2.15.0"
|
|
||||||
description = "Pygments is a syntax highlighting package written in Python."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "Pygments-2.15.0-py3-none-any.whl", hash = "sha256:77a3299119af881904cd5ecd1ac6a66214b6e9bed1f2db16993b54adede64094"},
|
|
||||||
{file = "Pygments-2.15.0.tar.gz", hash = "sha256:f7e36cffc4c517fbc252861b9a6e4644ca0e5abadf9a113c72d1358ad09b9500"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
plugins = ["importlib-metadata"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pyyaml"
|
|
||||||
version = "6.0"
|
|
||||||
description = "YAML parser and emitter for Python"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.6"
|
|
||||||
files = [
|
|
||||||
{file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
|
|
||||||
{file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
|
|
||||||
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
|
|
||||||
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
|
|
||||||
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
|
|
||||||
{file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
|
|
||||||
{file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
|
|
||||||
{file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"},
|
|
||||||
{file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"},
|
|
||||||
{file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"},
|
|
||||||
{file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"},
|
|
||||||
{file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"},
|
|
||||||
{file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"},
|
|
||||||
{file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"},
|
|
||||||
{file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
|
|
||||||
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
|
|
||||||
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
|
|
||||||
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
|
|
||||||
{file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
|
|
||||||
{file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
|
|
||||||
{file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
|
|
||||||
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
|
|
||||||
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
|
|
||||||
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
|
|
||||||
{file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
|
|
||||||
{file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
|
|
||||||
{file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
|
|
||||||
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
|
|
||||||
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
|
|
||||||
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
|
|
||||||
{file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
|
|
||||||
{file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
|
|
||||||
{file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
|
|
||||||
{file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
|
|
||||||
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
|
|
||||||
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
|
|
||||||
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
|
|
||||||
{file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
|
|
||||||
{file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
|
|
||||||
{file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "requests"
|
|
||||||
version = "2.28.2"
|
|
||||||
description = "Python HTTP for Humans."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7, <4"
|
|
||||||
files = [
|
|
||||||
{file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"},
|
|
||||||
{file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
certifi = ">=2017.4.17"
|
|
||||||
charset-normalizer = ">=2,<4"
|
|
||||||
idna = ">=2.5,<4"
|
|
||||||
urllib3 = ">=1.21.1,<1.27"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
|
||||||
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "snowballstemmer"
|
|
||||||
version = "2.2.0"
|
|
||||||
description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = "*"
|
|
||||||
files = [
|
|
||||||
{file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
|
|
||||||
{file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "sphinx"
|
|
||||||
version = "6.1.3"
|
|
||||||
description = "Python documentation generator"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
files = [
|
|
||||||
{file = "Sphinx-6.1.3.tar.gz", hash = "sha256:0dac3b698538ffef41716cf97ba26c1c7788dba73ce6f150c1ff5b4720786dd2"},
|
|
||||||
{file = "sphinx-6.1.3-py3-none-any.whl", hash = "sha256:807d1cb3d6be87eb78a381c3e70ebd8d346b9a25f3753e9947e866b2786865fc"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
alabaster = ">=0.7,<0.8"
|
|
||||||
babel = ">=2.9"
|
|
||||||
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
|
|
||||||
docutils = ">=0.18,<0.20"
|
|
||||||
imagesize = ">=1.3"
|
|
||||||
importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""}
|
|
||||||
Jinja2 = ">=3.0"
|
|
||||||
packaging = ">=21.0"
|
|
||||||
Pygments = ">=2.13"
|
|
||||||
requests = ">=2.25.0"
|
|
||||||
snowballstemmer = ">=2.0"
|
|
||||||
sphinxcontrib-applehelp = "*"
|
|
||||||
sphinxcontrib-devhelp = "*"
|
|
||||||
sphinxcontrib-htmlhelp = ">=2.0.0"
|
|
||||||
sphinxcontrib-jsmath = "*"
|
|
||||||
sphinxcontrib-qthelp = "*"
|
|
||||||
sphinxcontrib-serializinghtml = ">=1.1.5"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
docs = ["sphinxcontrib-websupport"]
|
|
||||||
lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"]
|
|
||||||
test = ["cython", "html5lib", "pytest (>=4.6)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "sphinxcontrib-applehelp"
|
|
||||||
version = "1.0.4"
|
|
||||||
description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
files = [
|
|
||||||
{file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"},
|
|
||||||
{file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
lint = ["docutils-stubs", "flake8", "mypy"]
|
|
||||||
test = ["pytest"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "sphinxcontrib-devhelp"
|
|
||||||
version = "1.0.2"
|
|
||||||
description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.5"
|
|
||||||
files = [
|
|
||||||
{file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"},
|
|
||||||
{file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
lint = ["docutils-stubs", "flake8", "mypy"]
|
|
||||||
test = ["pytest"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "sphinxcontrib-htmlhelp"
|
|
||||||
version = "2.0.1"
|
|
||||||
description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.8"
|
|
||||||
files = [
|
|
||||||
{file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"},
|
|
||||||
{file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
lint = ["docutils-stubs", "flake8", "mypy"]
|
|
||||||
test = ["html5lib", "pytest"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "sphinxcontrib-jsmath"
|
|
||||||
version = "1.0.1"
|
|
||||||
description = "A sphinx extension which renders display math in HTML via JavaScript"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.5"
|
|
||||||
files = [
|
|
||||||
{file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"},
|
|
||||||
{file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
test = ["flake8", "mypy", "pytest"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "sphinxcontrib-plantuml"
|
|
||||||
version = "0.25"
|
|
||||||
description = "Sphinx \"plantuml\" extension"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = "*"
|
|
||||||
files = [
|
|
||||||
{file = "sphinxcontrib-plantuml-0.25.tar.gz", hash = "sha256:8fde531d92d1cfc2817fe3647b3f2d07e76682c4a84889c04a53e831f7c54432"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.dependencies]
|
|
||||||
Sphinx = ">=1.6"
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
test = ["Pillow", "flake8", "pytest"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "sphinxcontrib-qthelp"
|
|
||||||
version = "1.0.3"
|
|
||||||
description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.5"
|
|
||||||
files = [
|
|
||||||
{file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"},
|
|
||||||
{file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
lint = ["docutils-stubs", "flake8", "mypy"]
|
|
||||||
test = ["pytest"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "sphinxcontrib-serializinghtml"
|
|
||||||
version = "1.1.5"
|
|
||||||
description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.5"
|
|
||||||
files = [
|
|
||||||
{file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"},
|
|
||||||
{file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
lint = ["docutils-stubs", "flake8", "mypy"]
|
|
||||||
test = ["pytest"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml"
|
|
||||||
version = "0.10.2"
|
|
||||||
description = "Python Library for Tom's Obvious, Minimal Language"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
|
||||||
files = [
|
|
||||||
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
|
|
||||||
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "urllib3"
|
|
||||||
version = "1.26.15"
|
|
||||||
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
|
|
||||||
files = [
|
|
||||||
{file = "urllib3-1.26.15-py2.py3-none-any.whl", hash = "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"},
|
|
||||||
{file = "urllib3-1.26.15.tar.gz", hash = "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"]
|
|
||||||
secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
|
|
||||||
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.15.0"
|
|
||||||
description = "Backport of pathlib-compatible object wrapper for zip files"
|
|
||||||
category = "main"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.7"
|
|
||||||
files = [
|
|
||||||
{file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"},
|
|
||||||
{file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"},
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.extras]
|
|
||||||
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
|
|
||||||
testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
|
|
||||||
|
|
||||||
[metadata]
|
|
||||||
lock-version = "2.0"
|
|
||||||
python-versions = "^3.9"
|
|
||||||
content-hash = "84375b9f6f6504b34111a9776d1cc20815af4ef4e4444dc21a863496859b9e61"
|
|
|
@ -1,19 +0,0 @@
|
||||||
[tool.poetry]
|
|
||||||
name = "shione"
|
|
||||||
version = "0.1.0"
|
|
||||||
description = "My personal website"
|
|
||||||
authors = ["Renken <renken@shione.net>"]
|
|
||||||
license = "AGPL-3.0-only"
|
|
||||||
readme = "README.md"
|
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
|
||||||
python = "^3.9"
|
|
||||||
Sphinx = "^6.1.3"
|
|
||||||
myst-parser = "^1.0.0"
|
|
||||||
sphinxcontrib-plantuml = "^0.25"
|
|
||||||
toml = "^0.10.2"
|
|
||||||
|
|
||||||
|
|
||||||
[build-system]
|
|
||||||
requires = ["poetry-core"]
|
|
||||||
build-backend = "poetry.core.masonry.api"
|
|
|
@ -0,0 +1 @@
|
||||||
|
html{font-family:sans-serif;color:#080808}body{max-width:920px;margin:0 auto;padding:1rem}h1{margin-top:0;font-size:1.5rem}h1 small{display:block;font-size:1rem}.index{display:flex;flex-direction:row}.index .article-list{flex-grow:1}.index .article-list .article{margin-bottom:1rem}.index .article-list .date{display:block;color:#333}.index aside{width:40%}.index aside img{display:block;margin:0 auto 1rem;border-radius:5px}.index aside dt{font-size:.9rem}.index aside dd{margin-left:0}.index aside dd:not(:last-child){margin-bottom:.5rem}@media(max-width:640px){.index aside{display:none}}article{margin:0 auto;max-width:720px;line-height:1.3}article img,article video,article iframe{display:block!important;margin:0 auto!important;max-width:90%}@media(max-width:640px){article img,article video,article iframe{max-width:calc(100% - 2rem)}}article sup{line-height:1}article .comment{margin:2rem auto 0;max-width:80%;color:#333}.footnotes{font-size:.85rem}footer{margin-top:2rem;text-align:center;font-size:.8rem;color:#333}.float-img{float:right;display:inline;padding-left:1rem}@media(max-width:640px){.float-img{display:block;float:none;padding-left:inherit}}pre{background-color:#eee;padding:.25rem 1rem;margin:0 -1rem;max-width:100%;overflow-x:auto}pre .cp{color:#800}pre .k{color:#008}pre .kt,pre .kd,pre .kc{color:#44f}pre .s{color:#484;font-style:italic}pre .cm,pre .c1{color:#333;font-style:italic}pre .gi{color:green}pre .gd{color:red}pre .gu{color:blue}.webring{margin-top:2rem}.webring h2{font-size:1.2rem}.webring .articles{display:flex}@media(max-width:640px){.webring .articles{flex-direction:column}}.webring .title{margin:0}.webring .article{flex:1;display:flex;flex-direction:column;background:#eee;padding:.5rem;margin:0 .5rem}@media(max-width:640px){.webring .article{margin:.5rem 0}}.webring .article:first-child{margin-left:0}.webring .article:last-child{margin-right:0}.webring .summary{font-size:.8rem;flex:1}.webring .attribution{float:right;font-size:.8rem;color:#555;line-height:3}.webring .date{color:#000}summary{cursor:pointer;background-color:#eee;padding:.25rem 1rem;margin:0 -1rem}details[open]{border-bottom:1rem solid #eee;margin:0 -1rem 1rem;padding:0 1rem}.text-center{text-align:center}blockquote{border-left:5px solid #777;background-color:#eee;padding:0 1rem;margin-left:0;margin-right:0}blockquote blockquote{margin-right:0;margin-left:0}dl{display:grid;grid-template-columns:auto 1fr;grid-gap:.2rem 1rem}dl dt{font-weight:700;grid-column-start:1}dl dd{grid-column-start:2;margin:0}.alert{padding:.5rem;border:1px solid transparent;margin-bottom:1rem}.alert.alert-danger{background:#f8d7da;color:#721c24;border-color:#f5c6cb}.alert.alert-info{background:#d1ecf1;color:#0c5460;border-color:#bee5eb}table{color:#333;background:#fff;border:1px solid grey;font-size:12pt;border-collapse:collapse}table thead th,table tfoot th{background:rgba(0,0,0,.1)}table caption{padding:.5em}table th,table td{padding:.5em;border:1px solid lightgrey}td.red{background:#f8d7da}td.yellow{background:#fff3cd}td.blue{background:#cfe2ff}.error,.info,.warn .todo{background:#efefef;border-left-style:solid;border-left-width:.4rem;border-radius:.2rem;margin-left:0}.error>p,.info>p,.warn .todo>p{padding:.5rem 1rem}.warn{border-left-color:#fb0}.info{border-left-color:#00e}.error{border-left-color:#e00}.todo{border-left-color:#ee0}
|
|
@ -0,0 +1 @@
|
||||||
|
{"Target":"main.min.c1a322d943111db1cfbc3d645c87c52ef2b23a1d1fd6988387a706ae3357e3b5.css","MediaType":"text/css","Data":{"Integrity":"sha256-waMi2UMRHbHPvD1kXIfFLvKyOh0f1piDh6cGrjNX47U="}}
|
|
@ -1,12 +0,0 @@
|
||||||
:orphan:
|
|
||||||
|
|
||||||
Not found
|
|
||||||
=========
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Our hard-working Cirnos cannot find the requested resource!
|
|
||||||
|
|
||||||
.. image:: _static/cirnos.png
|
|
||||||
:name: cirnos
|
|
||||||
:alt: cirnos
|
|
||||||
:align: center
|
|
|
@ -1,74 +0,0 @@
|
||||||
set(DOC_SRC "${PROJECT_SOURCE_DIR}/doc")
|
|
||||||
set(DOC_DEST "${PROJECT_BINARY_DIR}/doc/${DOC}")
|
|
||||||
set(DOC_TMP "${PROJECT_BINARY_DIR}/tmp/doc")
|
|
||||||
|
|
||||||
if(DOC STREQUAL "html")
|
|
||||||
set(EXTRA_PYTHON_MODULES "sphinx_rtd_theme")
|
|
||||||
else()
|
|
||||||
unset(EXTRA_PYTHON_MODULES)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(PythonInterp REQUIRED)
|
|
||||||
include(find_python_module)
|
|
||||||
|
|
||||||
# do not change the ENV, doesn't work with add_custom_target
|
|
||||||
# https://cmake.org/Bug/view.php?id=5145
|
|
||||||
if(ENV{PYTHONPATH})
|
|
||||||
set(PYTHONPATH "$ENV{PYTHONPATH}")
|
|
||||||
else()
|
|
||||||
# PYTHONPATH disables defaults, manually append them
|
|
||||||
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
|
|
||||||
"import sys; sys.stdout.write(':'.join(sys.path))"
|
|
||||||
OUTPUT_VARIABLE PYTHONPATH)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach(module
|
|
||||||
sphinx
|
|
||||||
sphinxcontrib.plantuml
|
|
||||||
${EXTRA_PYTHON_MODULES})
|
|
||||||
string(TOUPPER "${module}" module_upper)
|
|
||||||
find_python_module("${module}" "${module_upper}")
|
|
||||||
set(PYTHONPATH "${${module_upper}_PATH}:${PYTHONPATH}")
|
|
||||||
endforeach(module)
|
|
||||||
|
|
||||||
if(${WERROR})
|
|
||||||
set(SPHINX_WERROR "-W")
|
|
||||||
else()
|
|
||||||
unset(SPHINX_WERROR)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(plantuml)
|
|
||||||
|
|
||||||
configure_file(
|
|
||||||
"${DOC_SRC}/conf.py.in"
|
|
||||||
"${DOC_TMP}/sphinx/conf.py"
|
|
||||||
@ONLY)
|
|
||||||
|
|
||||||
add_custom_target(doc ALL
|
|
||||||
COMMAND "${CMAKE_COMMAND}" -E echo
|
|
||||||
"Generating sphinx ${DOC} documentation"
|
|
||||||
COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=${PYTHONPATH}"
|
|
||||||
"${PYTHON_EXECUTABLE}" -m sphinx -b "${DOC}"
|
|
||||||
-d "${DOC_TMP}/sphinx/doctrees" -j auto
|
|
||||||
-c "${DOC_TMP}/sphinx" -q ${SPHINX_WERROR}
|
|
||||||
"${DOC_SRC}" "${DOC_DEST}")
|
|
||||||
add_custom_command(TARGET doc POST_BUILD
|
|
||||||
COMMAND ;
|
|
||||||
COMMENT "Output at ${DOC_DEST}")
|
|
||||||
|
|
||||||
add_custom_target(doc_nocache
|
|
||||||
COMMAND "${CMAKE_COMMAND}" -E echo
|
|
||||||
"Generating sphinx ${DOC} documentation, no cache"
|
|
||||||
COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=${PYTHONPATH}"
|
|
||||||
"${PYTHON_EXECUTABLE}" -m sphinx -b "${DOC}" -E
|
|
||||||
-d "${DOC_TMP}/sphinx/doctrees" -j auto
|
|
||||||
-c "${DOC_TMP}/sphinx" -q ${SPHINX_WERROR}
|
|
||||||
"${DOC_SRC}" "${DOC_DEST}")
|
|
||||||
add_custom_command(TARGET doc_nocache POST_BUILD
|
|
||||||
COMMAND ;
|
|
||||||
COMMENT "Output at ${DOC_DEST}")
|
|
||||||
|
|
||||||
add_custom_target(doc_clean
|
|
||||||
COMMAND "${CMAKE_COMMAND}" -E remove_directory "${DOC_DEST}"
|
|
||||||
COMMAND "${CMAKE_COMMAND}" -E remove_directory
|
|
||||||
"${DOC_TMP}/sphinx/doctrees")
|
|
BIN
src/shione/_static/cirnos.png
(Stored with Git LFS)
BIN
src/shione/_static/cirnos.png
(Stored with Git LFS)
Binary file not shown.
BIN
src/shione/_static/manga_1654960885.jpg
(Stored with Git LFS)
BIN
src/shione/_static/manga_1654960885.jpg
(Stored with Git LFS)
Binary file not shown.
BIN
src/shione/_static/renkenbirthdaynichijouSakamotoavaNoHat.png
(Stored with Git LFS)
BIN
src/shione/_static/renkenbirthdaynichijouSakamotoavaNoHat.png
(Stored with Git LFS)
Binary file not shown.
BIN
src/shione/_static/shione.jpg
(Stored with Git LFS)
BIN
src/shione/_static/shione.jpg
(Stored with Git LFS)
Binary file not shown.
|
@ -1,9 +0,0 @@
|
||||||
/* override table width restrictions */
|
|
||||||
@media screen and (min-width: 767px) {
|
|
||||||
.wy-table-responsive table td, .wy-table-responsive table th {
|
|
||||||
white-space: normal !important;
|
|
||||||
}
|
|
||||||
.wy-table-responsive {
|
|
||||||
overflow: visible !important;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,143 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# This file is execfile()d with the current directory set to its
|
|
||||||
# containing dir.
|
|
||||||
#
|
|
||||||
# Note that not all possible configuration values are present in this
|
|
||||||
# autogenerated file.
|
|
||||||
#
|
|
||||||
# All configuration values have a default; values that are commented out
|
|
||||||
# serve to show the default.
|
|
||||||
|
|
||||||
# If extensions (or modules to document with autodoc) are in another directory,
|
|
||||||
# add these directories to sys.path here. If the directory is relative to the
|
|
||||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
|
||||||
#
|
|
||||||
# import os
|
|
||||||
# import sys
|
|
||||||
# sys.path.insert(0, os.path.abspath('.'))
|
|
||||||
|
|
||||||
import os
|
|
||||||
import toml
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
current_path = os.path.abspath('.')
|
|
||||||
project_config = toml.load('config.toml')
|
|
||||||
project_version = subprocess.check_output(
|
|
||||||
['git', 'rev-parse', '--short', 'HEAD']
|
|
||||||
).decode('ascii').strip()
|
|
||||||
|
|
||||||
# -- General configuration ------------------------------------------------
|
|
||||||
|
|
||||||
# General information about the project.
|
|
||||||
project = project_config['name']
|
|
||||||
copyright = project_config['copyright']
|
|
||||||
author = project_config['author']
|
|
||||||
description_formatted = project_config['description_formatted']
|
|
||||||
|
|
||||||
# If your documentation needs a minimal Sphinx version, state it here.
|
|
||||||
#
|
|
||||||
# needs_sphinx = '1.0'
|
|
||||||
|
|
||||||
# Add any Sphinx extension module names here, as strings. They can be
|
|
||||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
|
||||||
# ones.
|
|
||||||
extensions = ['sphinxcontrib.plantuml', 'myst_parser']
|
|
||||||
|
|
||||||
# plantuml config
|
|
||||||
project_plantuml_config_path = '{}/{}'.format(
|
|
||||||
current_path, project_config['plantuml_config']
|
|
||||||
)
|
|
||||||
plantuml = 'plantuml -config "{}"'.format(
|
|
||||||
project_plantuml_config_path,
|
|
||||||
)
|
|
||||||
plantuml_output_format = 'svg_img'
|
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
|
||||||
templates_path = []
|
|
||||||
|
|
||||||
# The suffix(es) of source filenames.
|
|
||||||
# You can specify multiple suffix as a list of string:
|
|
||||||
#
|
|
||||||
# source_suffix = ['.rst', '.md']
|
|
||||||
source_suffix = {
|
|
||||||
'.md': 'markdown',
|
|
||||||
'.rst': 'restructuredtext',
|
|
||||||
}
|
|
||||||
|
|
||||||
# The master toctree document.
|
|
||||||
master_doc = 'index'
|
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
|
||||||
# |version| and |release|, also used in various other places throughout the
|
|
||||||
# built documents.
|
|
||||||
#
|
|
||||||
# The short X.Y version.
|
|
||||||
version = project_version
|
|
||||||
# The full version, including alpha/beta/rc tags.
|
|
||||||
release = version
|
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
||||||
# for a list of supported languages.
|
|
||||||
#
|
|
||||||
# This is also used if you do content translation via gettext catalogs.
|
|
||||||
# Usually you set "language" from the command line for these cases.
|
|
||||||
language = 'en'
|
|
||||||
|
|
||||||
# List of patterns, relative to source directory, that match files and
|
|
||||||
# directories to ignore when looking for source files.
|
|
||||||
# This patterns also effect to html_static_path and html_extra_path
|
|
||||||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
|
||||||
|
|
||||||
# The name of the Pygments (syntax highlighting) style to use.
|
|
||||||
pygments_style = 'colorful'
|
|
||||||
|
|
||||||
# The name of a reST role to use as the default role, that is, for text marked
|
|
||||||
# up `like this`. The default role can always be set within individual
|
|
||||||
# documents using the standard reST default-role directive.
|
|
||||||
default_role = 'any'
|
|
||||||
|
|
||||||
# The default language to highlight source code.
|
|
||||||
highlight_language = 'rst'
|
|
||||||
|
|
||||||
# -- Options for HTML output ----------------------------------------------
|
|
||||||
|
|
||||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
||||||
# a list of builtin themes.
|
|
||||||
#
|
|
||||||
|
|
||||||
html_theme = 'alabaster'
|
|
||||||
|
|
||||||
# Theme options are theme-specific and customize the look and feel of a theme
|
|
||||||
# further. For a list of options available for each theme, see the
|
|
||||||
# documentation.
|
|
||||||
#
|
|
||||||
# html_theme_options = {}
|
|
||||||
|
|
||||||
html_theme_options = {
|
|
||||||
'font_family': 'Inconsolata',
|
|
||||||
'font_size': '16px',
|
|
||||||
'show_powered_by': 'false',
|
|
||||||
'description': eval(f"f'{description_formatted}'"),
|
|
||||||
'show_related': True,
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add any paths that contain custom static files (such as style sheets) here,
|
|
||||||
# relative to this directory. They are copied after the builtin static files,
|
|
||||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
|
||||||
html_static_path = [f'{current_path}/_static']
|
|
||||||
|
|
||||||
# Custom sidebar templates, must be a dictionary that maps document names
|
|
||||||
# to template names.
|
|
||||||
#
|
|
||||||
# This is required for the alabaster theme
|
|
||||||
# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
|
|
||||||
html_sidebars = {
|
|
||||||
'**': [
|
|
||||||
'about.html',
|
|
||||||
'navigation.html',
|
|
||||||
'relations.html', # needs 'show_related': True theme option to display
|
|
||||||
'searchbox.html',
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
name = "shione"
|
|
||||||
copyright = "2024, renken"
|
|
||||||
author = "renken"
|
|
||||||
plantuml_config = "plantuml.cfg"
|
|
||||||
description_formatted = "managed by {author}"
|
|
|
@ -1,50 +0,0 @@
|
||||||
Welcome to shione!
|
|
||||||
==================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
||||||
|
|
||||||
Renken
|
|
||||||
------
|
|
||||||
|
|
||||||
Hi, I'm Renken, 25 years old from Algeria and I manage shione. I like a bunch
|
|
||||||
of stuff that I may talk about in the future.
|
|
||||||
|
|
||||||
I worked at vermware on various interesting projects. I enjoyed a
|
|
||||||
university-free year focusing on vermware back in 2020. As of 2021, I am back to
|
|
||||||
university.
|
|
||||||
|
|
||||||
I moved to Paris, France in February 2022 for a 6 months internship at Munic. I
|
|
||||||
then joined the company as a full-time employee starting November 2022!
|
|
||||||
|
|
||||||
I'm writing plenty of Rust at work, mainly asynchronous using Tokio which is
|
|
||||||
pretty fun.
|
|
||||||
|
|
||||||
I also do bouldering frequently nowadays, mainly at
|
|
||||||
https://paris-porteditalie.climb-up.fr/ but open to try out other gyms.
|
|
||||||
|
|
||||||
You can email me at renken@shione.net and I'll be glad to reply.
|
|
||||||
|
|
||||||
You can also find me on.
|
|
||||||
|
|
||||||
* GitLab at https://gitlab.com/renken
|
|
||||||
* LastFM at https://www.last.fm/user/renkenrc
|
|
||||||
* Telegram at https://t.me/renken
|
|
||||||
|
|
||||||
PGP
|
|
||||||
~~~
|
|
||||||
|
|
||||||
My `public key`_ fingerprint:
|
|
||||||
|
|
||||||
53334B09D2066FCF3A4A27BF1F2BB159B645E575
|
|
||||||
|
|
||||||
.. _public key: _static/renken.asc
|
|
||||||
|
|
||||||
Shione
|
|
||||||
------
|
|
||||||
|
|
||||||
The name Shione means "sound of tide" (汐音). She is Yune's sister from Ikoku
|
|
||||||
Meiro no Croisée.
|
|
|
@ -1,8 +0,0 @@
|
||||||
03
|
|
||||||
==
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
|
@ -1,15 +0,0 @@
|
||||||
.. _frustration-with-web-developers:
|
|
||||||
|
|
||||||
Frustration with web developers
|
|
||||||
===============================
|
|
||||||
|
|
||||||
.. contents::
|
|
||||||
|
|
||||||
|
|
||||||
Past few days, at least 5 websites rejected my email address because it doesn't
|
|
||||||
match their regular expression. I might consider switching to something
|
|
||||||
shorter/common that isn't taken already.
|
|
||||||
|
|
||||||
I was thinking of renken.no maybe but that would imply I am from/live in Norway
|
|
||||||
which isn't an assumption I want others to have. I'll see what I can do about
|
|
||||||
this.
|
|
|
@ -1,29 +0,0 @@
|
||||||
Farewell vermware
|
|
||||||
=================
|
|
||||||
|
|
||||||
.. contents::
|
|
||||||
|
|
||||||
vermware
|
|
||||||
--------
|
|
||||||
|
|
||||||
vermware is one of the major reasons behind every positive aspect of me, be it
|
|
||||||
specific to programming or my personality in general. I'll be leaving vermware
|
|
||||||
soon after I get some stuff done such as migrating shione somewhere else.
|
|
||||||
|
|
||||||
Big thanks and love to my dear brothers verm and ximin :D
|
|
||||||
|
|
||||||
shione
|
|
||||||
------
|
|
||||||
|
|
||||||
I'll hack some GitLab pages-specific CICD config some time soon maybe. As for a
|
|
||||||
VPS, I'm still investigating the prices and stuff. Since I barely serve/host
|
|
||||||
anything other than shione itself, I was wondering if I could have a cheap VPS
|
|
||||||
with enough storage to turn it into my backup server instead of backing up on a
|
|
||||||
separate host such as borgbase.
|
|
||||||
|
|
||||||
Emails
|
|
||||||
------
|
|
||||||
|
|
||||||
I'm always reachable through my personal email, which might change as mentioned
|
|
||||||
in :ref:`frustration-with-web-developers`, but I should note that both my
|
|
||||||
verm.im and vermwa.re will likely become inactive after a while.
|
|
|
@ -1,10 +0,0 @@
|
||||||
Welcome to shione.net!
|
|
||||||
======================
|
|
||||||
|
|
||||||
.. contents::
|
|
||||||
|
|
||||||
I have embraced the name shione to refer to my remote host. It became natural
|
|
||||||
over time so I figured I might as well buy shione.net domain.
|
|
||||||
|
|
||||||
It also blends in well with my localhost name, siga, knowing that the latter is
|
|
||||||
a coastal place whereas the former translates to the sound of tide.
|
|
|
@ -1,8 +0,0 @@
|
||||||
04
|
|
||||||
==
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
|
@ -1,8 +0,0 @@
|
||||||
06
|
|
||||||
==
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
|
@ -1,8 +0,0 @@
|
||||||
# Switching to Markdown
|
|
||||||
*Written 2022-07-12 23:59*
|
|
||||||
|
|
||||||
Sphinx supports Markdown through `myst-parser` as documented in
|
|
||||||
[https://www.sphinx-doc.org/en/master/usage/markdown.html](https://www.sphinx-doc.org/en/master/usage/markdown.html).
|
|
||||||
This is nice because most of the time I am writing Markdown especially on
|
|
||||||
GitLab, I don't have a hard dependency on RestructuredText itself meaning I can
|
|
||||||
safely just make the switch.
|
|
|
@ -1,8 +0,0 @@
|
||||||
07
|
|
||||||
==
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
|
@ -1,8 +0,0 @@
|
||||||
2022
|
|
||||||
====
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
|
@ -1,10 +0,0 @@
|
||||||
# 04
|
|
||||||
|
|
||||||
```{toctree}
|
|
||||||
---
|
|
||||||
maxdepth: 1
|
|
||||||
glob:
|
|
||||||
---
|
|
||||||
|
|
||||||
*/index
|
|
||||||
```
|
|
|
@ -1,10 +0,0 @@
|
||||||
# 06
|
|
||||||
|
|
||||||
```{toctree}
|
|
||||||
---
|
|
||||||
maxdepth: 1
|
|
||||||
glob:
|
|
||||||
---
|
|
||||||
|
|
||||||
*/index
|
|
||||||
```
|
|
|
@ -1,10 +0,0 @@
|
||||||
# 12
|
|
||||||
|
|
||||||
```{toctree}
|
|
||||||
---
|
|
||||||
maxdepth: 1
|
|
||||||
glob:
|
|
||||||
---
|
|
||||||
|
|
||||||
*/index
|
|
||||||
```
|
|
|
@ -1,10 +0,0 @@
|
||||||
# 2023
|
|
||||||
|
|
||||||
```{toctree}
|
|
||||||
---
|
|
||||||
maxdepth: 1
|
|
||||||
glob:
|
|
||||||
---
|
|
||||||
|
|
||||||
*/index
|
|
||||||
```
|
|
|
@ -1,8 +0,0 @@
|
||||||
Archive
|
|
||||||
=======
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
|
@ -1,9 +0,0 @@
|
||||||
German notes
|
|
||||||
============
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
ch1
|
|
||||||
pronunciation
|
|
|
@ -1,92 +0,0 @@
|
||||||
Pronunciation guide
|
|
||||||
===================
|
|
||||||
|
|
||||||
This, in addition to the tables provided by Colloquial German, should serve as a
|
|
||||||
good document for how German pronunciation is like. Of course, you *should*
|
|
||||||
always look up the pronunciation in its audio format and/or learn how to read
|
|
||||||
IPA table efficiently to improve your pronunciation skills.
|
|
||||||
|
|
||||||
This is also helpful to have a, sometimes misleading, sometimes correct guess of
|
|
||||||
the word's definition simply by saying them. For example, jung is pronounced
|
|
||||||
young and indeed does mean young.
|
|
||||||
|
|
||||||
Keep in mind that all German nouns are capitalized e.g., Buch for book.
|
|
||||||
|
|
||||||
.. contents::
|
|
||||||
|
|
||||||
Vowels
|
|
||||||
------
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Keep in mind that I myself don't know most of these words. They're used
|
|
||||||
to simply give an example on how German sounds like in a way. It'd be
|
|
||||||
good if you pick up a word or two from this guide. I don't think you'll
|
|
||||||
be revisiting this page much. Maybe I'll consider updating the tables
|
|
||||||
with better/more fitting examples that you *may* find interesting.
|
|
||||||
|
|
||||||
Vowels are either short or long like most languages. They are long when
|
|
||||||
|
|
||||||
* They are doubled: Paar (Pair), Haar (hair), Schnee (Snow).
|
|
||||||
* They are followed by h: sehen (to look. Sehen is the noun view, notice the
|
|
||||||
capitalization matters!), Jahr (year), Ohr (ear).
|
|
||||||
* They are followed by a single consonant: gut (good), rot (red).
|
|
||||||
|
|
||||||
They are shower when
|
|
||||||
|
|
||||||
* They are followed a double consonant: Bett (bed), Mann (man), hoffen (to
|
|
||||||
hope).
|
|
||||||
* They are followed by two or more consonants: sitzen (to sit), ernst (serious,
|
|
||||||
look it up!).
|
|
||||||
|
|
||||||
.. list-table:: Examples
|
|
||||||
:header-rows: 3
|
|
||||||
|
|
||||||
* * Vowel
|
|
||||||
* Type
|
|
||||||
* English equivalent sound
|
|
||||||
* German words
|
|
||||||
* * a
|
|
||||||
* long
|
|
||||||
* father
|
|
||||||
* Vater, haben, sagen
|
|
||||||
* * a
|
|
||||||
* short
|
|
||||||
* hot
|
|
||||||
* Vasser, Hand, alt
|
|
||||||
* * e
|
|
||||||
* long
|
|
||||||
* may
|
|
||||||
* See, geben
|
|
||||||
* * e
|
|
||||||
* short
|
|
||||||
* let
|
|
||||||
* Ende
|
|
||||||
* * i
|
|
||||||
* long
|
|
||||||
* greet
|
|
||||||
* Tiger, Universität
|
|
||||||
* * i
|
|
||||||
* short
|
|
||||||
* sit
|
|
||||||
* ist, dick, Mitte, Mittag, Mittwoch
|
|
||||||
* * ie
|
|
||||||
* long
|
|
||||||
* similar to here, look up how the following are pronounced.
|
|
||||||
* Bier, hier, fliegen, liegen
|
|
||||||
* * o
|
|
||||||
* long
|
|
||||||
* open
|
|
||||||
* Sohn, Brot, Segelboot
|
|
||||||
* * o
|
|
||||||
* song
|
|
||||||
* Sonne, Sommer
|
|
||||||
* (none)
|
|
||||||
* * u
|
|
||||||
* long
|
|
||||||
* dune
|
|
||||||
* Blume, Pudel, Handschuh
|
|
||||||
* * u
|
|
||||||
* short
|
|
||||||
* bush
|
|
||||||
* Mutter, und, unter
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
Weblog
|
|
||||||
======
|
|
||||||
|
|
||||||
Unfinished thoughts, unfinished projects.
|
|
||||||
|
|
||||||
Series
|
|
||||||
------
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
||||||
|
|
||||||
Posts
|
|
||||||
-----
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/*/*/*/index
|
|
|
@ -1,50 +0,0 @@
|
||||||
MQTT
|
|
||||||
====
|
|
||||||
|
|
||||||
I first came across the MQTT protocol when I was looking for possible
|
|
||||||
alternative ideas and implementations to Syncplay. The key concept was that
|
|
||||||
video players such as mpv would connect to a central server, share information
|
|
||||||
about their media they're playing and synchronize their state with other peers.
|
|
||||||
|
|
||||||
MQTT stands for Message Queuing Telemetry Transport and is an open OASIS and ISO
|
|
||||||
standard. It is designed to be lightweight and primarily for as a
|
|
||||||
publish-subscribe protocol which is what synchronization-based software such as
|
|
||||||
Syncplay *should* use. Another aspect of MQTT that makes it a viable design
|
|
||||||
option for media synchronization is its simplicity of design. That leaves the
|
|
||||||
implementer with a small well-defined logic to implement which means higher
|
|
||||||
chances of an efficient implementation and less unintentional errors. It also is
|
|
||||||
reasonable to go for a minimal transport protocol to provide a minimal service
|
|
||||||
such as media synchronization.
|
|
||||||
|
|
||||||
I'll be reading through the standard version 5.0.0 published in 07 March 2019
|
|
||||||
and trying to provide a UML-based representation of the MQTT standard with few
|
|
||||||
notes to the C implementation. Keep in mind that at the time of writing this, I
|
|
||||||
do not plan on implementing myself but I believe these notes would be helpful
|
|
||||||
for anyone wishing to implement MQTT themselves.
|
|
||||||
|
|
||||||
Another note to keep in mind is that I do not have prior MQTT experience so I'm
|
|
||||||
not familiar with "best solutions" or "practice workarounds". I'll solely view
|
|
||||||
MQTT through the lens of the standards I have downloaded. Possible notes *may*
|
|
||||||
be added in the future.
|
|
||||||
|
|
||||||
* Keep in mind that I'm by no means an expert and have very little experience
|
|
||||||
with real-word software. I'll be researching things I do not understand and
|
|
||||||
share my explanation here if possible. I suggest you double-check every
|
|
||||||
information provided here as well in order to spot any misconception or
|
|
||||||
misunderstanding.
|
|
||||||
|
|
||||||
* Do note expect a strict and regulated publishing schedule, I'll only read the
|
|
||||||
standard and write about it in my free time whenever I wish. You *may*
|
|
||||||
contribute if you wish too. Alternatively you may advance on your own.
|
|
||||||
|
|
||||||
* I *may not* respect the styling and indentation of the standard e.g., I *may*
|
|
||||||
choose to merge a sub-header back with its parent-head.
|
|
||||||
|
|
||||||
Below are notes about each chapter in separate pages in the order provided by
|
|
||||||
the standard.
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
|
@ -1,3 +0,0 @@
|
||||||
@startuml
|
|
||||||
|
|
||||||
@enduml
|
|
|
@ -1,9 +0,0 @@
|
||||||
@startuml
|
|
||||||
|
|
||||||
Client -> Server: Establishes a network connection
|
|
||||||
Client -> Server: Publishes an application mesage
|
|
||||||
Client -> Server: Subscribes to request application messages
|
|
||||||
Client -> Server: Unsubscribes to remove a request for application messages
|
|
||||||
Client -> Server: Closes the network connection
|
|
||||||
|
|
||||||
@enduml
|
|
|
@ -1,95 +0,0 @@
|
||||||
Introduction
|
|
||||||
============
|
|
||||||
|
|
||||||
.. contents::
|
|
||||||
|
|
||||||
Terminology
|
|
||||||
-----------
|
|
||||||
|
|
||||||
MQTT is a server-client protocol in which all clients *must* connect to a server
|
|
||||||
in order to exchange information which have to go through the server.
|
|
||||||
|
|
||||||
Network connection
|
|
||||||
~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The standard defines network connection as the following.
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
A construct provided by the underlying transport protocol that is being
|
|
||||||
used by MQTT.
|
|
||||||
* It connects the Client to the Server.
|
|
||||||
* It provides the means to send an ordered, lossless, stream of bytes in
|
|
||||||
both directions.
|
|
||||||
|
|
||||||
I believe that this definition was mainly provided as to not limit the network
|
|
||||||
connection, specifically the network protocol, to TCP as it is possibly the most
|
|
||||||
common network protocol used when implementing MQTT. You can emulate the bullet
|
|
||||||
points under non-TCP network protocols e.g., UDP and implement MQTT on top of
|
|
||||||
it.
|
|
||||||
|
|
||||||
Session
|
|
||||||
~~~~~~~
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
A stateful interaction between a Client and a Server. Some Sessions last
|
|
||||||
only as long as the Network Connection, others can span multiple
|
|
||||||
consecutive Network Connections between a Client and a Server.
|
|
||||||
|
|
||||||
This allows for the possibility of attempting re-connection after it has been
|
|
||||||
lost to preserve the same session.
|
|
||||||
|
|
||||||
Application message
|
|
||||||
~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The information sent between clients through servers is called the application
|
|
||||||
message which is carried by the MQTT protocol across the network. It contains
|
|
||||||
payload data, a Quality of Service (QoS), a collection of properties and a topic
|
|
||||||
name.
|
|
||||||
|
|
||||||
Subscription
|
|
||||||
^^^^^^^^^^^^
|
|
||||||
|
|
||||||
A subscription comprises a topic filter and a maximum QoS. A subscription is
|
|
||||||
associated with a single session. A session can contain more than one
|
|
||||||
subscription. Each subscription within a session has a different topic filter.
|
|
||||||
|
|
||||||
Shared subscription can be associated with more than one session. I assume this
|
|
||||||
is used for the case of multiple servers? I don't see the need to have multiple
|
|
||||||
sessions to the same server but it is allowed by the standard.
|
|
||||||
|
|
||||||
Wildcard subscription is a subscription with a topic filter containing one or
|
|
||||||
more wildcard characters. This allows the subscription to match more than one
|
|
||||||
topic name. Basically ``*`` in regular expression.
|
|
||||||
|
|
||||||
write UML diagram about user <-- session 0..* -- 1..1 subscription
|
|
||||||
|
|
||||||
Topic name
|
|
||||||
^^^^^^^^^^
|
|
||||||
|
|
||||||
The label attached to an application message which is matched against the
|
|
||||||
subscriptions known to the server. This is up to the application to use it
|
|
||||||
efficiently. In the case of media synchronization, would you rather use do
|
|
||||||
central topics e.g., ``/media/filename`` and users push to that topic or would
|
|
||||||
you do per-user topics ``/renken/media/filename`` and only ``renken`` can
|
|
||||||
publish to that topic. Similar ideas to that come to mind I guess.
|
|
||||||
|
|
||||||
Topic filter
|
|
||||||
^^^^^^^^^^^^
|
|
||||||
|
|
||||||
An expression contained in a subscription to indicate an interest in one or more
|
|
||||||
topics. A topic filter can include wildcard characters.
|
|
||||||
|
|
||||||
Client
|
|
||||||
~~~~~~
|
|
||||||
|
|
||||||
As discussed before, in MQTT, the client can only communicate with a server and
|
|
||||||
not with other clients. Note that the client is not limited to a single server.
|
|
||||||
It also not limited to a fixed number of application messages published or
|
|
||||||
requested.
|
|
||||||
|
|
||||||
The server acts as an intermediary between clients which publish application
|
|
||||||
messages and clients which have made subscriptions.
|
|
||||||
|
|
||||||
.. uml:: client.uml
|
|
|
@ -1,8 +0,0 @@
|
||||||
Miscellaneous
|
|
||||||
=============
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:glob:
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
*/index
|
|
|
@ -1,70 +0,0 @@
|
||||||
Pictures
|
|
||||||
========
|
|
||||||
|
|
||||||
.. contents::
|
|
||||||
:depth: 3
|
|
||||||
|
|
||||||
Happy birthday!!
|
|
||||||
----------------
|
|
||||||
|
|
||||||
I'd like to thank pika and verm for this lovely picture, it never fails to
|
|
||||||
put a smile on my face. Here's the original krita file `renkenwaifu`_!
|
|
||||||
|
|
||||||
Hacker/Artist pika can be found on Pixiv at https://www.pixiv.net/en/users/46770896
|
|
||||||
|
|
||||||
.. _renkenwaifu: ../../_static/renkenwaifu.kra
|
|
||||||
|
|
||||||
.. image:: ../../_static/renkenwaifu.png
|
|
||||||
:name: nonoka-birthday
|
|
||||||
:alt: nonoka-birthday
|
|
||||||
:align: center
|
|
||||||
:width: 407.5px
|
|
||||||
:height: 671.75px
|
|
||||||
|
|
||||||
Wednyasday's nyan night!!
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
pikanyan drew another picture of nonoka on a late Wednesday night comfy stream
|
|
||||||
and it's amazing. I love it! Here's the krita file `nonokasayshi`_.
|
|
||||||
|
|
||||||
.. _nonokasayshi: ../../_static/nonokasayshi.kra
|
|
||||||
|
|
||||||
.. image:: ../../_static/nonokasayshi.png
|
|
||||||
:name: nonoka-wednyasday
|
|
||||||
:alt: nonoka-wednyasday
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
Original Do NOT Steal!!
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
pikapyon drew yet another amazing picture, this time with the three of us
|
|
||||||
together. From left to right.
|
|
||||||
|
|
||||||
1. ximin https://ximinity.net/
|
|
||||||
2. verm https://mel.vin/, spam him with emails if his website still doesn't have
|
|
||||||
a proper homepage
|
|
||||||
3. renken (me)
|
|
||||||
|
|
||||||
Krita file at `donotsteal`_.
|
|
||||||
|
|
||||||
.. image:: ../../_static/originalOCdonotsteal.png
|
|
||||||
:name: ximin-verm-renken
|
|
||||||
:alt: ximin-verm-renken
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. _donotsteal: ../../_static/originalOCdonotsteal.kra
|
|
||||||
|
|
||||||
Happy nichijou birthday!!
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
pikadesu picked an amazing theme for this year's birthday's gift, nichijou! I
|
|
||||||
really love it and I'm looking forward to using sakamoto as my avatar in case
|
|
||||||
nonoka was considered too much for wörk :^) Thank you very much for this
|
|
||||||
pikadesu! Here's the krita file as always `renkenbirthdaynichijou`_.
|
|
||||||
|
|
||||||
.. image:: ../../_static/renkenbirthdaynichijou.png
|
|
||||||
:name: renken-birthday-nichijou
|
|
||||||
:alt: renken-birthday-nichijou
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. _renkenbirthdaynichijou: ../../_static/renkenbirthdaynichijou.kra
|
|
|
@ -1,96 +0,0 @@
|
||||||
skinparam ActivityBackgroundColor White
|
|
||||||
skinparam ActivityBorderColor Black
|
|
||||||
skinparam ActivityDiamondBackgroundColor #e6e6e6
|
|
||||||
skinparam ActivityDiamondBorderColor Black
|
|
||||||
skinparam ActivityDiamondFontStyle Italic
|
|
||||||
skinparam ActorBackgroundColor White
|
|
||||||
skinparam ActorBorderColor Black
|
|
||||||
skinparam AgentBackgroundColor White
|
|
||||||
skinparam AgentBorderColor Black
|
|
||||||
skinparam ArrowColor Black
|
|
||||||
skinparam ArtifactBackgroundColor White
|
|
||||||
skinparam ArtifactBorderColor Black
|
|
||||||
skinparam BackgroundColor White
|
|
||||||
skinparam BoundaryBackgroundColor White
|
|
||||||
skinparam BoundaryBorderColor Black
|
|
||||||
skinparam CardBackgroundColor White
|
|
||||||
skinparam CardBorderColor Black
|
|
||||||
skinparam ClassBackgroundColor White
|
|
||||||
skinparam ClassBorderColor Black
|
|
||||||
skinparam ClassHeaderBackgroundColor White
|
|
||||||
skinparam CloudBackgroundColor White
|
|
||||||
skinparam CloudBorderColor Black
|
|
||||||
skinparam CollectionsBackgroundColor White
|
|
||||||
skinparam CollectionsBorderColor Black
|
|
||||||
skinparam ComponentBackgroundColor White
|
|
||||||
skinparam ComponentBorderColor Black
|
|
||||||
skinparam ControlBackgroundColor White
|
|
||||||
skinparam ControlBorderColor Black
|
|
||||||
skinparam DatabaseBackgroundColor White
|
|
||||||
skinparam DatabaseBorderColor Black
|
|
||||||
skinparam EntityBackgroundColor White
|
|
||||||
skinparam EntityBorderColor Black
|
|
||||||
skinparam FileBackgroundColor White
|
|
||||||
skinparam FileBorderColor Black
|
|
||||||
skinparam FolderBackgroundColor White
|
|
||||||
skinparam FolderBorderColor Black
|
|
||||||
skinparam FrameBackgroundColor White
|
|
||||||
skinparam FrameBorderColor Black
|
|
||||||
skinparam IconPackageBackgroundColor White
|
|
||||||
skinparam IconPrivateBackgroundColor White
|
|
||||||
skinparam IconProtectedBackgroundColor White
|
|
||||||
skinparam IconPublicBackgroundColor White
|
|
||||||
skinparam InterfaceBackgroundColor White
|
|
||||||
skinparam InterfaceBorderColor Black
|
|
||||||
skinparam LegendBackgroundColor White
|
|
||||||
skinparam LegendBorderColor Black
|
|
||||||
skinparam NodeBackgroundColor White
|
|
||||||
skinparam NodeBorderColor Black
|
|
||||||
skinparam NoteBackgroundColor #e7f2fa
|
|
||||||
skinparam NoteBorderColor #6ab0de
|
|
||||||
skinparam ObjectBackgroundColor White
|
|
||||||
skinparam ObjectBorderColor Black
|
|
||||||
skinparam PackageBackgroundColor White
|
|
||||||
skinparam PackageBorderColor Black
|
|
||||||
skinparam PageBorderColor Black
|
|
||||||
skinparam ParticipantBackgroundColor White
|
|
||||||
skinparam ParticipantBorderColor Black
|
|
||||||
skinparam PartitionBackgroundColor White
|
|
||||||
skinparam PartitionBorderColor Black
|
|
||||||
skinparam QueueBackgroundColor White
|
|
||||||
skinparam QueueBorderColor Black
|
|
||||||
skinparam RectangleBackgroundColor White
|
|
||||||
skinparam RectangleBorderColor Black
|
|
||||||
skinparam SequenceBoxBackgroundColor White
|
|
||||||
skinparam SequenceBoxBorderColor Black
|
|
||||||
skinparam SequenceDividerBackgroundColor White
|
|
||||||
skinparam SequenceDividerBorderColor Black
|
|
||||||
skinparam SequenceGroupBackgroundColor White
|
|
||||||
skinparam SequenceGroupBodyBackgroundColor White
|
|
||||||
skinparam SequenceGroupBorderColor Black
|
|
||||||
skinparam SequenceLifeLineBackgroundColor #e6e6e6
|
|
||||||
skinparam SequenceLifeLineBorderColor Grey
|
|
||||||
skinparam SequenceReferenceBackgroundColor White
|
|
||||||
skinparam SequenceReferenceBorderColor Black
|
|
||||||
skinparam SequenceReferenceHeaderBackgroundColor White
|
|
||||||
skinparam StackBackgroundColor White
|
|
||||||
skinparam StackBorderColor Black
|
|
||||||
skinparam StateBackgroundColor White
|
|
||||||
skinparam StateBorderColor Black
|
|
||||||
skinparam StereotypeABackgroundColor White
|
|
||||||
skinparam StereotypeABorderColor Black
|
|
||||||
skinparam StereotypeCBackgroundColor White
|
|
||||||
skinparam StereotypeCBorderColor Black
|
|
||||||
skinparam StereotypeEBackgroundColor White
|
|
||||||
skinparam StereotypeEBorderColor Black
|
|
||||||
skinparam StereotypeIBackgroundColor White
|
|
||||||
skinparam StereotypeIBorderColor Black
|
|
||||||
skinparam StereotypeNBackgroundColor White
|
|
||||||
skinparam StereotypeNBorderColor Black
|
|
||||||
skinparam StorageBackgroundColor White
|
|
||||||
skinparam StorageBorderColor Black
|
|
||||||
skinparam SwimlaneBorderColor Black
|
|
||||||
skinparam TitleBackgroundColor White
|
|
||||||
skinparam TitleBorderColor Black
|
|
||||||
skinparam UsecaseBackgroundColor White
|
|
||||||
skinparam UsecaseBorderColor Black
|
|
BIN
static/debian.png
(Stored with Git LFS)
Normal file
BIN
static/debian.png
(Stored with Git LFS)
Normal file
Binary file not shown.
|
@ -12,19 +12,19 @@ SNNvQjC9Uu6+E0p/omWvTtaSHdAgDiFC2MsCG7uenXMaKZRrbuPoGsFwGsm8kmBW
|
||||||
x9wXfty1TVQpN58hWMJCrpbzor3puny5eptf/owbArurYEI7xnO9gfZv9SEAVWTy
|
x9wXfty1TVQpN58hWMJCrpbzor3puny5eptf/owbArurYEI7xnO9gfZv9SEAVWTy
|
||||||
r+naEkut7b7MDtoal/7oVpSQk4sgyb2earQ68cYoDf4qg0pChibTKWaXbQARAQAB
|
r+naEkut7b7MDtoal/7oVpSQk4sgyb2earQ68cYoDf4qg0pChibTKWaXbQARAQAB
|
||||||
tCpNb2hhbW1lZCBBbWFyLUJlbnNhYmVyIDxyZW5rZW5Ac2hpb25lLm5ldD6JAlcE
|
tCpNb2hhbW1lZCBBbWFyLUJlbnNhYmVyIDxyZW5rZW5Ac2hpb25lLm5ldD6JAlcE
|
||||||
EwEKAEECGwMFCQQtTCkFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRTM0sJ0gZv
|
EwEKAEECGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4ACGQEWIQRTM0sJ0gZvzzpK
|
||||||
zzpKJ78fK7FZtkXldQUCZDP1xAIZAQAKCRAfK7FZtkXldZRlD/4jbaC/5WIK5ktj
|
J78fK7FZtkXldQUCZjZHbgUJBi+hSgAKCRAfK7FZtkXldVljD/43wrsRRG8CQTX8
|
||||||
1SX9gpisTxbihJGrU5zqFppBBNd231cpmhLohd5CXywSdMVo3RhopPn5D6zJ5Ps4
|
0t1MHeCyHd6BzO1m6U9U1zH4NNiroAPvhWoI9JX4p83KjU9SlUTeEsMDi7H6keMw
|
||||||
Ix7lhyY1pD4rZokOV4OGdHsvBHecaJpS1elAsdUdynuFIcakui68by/rFhHQH/Ei
|
cyzK9tKKN4cc1koHks0Obf987D8jqnl7ZdWcSFwdf3PVeR1jWJKwgKw9c4Waiin2
|
||||||
hvJpzAKvBsEDb/0a1Hu23JciIcNFcaPnynpDbb93YPRkVV8BJSA2Sbq+GXGCki89
|
Jnva4Q2ZJccwRsFCZtAFpl/x4YBlN41nmUmWec0xF3atPh1Amz/apa62+08x5rVD
|
||||||
Vawdld0noZqhEfPd8FmusEpfuZ8qSmZ5sQEv424ouHvOUGLqklcYHxByhlfm52WV
|
x3SpQ/Hsp56jZYSTBqdNt+THfQW3HcCUBT16Ph22ZNFNKzS1pB6XgLD2CpEf8Ukw
|
||||||
b9g67ERoTDOhqQp2Ykmcb4y8yi6YVWSCxyKiXqXgHKB/R5cn3I0t6keNblbYLVsK
|
VW1QcJFwyyS1aPdftkx70M+6S+4ufQ74bb7s6LbRmbgfPIrHjXET4X9Fpgowvi4G
|
||||||
d3SHB5PsUrqQAZhr4ZIYQlnQEH/7oHSSG+OyojPsGVkIEzVXBV+p7GhJOWrHiGAH
|
yhnQ24Of0lRsxa0ahZYS/NAVNdhdzJzfJlgw3q0X/5l4+y+e5JCDLxzSuqizbTo7
|
||||||
9NJD4Da3v5EBGNUgQU/vxPTXjnR5UHFK6aYmcQCRQUYKYj6gKhtTy/7Klgr7pHuD
|
Ki6lSxfNtgU/PNTouymtB2/NRzyeIWlvZZsnI62lipBpchhIJkzAsxbg4fPpN4y5
|
||||||
nuNv6F7wRgjfBewYHdlISECaTyAO+wVSfoUryL29rrk3xy0CQMNEL55BxNvQ7GmZ
|
fbcubFnUBKvPD+FXMX/BIDU4BCFKtZ+F4O/Rbk1jMRC5PqohTQ9POxE0zmGtqVtF
|
||||||
RpweGGD45hFtMYT1SgrO7TIu0QxPXxpvXGRHki2iWzrT6oKQ2yu8vLfikqOWPX1w
|
3grnmlu5FKkVtibOWSPkWQDeo+xtjELiPsxoaT3FFyNjJBzB2+ebvMPdTlNA0uvu
|
||||||
2ASc3Ff+cmwucdD7S5seBs1Z5fmX/G1Ly5FcPbchBe5Z+LBOMQIwI6lkej2o5BVm
|
OMla4Q++STDgQ3bsA9mqaKtN0p2hMXe8Uw6yfUIG7I67V21c7gsfAE5kq50vvV3T
|
||||||
DGU3aqXO9Q9wYf1rfWzUpl19MDC0WLRATW9oYW1tZWQgQW1hci1CZW5zYWJlciAo
|
yWTd7oR+8K4lB9WVvc14Lt6pksB8B7RATW9oYW1tZWQgQW1hci1CZW5zYWJlciAo
|
||||||
TXVuaWMpIDxtb2hhbW1lZC5hbWFyLWJlbnNhYmVyQG11bmljLmlvPokCWwQwAQoA
|
TXVuaWMpIDxtb2hhbW1lZC5hbWFyLWJlbnNhYmVyQG11bmljLmlvPokCWwQwAQoA
|
||||||
RRYhBFMzSwnSBm/POkonvx8rsVm2ReV1BQJkM/yWJx0gQ3JlYXRpbmcgYSBzZXBh
|
RRYhBFMzSwnSBm/POkonvx8rsVm2ReV1BQJkM/yWJx0gQ3JlYXRpbmcgYSBzZXBh
|
||||||
cmF0ZSBQR1Aga2V5IGZvciB3b3JrLgAKCRAfK7FZtkXldRyVD/4hgcZV9Ez6W/yy
|
cmF0ZSBQR1Aga2V5IGZvciB3b3JrLgAKCRAfK7FZtkXldRyVD/4hgcZV9Ez6W/yy
|
||||||
|
@ -352,17 +352,17 @@ ldwC3RdWMcRo5XctpsopMvEsayRrDad61U/ZnzYBd9eTx/97I+67j3uFDiAgBEVb
|
||||||
n8V0G1OPIOY+PVIKAndUNgm33xLPmg4qaHoP/HdwAImpHCbPOWiln/BOFt0lMvey
|
n8V0G1OPIOY+PVIKAndUNgm33xLPmg4qaHoP/HdwAImpHCbPOWiln/BOFt0lMvey
|
||||||
KfYudaBRmsmLtqUN4zVbxBSMxT8tVGEaFhjuHAv0cFVG4vkB8KNy/diPic3ECqNB
|
KfYudaBRmsmLtqUN4zVbxBSMxT8tVGEaFhjuHAv0cFVG4vkB8KNy/diPic3ECqNB
|
||||||
i5uG7SgfUbTJuoKx7tB/9taJABEBAAGJAjwEGAEKACYCGwwWIQRTM0sJ0gZvzzpK
|
i5uG7SgfUbTJuoKx7tB/9taJABEBAAGJAjwEGAEKACYCGwwWIQRTM0sJ0gZvzzpK
|
||||||
J78fK7FZtkXldQUCZDPzKAUJBC1NBAAKCRAfK7FZtkXldSCXD/9ScEJ/SZI4YAw7
|
J78fK7FZtkXldQUCZjZHHwUJBi+g+wAKCRAfK7FZtkXldfrxEACmIYKDSzkcql7U
|
||||||
Eea1ZTFCMOLzmkb52aX/HiGDDplG4nvPEdT4x0v/tkWkfL6/6Bfa+JFp+Uo+/hFX
|
3MizkdDQpJEydu8K/uDWcBenaAIbsrSBH1oLTlHnfA+98JWROdXX06M3ZVdef1bl
|
||||||
Z76XP24kwqpgMmz3VgQq7jK1HScSM+dZojsIII2Wo3cAF0gVVEGAzUniN0tNIrIF
|
T7jMagbMjBH/WFfghKBnm1/RKbPbj/MsbVXor2MMrHg8rSFhhtc0HafaPIki4HHQ
|
||||||
Qsw44o7LeTl3Odx2m/q+e1g2Fu0B32q0+jEGzRSIwYrASdAJCT8VC5JzJrlWKOBf
|
zdmrTqQ4Nq/Nv0vCmxD8WkCYpUkSiYv78itYcEQaZBGSxV2kvzfjBDA9LtF7Ah6j
|
||||||
RKHJ9m3JYwNsABjX9mMGiqWjF/YKm7z1pKMrHuvNtSswx8KrbLVPuh+sWZWh+BpP
|
SGErjf1LtaaAY0MHhvG0Mds5QOyENi4/B+0DSHKNYH8gSv1JMYc4xjnMqian61M7
|
||||||
B1Qt/J2d2fXyTFP3E5zY4XnYP+RJya/LO7pJ3aF1U+QaRlVzMOQYp14PO1E4NEL+
|
WD24NS6Fq0NpBOJUx+9kYPG4MVBvYKztHYLGgj7xSzlYGdxXy/fMy+Y4HgdJTUD+
|
||||||
H7kNpXndoOwaBG/f4YVY661s3yQSkJFt2AXiNC/UCFzMu3THOvNdmijYZOzpzwQN
|
wN1A/84s1iukWZ+wDMhfUZ4PDyKgprqsX8zJXPSmXGzKNqJkeE/cPw7GldBED6mh
|
||||||
6n6zixL52BkuPnR2V+NZj0Uhz+Y0nw3CyW/Nwf+CNlaUiHH8X3bqM3/G0aO9+4v2
|
rqNsyP+ZZPDp3pqi4M9VMmeg3juS/4wpX5EpgngVrReknCuyEPITs8QBmwBpkVdB
|
||||||
FbvDfNyqPZy6Leoy3ix/t38HZX2ORWCsYyboJcGZkqtkLDt3aMIHB2z2KOPw6WnI
|
cnaQ2lPSj0rFvzfSc8E74qzESbq+ViuEcLSRKEZq3mr4qjOu+fPTZsH8rK7vzQZr
|
||||||
vppwvBaswzoTsY61Lg0LINE385CRfUwel1Xacaz1VYMwB8rU1bEI0v9eXaAM50Ew
|
tyqS9kge53dvr2W+lfuGSKfKKoXEOCm7jnKWIlGrQoe2tCvBatqwdxq9B49v5Ok5
|
||||||
5XZB7FqtvbA5KcV2hQXyCVF4nMHKElwkT/BUutoNTUW/PzgIWH5oHO0mlzH6Krbc
|
MmViBJ3jhDwbHizePXVx01FT8EEU4k0PGqE9Jh5mYlQFtpwkttsggVV8tB9wjFkm
|
||||||
1/IDwydkcI6IdygNP3VXtMLTo3of0w==
|
K2PrOlFYvydZvMutE99EtR1nkj2u5w==
|
||||||
=dwnC
|
=j72I
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
Loading…
Reference in a new issue