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/
|
||||
/build_*/
|
||||
/.venv/
|
||||
/public/
|
||||
/resources/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
image: python:3.9.16-slim-bullseye
|
||||
image: debian:bookworm
|
||||
|
||||
stages:
|
||||
- analyse
|
||||
|
@ -15,35 +15,25 @@ cache:
|
|||
- apt-get dist-upgrade -y
|
||||
- >
|
||||
apt-get install --no-install-recommends -y
|
||||
curl
|
||||
git
|
||||
make
|
||||
plantuml
|
||||
python3
|
||||
python3-distutils
|
||||
hugo
|
||||
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:
|
||||
stage: test
|
||||
needs: []
|
||||
script:
|
||||
- *setup_build
|
||||
- poetry install -n
|
||||
- make
|
||||
- hugo --minify
|
||||
artifacts:
|
||||
paths:
|
||||
- build/doc
|
||||
- public
|
||||
|
||||
pages:
|
||||
stage: deploy
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
||||
needs: ["doc"]
|
||||
script:
|
||||
- mv build/doc public
|
||||
artifacts:
|
||||
paths:
|
||||
- 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
|
||||
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
|
||||
to be lazy.
|
||||
|
||||
Imperfection
|
||||
------------
|
||||
## Imperfection
|
||||
|
||||
|
||||
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
|
||||
losing motivation over time, I need to figure out how to get motivation out of
|
||||
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
|
||||
anyway. It's something I plan on working on over time not ship only after it's
|
|
@ -1,7 +1,8 @@
|
|||
TODO: Explore meson
|
||||
===================
|
||||
|
||||
.. contents::
|
||||
---
|
||||
title: 'TODO: Explore meson'
|
||||
date: 2022-03-13
|
||||
slug: todo-explore-meson
|
||||
---
|
||||
|
||||
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
|
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
|
||||
they sell manga. I wasn't aware that the French are huge weebs, they have a wide
|
||||
variety of titles, separated by genres mainly shounen, shoujo and seinen and
|
||||
*all* of them are in French.
|
||||
I visited [fnac](https://www.fnac.com) around a month ago or so and noticed
|
||||
that they sell manga. I wasn't aware that the French are huge weebs, they have
|
||||
a wide variety of titles, separated by genres mainly shounen, shoujo and seinen
|
||||
and *all* of them are in French.
|
||||
|
||||
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.
|
||||
|
@ -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
|
||||
right! They're also helping me improve my French too which is nice.
|
||||
|
||||
.. image:: ../../../../../_static/manga_1654960885.jpg
|
||||
:name: My manga collection 11/06/2022
|
||||
:alt: My manga collection 11/06/2022
|
||||
:align: center
|
||||
![My manga collection 11/06/2022](/blog/2022-06-11_manga_collection.jpg)
|
|
@ -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)
|
||||
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*
|
||||
|
||||
```{contents}
|
||||
```
|
||||
---
|
||||
title: Conventional commits
|
||||
date: 2023-04-10T12:47:00+01:00
|
||||
slug: conventional-commits
|
||||
---
|
||||
|
||||
I recently came across [conventional
|
||||
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*
|
||||
|
||||
```{contents}
|
||||
```
|
||||
---
|
||||
title: Siga desktop has joined the game.
|
||||
date: 2023-06-18T18:14:00
|
||||
slug: siga-desktop
|
||||
---
|
||||
|
||||
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
|
|
@ -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
|
||||
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
|
||||
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
|
||||
checking the dictionary for the definitive answer.
|
||||
|
||||
.. list-table:: Cognates
|
||||
:header-rows: 1
|
||||
|
||||
* * German
|
||||
* English
|
||||
* Examples
|
||||
* * f, ff (medial or final)
|
||||
* p
|
||||
* hoffen - to hope, scharf - sharp
|
||||
* * pf
|
||||
* p, pp
|
||||
* Apfel - apple, Pfeife - pipe
|
||||
* * b (medial or final)
|
||||
* 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
|
||||
| German | English | Examples |
|
||||
| --- | --- | --- |
|
||||
| f, ff (medial or final) | p | hoffen - to hope, scharf - sharp |
|
||||
| pf | p, pp | Apfel - apple, Pfeife - pipe |
|
||||
| b (medial or final) | 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
|
||||
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
|
||||
way).
|
||||
|
||||
Genders
|
||||
-------
|
||||
## Genders
|
||||
|
||||
.. note::
|
||||
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
|
||||
as follows
|
||||
|
||||
.. list-table:: Genders articles
|
||||
:header-rows: 1
|
||||
| Gender | Article |
|
||||
| --- | --- |
|
||||
| Masculine | der |
|
||||
| Feminine | die |
|
||||
| Neuter | das |
|
||||
| Plural | die |
|
||||
|
||||
* * Gender
|
||||
* Article
|
||||
* * Masculine
|
||||
* der
|
||||
* * Feminine
|
||||
* die
|
||||
* * Neuter
|
||||
* das
|
||||
* * Plural
|
||||
* die
|
||||
|
||||
Masculine
|
||||
^^^^^^^^^
|
||||
### Masculine
|
||||
|
||||
1. Nouns denoting male beings.
|
||||
2. Most nouns ending with -er that are agents of a specific activity e.g., der
|
||||
|
@ -110,20 +82,19 @@ Masculine
|
|||
Socialismus (Socialism).
|
||||
5. Points of compass. Norden, Süden, Oster und Westen.
|
||||
|
||||
Feminine
|
||||
^^^^^^^^
|
||||
### Feminine
|
||||
|
||||
1. Nouns denoting female beings.
|
||||
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,
|
||||
-ung, -ur e.g., die Gesundheit (health), die Gesellschaft (society) und die
|
||||
Hoffung.
|
||||
|
||||
Neuter
|
||||
^^^^^^
|
||||
### Neuter
|
||||
|
||||
.. note::
|
||||
Diminutive nouns usually have an umlaut if the stem vowel is a, o, u or
|
||||
au so a becomes ä...
|
||||
> Diminutive nouns usually have an umlaut if the stem vowel is a, o, u or au
|
||||
so a becomes ä...
|
||||
{.info}
|
||||
|
||||
1. Nouns with diminutive endings -chen, -lein e.g., das Buch -> das Büchlein,
|
||||
das Männlein.
|
||||
|
@ -131,8 +102,7 @@ Neuter
|
|||
3. Infinitives used as a noun e.g., das Kommen.
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
make
|
||||
hugo --minify
|
||||
|
||||
rsync \
|
||||
-a \
|
||||
--delete \
|
||||
--progress \
|
||||
build/doc/ \
|
||||
public/ \
|
||||
'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
|
||||
r+naEkut7b7MDtoal/7oVpSQk4sgyb2earQ68cYoDf4qg0pChibTKWaXbQARAQAB
|
||||
tCpNb2hhbW1lZCBBbWFyLUJlbnNhYmVyIDxyZW5rZW5Ac2hpb25lLm5ldD6JAlcE
|
||||
EwEKAEECGwMFCQQtTCkFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRTM0sJ0gZv
|
||||
zzpKJ78fK7FZtkXldQUCZDP1xAIZAQAKCRAfK7FZtkXldZRlD/4jbaC/5WIK5ktj
|
||||
1SX9gpisTxbihJGrU5zqFppBBNd231cpmhLohd5CXywSdMVo3RhopPn5D6zJ5Ps4
|
||||
Ix7lhyY1pD4rZokOV4OGdHsvBHecaJpS1elAsdUdynuFIcakui68by/rFhHQH/Ei
|
||||
hvJpzAKvBsEDb/0a1Hu23JciIcNFcaPnynpDbb93YPRkVV8BJSA2Sbq+GXGCki89
|
||||
Vawdld0noZqhEfPd8FmusEpfuZ8qSmZ5sQEv424ouHvOUGLqklcYHxByhlfm52WV
|
||||
b9g67ERoTDOhqQp2Ykmcb4y8yi6YVWSCxyKiXqXgHKB/R5cn3I0t6keNblbYLVsK
|
||||
d3SHB5PsUrqQAZhr4ZIYQlnQEH/7oHSSG+OyojPsGVkIEzVXBV+p7GhJOWrHiGAH
|
||||
9NJD4Da3v5EBGNUgQU/vxPTXjnR5UHFK6aYmcQCRQUYKYj6gKhtTy/7Klgr7pHuD
|
||||
nuNv6F7wRgjfBewYHdlISECaTyAO+wVSfoUryL29rrk3xy0CQMNEL55BxNvQ7GmZ
|
||||
RpweGGD45hFtMYT1SgrO7TIu0QxPXxpvXGRHki2iWzrT6oKQ2yu8vLfikqOWPX1w
|
||||
2ASc3Ff+cmwucdD7S5seBs1Z5fmX/G1Ly5FcPbchBe5Z+LBOMQIwI6lkej2o5BVm
|
||||
DGU3aqXO9Q9wYf1rfWzUpl19MDC0WLRATW9oYW1tZWQgQW1hci1CZW5zYWJlciAo
|
||||
EwEKAEECGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4ACGQEWIQRTM0sJ0gZvzzpK
|
||||
J78fK7FZtkXldQUCZjZHbgUJBi+hSgAKCRAfK7FZtkXldVljD/43wrsRRG8CQTX8
|
||||
0t1MHeCyHd6BzO1m6U9U1zH4NNiroAPvhWoI9JX4p83KjU9SlUTeEsMDi7H6keMw
|
||||
cyzK9tKKN4cc1koHks0Obf987D8jqnl7ZdWcSFwdf3PVeR1jWJKwgKw9c4Waiin2
|
||||
Jnva4Q2ZJccwRsFCZtAFpl/x4YBlN41nmUmWec0xF3atPh1Amz/apa62+08x5rVD
|
||||
x3SpQ/Hsp56jZYSTBqdNt+THfQW3HcCUBT16Ph22ZNFNKzS1pB6XgLD2CpEf8Ukw
|
||||
VW1QcJFwyyS1aPdftkx70M+6S+4ufQ74bb7s6LbRmbgfPIrHjXET4X9Fpgowvi4G
|
||||
yhnQ24Of0lRsxa0ahZYS/NAVNdhdzJzfJlgw3q0X/5l4+y+e5JCDLxzSuqizbTo7
|
||||
Ki6lSxfNtgU/PNTouymtB2/NRzyeIWlvZZsnI62lipBpchhIJkzAsxbg4fPpN4y5
|
||||
fbcubFnUBKvPD+FXMX/BIDU4BCFKtZ+F4O/Rbk1jMRC5PqohTQ9POxE0zmGtqVtF
|
||||
3grnmlu5FKkVtibOWSPkWQDeo+xtjELiPsxoaT3FFyNjJBzB2+ebvMPdTlNA0uvu
|
||||
OMla4Q++STDgQ3bsA9mqaKtN0p2hMXe8Uw6yfUIG7I67V21c7gsfAE5kq50vvV3T
|
||||
yWTd7oR+8K4lB9WVvc14Lt6pksB8B7RATW9oYW1tZWQgQW1hci1CZW5zYWJlciAo
|
||||
TXVuaWMpIDxtb2hhbW1lZC5hbWFyLWJlbnNhYmVyQG11bmljLmlvPokCWwQwAQoA
|
||||
RRYhBFMzSwnSBm/POkonvx8rsVm2ReV1BQJkM/yWJx0gQ3JlYXRpbmcgYSBzZXBh
|
||||
cmF0ZSBQR1Aga2V5IGZvciB3b3JrLgAKCRAfK7FZtkXldRyVD/4hgcZV9Ez6W/yy
|
||||
|
@ -352,17 +352,17 @@ ldwC3RdWMcRo5XctpsopMvEsayRrDad61U/ZnzYBd9eTx/97I+67j3uFDiAgBEVb
|
|||
n8V0G1OPIOY+PVIKAndUNgm33xLPmg4qaHoP/HdwAImpHCbPOWiln/BOFt0lMvey
|
||||
KfYudaBRmsmLtqUN4zVbxBSMxT8tVGEaFhjuHAv0cFVG4vkB8KNy/diPic3ECqNB
|
||||
i5uG7SgfUbTJuoKx7tB/9taJABEBAAGJAjwEGAEKACYCGwwWIQRTM0sJ0gZvzzpK
|
||||
J78fK7FZtkXldQUCZDPzKAUJBC1NBAAKCRAfK7FZtkXldSCXD/9ScEJ/SZI4YAw7
|
||||
Eea1ZTFCMOLzmkb52aX/HiGDDplG4nvPEdT4x0v/tkWkfL6/6Bfa+JFp+Uo+/hFX
|
||||
Z76XP24kwqpgMmz3VgQq7jK1HScSM+dZojsIII2Wo3cAF0gVVEGAzUniN0tNIrIF
|
||||
Qsw44o7LeTl3Odx2m/q+e1g2Fu0B32q0+jEGzRSIwYrASdAJCT8VC5JzJrlWKOBf
|
||||
RKHJ9m3JYwNsABjX9mMGiqWjF/YKm7z1pKMrHuvNtSswx8KrbLVPuh+sWZWh+BpP
|
||||
B1Qt/J2d2fXyTFP3E5zY4XnYP+RJya/LO7pJ3aF1U+QaRlVzMOQYp14PO1E4NEL+
|
||||
H7kNpXndoOwaBG/f4YVY661s3yQSkJFt2AXiNC/UCFzMu3THOvNdmijYZOzpzwQN
|
||||
6n6zixL52BkuPnR2V+NZj0Uhz+Y0nw3CyW/Nwf+CNlaUiHH8X3bqM3/G0aO9+4v2
|
||||
FbvDfNyqPZy6Leoy3ix/t38HZX2ORWCsYyboJcGZkqtkLDt3aMIHB2z2KOPw6WnI
|
||||
vppwvBaswzoTsY61Lg0LINE385CRfUwel1Xacaz1VYMwB8rU1bEI0v9eXaAM50Ew
|
||||
5XZB7FqtvbA5KcV2hQXyCVF4nMHKElwkT/BUutoNTUW/PzgIWH5oHO0mlzH6Krbc
|
||||
1/IDwydkcI6IdygNP3VXtMLTo3of0w==
|
||||
=dwnC
|
||||
J78fK7FZtkXldQUCZjZHHwUJBi+g+wAKCRAfK7FZtkXldfrxEACmIYKDSzkcql7U
|
||||
3MizkdDQpJEydu8K/uDWcBenaAIbsrSBH1oLTlHnfA+98JWROdXX06M3ZVdef1bl
|
||||
T7jMagbMjBH/WFfghKBnm1/RKbPbj/MsbVXor2MMrHg8rSFhhtc0HafaPIki4HHQ
|
||||
zdmrTqQ4Nq/Nv0vCmxD8WkCYpUkSiYv78itYcEQaZBGSxV2kvzfjBDA9LtF7Ah6j
|
||||
SGErjf1LtaaAY0MHhvG0Mds5QOyENi4/B+0DSHKNYH8gSv1JMYc4xjnMqian61M7
|
||||
WD24NS6Fq0NpBOJUx+9kYPG4MVBvYKztHYLGgj7xSzlYGdxXy/fMy+Y4HgdJTUD+
|
||||
wN1A/84s1iukWZ+wDMhfUZ4PDyKgprqsX8zJXPSmXGzKNqJkeE/cPw7GldBED6mh
|
||||
rqNsyP+ZZPDp3pqi4M9VMmeg3juS/4wpX5EpgngVrReknCuyEPITs8QBmwBpkVdB
|
||||
cnaQ2lPSj0rFvzfSc8E74qzESbq+ViuEcLSRKEZq3mr4qjOu+fPTZsH8rK7vzQZr
|
||||
tyqS9kge53dvr2W+lfuGSKfKKoXEOCm7jnKWIlGrQoe2tCvBatqwdxq9B49v5Ok5
|
||||
MmViBJ3jhDwbHizePXVx01FT8EEU4k0PGqE9Jh5mYlQFtpwkttsggVV8tB9wjFkm
|
||||
K2PrOlFYvydZvMutE99EtR1nkj2u5w==
|
||||
=j72I
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
Loading…
Reference in a new issue