._.
This commit is contained in:
parent
25e2919ad4
commit
f3ec7ffb79
32 changed files with 1421 additions and 1250 deletions
3
Makefile
Normal file
3
Makefile
Normal file
|
@ -0,0 +1,3 @@
|
|||
all:
|
||||
# ./blog.sh create
|
||||
./blog.sh build
|
|
@ -1,355 +1,228 @@
|
|||
:root {
|
||||
--level-1-bg: #230631;
|
||||
--level-1-fg: #b6a0ff;
|
||||
--level-2-bg: #2c0614;
|
||||
--level-2-fg: #f78fe7;
|
||||
--level-3-bg: #0f0e39;
|
||||
--level-3-fg: #2fafff;
|
||||
--level-1-bg: #230631;
|
||||
--level-1-fg: #b6a0ff;
|
||||
--level-2-bg: #2c0614;
|
||||
--level-2-fg: #f78fe7;
|
||||
--level-3-bg: #0f0e39;
|
||||
--level-3-fg: #2fafff;
|
||||
|
||||
--background: #000000;
|
||||
--foreground: #ffffff;
|
||||
--background-alt: #181732;
|
||||
--accent: #f5aa80;
|
||||
--link: #00bcff;
|
||||
--mode-bar: #2a2a66;
|
||||
--mode-bar-accent: #00808f;
|
||||
--yellow: #d0bc00;
|
||||
--border: solid 1px var(--background-alt);
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
:root {
|
||||
--level-1-bg: #fdf0ff;
|
||||
--level-1-fg: #5317ac;
|
||||
--level-2-bg: #fff1f0;
|
||||
--level-2-fg: #8f0075;
|
||||
--level-3-bg: #f3f3ff;
|
||||
--level-3-fg: #0031a9;
|
||||
|
||||
--background: #ffffff;
|
||||
--foreground: #000000;
|
||||
--background-alt: #f3f3ff;
|
||||
--accent: #702f00;
|
||||
--link: #0000c0;
|
||||
--mode-bar: #d0d6ff;
|
||||
--mode-bar-accent: #c4ede0;
|
||||
--yellow: #813e00;
|
||||
--border: solid 1px var(--foreground);
|
||||
}
|
||||
|
||||
--background: #000000;
|
||||
--foreground: #ffffff;
|
||||
--background-alt: #181732;
|
||||
--accent: #f5aa80;
|
||||
--link: #00bcff;
|
||||
--mode-bar: #2a2a66;
|
||||
--mode-bar-accent: #00808f;
|
||||
--yellow: #d0bc00;
|
||||
--border: solid 1px var(--background-alt);
|
||||
}
|
||||
|
||||
@media only screen and (orientation: portrait) {
|
||||
.hide-on-mobile {
|
||||
display: none;
|
||||
}
|
||||
.link {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
#table-of-contents {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#postamble {
|
||||
display: none;
|
||||
}
|
||||
header {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
html {
|
||||
position: relative;
|
||||
font-family: system-ui;
|
||||
scroll-behavior: smooth;
|
||||
position: relative;
|
||||
font-family: system-ui;
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--background);
|
||||
color: var(--foreground);
|
||||
background-color: var(--background);
|
||||
color: var(--foreground);
|
||||
}
|
||||
|
||||
#postamble {
|
||||
position: sticky;
|
||||
bottom: 0px;
|
||||
nav {
|
||||
background-color: var(--mode-bar);
|
||||
display: flex;
|
||||
padding: 5px;
|
||||
justify-content: space-between;
|
||||
overflow-x: scroll;
|
||||
margin: 0;
|
||||
font-family: monospace;
|
||||
font-size: medium;
|
||||
border-bottom: solid 15px var(--background);
|
||||
}
|
||||
|
||||
#postamble > header > nav {
|
||||
background-color: var(--mode-bar);
|
||||
display: flex;
|
||||
padding: 5px 20px;
|
||||
justify-content: space-between;
|
||||
overflow-x: scroll;
|
||||
margin: 0;
|
||||
font-family: monospace;
|
||||
border-bottom: solid 15px var(--background);
|
||||
nav > ul {
|
||||
display: flex;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
#postamble > header > nav > ul {
|
||||
display: flex;
|
||||
list-style: none;
|
||||
nav > ul > li {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
#postamble > header > nav > ul > li {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
list-style: none;
|
||||
nav > ul > li > span {
|
||||
color: var(--yellow);
|
||||
}
|
||||
|
||||
#postamble > header > nav > ul > li > span {
|
||||
color: var(--yellow);
|
||||
nav > ul > li > a {
|
||||
color: var(--foreground);
|
||||
}
|
||||
|
||||
#postamble > header > nav > ul > li > a {
|
||||
color: var(--foreground);
|
||||
nav > ul > li > a:hover {
|
||||
background-color: var(--mode-bar-accent);
|
||||
}
|
||||
|
||||
|
||||
#postamble > header > nav > ul > li > a:hover {
|
||||
background-color: var(--mode-bar-accent);
|
||||
article {
|
||||
max-width: 80ch;
|
||||
display: block;
|
||||
margin: 1em auto;
|
||||
padding: 10px;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: var(--link);
|
||||
text-decoration: none;
|
||||
color: var(--link);
|
||||
}
|
||||
|
||||
a:hover {
|
||||
opacity: 80%;
|
||||
opacity: 80%;
|
||||
}
|
||||
|
||||
hr {
|
||||
border: var(--border);
|
||||
border-bottom: none;
|
||||
border: var(--border);
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
|
||||
p > code {
|
||||
color: var(--foreground);
|
||||
background-color: var(--background-alt);
|
||||
color: var(--foreground);
|
||||
background-color: var(--background-alt);
|
||||
}
|
||||
|
||||
pre, code {
|
||||
background-color: var(--background-alt);
|
||||
padding: 3px;
|
||||
overflow-x: scroll;
|
||||
margin: 10px auto;
|
||||
background-color: var(--background-alt);
|
||||
padding: 3px;
|
||||
overflow-x: scroll;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin-left: 1em;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
background-color: var(--background-alt);
|
||||
color: var(--accent);
|
||||
border-left: solid 5px var(--accent);
|
||||
padding: 10px 20px;
|
||||
margin: 10px auto;
|
||||
background-color: var(--background-alt);
|
||||
color: var(--accent);
|
||||
border-left: solid 5px var(--accent);
|
||||
padding: 10px 20px;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
blockquote > p > code {
|
||||
background-color: var(--link);
|
||||
color: var(--background);
|
||||
background-color: var(--link);
|
||||
color: var(--background);
|
||||
}
|
||||
|
||||
blockquote > pre {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
p, hr {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
p {
|
||||
padding-inline-start: 1em;
|
||||
padding-inline-start: 1em;
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
list-style-position: inside;
|
||||
padding-inline-start: 2em;
|
||||
ul, ol {
|
||||
list-style-position: inside;
|
||||
padding-inline-start: 2em;
|
||||
}
|
||||
|
||||
ul > li {
|
||||
list-style: "- ";
|
||||
list-style: "- ";
|
||||
}
|
||||
|
||||
h1 {
|
||||
padding: 10px;
|
||||
border-bottom: var(--border);
|
||||
font-size: xx-large;
|
||||
padding: 10px;
|
||||
border-bottom: var(--border);
|
||||
font-size: xx-large;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
text-align: center;
|
||||
h2, h3, h4 {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
margin: 1em 0;
|
||||
h2, h2::before {
|
||||
content: "* ";
|
||||
background-color: var(--level-1-bg);
|
||||
color: var(--level-1-fg);
|
||||
}
|
||||
|
||||
h2,
|
||||
h2::before {
|
||||
content: "* ";
|
||||
background-color: var(--level-1-bg);
|
||||
color: var(--level-1-fg);
|
||||
h3, h3::before {
|
||||
content: "** ";
|
||||
background-color: var(--level-2-bg);
|
||||
color: var(--level-2-fg);
|
||||
}
|
||||
|
||||
h3,
|
||||
h3::before {
|
||||
content: "** ";
|
||||
background-color: var(--level-2-bg);
|
||||
color: var(--level-2-fg);
|
||||
}
|
||||
|
||||
h4,
|
||||
h4::before {
|
||||
content: "*** ";
|
||||
background-color: var(--level-3-bg);
|
||||
color: var(--level-3-fg);
|
||||
h4, h4::before {
|
||||
content: "*** ";
|
||||
background-color: var(--level-3-bg);
|
||||
color: var(--level-3-fg);
|
||||
}
|
||||
|
||||
img {
|
||||
max-height: 300px;
|
||||
max-width: 100%;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
margin: 1em auto;
|
||||
max-height: 300px;
|
||||
max-width: 100%;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
margin: 1em auto;
|
||||
}
|
||||
|
||||
table,
|
||||
th,
|
||||
td {
|
||||
border: var(--border);
|
||||
padding: 5px;
|
||||
border-collapse: collapse;
|
||||
table, th, td {
|
||||
border: var(--border);
|
||||
padding: 5px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table {
|
||||
border: none;
|
||||
overflow: scroll;
|
||||
margin: 1em;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
border: none;
|
||||
overflow: scroll;
|
||||
margin: 1em;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
colgroup {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
margin: 0;
|
||||
th, td {
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: bold;
|
||||
background-color: var(--background-alt);
|
||||
font-weight: bold;
|
||||
background-color: var(--background-alt);
|
||||
}
|
||||
|
||||
tr:nth-of-type(even) {
|
||||
background-color: var(--background-alt);
|
||||
background-color: var(--background-alt);
|
||||
}
|
||||
|
||||
.content {
|
||||
max-width: 80ch;
|
||||
display: block;
|
||||
margin: 1em auto;
|
||||
padding: 10px;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
#table-of-contents {
|
||||
background-color: var(--background-alt);
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#table-of-contents > h2 {
|
||||
background-color: var(--background-alt);
|
||||
color: var(--foreground);
|
||||
border: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#table-of-contents > h2::before {
|
||||
content: ""
|
||||
}
|
||||
|
||||
.org-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.verse {
|
||||
font-style: italic;
|
||||
color: var(--accent);
|
||||
border-top: solid 3px var(--accent);
|
||||
border-bottom: solid 3px var(--accent);
|
||||
padding: 10px;
|
||||
background-color: var(--background-alt);
|
||||
}
|
||||
|
||||
.src:hover::before {
|
||||
float: right;
|
||||
border: solid 2px var(--accent);
|
||||
background-color: var(--accent);
|
||||
color: var(--background);
|
||||
min-width: 32px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.src-C:hover::before {
|
||||
content: "C"
|
||||
}
|
||||
|
||||
.src-hare:hover::before {
|
||||
content: "Hare"
|
||||
}
|
||||
|
||||
.src-bash:hover::before {
|
||||
content: "Bash"
|
||||
}
|
||||
|
||||
.src-html:hover::before {
|
||||
content: "HTML"
|
||||
}
|
||||
|
||||
.src-javascript:hover::before {
|
||||
content: "Javascript"
|
||||
}
|
||||
|
||||
.src-css:hover::before {
|
||||
content: "CSS"
|
||||
}
|
||||
|
||||
.src-lua:hover::before {
|
||||
content: "Lua"
|
||||
}
|
||||
|
||||
.src-emacs-lisp:hover::before {
|
||||
content: "Elisp"
|
||||
}
|
||||
|
||||
.src-cpp:hover::before {
|
||||
content: "C++"
|
||||
}
|
||||
|
||||
.src-python:hover::before {
|
||||
content: "Python"
|
||||
}
|
||||
|
|
237
blog.sh
Executable file
237
blog.sh
Executable file
|
@ -0,0 +1,237 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# DON'T CHANGE THIS
|
||||
INPUT=$1
|
||||
SITE_NAME=$(cat ./config.json | jq -r .name)
|
||||
SITE_LANG="$(cat ./config.json | jq -r .lang)"
|
||||
SITE_AUTHOR="$(cat ./config.json | jq -r .author)"
|
||||
SITE_DESCRIPTION="$(cat ./config.json | jq -r .description)"
|
||||
SITE_NOTE="$(cat ./config.json | jq -r .note)"
|
||||
SITE_FAVICON_NAME="$(cat ./config.json | jq -r .favicon.filename)"
|
||||
SITE_FAVICON_TYPE="$(cat ./config.json | jq -r .favicon.extension)"
|
||||
SITE_LINK_1_NAME="$(cat ./config.json | jq -r .links[0])"
|
||||
SITE_LINK_1_URL="$(cat ./config.json | jq -r .links[1])"
|
||||
SITE_LINK_2_NAME="$(cat ./config.json | jq -r .links[2])"
|
||||
SITE_LINK_2_URL="$(cat ./config.json | jq -r .links[3])"
|
||||
SITE_LINK_3_NAME="$(cat ./config.json | jq -r .links[4])"
|
||||
SITE_LINK_3_URL="$(cat ./config.json | jq -r .links[5])"
|
||||
SITE_LINK_4_NAME="$(cat ./config.json | jq -r .links[6])"
|
||||
SITE_LINK_4_URL="$(cat ./config.json | jq -r .links[7])"
|
||||
SITE_LINK_5_NAME="$(cat ./config.json | jq -r .links[8])"
|
||||
SITE_LINK_5_URL="$(cat ./config.json | jq -r .links[9])"
|
||||
|
||||
create_site() {
|
||||
[[ -z "$(which smu)" ]] && echo "smu is not installed! Please install it from https://git.codemadness.org/smu/" && exit 1
|
||||
[[ -z "$(which jq)" ]] && echo "jq is not installed! Please install it from your package repo!" && exit 1
|
||||
[[ ! -f "config.json" ]] && echo "You don't have a config.json file!" && exit 1
|
||||
mkdir -p "content"
|
||||
mkdir -p "assets"
|
||||
mkdir -p "pages"
|
||||
mkdir -p "public"
|
||||
touch ".site"
|
||||
cat << EOF > "pages/head.html"
|
||||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta http-equiv="Content-Language" content="${SITE_LANG}" />
|
||||
<meta name="generator" content="blog.sh" />
|
||||
<meta name="author" content="${SITE_AUTHOR}" />
|
||||
<meta name="description" content="${SITE_DESCRIPTION}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" href="/assets/${SITE_FAVICON_NAME}.${SITE_FAVICON_TYPE}" type="image/${SITE_FAVICON_TYPE}" />
|
||||
<link href="/assets/styles.css" rel="stylesheet">
|
||||
<title>${SITE_NAME}</title>
|
||||
</head>
|
||||
<body>
|
||||
EOF
|
||||
|
||||
echo "<header><nav><ul><li><a href=\"/\">Home</a></li></ul><ul class=\"link\">" > "pages/navbar.html"
|
||||
[[ ! "$SITE_LINK_1_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_1_URL\">[$SITE_LINK_1_NAME]</a> </li>" >> "pages/navbar.html"
|
||||
[[ ! "$SITE_LINK_2_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_2_URL\">[$SITE_LINK_2_NAME]</a> </li>" >> "pages/navbar.html"
|
||||
[[ ! "$SITE_LINK_3_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_3_URL\">[$SITE_LINK_3_NAME]</a> </li>" >> "pages/navbar.html"
|
||||
[[ ! "$SITE_LINK_4_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_4_URL\">[$SITE_LINK_4_NAME]</a> </li>" >> "pages/navbar.html"
|
||||
[[ ! "$SITE_LINK_5_URL" == "null" ]] && echo "<li><a href=\"$SITE_LINK_5_URL\">[$SITE_LINK_5_NAME]</a> </li>" >> "pages/navbar.html"
|
||||
echo "</ul><ul><li><a href=\"/blog.html\">Blog</a></li></ul></nav></header><article>" >> "pages/navbar.html"
|
||||
|
||||
cat << EOF > "pages/footer.html"
|
||||
</article>
|
||||
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>
|
||||
</body>
|
||||
EOF
|
||||
|
||||
cat << EOF > "content/deleteme"
|
||||
# blog.sh
|
||||
|
||||
<center>A <s>simple</s> shitty Static Site Generator writen in bash.</center>
|
||||
|
||||
> Before you proceed on reading all of this yappanese
|
||||
>
|
||||
> - All variables are defined inside a \`config.json\` file.
|
||||
> - You **NEED** to have \`smu\` installed. it is a simple program that converts a Markdown-like file to HTML, and it is used by this script. You can clone it from git://git.codemadness.org/smu
|
||||
|
||||
## How to use
|
||||
|
||||
To create a site, first, modify the \`name\` key inside the \`config.json\` file, and then, just type
|
||||
|
||||
blog.sh create
|
||||
|
||||
This will create a directory with the name specified on the \`name\`
|
||||
key with the directory structure used by \`blog.sh\`.
|
||||
|
||||
The posts are located in the \`content\` directory, the names of each files
|
||||
needs to be like the following:
|
||||
|
||||
1970-01-01
|
||||
1991-07-03
|
||||
1996-10-01
|
||||
2003-11-06
|
||||
2004-10-20
|
||||
|
||||
They are organized in ascending order, that is, \`1991-07-04\` will be placed
|
||||
above \`1991-07-03\`.
|
||||
|
||||
> You don't need to worry about the numbers, they are just for organization
|
||||
> purposes and don't show on the index page.
|
||||
|
||||
> Oh, and you don't _need_ to care about it either, that is, if you just want to
|
||||
> see the circus taking fire.
|
||||
|
||||
You may have already noticed that there are no file extensions present on the
|
||||
filename. The reason for it is that it was easier for my smooth brain to write
|
||||
something that parsed the filenames without any issues.
|
||||
|
||||
The title of each post will be taken from a \`<h1>\` tag present on the post. So
|
||||
yes, do not use \`<h1>\` tags (one \`#\`) on the post's apart for the title of it.
|
||||
|
||||
## The config.json file
|
||||
|
||||
Yeah... I'm using json to configure this thing, idk, it's easier to just use \`jq\`
|
||||
and don't think much about it.
|
||||
|
||||
The config looks like this:
|
||||
|
||||
{
|
||||
"name": "foo",
|
||||
"author": "bar",
|
||||
"lang": "en-us",
|
||||
"description": "lorem ipsum",
|
||||
"note": "You could've just used jekyll or Hugo, you know that, right?",
|
||||
"favicon": {
|
||||
"filename": "fav",
|
||||
"extension": "webp"
|
||||
},
|
||||
"links": [
|
||||
"Neocities", "https://neocities.org/site/tukainpng",
|
||||
"Codeberg", "https://codeberg.org/tukain"
|
||||
]
|
||||
}
|
||||
|
||||
If you don't have a \`config.json\` file on the directory that you're currently,
|
||||
then you won't be able to use the \`create\` command.
|
||||
|
||||
## smu syntax
|
||||
|
||||
Wellll..... If you have already used Markdown, then you are at home... But not quite.
|
||||
|
||||
Things like headings
|
||||
|
||||
# Works
|
||||
## Exactly
|
||||
### The
|
||||
#### Same
|
||||
##### Way
|
||||
|
||||
And the same goes to \`_Italic_\`, \`**Bold**\` and \`***Bold Italic***\`.
|
||||
|
||||
Oh, and
|
||||
|
||||
\`inline code\`
|
||||
|
||||
too.
|
||||
|
||||
### Things that are diferent from Markdown
|
||||
|
||||
smu doesn't have a syntax for
|
||||
|
||||
- Tables
|
||||
- Images
|
||||
|
||||
But, you can use regular ol' HTML on smu without any problems.
|
||||
|
||||
Code Blocks are made by indenting something with about 4 spaces before any text,
|
||||
anything indented like that will be enclosed inside a \`<code>\` tag.
|
||||
|
||||
## Why have you brought this upon this cursed land?
|
||||
|
||||
First of all: because I can, and I'm a idiot.
|
||||
|
||||
<img src="/assets/img/monkey.webp">
|
||||
|
||||
Second, I really liked my experience of using [Org-mode's](https://orgmode.org/)
|
||||
\`export to HTML\` feature. It's basically a SSG, a basic one, but still one.
|
||||
|
||||
So I wanted to create my own, one that is just focused on blog creation (so
|
||||
it's easier to write) and that was as much portable as it could get.
|
||||
|
||||
And here it is, a shitty SSG that takes whatever the hell is on the config file
|
||||
and on the content directory and throws a bunch of HTML out of it.
|
||||
EOF
|
||||
|
||||
}
|
||||
|
||||
build_site() {
|
||||
[[ ! -f ".site" ]] && echo "You're not inside the site directory!" && exit 1
|
||||
rm -rf ./public
|
||||
mkdir -p public/posts
|
||||
|
||||
for FILE in $(/bin/ls ./content)
|
||||
do
|
||||
cat ./pages/head.html > public/posts/$FILE.html
|
||||
cat ./pages/navbar.html >> public/posts/$FILE.html
|
||||
smu ./content/$FILE >> public/posts/$FILE.html
|
||||
cat ./pages/footer.html >> public/posts/$FILE.html
|
||||
done
|
||||
|
||||
cat ./pages/head.html > index.html
|
||||
cat ./pages/navbar.html >> index.html
|
||||
echo "<h1>$SITE_NAME</h1>" >> index.html
|
||||
echo "<h4><i>${SITE_NOTE}</i></h4>" >> index.html
|
||||
[[ ! -z "$SITE_DESCRIPTION" ]] && echo "<p>${SITE_DESCRIPTION}</p>" >> index.html
|
||||
cat ./pages/footer.html >> index.html
|
||||
|
||||
cat ./pages/head.html > blog.html
|
||||
cat ./pages/navbar.html >> blog.html
|
||||
|
||||
echo "<h2>Posts</h2>" >> blog.html
|
||||
echo "<ul>" >> blog.html
|
||||
|
||||
for PAGE in $(/bin/ls -1 ./public/posts | sort -r | tr '\n' ' ')
|
||||
do
|
||||
echo "<li><a href=\"/posts/${PAGE}\">$(grep '<h1>' ./public/posts/$PAGE | tr '<>/' '\n' | head -n3 | tail -n1 )</a></li>" >> blog.html
|
||||
done
|
||||
|
||||
echo "</ul>" >> blog.html
|
||||
cat ./pages/footer.html >> blog.html
|
||||
mv *.html public
|
||||
cp -r ./assets ./public
|
||||
}
|
||||
|
||||
version() {
|
||||
printf "\e[32mblog.sh \e[34m(v0.0.1)\e[0m\n"
|
||||
}
|
||||
|
||||
case $INPUT in
|
||||
"build") build_site;;
|
||||
"create") create_site;;
|
||||
"version") version;;
|
||||
*) cat << EOF
|
||||
|
||||
Usage: blog.sh <command>
|
||||
|
||||
version - shows blog.sh version
|
||||
create - create the website structure
|
||||
build - build the website
|
||||
|
||||
EOF
|
||||
;;
|
||||
esac
|
49
build.el
49
build.el
|
@ -1,49 +0,0 @@
|
|||
(require 'ox-publish)
|
||||
(require 'htmlize)
|
||||
|
||||
(delete-directory "./public" t)
|
||||
|
||||
|
||||
(setq org-html-postamble
|
||||
(concat
|
||||
"<header>"
|
||||
"<nav>"
|
||||
"<ul>"
|
||||
"<li class=\"hide-on-mobile\">U:---</li>"
|
||||
"<li>%t.org</li>"
|
||||
"<li class=\"hide-on-mobile\">-</li>"
|
||||
"<li class=\"hide-on-mobile\">%C</li>"
|
||||
"<li class=\"hide-on-mobile\">(Elisp<span>/d</span> ARev WK company)</li>"
|
||||
"</ul>"
|
||||
"<ul>"
|
||||
"<li><a href=\"/\">Início</a></li>"
|
||||
"<li><a href=\"/sitemap.html\">Sitemap</a></li>"
|
||||
"</ul>"
|
||||
"</nav>"
|
||||
"</footer>"))
|
||||
|
||||
(setq org-html-head "<link rel=icon type=\"image/webp\" href=\"/assets/fav.webp\"> <link rel=stylesheet href=\"/assets/styles.css\" />"
|
||||
org-html-head-include-default-style nil
|
||||
org-html-head-include-scripts nil
|
||||
org-html-preamble nil
|
||||
org-html-use-infojs nil
|
||||
org-html-doctype "html5"
|
||||
org-html-html5-fancy t)
|
||||
|
||||
(setq org-publish-project-alist
|
||||
(list
|
||||
(list "Tukain's Blog"
|
||||
:base-directory "./content"
|
||||
:auto-sitemap t
|
||||
:sitemap-title "Sitemap"
|
||||
:recursive t
|
||||
:htmlized-source t
|
||||
:publishing-directory "./public"
|
||||
:section-numbers nil
|
||||
:language "pt-br"
|
||||
:publishing-function 'org-html-publish-to-html)))
|
||||
|
||||
(org-publish-all t)
|
||||
|
||||
(copy-directory "./assets" "./public/assets")
|
||||
|
19
config.json
Normal file
19
config.json
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"name": "Tukain's Blog",
|
||||
"author": "Tukain",
|
||||
"lang": "pt-br",
|
||||
"note": "Não espere o mínimo de consistência aqui.",
|
||||
"description": "Aqui é um lugar onde eu gosto de comentar sobre assuntos envolvendo o meu cotidiano nesse vasto mundo chamado internet. E também sobre alguns assuntos que eu achar interessante o suficiente para comentar.",
|
||||
"favicon": {
|
||||
"filename": "fav",
|
||||
"extension": "webp"
|
||||
},
|
||||
"links": [
|
||||
"Neocities",
|
||||
"https://neocities.org/site/tukainpng",
|
||||
"Codeberg",
|
||||
"https://codeberg.org/tukain",
|
||||
"Disroot",
|
||||
"https://git.disroot.org/tukain"
|
||||
]
|
||||
}
|
51
content/2024-05-10_hare.md
Normal file
51
content/2024-05-10_hare.md
Normal file
|
@ -0,0 +1,51 @@
|
|||
# Hare
|
||||
|
||||
## Praticamente C, mas com diversas melhorias
|
||||
|
||||
A Hare é uma linguagem da família das linguagens C-like, e a sua sintaxe
|
||||
deixa isso bem explícito, porém, ela tem algumas das inovações das
|
||||
últimas décadas consigo e também se inspira na sintaxe de outras
|
||||
linguagens, como a Rust.
|
||||
|
||||
Porém, diferente de Rust, você não vai ter que esperar por minutos ou
|
||||
horas para o compilador terminar o serviço, nem quebrar a cabeça com o
|
||||
seu código para que ele seja "memory safe", ela não tem garbage
|
||||
collectors nem nada desse tipo, é como eu disse, ela é praticamente C.
|
||||
|
||||
Contudo, ela não é uma linguagem com as mesmas limitações ou problemas
|
||||
que C possui, e além disso ela tem uma sintaxe que, para mim, não só é
|
||||
mais clara, como mais fácil de entender o que está acontecendo.
|
||||
|
||||
Claramente isso é apenas algo que depende da minha experiência, mas até
|
||||
mesmo a minha namorada conseguiu entender como um Struct estava sendo
|
||||
usado em um dos exemplos que eu escrevi em Hare, enquanto isso, o mesmo
|
||||
exemplo em C foi... Confuso para dizer no mínimo.
|
||||
|
||||
## QBE como backend
|
||||
|
||||
O compilador da Hare usa o QBE Backend, o que torna o compilador dela
|
||||
extremamente rápido e leve, e também facilita o processo de criar ports
|
||||
do compilador para outras arquiteturas. Eu não irei entrar muito em
|
||||
detalhes sobre o que é um Compiler Backend, mas devo parafrasear algo
|
||||
vindo do próprio site do QBE:
|
||||
|
||||
> QBE é um backend para compiladores, com o foco de providenciar 70% da
|
||||
> performance de compiladores otimizados da indústria com 10% do código.
|
||||
|
||||
De certa forma, o QBE se encaixa até mesmo na filosofia suckless, o que
|
||||
para mim pelo menos, é um grande ponto possitivo.
|
||||
|
||||
## O que eu planejo fazer aprendendo a programar?
|
||||
|
||||
Atualmente, eu vejo a programação como um hobbie para mim, um hobbie que
|
||||
eu gosto e muito, mas isso não me impede de colocar essa habilidade no
|
||||
meu currículo, um dia isso pode vir a ser extremamente útil.
|
||||
|
||||
Por enquanto eu estou aprendendo o básico, recém fiz o meu primeiro
|
||||
Struct, ainda falta muito para eu dizer que eu sei fazer alguma coisa,
|
||||
quanto mais dizer que eu sei programar. Mas isso só depende do meu
|
||||
esforço, então irei correr atrás.
|
||||
|
||||
## *Fin*
|
||||
|
||||
Enfim, é isso, até o próximo post!
|
104
content/2024-05-20_c-e-hare.md
Normal file
104
content/2024-05-20_c-e-hare.md
Normal file
|
@ -0,0 +1,104 @@
|
|||
# A simplicidade de C e Hare
|
||||
|
||||
Recentemente eu fiz um post sobre os meus estudos com a linguagem de
|
||||
programação Hare, falei sobre o que eu planejo fazer com esse
|
||||
conhecimento entre outras coisas. Mas algo que eu não comentei sobre foi
|
||||
o fato de eu estar estudando Hare em conjunto com C (só mencionei que a
|
||||
sintaxe da Hare é semelhante a C).
|
||||
|
||||
## Por quê estou fazendo isso?
|
||||
|
||||
Bom, isso é algo que eu simplesmente esqueci de comentar no meu último
|
||||
post, estou fazendo isso por 2 motivos principais:
|
||||
|
||||
As sintaxes são semelhantes, então posso pegar um conhecimento novo de
|
||||
uma e levar para outra; Ambas são linguagens low-level, com foco em alto
|
||||
desempenho e possuem manipulação manual de memória, então posso aprender
|
||||
esse conceito de forma prática. Claro que existem outros motivos para eu
|
||||
fazer algo nesse estilo, mas eu não vejo a necessidade de listar todos
|
||||
eles aqui. Afinal, já é algo "estranho" para um jovem da minha idade ter
|
||||
interesse em uma "linguagem defasada e insegura" como a C, ao invés de
|
||||
querer aprender algo como Python, Ruby ou Javascript.
|
||||
|
||||
## Existe algum outro motivo?
|
||||
|
||||
Óbviamente que sim. Aprender C/Hare é algo como um sonho que quero, e
|
||||
posso, tornar realidade. É algo que chega perto de uma romantização, um
|
||||
sentimento que dá vontade de correr atrás, de se esforçar para
|
||||
alcança-lo.
|
||||
|
||||
Quase como você sonha em ter seu próprio carro, viver sozinho, ou viajar
|
||||
o mundo. Não é um sentimento fácil de por em palavras.
|
||||
|
||||
## Como está meu progresso até agora?
|
||||
|
||||
Bom, eu iniciei meus estudos a pouquíssimo tempo, então ainda estou em
|
||||
meus estágios iniciais. Porém já aprendi alguns conceitos básicos como
|
||||
if statements, which loop, for loop, switch-case, structs e alguns types
|
||||
também (tanto em C quanto em Hare).
|
||||
|
||||
Também comecei a fazer alguns programas extremamente simples só para
|
||||
fixar esses conceitos na minha cabeça, um exemplo desses programas é um
|
||||
programa que cria um arquivo vazio usando um nome que o usuário fornece.
|
||||
|
||||
/* Escrito em C */
|
||||
int main()
|
||||
{
|
||||
FILE *arq;
|
||||
char nome[100];
|
||||
|
||||
printf("Digite o nome do arquivo: ");
|
||||
scanf("%s", &nome[0]);
|
||||
|
||||
if (fopen(nome, "r"))
|
||||
{
|
||||
printf("O arquivo já existe.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
arq = fopen(nome, "w");
|
||||
}
|
||||
}
|
||||
|
||||
/* Escrito em Hare */
|
||||
use os;
|
||||
use bufio;
|
||||
use strings;
|
||||
|
||||
export fn main() void = {
|
||||
let arquivo = nomeDoArquivo();
|
||||
|
||||
if (os::exists(arquivo)) {
|
||||
fmt::println("Arquivo já existe.\n")!;
|
||||
} else {
|
||||
os::create(arquivo, 384)!;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
fn nomeDoArquivo() str = {
|
||||
fmt::printf("Escreva o nome do arquivo.\n:")!;
|
||||
const inputUser = bufio::read_line(os::stdin)! as []u8;
|
||||
return strings::fromutf8(inputUser)!;
|
||||
};
|
||||
|
||||
## As diferenças
|
||||
|
||||
Algo que já para notar nesses exemplos é que o código em Hare é um pouco
|
||||
maior que o código em C, o motivo disso é que a Hare tem um foco na
|
||||
manipulação de erros. O que faz com que você tenha não só ter plena
|
||||
noção do que deve ser feito em caso de algum erro, mas também dizer ao
|
||||
programa o que ele vai fazer em caso de erro.
|
||||
|
||||
A consequência disso é ter um pouco mais de linhas de código necessárias
|
||||
e também mais símbolos para serem utilizados durante a escrita do
|
||||
programa.
|
||||
|
||||
Apesar disso, eu acho a sintaxe da Hare mais legível que a C em alguns
|
||||
casos, como por exemplo na criação e utilização de structs.
|
||||
|
||||
## *Fin*
|
||||
|
||||
Bem, isso é tudo o que eu tenho a dizer por agora.
|
||||
|
||||
Até o próximo post!
|
82
content/2024-10-03_proton.md
Normal file
82
content/2024-10-03_proton.md
Normal file
|
@ -0,0 +1,82 @@
|
|||
# Tô usando os serviços da Proton
|
||||
Depois de aproximadamente 1 ano, eu criei uma nova conta no
|
||||
[Proton](https://proton.me). Um serviço de e-mail/calendário
|
||||
online/VPN/cloud storage/gerenciador de senhas/carteira de bitcoin,
|
||||
enfim, um serviço que foca em prover basicamente as ferramentas que
|
||||
comumemte utilizamos com mais frequência do Google (Gmail, Google
|
||||
Calendar, Google Drive, Google Passwords) com aquela pitada de
|
||||
privacidade que só a mão do Shaquille O'Neal consegue fazer.
|
||||
|
||||
## Por que?
|
||||
|
||||
Nas últimas semanas eu comecei a voltar ao meu antigo estilo de vida sem
|
||||
o Google, o fato de eu ter conseguido um emprego foi um facilitador
|
||||
nesse aspecto. No dia do aniversário do meu irmão, eu troquei de celular
|
||||
com ele, dando o meu Poco M4 Pro para ele e ficando com o Moto G52 dele.
|
||||
|
||||
Essa não foi a primeira vez que a gente fez isso, na verdade na primeira
|
||||
vez que fiz isso com ele foi porque o Moto G52 possui uma ROM oficial da
|
||||
LineageOS disponível, e digamos que quando eu descobri isso eu tive uma
|
||||
[ativação
|
||||
neural](https://i.pinimg.com/736x/87/07/97/8707972a759975b07d188308c948cc27.jpg)
|
||||
e no mesmo dia a gente fez essa troca. E claro, eu coloquei a Lineage no
|
||||
G52.
|
||||
|
||||
Enfim, vou cortar um pouco da história e pular para o presente. Depois
|
||||
que eu fiquei com o G52 com a Lineage instalada novamente, eu comecei a
|
||||
fazer uma especie de "detox digital", mas eu não estava deletando
|
||||
contas, eu estava desvinculando o Google delas. Porém, uma coisa que
|
||||
estava sendo uma pedra no meu caminho era o Gmail, e bem, eu tenho
|
||||
e-mails alternativos, mas os servidores deles são lentos o suficiente
|
||||
para que eu basicamente só leia um e-mail 1 hora depois que eu
|
||||
"recebi" ele.
|
||||
|
||||
Tendo isso em mente, eu criei uma nova conta no Proton, que dentre
|
||||
várias coisas, também me dá acesso a 10 e-mail aliases. O que me permite
|
||||
remover o Gmail da jogada, e mesmo as coisas que não estão (ainda)
|
||||
usando aliases não ficam presas no limbo, já que o Proton me permite
|
||||
receber os e-mails do Gmail, no Proton, ou seja, eu não preciso nem
|
||||
mesmo abrir o Gmail para ler os e-mails que chegam por lá.
|
||||
|
||||
## Mudanças no armazenamento
|
||||
|
||||
Ano passado, quando eu tinha uma conta no Proton, o armazenamento era
|
||||
bem limitado, somente 1Gb (depois de fazer uma configuração na conta, o
|
||||
padrão era 512Mb) era disponível. Esses 1Gb eram compartilhado entre o
|
||||
serviço de e-mail/calendário e o de cloud storage. Não sei se já ficou
|
||||
claro, mas 1Gb não é lá muita coisa para um serviço de cloud storage,
|
||||
muito menos quando isso é compartilhado com outros serviços.
|
||||
|
||||
Mas, com a nova conta que criei ainda hoje, eu reparei que no serviço de
|
||||
e-mail o armazenamento continua sendo de 1Gb, porém o serviço de cloud
|
||||
storage se inicia com 3Gb! Podendo ser aumentado para 5Gb depois de
|
||||
seguir um passo a passo de configuração!
|
||||
|
||||
Isso é algo que eu simplesmente não tava esperando, mas é uma mudança
|
||||
mais que bem vinda, porque eu posso mover os arquivos que eu tinha no
|
||||
Google Drive para cá com muito mais folga.
|
||||
|
||||
## Uma senha praticamente impossível de digitar para a minha conta do Google
|
||||
|
||||
Eu também estou dificultando ao máximo o meu login do Google,
|
||||
praticamente tornando impossível que eu faça login sem utilizar o
|
||||
KeePass, o que por sua vez, faz com que eu deixe de utilizar um sistema
|
||||
que não seja uma distro linux, no caso do meu pc, ou a LinageOS, no meu
|
||||
celular.
|
||||
|
||||
O KeePassXC havia lançado a +/- 2 meses atrás uma função que te permite
|
||||
criar passkeys utilizando o próprio KeePassXC, o que elimina a
|
||||
necessidade de um celular com a Google impregnada ou um iPhone.
|
||||
Óbviamente eu já passei a limpa em todas as contas que eu usava uma
|
||||
passkey da Google e gerei novas usando o KeePassXC.
|
||||
|
||||
Tudo isso me deixa cada vez menos dependente do Google, o que é algo que
|
||||
sinceramente qualquer pessoa deveria tentar fazer. Não só com o Google,
|
||||
mas com basicamente qualquer uma dessas empresas que até um idoso de 90
|
||||
anos reconhece de tão popular.
|
||||
|
||||
## *Fin*
|
||||
|
||||
Enfim, acho que já tagarelei demais.
|
||||
|
||||
Até o próximo post!
|
72
content/2024-10-05_fiz-meu-próprio-ssg.md
Normal file
72
content/2024-10-05_fiz-meu-próprio-ssg.md
Normal file
|
@ -0,0 +1,72 @@
|
|||
# Fiz meu próprio SSG
|
||||
Dos produtores de "Ovorefazermeusaite", vêm aí "E se eu fizer meu
|
||||
próprio gerador de sites?"!
|
||||
|
||||
Agora falando sério, eu realmente fiz o meu próprio SSG (Static Site
|
||||
Generator).
|
||||
|
||||
Ele não é nada demais, na realidade ele não é muito diferente dos
|
||||
scripts que eu fazia para conseguir criar um post novo de forma mais
|
||||
rápida, a diferença fica só na sofisticação do script e um pouco da
|
||||
forma em que ele opera.
|
||||
|
||||
## Geração de site rápida pra k7
|
||||
|
||||
Uma coisa que é extremamente notável é a diferença na hora de fazer a
|
||||
geração do site. É simplesmente absurdo. É como comparar a velocidade de
|
||||
um jogo feito em C, para um feito em JavaScript.
|
||||
|
||||
No Emacs, a geração do site feito em org-mode leva uma coisa de 2 a 4
|
||||
segundos, o que é relativamente rápido, porém, o meu script leva
|
||||
aproximadamente 0.071 segundos para fazer a mesma coisa.
|
||||
|
||||
Tudo bem, eu não tenho uma tabela de conteúdo e nem o syntax
|
||||
highlighting, porém, essas são coisas que eu estou disposto a descartar
|
||||
se significar que eu vou ter uma geração de páginas dezenas de vezes
|
||||
mais rápida.
|
||||
|
||||
## Por debaixo dos panos
|
||||
|
||||
O script possui um comando que cuida da criação da estrutura de arquivos
|
||||
e um que "compila" o site com base nessa estrutura. Como você faz para
|
||||
usar essa estrutura de arquivos e quais as regras impostas pelo script
|
||||
podem ser achadas no readme que é gerado junto do website
|
||||
|
||||
Todos os arquivos dentro do diretório content são lidos pelo smu,
|
||||
programa que é utilizado para converter um texto no estilo Markdown para
|
||||
HTML.
|
||||
|
||||
O smu não tem suporte para tudo o que o Markdown tem a oferecer, porém
|
||||
ele aceita o uso de tags HTML, então tudo o que o smu não tiver suporte
|
||||
pode ser substituído por uma tag.
|
||||
|
||||
## Por que?
|
||||
|
||||
Eu fiz isso puramente para ver se eu conseguiria fazer um SSG, e, se
|
||||
tratando de funcionalidade básica, eu consegui sem nenhum problema.
|
||||
|
||||
Mas um outro ponto que me fez fazer isso foi o Neovim... Olha, eu não
|
||||
sei se isso é algum tipo de apego ou algo do gênero, mas eu simplesmente
|
||||
fiquei com saudades de usar o meu Neovim.
|
||||
|
||||
A configuração que eu tenho é
|
||||
equivalente à minha configuração do Emacs, não em todos os aspectos, mas
|
||||
quando se trata de edição de texto/código, ambos são quase os mesmos,
|
||||
porém o Neovim ainda leva a vantagem, porque o Neovim tem suporte ao LSP
|
||||
(Language Server Protocol), o que faz com que o auto-complete do Neovim
|
||||
seja muito mais versátil e preciso do que usar o company-mode no Emacs.
|
||||
|
||||
Outra coisa que eu consigo fazer agora que eu fiz o meu próprio SSG é
|
||||
usar ele em conjunto com o Neovim ou qualquer outro editor de texto que
|
||||
eu queira, basta eu salvar o arquivo e digitar o comando:
|
||||
|
||||
blog.sh build
|
||||
|
||||
Tudo o que eu preciso fazer agora é ficar de olho em qualquer bug que
|
||||
possa aparecer.
|
||||
|
||||
## *Fin*
|
||||
|
||||
Enfim, é isso o que eu tinha para falar por agora.
|
||||
|
||||
Te vejo no próximo post!
|
135
content/2024-10-12_emacs.md
Normal file
135
content/2024-10-12_emacs.md
Normal file
|
@ -0,0 +1,135 @@
|
|||
# Emacs
|
||||
Olha só quem voltou! E mais uma vez com o site completamente mudado!
|
||||
|
||||
Pois é, estou de volta, e dessa vez trago comigo algumas novidades em
|
||||
relação ao site e ao meu setup atual (spoiler: tá tudo no Emacs).
|
||||
|
||||
## Emacs, que saudades que estava de você!
|
||||
|
||||
A um tempo eu vim tendo essa vontade de voltar a usar o Emacs, mas a
|
||||
preguiça de ter que refazer a minha config do 0 era muito grande, até
|
||||
que bem, vamos dizer que o hiperfoco atacou e eu refiz a minha
|
||||
configuração de qualquer jeito.
|
||||
|
||||
A maior diferença é que eu já tenho alguma experiência no assunto, então
|
||||
não tive muita dificuldade em fazer essa nova config. Posso inclusive
|
||||
dizer que esta é, até o momento, a melhor configuração que eu já fiz até
|
||||
agora.
|
||||
|
||||
## Org-mode, o criador de sites mais prático que conheço
|
||||
|
||||
Apesar de ter usado diversos SSGg's nos últimos tempos, nenhum deles
|
||||
possui a praticidade de simplesmente gerar uma página HTML a partir de
|
||||
um buffer que esteja aberto no seu editor com a mesma facilidade que o
|
||||
Emacs junto do Org-mode conseguem ter.
|
||||
|
||||
Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
|
||||
sites nativa do Emacs.
|
||||
|
||||
## Zero JavaScript
|
||||
|
||||
Mais uma vez, estou com 0 JS presente neste site, o que por si só já é
|
||||
uma conquista e tanto, afinal, quanto menos JS, melhor.
|
||||
|
||||
E não é porque eu não tenho JS que eu perco coisas como
|
||||
*Table-of-contents* ou *Syntax-highlighting*, nada disso, ambos são
|
||||
coisas nativas do org-mode, feitos para serem utilizados e abusados.
|
||||
|
||||
Ele também é o melhor highlighter que eu já usei, porque literalmente
|
||||
qualquer coisa que eu tenha um syntax highlight no Emacs fica com o
|
||||
mesmo syntax-highlight no site gerado.
|
||||
|
||||
## Quase um SSG... Quase.
|
||||
|
||||
Apesar de tudo, o org-mode não vem com um SSG, essa função na realidade
|
||||
é uma ferramenta de publicação de artigos, tanto que o nome do pacote é
|
||||
ox-**publish**. Ainda assim, com um script simples e um pouco de elisp,
|
||||
você consegue ter um pouco do que um SSG consegue te oferecer.
|
||||
|
||||
E quando eu falo um pouco, eu não tô de sacanagem, isso é tudo o que eu
|
||||
preciso para ter meu site na forma em que eu quero:
|
||||
|
||||
*Configurando o ox-publish e automatizando o processo de criação de
|
||||
HTML.*
|
||||
|
||||
(require 'ox-publish)
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
|
||||
(package-initialize)
|
||||
(unless (package-installed-p 'use-package)
|
||||
(package-refresh-contents)
|
||||
(package-install 'use-package))
|
||||
(eval-when-compile
|
||||
(require 'use-package))
|
||||
(use-package htmlize
|
||||
:ensure t)
|
||||
(use-package kanagawa-themes
|
||||
:ensure t
|
||||
:init (load-theme 'kanagawa-wave t))
|
||||
(require 'htmlize)
|
||||
(setq org-html-head "<link rel=stylesheet href=\"/assets/css/styles.css\" />"
|
||||
org-html-head-include-default-style nil
|
||||
org-html-head-include-scripts nil
|
||||
org-html-preamble nil
|
||||
org-html-postamble nil
|
||||
org-html-use-infojs nil)
|
||||
(setq org-publish-project-alist
|
||||
(list
|
||||
(list "Tukain's Blog"
|
||||
:base-directory "./content"
|
||||
:recursive t
|
||||
:htmlized-source t
|
||||
:publishing-directory "./public"
|
||||
:section-numbers nil
|
||||
:publishing-function 'org-html-publish-to-html)))
|
||||
(org-publish-all t)
|
||||
(message "Site gerado!")
|
||||
|
||||
*Um script para executar os comandos necessários para gerar o site*
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
mkdir -p public && emacs -x build.el && cp -r assets/ public/
|
||||
|
||||
Depois disso, o único trabalho que eu tenho é de fazer um artigo e
|
||||
listá-lo na minha homepage, e pronto!
|
||||
|
||||
## Outras coisas que estão no meu Emacs
|
||||
|
||||
É mais que claro que o Emacs é conhecido por seus usuários que, em boa
|
||||
parte dos casos, transformam o Emacs em um sistema operacional
|
||||
praticamente. E eu não sou muito diferente deles 🤓.
|
||||
|
||||
Atualmente eu já configurei o Emacs o suficiente para substituir a minha
|
||||
configuração do Neovim, e também configurei coisas como:
|
||||
|
||||
- Um servidor HTTP (para visualizar o meu site localmente)
|
||||
- Um agente PGP (EasyPG).
|
||||
- Um cliente de email (Gnus)
|
||||
- Uma interface para o Git (Magit)
|
||||
- Um leitor de feeds RSS (Elfeed)
|
||||
|
||||
Também estou vendo como configurar um cliente Jabber (XMPP) e vou
|
||||
configurar o Erc (o cliente IRC nativo do Emacs). Há também outras
|
||||
coisas que eu quero fazer, mas não acho que seja necessário falar sobre
|
||||
elas, afinal já estou tagarelando demais.
|
||||
|
||||
## Aos poucos, estou deixando o meu setup ser apenas um ambiente onde eu possa usar o Emacs
|
||||
|
||||
Eu ainda não iniciei o meu arco Uchirra da vida e saí eliminando meus
|
||||
programas, ainda.
|
||||
|
||||
Eu já tenho em mente o que eu quero fazer e como eu vou fazer para
|
||||
conseguir transformar o meu setup atual em algo que serve apenas para
|
||||
acomodar o Emacs. Alguns programas que eu posso remover, por exemplo,
|
||||
são o Lazygit (Porque eu já tenho o Magit) e o lf (Porque o Emacs vem
|
||||
com o Dired).
|
||||
|
||||
Mas vou deixar para fazer isso outra hora, afinal de contas isso vai
|
||||
tomar um pouco do meu tempo para poder concluir.
|
||||
|
||||
## *Fin*
|
||||
|
||||
Enfim, acho que já é hora de eu para de ficar tagarelando.
|
||||
|
||||
Te vejo no próximo post!
|
113
content/2024-10-18_emacs-parte-2.md
Normal file
113
content/2024-10-18_emacs-parte-2.md
Normal file
|
@ -0,0 +1,113 @@
|
|||
# Emacs - Parte 2
|
||||
Hmmm... Parte 2? Hmmm...
|
||||
|
||||
Bem, eu não acho que isso vá ser um post longo ou que vá adicionar muito
|
||||
ao [post original](./emacs.html), então você pode ignorar ele a vontade.
|
||||
|
||||
## Sobre o "ambiente onde eu possa usar o Emacs"
|
||||
|
||||
Então, eu já consegui fazer um. É meio que feito na gambiarra, mas
|
||||
funciona.
|
||||
|
||||
Eu estou utilizando o compositor wayland Cage, um compositor que tem o
|
||||
objetivo de ser uma ferramenta para criação de kioskg's. Tipo um kiosk
|
||||
onde tem um menu de restaurante e etc.
|
||||
|
||||
Porém, como eu posso rodar qualquer programa que eu quiser nele, então
|
||||
nada melhor do que fazer um "kiosk" com o Emacs!
|
||||
|
||||
O resultado dessa monstruosidade é um Emacs rodando em tela cheia com um
|
||||
teclado inteiro a disposição para ser usado sem ter algum outro elemento
|
||||
que possa ter teclas de atalho conflitantes com as do Emacs.
|
||||
|
||||
Simplificando, eu posso usar até mesmo a tecla super (Windows) se eu
|
||||
quiser e eu vou estar de boa.
|
||||
|
||||
## O que mais adicionei à minha configuração do Emacs?
|
||||
|
||||
Teclas de atalho novas, como por exemplo, teclas para:
|
||||
|
||||
- Aumentar/diminuir o brilho da tela do meu notebook;
|
||||
- Aumentar/diminuir o volume do meu notebook;
|
||||
- Capturar a tela do Emacs ([usando o próprio
|
||||
emacs](https://gitlab.com/marcowahl/emacsshot)).
|
||||
- Gravar a tela
|
||||
|
||||
Também deixei habilitados por padrão 2 minor-modes do Emacs que são
|
||||
pré-instalados (por alguma razão), eles são o `display-battery-mode`, e
|
||||
`display-time-mode`. Ambos são minor-modes que poem seu output na barra
|
||||
do Emacs (eu não faço ideia de qual é o nome oficial dessa bagaça), o
|
||||
que significa que a barra do Emacs se tornou o equivalente à barra do
|
||||
Sway, o meu compositor wayland favorito.
|
||||
|
||||
## Org-publish é praticamente um SSG
|
||||
|
||||
Eu sei que eu já comentei algo parecido com isso no meu [outro
|
||||
post](./emacs.html):
|
||||
|
||||
> Apesar de ter usado diversos SSGg's nos últimos tempos, nenhum deles
|
||||
> possui a praticidade de simplesmente gerar uma página HTML a partir de
|
||||
> um buffer que esteja aberto no seu editor com a mesma facilidade que o
|
||||
> Emacs junto do Org-mode conseguem ter.
|
||||
>
|
||||
> Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
|
||||
> sites nativa do Emacs.
|
||||
|
||||
Mas acho que eu não consegui transparecer o quão prático e simples é o
|
||||
processo de escrever e "publicar" o que foi escrito.
|
||||
|
||||
Se você já usou um SSG como por exemplo o Jekyll, você pode interpretar
|
||||
o org-publish como uma template do Jekyll em que você pode fazer algumas
|
||||
modificações e que não tem muitas automações por parte dela.
|
||||
|
||||
Todas as páginas seguem um padrão pré-definido, todas.
|
||||
|
||||
Ou seja, você pode usar o seu CSS pensando somente em 1 página, porque
|
||||
todas as outras vão ser clones dessa página em que você está se
|
||||
inspirando.
|
||||
|
||||
Um bom exemplo disso é esse próprio site. Se você observar bem, não
|
||||
existe muito uma grande diferença entre a página de um post e a página
|
||||
de index. Na verdade a única diferença é a falta de uma tabela de
|
||||
conteúdo na página index.
|
||||
|
||||
Outra coisa também que eu encontrei, depois de xeretar um pouco na
|
||||
inter-webs, eu encontrei algumas características interessantes sobre o
|
||||
ox-publish. Uma delas é que as variáveis que criam o preâmbulo e o
|
||||
pós-âmbulo da página (são uns bagulho de autor e de validação da página)
|
||||
podem ser modificadas para qualquer string que o usuário prefira. Ou
|
||||
seja, eu posso colocar meu próprio HTML nelas!
|
||||
|
||||
O que em termos práticos, faz com que o ox-publish faça o que eu achava
|
||||
que era a maior utilidade de um SSG: re-utilizar um elemento de uma
|
||||
página em todas as outras.
|
||||
|
||||
Por enquanto eu só adicionei uma footer com o nome do author do artigo e
|
||||
com a data de última modificação do arquivo (sim, esse bagulho tem até
|
||||
variáveis que você pode usar).
|
||||
|
||||
## A site é praticamente um espelho da minha config
|
||||
|
||||
O meu site e o meu Emacs possuem uma aparência muito similar, o que é
|
||||
proposital, já que dessa forma eu consigo ter uma certa noção de como
|
||||
meu site vai ficar, tirando a necessidade de usar um navegador para
|
||||
visualizar a página do meu site.
|
||||
|
||||
Não é que eu não veja como a página fica, mas eu não tenho a necessidade
|
||||
de ver como ele fica.
|
||||
|
||||
Melhor do que só mencionar é mostrar, então aqui está uma screenshot do
|
||||
meu Emacs:
|
||||
|
||||
![](../assets/img/emacs-parte-2.webp)
|
||||
|
||||
Não é um completo clone 1 por 1, mas pelo menos eles tem certa
|
||||
semelhança, dessa maneira eu consigo me concentrar apenas em escrever
|
||||
com tranquilidade, afinal de contas o site final é extremamente
|
||||
semelhante ao o que eu já estou vendo no editor.
|
||||
|
||||
## *Fin*
|
||||
|
||||
Bem, é isso. Eu falei que esse posts seria algo rápido.
|
||||
|
||||
Enfim, até o próximo post!
|
76
content/2024-10-23_viper-mode.md
Normal file
76
content/2024-10-23_viper-mode.md
Normal file
|
@ -0,0 +1,76 @@
|
|||
# Viper mode
|
||||
|
||||
Esse mostro de um programa é tão cheio de coisa para se falar que já
|
||||
garantiu até uma trilogia nesse blog.
|
||||
|
||||
## Viper
|
||||
|
||||
A um pouco mais de 3 horas atrás, enquanto eu ainda estava no meu
|
||||
trabalho, eu fiquei pesquisando um pouco sobre o Emacs, e eu acabei
|
||||
achando o diretório de manuais de referência dele. Dois deles me
|
||||
chamaram (e muito) a minha atenção, os manuais de referência do vip-mode
|
||||
e do `viper-mode`.
|
||||
|
||||
Obviamente que quando eu vi esses manuais eu cliquei neles para ver do
|
||||
que eles se tratavam, e bom, eles são modos que emulam os controles do
|
||||
VI, o editor de texto modal que vem com qualquer sistema Unix e que foi
|
||||
dele que surgiu o Vim (VI iMproved).
|
||||
|
||||
Eu decidi usar o `viper` no lugar do vip só porque ele
|
||||
aparenta ser uma opção mais completa em comparação. Ele chega no nível
|
||||
de até mesmo ter um mini-tutorial e um wizard perguntando qual o seu
|
||||
nível de expertise com ele.
|
||||
|
||||
## Bem, e como é usar ele?
|
||||
|
||||
Como já disse, o `viper` emula o VI e não o Vim (isso é o que
|
||||
o evil-mode faz), sendo assim ele não tem as mesmas teclas/comandos que
|
||||
o Vim possui. Porém, você ainda pode usar as teclas do Emacs em conjunto
|
||||
com as teclas do VI, o que mais que compensa, **na minha opinião**, a
|
||||
falta das teclas do Vim.
|
||||
|
||||
Só de ter uma parte das teclas que são usadas no Vim já torna a minha
|
||||
experiência muito melhor. Afinal, apesar do Emacs ser um programa que é
|
||||
ótimo em diversos aspectos, as teclas de atalho dele não são
|
||||
particularmente um ponto positivo dele.
|
||||
|
||||
E é claro que como tudo no Emacs, eu posso customizar o
|
||||
`viper` e adicionar os comandos que eu acho extremamente
|
||||
úteis do Vim, no `viper`, criando assim um Frankenstein que
|
||||
nunca deveria ter nascido.
|
||||
|
||||
A minha configuração dele, inclusive, está bem modesta, com poucas
|
||||
linhas de código, mas já são o suficiente para deixar o meu uso do Emacs
|
||||
10 vezes mais aconchegante.
|
||||
|
||||
(setq viper-mode t)
|
||||
(require 'viper)
|
||||
(setq viper-inhibit-startup-message 't)
|
||||
(setq viper-expert-level '5)
|
||||
(setq viper-want-ctl-h-help t)
|
||||
(setq viper-ex-style-editing nil)
|
||||
(setq viper-no-multiple-ESC nil)
|
||||
(setq viper-syntax-preference 'extended)
|
||||
(setq viper-vi-style-in-minibuffer nil)
|
||||
(define-key viper-vi-basic-map (kbd "v") 'set-mark-command)
|
||||
(define-key viper-vi-basic-map (kbd "f") 'find-file)
|
||||
(define-key viper-vi-basic-map (kbd "R") 'replace-rectangle)
|
||||
(define-key viper-vi-basic-map (kbd "C-v") 'rectangle-mark-mode)
|
||||
(define-key viper-vi-basic-map (kbd "x") 'kill-region)
|
||||
(viper-mode)
|
||||
|
||||
Como eu disse, ainda está bem modesta. Apesar de que só tacar um bloco
|
||||
de código do nada não explica direito o que está acontecendo, Elisp é
|
||||
uma linguagem bem simples de entender, então eu acho que não vai ser tão
|
||||
problemático assim.
|
||||
|
||||
Mas, basicamente eu só ativei o `viper-mode` e configurei 5
|
||||
teclas de atalho que "emulam" algumas teclas que eu uso no Neovim. Não
|
||||
são completamente idênticas, mas já dão conta do recado.
|
||||
|
||||
## *Fin*
|
||||
|
||||
Bom, é isso, acho que por agora eu não tenho mais o que falar sobre esse
|
||||
lindo programa chamado Emacs.
|
||||
|
||||
Até o próximo post!
|
71
content/2024-10-26_god-mode.md
Normal file
71
content/2024-10-26_god-mode.md
Normal file
|
@ -0,0 +1,71 @@
|
|||
# God mode
|
||||
|
||||
Pois é, depois de ter feito um SSG próprio e ter dedicado um post para
|
||||
ele, cá estou aqui novamente, usando o Emacs, porém dessa vez não estou
|
||||
usando o `viper-mode`, não não, dessa vez eu estou usando
|
||||
algo mais... *abençoado?*
|
||||
|
||||
## God mode
|
||||
|
||||
O nome é um pouco exagerado, mas isso não significa que ele não é algo
|
||||
que melhora **E MUITO** no uso do Emacs.
|
||||
|
||||
Ele basicamente faz isso aqui com o `Ctrl` e
|
||||
`Alt`:
|
||||
|
||||
![](https://i.makeagif.com/media/5-05-2024/1KNCKC.gif)
|
||||
|
||||
Isso não é exagero, basicamente qualquer *key-chord* do emacs pode ser
|
||||
escrita sem a necessidade de usar algum modificador como o
|
||||
`Ctrl`, ou os dois ao mesmo tempo (como por
|
||||
exemplo a key-chord para selecionar uma palavra abaixo do cursor:
|
||||
`Ctrl Alt Espaço`).
|
||||
|
||||
A consequência disso é bem direta ao ponto na realidade, primeiro que
|
||||
você não tem mais o risco de adquirir uma
|
||||
[L.E.R](https://pt.wikipedia.org/wiki/Les%C3%A3o_por_esfor%C3%A7o_repetitivo)
|
||||
da vida por ficar apertando o `Ctrl` como se não houvesse
|
||||
amanhã, segundo que, caso você tenha uma memória muscular boa, é
|
||||
possível ter um workflow tão eficiente quanto (senão até mais) um
|
||||
Vim-like. E isso inclui o `Evil-mode`, que faz com que o
|
||||
Emacs se comporte como o Vim, se tratando de teclas de atalho.
|
||||
|
||||
## E quanto ao [blog.sh](https://codeberg.org/tukain/blog.sh)?
|
||||
|
||||
Tendo em vista que eu já estou usando o `org-mode` novamente
|
||||
para desenvolver o meu site, o futuro dele é incerto. Ele é algo que eu
|
||||
fiz em um momento de hiperfoco extremamente aleatório e também enquanto
|
||||
eu estava entediado e procurando algo para me divertir.
|
||||
|
||||
Mas não posso garantir nada, da mesma forma que eu já fiz e refiz o meu
|
||||
site centenas de vezes, eu posso voltar a usar o `blog.sh`
|
||||
novamente, mas no momento, eu prefiro continuar com o
|
||||
`org-mode`.
|
||||
|
||||
## O estilo do site
|
||||
|
||||
Vira e mexe eu me pego observando como o design do site está. A minha
|
||||
ideia com o estilo dele é ser o mais flexível possível, enquanto ao
|
||||
mesmo tempo seja minimalista, legível, e claro, agradável aos olhos.
|
||||
|
||||
A consequência disso foi um site que, não importando a página, parece
|
||||
algum artigo de site de notícias quando visto usando a função de leitura
|
||||
de alguns navegadores.
|
||||
|
||||
Eu já tenho umas ideias sobre o que eu posso fazer para dar um pequeno
|
||||
upgrade na aparência, sem ser algo extremamente radical (como foram as
|
||||
últimas mudanças nesse site).
|
||||
|
||||
Em relação ao tema que eu uso (Kanagawa Wave), eu não sei dizer por
|
||||
quanto tempo ele vai durar, já uso ele a +/- 3 semanas, mas não chega
|
||||
perto dos meses que eu fiquei usando o Gruvbox em tudo.
|
||||
|
||||
Enfim, isso é uma incógnita que eu prefiro não saber quando deixará de
|
||||
ser uma, afinal de contas, no momento em que eu estou escrevendo este
|
||||
post, a Kanagawa Wave é a minha nova favorita.
|
||||
|
||||
## *Fin*
|
||||
|
||||
Enfim, chega de ficar tagarelando com coisas que ninguém liga.
|
||||
|
||||
Até o próximo post!
|
303
content/2024-10-29_vale-da-estranheza.md
Normal file
303
content/2024-10-29_vale-da-estranheza.md
Normal file
|
@ -0,0 +1,303 @@
|
|||
# Vale da estranheza
|
||||
|
||||
Esse é um assunto que volta e meia me vem à cabeça. Mas, por qual razão?
|
||||
Bem, os motivos são vários na realidade. Seja no meu consumo de mídia,
|
||||
pela minha navegação na internet ou então até mesmo na vida real, o tal
|
||||
chamado "Vale da estranheza" sempre se mostra uma hora ou outra.
|
||||
|
||||
O curioso disso é como ele é retradado em várias formas de
|
||||
entretenimento. Filmes, séries, animes, jogos, todos eles têm um aspecto
|
||||
principal idêntico na maioria das vezes: O terror.
|
||||
|
||||
## Eu não sou um cara que curte terror
|
||||
|
||||
não, nada disso, muito pelo contrário, eu sou do tipo que prefere
|
||||
assitir uma comédia romântica à ter que assitir um filme de terror. Mas,
|
||||
esse sub-gênero (e outros como ele) me atrai. Isso é algo difícil de
|
||||
explicar, porém tenho certeza que não sou o único a pensar assim: Apesar
|
||||
de dar calafrios, eu tenho uma curiosidade que aumenta cada vez mais.
|
||||
|
||||
A minha primeira exposição ao vale da estranheza foi, provavelmente como
|
||||
muitas outras pessoas, com o meme do senhor incrível.
|
||||
|
||||
![](../assets/img/sr_incrivel.png)
|
||||
|
||||
É óbvio que esse meme não é a **melhor** representação do Vale da
|
||||
estranheza, mas ele já é uma boa demonstração do que ele pode ser. O
|
||||
sentimento que imagens do Vale da estranheza proporcionam é o de...
|
||||
desconforto. Pelo menos no meu caso esse é o sentimento. Algo que está
|
||||
errado, de alguma forma, e você consegue perceber, porém, ele também te
|
||||
lembra algo que não lhe é estranho, mundano, comum. Esse conflito gera
|
||||
esse desconforto esquisito.
|
||||
|
||||
Esse meme ficou popular, e por consequência eu consumi muitos vídeos no
|
||||
youtube contendo esse meme, fazendo assim com que o algorítimo me
|
||||
recomendasse vídeos contendo temas relacionados e afins. Então, eu foi
|
||||
exposto à um outro gênero similar ao Vale: Os espaços liminares. Depois
|
||||
eu comento mais sobre eles.
|
||||
|
||||
Apesar disso, eu, por algum motivo que só Deus sabe, tenho um interesse
|
||||
nesse estilo de terror, e em outros estilos similares/derivados dele.
|
||||
|
||||
Isso me torna alguém que gosta de terror mas só não quer admitir?
|
||||
Provavelmente. Mas estamos na internet e são poucos os que querem ser
|
||||
coerentes por aqui.
|
||||
|
||||
## A presença do Vale da estranheza na mídia que consumo
|
||||
|
||||
### Jogos
|
||||
|
||||
Uns meses atrás, eu comecei a jogar [Silent
|
||||
Hill](https://en.wikipedia.org/wiki/Silent_Hill_(video_game)), um
|
||||
clássico do Playstation 1. O jogo constantemente te dá calafrios por
|
||||
toda a gameplay. É um ótimo exemplo do que é possível fazer mesmo tendo
|
||||
diversas limitações. No caso, um exemplo de como fazer alguém infartar.
|
||||
|
||||
Devido às limitações da época, existe uma presença fortíssima de
|
||||
compressão de alguns assets, como por exemplo, as texturas e os efeitos
|
||||
sonoros. No caso das texturas, em alguns momentos é difícil até mesmo
|
||||
dizer se o que tá na sua frente é uma mancha de sujeira, uma queimadura
|
||||
ou então até mesmo sangue ressecado. Literalmente o seu cérebo é quem
|
||||
vai decidir da hora.
|
||||
|
||||
![](../assets/img/SH1_rifle.jpg)
|
||||
|
||||
Outra coisa boa a se comentar é a visão extremamente limitada. Isso é
|
||||
uma limitação do próprio hardware do Playstation, mas a equipe que fez
|
||||
Silent Hill contornou isso e transformou em parte da gameplay. E olha,
|
||||
se tem uma coisa que me assusta, é não saber se o que tá na minha frente
|
||||
é um ser humano, ou outra coisa que provavelmente não tá afim de
|
||||
conversar.
|
||||
|
||||
![](../assets/img/silent_hill_screenshot_03.jpg)
|
||||
|
||||
Infelizmente eu perdi o meu save do jogo, eu estava na seção do parque
|
||||
de diversões, por conta da frustração de ter perdido o save e também por
|
||||
preguiça de ter que jogar tudo de novo, eu acabei não jogando mais.
|
||||
Porém, esse jogo tem o meu respeito. Ele tem pouquíssimos jumpscares, a
|
||||
maior parte da gameplay ele simplesmente ataca a sua ansiedade e te
|
||||
deixa apreensivo, mas ainda assim ele sabe dosar, e muito bem, quando
|
||||
ele deve fazer o seu coração bater um tanto mais rápido.
|
||||
|
||||
### Animes
|
||||
|
||||
Mais recentemente foi lançado na Netflix a adaptação do mangá
|
||||
[Dandadan](https://en.wikipedia.org/wiki/Dandadan), mas eu não o conheci
|
||||
por trailers ou por que me foi recomendado na home da Netflix. Eu fui
|
||||
apresentado à esse mangá por meio de um youtuber que acompanho, o
|
||||
[Naythf](https://www.youtube.com/@CentralNaythf).
|
||||
|
||||
[No vídeo que ele comenta sobre
|
||||
Dandadan](https://youtu.be/eUQiwNVp6MU?si=M4N2eF5DmrYD7ZFp), o Naythf
|
||||
fala sobre vários aspectos do mangá, como por exemplo os temas abordados
|
||||
e gêneros da obra. O curioso para mim foi a parte de terror do mangá. No
|
||||
maior estilo [Junji Ito](https://en.wikipedia.org/wiki/Junji_Ito), as
|
||||
partes de terror focam (e muito) na estranheza. Não sei dizer se chega a
|
||||
poder ser considerado algo do Vale, mas no mínimo chega perto.
|
||||
|
||||
![](../assets/img/dandadan-manga-primo-capitolo-05.jpg)
|
||||
|
||||
Uma outra aparição de algo que me lembra o vale da estranheza foi no
|
||||
anime [Chainsaw Man](https://en.wikipedia.org/wiki/Chainsaw_Man), no
|
||||
caso em uma de suas finalizações de episódio. Para ser mais exato, na
|
||||
[5ª finalização](https://www.youtube.com/watch?v=ymQ3wEIq84Y).
|
||||
|
||||
![](../assets/img/chainsaw-man-ending-5.webp)
|
||||
|
||||
Sei que a intenção não era exatamente o Vale, mas ainda assim não
|
||||
consigo assistir essa finalização sem fazer essa comparação.
|
||||
|
||||
Todo o cenário e a ambientação em que os personagens estão me lembram
|
||||
também os Espaços Liminares. Não seria uma surpresa para mim se essa
|
||||
semelhança fosse intencional, afinal, tanto o anime quanto os Espaços
|
||||
Liminares ficaram em alta +/- na mesma época.
|
||||
|
||||
## Espaços liminares
|
||||
|
||||
Os espaços liminares tomam um rumo semelhante ao Vale, porém ele se
|
||||
diverge em um ponto: Na ambientação.
|
||||
|
||||
A ambientação dos espaços liminares é bem característica, são lugares
|
||||
que você espera que vá ter algo ou alguém por lá, mas, não há nada.
|
||||
Somente o que foi deixado por lá.
|
||||
|
||||
Sinceramente esse gênero de terror é o que mais me dá medo, por quê
|
||||
diferente de um alien vestido de ser humano e um cachorro assassino sem
|
||||
pele, um espaço liminar é perfeitamente possível na vida real. Na
|
||||
realidade eles não são possíveis, eles **existem**.
|
||||
|
||||
Essa é a parte que mais pega nos meus nervos. O fato de você não só ver
|
||||
ou achar, mas até mesmo de você ter alguma lembrança com o local. Como
|
||||
por exemplo, um parque aquático abandonado. Apesar de nunca ter ido a um
|
||||
pessoalmente, até mesmo eu fico com calafrios em ver algo como isso:
|
||||
|
||||
![](../assets/img/liminal.webp)
|
||||
|
||||
Não tem nada de errado com o local em si, nem com a imagem, porém, ainda
|
||||
assim, algo parece estar errado.
|
||||
|
||||
Uma explicação dada por muitas pessoas na internet é a de que o motivo
|
||||
desse desconforto vêm do fato de você esperar vem alguém na foto, por
|
||||
ser um local público e por você sempre ver um local como esse, populado.
|
||||
|
||||
A verdade é que cada pessoa tem uma reação à espaços como esses, no meu
|
||||
caso eu sinto calafrios, quase como se tivesse algo a mais na foto, mas
|
||||
que eu não estou enxergando, para outras pessoas, é só uma foto de um
|
||||
lugar vazio.
|
||||
|
||||
Mas sem sombra de dúvidas, uma das modas da internet relacionada a esse
|
||||
tema que mais me intrigou foram as
|
||||
[Backrooms](https://en.wikipedia.org/wiki/The_Backrooms).
|
||||
|
||||
## The Backrooms
|
||||
|
||||
![](../assets/img/HobbyTown_USA_Oshkosh_interior_under_construction_2002_(The_Backrooms).jpg)
|
||||
|
||||
Tudo começou com um post na aba paranormal do 4chan, a mensagem do
|
||||
usuário em si não tinha nada de mais, porém a resposta é uma coisa
|
||||
completamente a parte.
|
||||
|
||||
> If you're not careful and you noclip out of reality in the wrong
|
||||
> areas, you'll end up in the Backrooms, where it's nothing but the
|
||||
> stink of old moist carpet, the madness of mono-yellow, the endless
|
||||
> background noise of fluorescent lights at maximum hum-buzz, and
|
||||
> approximately six hundred million square miles of randomly segmented
|
||||
> empty rooms to be trapped in
|
||||
>
|
||||
> God save you if you hear something wandering around nearby, because it
|
||||
> sure as hell has heard you
|
||||
|
||||
E é com essa resposta que nasce um fenômeno na internet, um
|
||||
[ARG](https://en.wikipedia.org/wiki/Alternate_reality_game), e claro,
|
||||
uma fandom.
|
||||
|
||||
O que mais me deixou intrigado foi a semelhança dos ARG's de The
|
||||
Backrooms com a [SCP
|
||||
Foundation](https://en.wikipedia.org/wiki/SCP_Foundation). Cada sala em
|
||||
The Backrooms tem um padrão, um método a seguir para conseguir fugir, e
|
||||
claro, algum tipo de anomalia presente. Seja ela uma criatura humanoide
|
||||
ou até mesmo um sorriso flutuante.
|
||||
|
||||
The Backrooms ficou tão popular que ultrapassou o gênero de [Analog
|
||||
Horror](https://en.wikipedia.org/wiki/Analog_horror) (o meu gênero
|
||||
favorito de terror). Diversos criadores de conteúdo fizeram vídeos
|
||||
comentando sobre, teorizando, fazendo gameplays de alguns jogos com esse
|
||||
tema.
|
||||
|
||||
### [Kane Pixels](https://www.youtube.com/c/KANEpixels)
|
||||
|
||||
Esse carinha fez as Backrooms simplesmente explodirem.
|
||||
|
||||
Durante a onda de vídeos sobre as Backrooms, os vídeos dele se
|
||||
destacavam (e muito) entre todos os outros. Seja por qualidade técnica
|
||||
ou por ambientação, os vídeos que ele produzia (e produz até hoje) são
|
||||
de cair o queixo.
|
||||
|
||||
Ele não só conseguiu fazer uma combinação de Analog Horror com The
|
||||
Backrooms, como fez isso beirando a perfeição.
|
||||
|
||||
![](../assets/img/The-Backrooms-Kane-Pixels-01.jpg)
|
||||
|
||||
Foi basicamente dos vídeos dele que surgiu a inspiração de diversos
|
||||
jogos que se vê por aí na Steam ou Itch.io.
|
||||
|
||||
![](../assets/img/smii7y_return_to_the_backrooms.webp)
|
||||
|
||||
## Analog horror
|
||||
|
||||
Bem, já que eu mencionei ele, por quê não comentar sobre?
|
||||
|
||||
Assim como The Backrooms, esse gênero ficou extremamente popular uns
|
||||
tempos atrás. Começando uma febre com vídeos do universo de
|
||||
[FNAF](https://en.wikipedia.org/wiki/Five_Nights_at_Freddy%27s), poís é,
|
||||
FNAF. A maior parte desses vídeos giravam em torno de serem fitas de uso
|
||||
interno da empresa - Fitas de treinamento, relatórios gravados,
|
||||
filmagens de segurança - e que não eram feitas para serem consumidas por
|
||||
pessoas não-autorizadas.
|
||||
|
||||
Mas sempre, de alguma forma, alguém conseguia acesso às fitas e colocava
|
||||
as gravações na internet.
|
||||
|
||||
A parte mais interessante de alguns desses vídeos era a parte técnica,
|
||||
muitos deles eram quase que um "olha só o que eu sei fazer".
|
||||
|
||||
Pois é, esse tema ficou saturado beeeeem rápido. Mas, algumas pessoas
|
||||
viram potêncial nesse estilo de terror, e decidiram criar universos
|
||||
próprios, tendo como uma base o horror analógico.
|
||||
|
||||
Coisas como [Nephthys Media](https://www.youtube.com/@blackdrag0nfish),
|
||||
que exploravam um horror cósmico, começaram a surgir. O que foi um fator
|
||||
que me fez ter interesse nesse gênero.
|
||||
|
||||
### Nephthys Media
|
||||
|
||||
![](../assets/img/hqdefault.jpg)
|
||||
|
||||
Apesar de não lembrar de praticamente nada do Nephthys Media, uma coisa
|
||||
que não tem como eu me esquecer é a atmosfera presente nele, é algo que
|
||||
me lembra os Espaços Liminares. É um desconforto constante e a impressão
|
||||
de que tem algo a mais que eu não estou enxergando.
|
||||
|
||||
Pode se dizer que esse analog horror em específico é o responsável por
|
||||
eu ter um certo medo de astros.
|
||||
|
||||
O enredo gira em torno de entidades que habitam os astros e em seus
|
||||
planos. Como disse eu não lembro de muita coisa, mas ainda assim é algo
|
||||
que eu recomendo.
|
||||
|
||||
### The Mandela Catalogue
|
||||
|
||||
Outro que ficou extremamente popular, mas que o criador perdeu a mão.
|
||||
|
||||
Ele explora a bizarrice que são
|
||||
[Doppelgängers](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger), e pelo
|
||||
menos no início da minisérie, consegue fazer isso muito bem até.
|
||||
|
||||
O maior problema do Mandela Catalogue é que o seu criador acabou
|
||||
enjoando da própria obra e quis fazer dela algo "maior". Vamos dizer
|
||||
que ele voou muito perto do sol e acabou estragando a minisérie, pelo
|
||||
menos para mim, eu já não tenho o mínimo de interesse por ela depois do
|
||||
2º capítulo.
|
||||
|
||||
![](../assets/img/catalogue-mondela-mandela-magazine.gif)
|
||||
|
||||
<center>
|
||||
<a href="https://www.youtube.com/watch?v=gk4AlxnZOYc">The Mandela Magazine</a>
|
||||
</center>
|
||||
|
||||
Uma coisa que pode ser aprendida com o caso do Mandela Catalogue é a
|
||||
seguinte: Se a sua obra se tornou popular por conta da ambientação e do
|
||||
mistério que gira em torno de algo quase que no estilo Lovecraft de
|
||||
absurdo, não transforma ela em uma minisérie de terror adolescente.
|
||||
|
||||
### The Walden Files
|
||||
|
||||
Esse me dá arrepios só de lembrar.
|
||||
|
||||
The Walden Files é um ARG que tem inspirações em FNAF e em The Mandela
|
||||
Catalogue. Porém, só somente inspirações, ele é uma obra que não só se
|
||||
destaca como também elevou o padrão do gênero de Analog Horror.
|
||||
|
||||
Ele genuinamente me dá medo. Medo ao ponto de que eu só consumi ele por
|
||||
intermédio de um youtuber, o [Pombo
|
||||
Atômico](https://www.youtube.com/@pombatomico) e de dia na maior parte
|
||||
das vezes.
|
||||
|
||||
![](../assets/img/walden_files.webp)
|
||||
|
||||
Ele também é extremamente gráfico e sonoro. Não é algo que eu
|
||||
recomendaria para a minha namorada por exemplo.
|
||||
|
||||
Mas a história que é contada... Olha, faz valer a pena. É com um dedo de
|
||||
FNAF, mas contada de uma forma coesa durante toda a obra e sem entregar
|
||||
fria e sem bandeja. Do início ao fim a sua curiosidade é instigada.
|
||||
|
||||
É uma ótima obra para se ver no Halloween. E talvez uma ótima obra para
|
||||
não assitir enquanto você está comendo alguma coisa.
|
||||
|
||||
## *Fin*
|
||||
|
||||
Bem, isso é tudo o que eu tinha a comentar por agora. O halloween está
|
||||
chegando e eu quis dar os meus 5 centávos aqui.
|
||||
|
||||
Te vejo no próximo post!
|
|
@ -1,5 +0,0 @@
|
|||
#+TITLE: Erro 404
|
||||
|
||||
#+begin_center
|
||||
A página solicitada não foi encontrada.
|
||||
#+end_center
|
|
@ -1,108 +0,0 @@
|
|||
#+TITLE: A simplicidade da C e da Hare
|
||||
|
||||
Recentemente eu fiz um post sobre os meus estudos com a linguagem de
|
||||
programação Hare, falei sobre o que eu planejo fazer com esse
|
||||
conhecimento entre outras coisas. Mas algo que eu não comentei sobre
|
||||
foi o fato de eu estar estudando Hare em conjunto com C (só mencionei
|
||||
que a sintaxe da Hare é semelhante a C).
|
||||
|
||||
* Por quê estou fazendo isso?
|
||||
|
||||
Bom, isso é algo que eu simplesmente esqueci de comentar no meu último
|
||||
post, estou fazendo isso por 2 motivos principais:
|
||||
|
||||
As sintaxes são semelhantes, então posso pegar um conhecimento novo de
|
||||
uma e levar para outra; Ambas são linguagens low-level, com foco em
|
||||
alto desempenho e possuem manipulação manual de memória, então posso
|
||||
aprender esse conceito de forma prática. Claro que existem outros
|
||||
motivos para eu fazer algo nesse estilo, mas eu não vejo a necessidade
|
||||
de listar todos eles aqui. Afinal, já é algo “estranho” para um jovem
|
||||
da minha idade ter interesse em uma “linguagem defasada e insegura”
|
||||
como a C, ao invés de querer aprender algo como Python, Ruby ou
|
||||
Javascript.
|
||||
|
||||
* Existe algum outro motivo?
|
||||
|
||||
Óbviamente que sim. Aprender C/Hare é algo como um sonho que quero, e
|
||||
posso, tornar realidade. É algo que chega perto de uma romantização,
|
||||
um sentimento que dá vontade de correr atrás, de se esforçar para
|
||||
alcança-lo.
|
||||
|
||||
Quase como você sonha em ter seu próprio carro, viver sozinho, ou
|
||||
viajar o mundo. Não é um sentimento fácil de por em palavras.
|
||||
|
||||
* Como está meu progresso até agora?
|
||||
|
||||
Bom, eu iniciei meus estudos a pouquíssimo tempo, então ainda estou em
|
||||
meus estágios iniciais. Porém já aprendi alguns conceitos básicos como
|
||||
if statements, which loop, for loop, switch-case, structs e alguns
|
||||
types também (tanto em C quanto em Hare).
|
||||
|
||||
Também comecei a fazer alguns programas extremamente simples só para
|
||||
fixar esses conceitos na minha cabeça, um exemplo desses programas é
|
||||
um programa que cria um arquivo vazio usando um nome que o usuário
|
||||
fornece.
|
||||
|
||||
#+begin_src C
|
||||
int main()
|
||||
{
|
||||
FILE *arq;
|
||||
char nome[100];
|
||||
|
||||
printf("Digite o nome do arquivo: ");
|
||||
scanf("%s", &nome[0]);
|
||||
|
||||
if (fopen(nome, "r"))
|
||||
{
|
||||
printf("O arquivo já existe.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
arq = fopen(nome, "w");
|
||||
}
|
||||
}
|
||||
#+end_src
|
||||
|
||||
#+begin_src hare
|
||||
use os;
|
||||
use bufio;
|
||||
use strings;
|
||||
|
||||
export fn main() void = {
|
||||
let arquivo = nomeDoArquivo();
|
||||
|
||||
if (os::exists(arquivo)) {
|
||||
fmt::println("Arquivo já existe.\n")!;
|
||||
} else {
|
||||
os::create(arquivo, 384)!;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
fn nomeDoArquivo() str = {
|
||||
fmt::printf("Escreva o nome do arquivo.\n:")!;
|
||||
const inputUser = bufio::read_line(os::stdin)! as []u8;
|
||||
return strings::fromutf8(inputUser)!;
|
||||
};
|
||||
#+end_src
|
||||
|
||||
* As diferenças
|
||||
|
||||
Algo que já para notar nesses exemplos é que o código em Hare é um
|
||||
pouco maior que o código em C, o motivo disso é que a Hare tem um foco
|
||||
na manipulação de erros. O que faz com que você tenha não só ter plena
|
||||
noção do que deve ser feito em caso de algum erro, mas também dizer ao
|
||||
programa o que ele vai fazer em caso de erro.
|
||||
|
||||
A consequência disso é ter um pouco mais de linhas de código
|
||||
necessárias e também mais símbolos para serem utilizados durante a
|
||||
escrita do programa.
|
||||
|
||||
Apesar disso, eu acho a sintaxe da Hare mais legível que a C em alguns
|
||||
casos, como por exemplo na criação e utilização de structs.
|
||||
|
||||
* /Fin/
|
||||
|
||||
Bem, isso é tudo o que eu tenho a dizer por agora.
|
||||
|
||||
Até o próximo post!
|
|
@ -1,87 +0,0 @@
|
|||
#+TITLE: De novo no Emacs
|
||||
|
||||
E lá vamos nós de novo, em mais um post que só demonstra o quanto que eu necessito me tratar.
|
||||
|
||||
* Eu não consigo
|
||||
Mesmo depois de criar o meu próprio [[https://tukain.codeberg.page/tukain/blog.sh][SSG]], mesmo depois de ter reconfigurado o meu setup para que eu não precisasse mais do Emacs, mesmo depois de eu ter feito melhorias no meu Neovim, mesmo depois de tudo o que eu fiz nos últimos dias, cá estou eu, usando o Emacs de novo.
|
||||
|
||||
Eu não sei que síndrome de Stockolmo (definitivamente não é assim que se escreve) é essa que me assola, mas eu simplesmente não consigo, eu sempre volto a usar esse editor que é apenas 2 anos mais novo que o meu pai.
|
||||
|
||||
Eu sempre volto a usar esse trambolho lerdo e configurado com uma linguagem que é utilizada somente nele.
|
||||
|
||||
Eu sempre volto a refazer o meu site usando ele.
|
||||
|
||||
Eu sempre volto a fazer minhas anotações nele.
|
||||
|
||||
Eu não sei mais o que fazer para sair dele. (Não venha com papo de apertar =Ctrl x=, =Ctrl c= perto de mim não, fazendo favor).
|
||||
|
||||
* Sim, eu refiz (pela terceira vez) o meu site usando org-mode
|
||||
Essa é a parte que genuinamente mais me assusta, porque simplesmente não tem como uma pessoa em sã consciência ficar fazendo o que eu faço comigo mesmo, se tratando de um site, é claro. Eu é que não vou querer duvidar das coisas que as pessoas fazem.
|
||||
|
||||
Eu sinceramente nem sei muito bem o que dizer, afinal o resultado final não difere muito do resultado final do meu SSG. O que é proposital, até porque o meu SSG foi criado com o intuíto de ser o meu escapismo de utilizar o org-mode para fazer o meu site.
|
||||
|
||||
Mas acabou que no final das contas, eu voltei a usar o org-mode.
|
||||
|
||||
* Eu não estou usando o Emacs apenas na minha máquina
|
||||
Um dos motivos de eu ter voltado a usar o Emacs é bem direto ao ponto:
|
||||
Eu nunca deixei de usar ele. Para ser mais exato, eu tenho uma configuração reduzida do Emacs que eu uso no computador do local onde trabalho (não tem nada haver com programação), e nos últimos dias, eu comecei a usar o Emacs como a minha "suíte office", de certa forma.
|
||||
|
||||
O que quero dizer com isso é que eu comecei a utilizar o Emacs como o meu meio predileto de criar documentos e planilhas. Bom, eu já tinha noção do quão bom era fazer documentos com o Emacs, afinal de contas o meu blog inteiro é feito utilizando o Emacs. Mas planilhas...
|
||||
|
||||
* Planilhas
|
||||
Qual a diferença de uma tabela para uma planilha? Na minha visão, são fórmulas.
|
||||
|
||||
Você usa uma tabela quando os dados que vão estar presentes nela não mudam, ou se mudam, é feito de forma manual. Agora uma planilha precisa ter uma fórmula para funcionar.
|
||||
|
||||
Digamos que você tenha uma planilha contendo todas as suas compras do mês, você poderia simplesmente sair somando cada preço e no fim ter o total que você gastou, mas ninguém tem saco pra isso. Então a solução é simples: você põe uma fórmula que faz a soma de todos os itens na colona de valores.
|
||||
|
||||
Digamos que você esteja usando o Google Sheets, a planilha poderia ser algo +/- assim:
|
||||
|
||||
#+begin_src
|
||||
| A | B |
|
||||
| Item | Valor |
|
||||
|-----------+---------------|
|
||||
| Maçã | 6 |
|
||||
| Ovos | 12 |
|
||||
| Leite | 20 |
|
||||
| Farinha | 7 |
|
||||
| Margarina | 12 |
|
||||
|-----------+---------------|
|
||||
| total | =soma(B3:B7) |
|
||||
#+end_src
|
||||
|
||||
Eu não lembro muito bem a sintaxe do Google Sheets, mas já serve de exemplo. Basicamente o que a fórmula =soma= está fazendo é... bom, fazendo uma soma dos valores que estão presentes na linha 4 da coluna B até a linha 7 da colona B, o que você veria no final seria apenas o valor que essa fórmula retornou.
|
||||
|
||||
E isso também é possível de se fazer usando o Emacs!
|
||||
|
||||
A sintaxe muda, claro, mas no final do dia, o que importa é o resultado. Usando o org-mode, a sintaxe para a mesma planilha seria:
|
||||
|
||||
#+begin_src org
|
||||
| Item | Valor |
|
||||
|-----------+-------|
|
||||
| Maçã | 6 |
|
||||
| Ovos | 12 |
|
||||
| Leite | 20 |
|
||||
| Farinha | 7 |
|
||||
| Margarina | 12 |
|
||||
|-----------+-------|
|
||||
| total | 57 |
|
||||
#+TBLFM: @>$2=vsum(@I..@II)
|
||||
#+end_src
|
||||
|
||||
A maior diferença aqui é onde a fórmula é posicionada, diferentemente do convecional, as fórmulas do org-mode ficam localizadas fora da tabela. O resto é só questão de sintaxe. "=@>=" significa "última linha de", "=$2=" representa a "segunda coluna". Não sei dizer exatamente o que significa o "=@I..@II=", porém, o que eu acho que seja é que esses I's representam os delimitadores das células (os caracters "=-=").
|
||||
|
||||
* Quais são as vantagens?
|
||||
Bom, em questão de funcionalidade básicas, ambos ótimas escolhas, dependendo do seu tipo de uso e em qual nível de usabilidade você melhor se encaixa. Porém, uma coisa que é mais que um motivo para você reconsiderar na hora de escolher fazer uma planilha usando o Google Sheets é: Todo e qualquer caractere da planilha é enviado para os servidores do Google... Bom, você já deve saber de toda essa parafernalha que é privacidade na internet.
|
||||
|
||||
Em contra-partida, você não precisa de internet para usar o Emacs, como também tem todo o conteúdo-fonte preservado em texto puro. Dessa forma é extremamente fácil de se fazer backups dos arquivos, sem se falar que com um /simples/ =Ctrl c=, =Ctrl e=, =h=, =h=, é possível gerar um arquivo HTML, pronto para ser impresso ou publicado.
|
||||
|
||||
* Se ele é bom no trabalho, então ele também é bom em casa
|
||||
Só de eu conseguir utilizar ele no trabalho tranquilamente, já demonstra o quão refinado o Emacs é. Da mesma forma que eu fiz planilhas utilizando o Emacs no meu trabalho, eu também posso fazer algumas para meu uso pessoal, em casa.
|
||||
|
||||
A minha configuração pessoal e a configuração que eu tenho no meu trabalho tem diferenças que se resumem à minha tendo um /rice/ e a do meu trabalho tendo pouquíssimas coisas que não são nativas, afinal, eu não tenho muito o porquê de fazer um rice pro Emacs que eu uso no meu trabalho.
|
||||
|
||||
Ainda estou me organizando, mas quando finalizar, até mesmo a agenda do Emacs eu vou usar (sim, essa porra tem uma agenda também).
|
||||
|
||||
* /Fin/
|
||||
Bom, é isso, até o próximo post!
|
|
@ -1,107 +0,0 @@
|
|||
#+TITLE: Emacs - Parte 2
|
||||
|
||||
Hmmm... Parte 2? Hmmm...
|
||||
|
||||
Bem, eu não acho que isso vá ser um post longo ou que vá adicionar
|
||||
muito ao [[./emacs.html][post original]], então você pode ignorar ele a vontade.
|
||||
|
||||
* Sobre o "ambiente onde eu possa usar o Emacs"
|
||||
|
||||
Então, eu já consegui fazer um. É meio que feito na gambiarra, mas
|
||||
funciona.
|
||||
|
||||
Eu estou utilizando o compositor wayland Cage, um compositor que tem o
|
||||
objetivo de ser uma ferramenta para criação de kiosk's. Tipo um kiosk
|
||||
onde tem um menu de restaurante e etc.
|
||||
|
||||
Porém, como eu posso rodar qualquer programa que eu quiser nele, então
|
||||
nada melhor do que fazer um "kiosk" com o Emacs!
|
||||
|
||||
O resultado dessa monstruosidade é um Emacs rodando em tela cheia com
|
||||
um teclado inteiro a disposição para ser usado sem ter algum outro
|
||||
elemento que possa ter teclas de atalho conflitantes com as do Emacs.
|
||||
|
||||
Simplificando, eu posso usar até mesmo a tecla super (Windows) se eu
|
||||
quiser e eu vou estar de boa.
|
||||
|
||||
* O que mais adicionei à minha configuração do Emacs?
|
||||
|
||||
Teclas de atalho novas, como por exemplo, teclas para:
|
||||
|
||||
- Aumentar/diminuir o brilho da tela do meu notebook;
|
||||
- Aumentar/diminuir o volume do meu notebook;
|
||||
- Capturar a tela do Emacs ([[https://gitlab.com/marcowahl/emacsshot][usando o próprio emacs]]).
|
||||
- Gravar a tela
|
||||
|
||||
Também deixei habilitados por padrão 2 minor-modes do Emacs que são
|
||||
pré-instalados (por alguma razão), eles são o ~display-battery-mode~,
|
||||
e ~display-time-mode~. Ambos são minor-modes que poem seu output na
|
||||
barra do Emacs (eu não faço ideia de qual é o nome oficial dessa
|
||||
bagaça), o que significa que a barra do Emacs se tornou o equivalente
|
||||
à barra do Sway, o meu compositor wayland favorito.
|
||||
|
||||
* Org-publish é praticamente um SSG
|
||||
|
||||
Eu sei que eu já comentei algo parecido com isso no meu [[./emacs.html][outro post]]:
|
||||
|
||||
#+begin_quote
|
||||
Apesar de ter usado diversos SSG's nos últimos tempos, nenhum deles
|
||||
possui a praticidade de simplesmente gerar uma página HTML a partir de
|
||||
um buffer que esteja aberto no seu editor com a mesma facilidade que o
|
||||
Emacs junto do Org-mode conseguem ter.
|
||||
|
||||
Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
|
||||
sites nativa do Emacs.
|
||||
#+end_quote
|
||||
|
||||
Mas acho que eu não consegui transparecer o quão prático e simples é o
|
||||
processo de escrever e "publicar" o que foi escrito.
|
||||
|
||||
Se você já usou um SSG como por exemplo o Jekyll, você pode
|
||||
interpretar o org-publish como uma template do Jekyll em que você pode
|
||||
fazer algumas modificações e que não tem muitas automações por parte
|
||||
dela.
|
||||
|
||||
Todas as páginas seguem um padrão pré-definido, todas.
|
||||
|
||||
Ou seja, você pode usar o seu CSS pensando somente em 1 página, porque
|
||||
todas as outras vão ser clones dessa página em que você está se
|
||||
inspirando.
|
||||
|
||||
Um bom exemplo disso é esse próprio site. Se você observar bem, não
|
||||
existe muito uma grande diferença entre a página de um post e a página
|
||||
de index. Na verdade a única diferença é a falta de uma tabela de
|
||||
conteúdo na página index.
|
||||
|
||||
Outra coisa também que eu encontrei, depois de xeretar um pouco na
|
||||
inter-webs, eu encontrei algumas características interessantes sobre o
|
||||
ox-publish. Uma delas é que as variáveis que criam o preâmbulo e o
|
||||
pós-âmbulo da página (são uns bagulho de autor e de validação da
|
||||
página) podem ser modificadas para qualquer string que o usuário
|
||||
prefira. Ou seja, eu posso colocar meu próprio HTML nelas!
|
||||
|
||||
O que em termos práticos, faz com que o ox-publish faça o que eu
|
||||
achava que era a maior utilidade de um SSG: re-utilizar um elemento de
|
||||
uma página em todas as outras.
|
||||
|
||||
Por enquanto eu só adicionei uma footer com o nome do author do artigo
|
||||
e com a data de última modificação do arquivo (sim, esse bagulho tem
|
||||
até variáveis que você pode usar).
|
||||
|
||||
* A site é praticamente um espelho da minha config
|
||||
|
||||
O meu site e o meu Emacs possuem uma aparência muito similar, o que é proposital, já que dessa forma eu consigo ter uma certa noção de como meu site vai ficar, tirando a necessidade de usar um navegador para visualizar a página do meu site.
|
||||
|
||||
Não é que eu não veja como a página fica, mas eu não tenho a necessidade de ver como ele fica.
|
||||
|
||||
Melhor do que só mencionar é mostrar, então aqui está uma screenshot do meu Emacs:
|
||||
|
||||
[[../assets/img/emacs-parte-2.webp]]
|
||||
|
||||
Não é um completo clone 1 por 1, mas pelo menos eles tem certa semelhança, dessa maneira eu consigo me concentrar apenas em escrever com tranquilidade, afinal de contas o site final é extremamente semelhante ao o que eu já estou vendo no editor.
|
||||
|
||||
* /Fin/
|
||||
|
||||
Bem, é isso. Eu falei que esse posts seria algo rápido.
|
||||
|
||||
Enfim, até o próximo post!
|
|
@ -1,137 +0,0 @@
|
|||
#+TITLE: Emacs
|
||||
|
||||
Olha só quem voltou! E mais uma vez com o site completamente mudado!
|
||||
|
||||
Pois é, estou de volta, e dessa vez trago comigo algumas novidades em
|
||||
relação ao site e ao meu setup atual (spoiler: tá tudo no Emacs).
|
||||
|
||||
* Emacs, que saudades que estava de você!
|
||||
|
||||
A um tempo eu vim tendo essa vontade de voltar a usar o Emacs, mas a
|
||||
preguiça de ter que refazer a minha config do 0 era muito grande, até
|
||||
que bem, vamos dizer que o hiperfoco atacou e eu refiz a minha
|
||||
configuração de qualquer jeito.
|
||||
|
||||
A maior diferença é que eu já tenho alguma experiência no assunto,
|
||||
então não tive muita dificuldade em fazer essa nova config. Posso
|
||||
inclusive dizer que esta é, até o momento, a melhor configuração que eu
|
||||
já fiz até agora.
|
||||
|
||||
* Org-mode, o criador de sites mais prático que conheço
|
||||
|
||||
Apesar de ter usado diversos SSG's nos últimos tempos, nenhum deles
|
||||
possui a praticidade de simplesmente gerar uma página HTML a partir de
|
||||
um buffer que esteja aberto no seu editor com a mesma facilidade que o
|
||||
Emacs junto do Org-mode conseguem ter.
|
||||
|
||||
Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
|
||||
sites nativa do Emacs.
|
||||
|
||||
* Zero JavaScript
|
||||
|
||||
Mais uma vez, estou com 0 JS presente neste site, o que por si só já é
|
||||
uma conquista e tanto, afinal, quanto menos JS, melhor.
|
||||
|
||||
E não é porque eu não tenho JS que eu perco coisas como
|
||||
/Table-of-contents/ ou /Syntax-highlighting/, nada disso, ambos são
|
||||
coisas nativas do org-mode, feitos para serem utilizados e abusados.
|
||||
|
||||
Ele também é o melhor highlighter que eu já usei, porque literalmente
|
||||
qualquer coisa que eu tenha um syntax highlight no Emacs fica com o
|
||||
mesmo syntax-highlight no site gerado.
|
||||
|
||||
* Quase um SSG... Quase.
|
||||
|
||||
Apesar de tudo, o org-mode não vem com um SSG, essa função na
|
||||
realidade é uma ferramenta de publicação de artigos, tanto que o nome
|
||||
do pacote é ox-*publish*. Ainda assim, com um script simples e um
|
||||
pouco de elisp, você consegue ter um pouco do que um SSG consegue te
|
||||
oferecer.
|
||||
|
||||
E quando eu falo um pouco, eu não tô de sacanagem, isso é tudo o que
|
||||
eu preciso para ter meu site na forma em que eu quero:
|
||||
|
||||
/Configurando o ox-publish e automatizando o processo de criação de HTML./
|
||||
#+begin_src emacs-lisp
|
||||
(require 'ox-publish)
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
|
||||
(package-initialize)
|
||||
(unless (package-installed-p 'use-package)
|
||||
(package-refresh-contents)
|
||||
(package-install 'use-package))
|
||||
(eval-when-compile
|
||||
(require 'use-package))
|
||||
(use-package htmlize
|
||||
:ensure t)
|
||||
(use-package kanagawa-themes
|
||||
:ensure t
|
||||
:init (load-theme 'kanagawa-wave t))
|
||||
(require 'htmlize)
|
||||
(setq org-html-head "<link rel=stylesheet href=\"/assets/css/styles.css\" />"
|
||||
org-html-head-include-default-style nil
|
||||
org-html-head-include-scripts nil
|
||||
org-html-preamble nil
|
||||
org-html-postamble nil
|
||||
org-html-use-infojs nil)
|
||||
(setq org-publish-project-alist
|
||||
(list
|
||||
(list "Tukain's Blog"
|
||||
:base-directory "./content"
|
||||
:recursive t
|
||||
:htmlized-source t
|
||||
:publishing-directory "./public"
|
||||
:section-numbers nil
|
||||
:publishing-function 'org-html-publish-to-html)))
|
||||
(org-publish-all t)
|
||||
(message "Site gerado!")
|
||||
#+end_src
|
||||
|
||||
/Um script para executar os comandos necessários para gerar o site/
|
||||
#+begin_src bash
|
||||
#!/bin/sh
|
||||
|
||||
mkdir -p public && emacs -x build.el && cp -r assets/ public/
|
||||
#+end_src
|
||||
|
||||
Depois disso, o único trabalho que eu tenho é de fazer um artigo e
|
||||
listá-lo na minha homepage, e pronto!
|
||||
|
||||
* Outras coisas que estão no meu Emacs
|
||||
|
||||
É mais que claro que o Emacs é conhecido por seus usuários que, em boa
|
||||
parte dos casos, transformam o Emacs em um sistema operacional praticamente. E
|
||||
eu não sou muito diferente deles 🤓.
|
||||
|
||||
Atualmente eu já configurei o Emacs o suficiente para substituir a minha
|
||||
configuração do Neovim, e também configurei coisas como:
|
||||
|
||||
- Um servidor HTTP (para visualizar o meu site localmente)
|
||||
- Um agente PGP (EasyPG).
|
||||
- Um cliente de email (Gnus)
|
||||
- Uma interface para o Git (Magit)
|
||||
- Um leitor de feeds RSS (Elfeed)
|
||||
|
||||
Também estou vendo como configurar um cliente Jabber (XMPP) e vou configurar
|
||||
o Erc (o cliente IRC nativo do Emacs). Há também outras coisas que eu quero
|
||||
fazer, mas não acho que seja necessário falar sobre elas, afinal já estou
|
||||
tagarelando demais.
|
||||
|
||||
* Aos poucos, estou deixando o meu setup ser apenas um ambiente onde eu possa usar o Emacs
|
||||
|
||||
Eu ainda não iniciei o meu arco Uchirra da vida e saí eliminando meus programas,
|
||||
ainda.
|
||||
|
||||
Eu já tenho em mente o que eu quero fazer e como eu vou fazer para conseguir
|
||||
transformar o meu setup atual em algo que serve apenas para acomodar o
|
||||
Emacs. Alguns programas que eu posso remover, por exemplo, são o Lazygit (Porque
|
||||
eu já tenho o Magit) e o lf (Porque o Emacs vem com o Dired).
|
||||
|
||||
Mas vou deixar para fazer isso outra hora, afinal de contas isso vai tomar um
|
||||
pouco do meu tempo para poder concluir.
|
||||
|
||||
* /Fin/
|
||||
|
||||
Enfim, acho que já é hora de eu para de ficar tagarelando.
|
||||
|
||||
Te vejo no próximo post!
|
|
@ -1,47 +0,0 @@
|
|||
#+TITLE: Blog.sh, o meu próprio SSG
|
||||
|
||||
Dos produtores de "Ovorefazermeusaite", vêm aí "E se eu fizer meu próprio gerador de sites?"!
|
||||
|
||||
Agora falando sério, eu realmente fiz o meu próprio SSG (Static Site Generator).
|
||||
|
||||
Ele não é nada demais, na realidade ele não é muito diferente dos scripts que eu fazia para conseguir criar um post novo de forma mais rápida, a diferença fica só na sofisticação do script e um pouco da forma em que ele opera.
|
||||
|
||||
* Geração de site rápida pra k7
|
||||
Uma coisa que é extremamente notável é a diferença na hora de fazer a geração do site. É simplesmente absurdo. É como comparar a velocidade de um jogo feito em C, para um feito em JavaScript.
|
||||
|
||||
No Emacs, a geração do site feito em org-mode leva uma coisa de 2 a 4 segundos, o que é relativamente rápido, porém, o meu script leva aproximadamente 0.071 segundos para fazer a mesma coisa.
|
||||
|
||||
Tudo bem, eu não tenho uma tabela de conteúdo e nem o syntax highlighting, porém, essas são coisas que eu estou disposto a descartar se significar que eu vou ter uma geração de páginas dezenas de vezes mais rápida.
|
||||
|
||||
* Por debaixo dos panos
|
||||
O script possui um comando que cuida da criação da estrutura de arquivos e um que "compila" o site com base nessa estrutura. Como você faz para usar essa estrutura de arquivos e quais as regras impostas pelo script podem ser achadas no readme que é gerado junto do website
|
||||
|
||||
Todos os arquivos dentro do diretório content são lidos pelo smu, programa que é utilizado para converter um texto no estilo Markdown para HTML.
|
||||
|
||||
O smu não tem suporte para tudo o que o Markdown tem a oferecer, porém ele aceita o uso de tags HTML, então tudo o que o smu não tiver suporte pode ser substituído por uma tag.
|
||||
|
||||
* Por que?
|
||||
Eu fiz isso puramente para ver se eu conseguiria fazer um SSG, e, se tratando de funcionalidade básica, eu consegui sem nenhum problema.
|
||||
|
||||
Mas um outro ponto que me fez fazer isso foi o Neovim... Olha, eu não sei se isso é algum tipo de apego ou algo do gênero, mas eu simplesmente fiquei com saudades de usar o meu Neovim. A configuração que eu tenho é equivalente à minha configuração do Emacs, não em todos os aspectos, mas quando se trata de edição de texto/código, ambos são quase os mesmos, porém o Neovim ainda leva a vantagem, porque o Neovim tem suporte ao LSP (Language Server Protocol), o que faz com que o auto-complete do Neovim seja muito mais versátil e preciso do que usar o company-mode no Emacs.
|
||||
|
||||
Outra coisa que eu consigo fazer agora que eu fiz o meu próprio SSG é usar ele em conjunto com o Neovim ou qualquer outro editor de texto que eu queira, basta eu salvar o arquivo e digitar o comando:
|
||||
|
||||
#+begin_src bash
|
||||
blog.sh build
|
||||
#+end_src
|
||||
|
||||
E na realidade eu nem vou precisar digitar esse comando, eu já fiz um outro comando que é um equivalente ao hugo serve da vida. Tudo o que eu preciso fazer é digitar
|
||||
|
||||
#+begin_src bash
|
||||
blog.sh serve
|
||||
#+end_src
|
||||
|
||||
E isso vai abrir um servidor HTTP usando o =python -m http.server= e também vai executar o comando =entr=, que serve para "ficar de olho em mudanças", e sempre que o =entr= notar alguma mudança em algum arquivo do diretório content ele mesmo executa o =blog.sh build= e atualiza as páginas.
|
||||
|
||||
Tudo o que eu preciso fazer agora é ficar de olho em qualquer bug que possa aparecer.
|
||||
|
||||
* /Fin/
|
||||
Enfim, é isso o que eu tinha para falar por agora.
|
||||
|
||||
Te vejo no próximo post!
|
|
@ -1,36 +0,0 @@
|
|||
#+TITLE: God mode
|
||||
#+DATE: 25/10/2024
|
||||
|
||||
Pois é, depois de ter feito um SSG próprio e ter dedicado um post para ele, cá estou aqui novamente, usando o Emacs, porém dessa vez não estou usando o =viper-mode=, não não, dessa vez eu estou usando algo mais... /abençoado?/
|
||||
|
||||
* God mode
|
||||
O nome é um pouco exagerado, mas isso não significa que ele não é algo que melhora *E MUITO* no uso do Emacs.
|
||||
|
||||
Ele basicamente faz isso aqui com o =Ctrl= e =Alt=:
|
||||
|
||||
[[https://i.makeagif.com/media/5-05-2024/1KNCKC.gif]]
|
||||
|
||||
Isso não é exagero, basicamente qualquer /key-chord/ do emacs pode ser escrita sem a necessidade de usar algum modificador como o =Ctrl=, =Alt=, ou os dois ao mesmo tempo (como por exemplo a key-chord para selecionar uma palavra abaixo do cursor: =Ctrl Alt Espaço=).
|
||||
|
||||
A consequência disso é bem direta ao ponto na realidade, primeiro que você não tem mais o risco de adquirir uma [[https://pt.wikipedia.org/wiki/Les%C3%A3o_por_esfor%C3%A7o_repetitivo][L.E.R]] da vida por ficar apertando o =Ctrl= como se não houvesse amanhã, segundo que, caso você tenha uma memória muscular boa, é possível ter um workflow tão eficiente quanto (senão até mais) um Vim-like. E isso inclui o =Evil-mode=, que faz com que o Emacs se comporte como o Vim, se tratando de teclas de atalho.
|
||||
|
||||
* E quanto ao [[https://codeberg.org/tukain/blog.sh][blog.sh]]?
|
||||
Tendo em vista que eu já estou usando o =org-mode= novamente para desenvolver o meu site, o futuro dele é incerto. Ele é algo que eu fiz em um momento de hiperfoco extremamente aleatório e também enquanto eu estava entediado e procurando algo para me divertir.
|
||||
|
||||
Mas não posso garantir nada, da mesma forma que eu já fiz e refiz o meu site centenas de vezes, eu posso voltar a usar o =blog.sh= novamente, mas no momento, eu prefiro continuar com o =org-mode=.
|
||||
|
||||
* O estilo do site
|
||||
Vira e mexe eu me pego observando como o design do site está. A minha ideia com o estilo dele é ser o mais flexível possível, enquanto ao mesmo tempo seja minimalista, legível, e claro, agradável aos olhos.
|
||||
|
||||
A consequência disso foi um site que, não importando a página, parece algum artigo de site de notícias quando visto usando a função de leitura de alguns navegadores.
|
||||
|
||||
Eu já tenho umas ideias sobre o que eu posso fazer para dar um pequeno upgrade na aparência, sem ser algo extremamente radical (como foram as últimas mudanças nesse site).
|
||||
|
||||
Em relação ao tema que eu uso (Kanagawa Wave), eu não sei dizer por quanto tempo ele vai durar, já uso ele a +/- 3 semanas, mas não chega perto dos meses que eu fiquei usando o Gruvbox em tudo.
|
||||
|
||||
Enfim, isso é uma incógnita que eu prefiro não saber quando deixará de ser uma, afinal de contas, no momento em que eu estou escrevendo este post, a Kanagawa Wave é a minha nova favorita.
|
||||
|
||||
* /Fin/
|
||||
Enfim, chega de ficar tagarelando com coisas que ninguém liga.
|
||||
|
||||
Até o próximo post!
|
|
@ -1,37 +0,0 @@
|
|||
#+TITLE: Hare
|
||||
|
||||
* Praticamente C, mas com diversas melhorias
|
||||
|
||||
A Hare é uma linguagem da família das linguagens C-like, e a sua sintaxe deixa isso bem explícito, porém, ela tem algumas das inovações das últimas décadas consigo e também se inspira na sintaxe de outras linguagens, como a Rust.
|
||||
|
||||
Porém, diferente de Rust, você não vai ter que esperar por minutos ou horas para o compilador terminar o serviço, nem quebrar a cabeça com o seu código para que ele seja "memory safe", ela não tem garbage collectors nem nada desse tipo, é como eu disse, ela é praticamente C.
|
||||
|
||||
Contudo, ela não é uma linguagem com as mesmas limitações ou problemas que C possui, e além disso ela tem uma sintaxe que, para mim, não só é mais clara, como mais fácil de entender o que está acontecendo.
|
||||
|
||||
Claramente isso é apenas algo que depende da minha experiência, mas até mesmo a minha namorada conseguiu entender como um Struct estava sendo usado em um dos exemplos que eu escrevi em Hare, enquanto isso, o mesmo exemplo em C foi... Confuso para dizer no mínimo.
|
||||
|
||||
* QBE como backend
|
||||
|
||||
O compilador da Hare usa o QBE Backend, o que torna o compilador dela
|
||||
extremamente rápido e leve, e também facilita o processo de criar ports do
|
||||
compilador para outras arquiteturas. Eu não irei entrar muito em detalhes sobre
|
||||
o que é um Compiler Backend, mas devo parafrasear algo vindo do próprio site do
|
||||
QBE:
|
||||
|
||||
#+begin_quote
|
||||
QBE é um backend para compiladores, com o foco de providenciar 70% da
|
||||
performance de compiladores otimizados da indústria com 10% do código.
|
||||
#+end_quote
|
||||
|
||||
De certa forma, o QBE se encaixa até mesmo na filosofia suckless, o que para mim
|
||||
pelo menos, é um grande ponto possitivo.
|
||||
|
||||
* O que eu planejo fazer aprendendo a programar?
|
||||
|
||||
Atualmente, eu vejo a programação como um hobbie para mim, um hobbie que eu gosto e muito, mas isso não me impede de colocar essa habilidade no meu currículo, um dia isso pode vir a ser extremamente útil.
|
||||
|
||||
Por enquanto eu estou aprendendo o básico, recém fiz o meu primeiro Struct, ainda falta muito para eu dizer que eu sei fazer alguma coisa, quanto mais dizer que eu sei programar. Mas isso só depende do meu esforço, então irei correr atrás.
|
||||
|
||||
* /Fin/
|
||||
|
||||
Enfim, é isso, até o próximo post!
|
|
@ -1,79 +0,0 @@
|
|||
#+TITLE: Tô usando o Proton
|
||||
|
||||
Depois de aproximadamente 1 ano, eu criei uma nova conta no [[https://proton.me][Proton]].
|
||||
Um serviço de e-mail/calendário online/VPN/cloud storage/gerenciador
|
||||
de senhas/carteira de bitcoin, enfim, um serviço que foca em prover
|
||||
basicamente as ferramentas que comumemte utilizamos com mais frequência
|
||||
do Google (Gmail, Google Calendar, Google Drive, Google Passwords) com
|
||||
aquela pitada de privacidade que só a mão do Shaquille O'Neal
|
||||
consegue fazer.
|
||||
|
||||
* Por que?
|
||||
|
||||
Nas últimas semanas eu comecei a voltar ao meu antigo estilo de vida
|
||||
sem o Google, o fato de eu ter conseguido um emprego foi um
|
||||
facilitador nesse aspecto. No dia do aniversário do meu irmão, eu
|
||||
troquei de celular com ele, dando o meu Poco M4 Pro para ele e ficando
|
||||
com o Moto G52 dele.
|
||||
|
||||
Essa não foi a primeira vez que a gente fez isso, na verdade na
|
||||
primeira vez que fiz isso com ele foi porque o Moto G52 possui uma
|
||||
ROM oficial da LineageOS disponível, e digamos que quando eu
|
||||
descobri isso eu tive uma [[https://i.pinimg.com/736x/87/07/97/8707972a759975b07d188308c948cc27.jpg][ativação neural]] e no mesmo dia a gente fez
|
||||
essa troca. E claro, eu coloquei a Lineage no G52.
|
||||
|
||||
Enfim, vou cortar um pouco da história e pular para o presente.
|
||||
Depois que eu fiquei com o G52 com a Lineage instalada novamente,
|
||||
eu comecei a fazer uma especie de "detox digital", mas eu não estava
|
||||
deletando contas, eu estava desvinculando o Google delas. Porém, uma
|
||||
coisa que estava sendo uma pedra no meu caminho era o Gmail, e bem, eu
|
||||
tenho e-mails alternativos, mas os servidores deles são lentos o
|
||||
suficiente para que eu basicamente só leia um e-mail 1 hora depois
|
||||
que eu "recebi" ele.
|
||||
|
||||
Tendo isso em mente, eu criei uma nova conta no Proton, que dentre
|
||||
várias coisas, também me dá acesso a 10 e-mail aliases. O que me
|
||||
permite remover o Gmail da jogada, e mesmo as coisas que não estão
|
||||
(ainda) usando aliases não ficam presas no limbo, já que o Proton me
|
||||
permite receber os e-mails do Gmail, no Proton, ou seja, eu não
|
||||
preciso nem mesmo abrir o Gmail para ler os e-mails que chegam por lá.
|
||||
|
||||
* Mudanças no armazenamento
|
||||
Ano passado, quando eu tinha uma conta no Proton, o armazenamento era
|
||||
bem limitado, somente 1Gb (depois de fazer uma configuração na conta,
|
||||
o padrão era 512Mb) era disponível. Esses 1Gb eram compartilhado entre
|
||||
o serviço de e-mail/calendário e o de cloud storage. Não sei se já
|
||||
ficou claro, mas 1Gb não é lá muita coisa para um serviço de cloud
|
||||
storage, muito menos quando isso é compartilhado com outros serviços.
|
||||
|
||||
Mas, com a nova conta que criei ainda hoje, eu reparei que no serviço
|
||||
de e-mail o armazenamento continua sendo de 1Gb, porém o serviço de
|
||||
cloud storage se inicia com 3Gb! Podendo ser aumentado para 5Gb depois
|
||||
de seguir um passo a passo de configuração!
|
||||
|
||||
Isso é algo que eu simplesmente não tava esperando, mas é uma mudança
|
||||
mais que bem vinda, porque eu posso mover os arquivos que eu tinha no
|
||||
Google Drive para cá com muito mais folga.
|
||||
|
||||
* Uma senha praticamente impossível de digitar para a minha conta do Google
|
||||
|
||||
Eu também estou dificultando ao máximo o meu login do Google,
|
||||
praticamente tornando impossível que eu faça login sem utilizar o
|
||||
KeePass, o que por sua vez, faz com que eu deixe de utilizar um
|
||||
sistema que não seja uma distro linux, no caso do meu pc, ou a
|
||||
LinageOS, no meu celular.
|
||||
|
||||
O KeePassXC havia lançado a +/- 2 meses atrás uma função que te
|
||||
permite criar passkeys utilizando o próprio KeePassXC, o que elimina a
|
||||
necessidade de um celular com a Google impregnada ou um iPhone. Óbviamente eu já passei a limpa em todas as contas que eu usava uma passkey da Google e gerei novas usando o KeePassXC.
|
||||
|
||||
Tudo isso me deixa cada vez menos dependente do Google, o que é algo
|
||||
que sinceramente qualquer pessoa deveria tentar fazer. Não só com o
|
||||
Google, mas com basicamente qualquer uma dessas empresas que até um
|
||||
idoso de 90 anos reconhece de tão popular.
|
||||
|
||||
* /Fin/
|
||||
|
||||
Enfim, acho que já tagarelei demais.
|
||||
|
||||
Até o próximo post!
|
|
@ -1,155 +0,0 @@
|
|||
#+TITLE: Vale da estranheza
|
||||
|
||||
Esse é um assunto que volta e meia me vem à cabeça. Mas, por qual razão? Bem, os motivos são vários na realidade. Seja no meu consumo de mídia, pela minha navegação na internet ou então até mesmo na vida real, o tal chamado "Vale da estranheza" sempre se mostra uma hora ou outra.
|
||||
|
||||
O curioso disso é como ele é retradado em várias formas de entretenimento. Filmes, séries, animes, jogos, todos eles têm um aspecto principal idêntico na maioria das vezes: O terror.
|
||||
|
||||
* Eu não sou um cara que curte terror
|
||||
não, nada disso, muito pelo contrário, eu sou do tipo que prefere assitir uma comédia romântica à ter que assitir um filme de terror. Mas, esse sub-gênero (e outros como ele) me atrai. Isso é algo difícil de explicar, porém tenho certeza que não sou o único a pensar assim: Apesar de dar calafrios, eu tenho uma curiosidade que aumenta cada vez mais.
|
||||
|
||||
A minha primeira exposição ao vale da estranheza foi, provavelmente como muitas outras pessoas, com o meme do senhor incrível.
|
||||
|
||||
[[../assets/img/sr_incrivel.png]]
|
||||
|
||||
É óbvio que esse meme não é a *melhor* representação do Vale da estranheza, mas ele já é uma boa demonstração do que ele pode ser. O sentimento que imagens do Vale da estranheza proporcionam é o de... desconforto. Pelo menos no meu caso esse é o sentimento. Algo que está errado, de alguma forma, e você consegue perceber, porém, ele também te lembra algo que não lhe é estranho, mundano, comum. Esse conflito gera esse desconforto esquisito.
|
||||
|
||||
Esse meme ficou popular, e por consequência eu consumi muitos vídeos no youtube contendo esse meme, fazendo assim com que o algorítimo me recomendasse vídeos contendo temas relacionados e afins. Então, eu foi exposto à um outro gênero similar ao Vale: Os espaços liminares. Depois eu comento mais sobre eles.
|
||||
|
||||
Apesar disso, eu, por algum motivo que só Deus sabe, tenho um interesse nesse estilo de terror, e em outros estilos similares/derivados dele.
|
||||
|
||||
Isso me torna alguém que gosta de terror mas só não quer admitir? Provavelmente. Mas estamos na internet e são poucos os que querem ser coerentes por aqui.
|
||||
|
||||
* A presença do Vale da estranheza na mídia que consumo
|
||||
** Jogos
|
||||
Uns meses atrás, eu comecei a jogar [[https://en.wikipedia.org/wiki/Silent_Hill_(video_game)][Silent Hill]], um clássico do Playstation 1. O jogo constantemente te dá calafrios por toda a gameplay. É um ótimo exemplo do que é possível fazer mesmo tendo diversas limitações. No caso, um exemplo de como fazer alguém infartar.
|
||||
|
||||
Devido às limitações da época, existe uma presença fortíssima de compressão de alguns assets, como por exemplo, as texturas e os efeitos sonoros. No caso das texturas, em alguns momentos é difícil até mesmo dizer se o que tá na sua frente é uma mancha de sujeira, uma queimadura ou então até mesmo sangue ressecado. Literalmente o seu cérebo é quem vai decidir da hora.
|
||||
|
||||
[[../assets/img/SH1_rifle.jpg]]
|
||||
|
||||
Outra coisa boa a se comentar é a visão extremamente limitada. Isso é uma limitação do próprio hardware do Playstation, mas a equipe que fez Silent Hill contornou isso e transformou em parte da gameplay. E olha, se tem uma coisa que me assusta, é não saber se o que tá na minha frente é um ser humano, ou outra coisa que provavelmente não tá afim de conversar.
|
||||
|
||||
[[../assets/img/silent_hill_screenshot_03.jpg]]
|
||||
|
||||
Infelizmente eu perdi o meu save do jogo, eu estava na seção do parque de diversões, por conta da frustração de ter perdido o save e também por preguiça de ter que jogar tudo de novo, eu acabei não jogando mais. Porém, esse jogo tem o meu respeito. Ele tem pouquíssimos jumpscares, a maior parte da gameplay ele simplesmente ataca a sua ansiedade e te deixa apreensivo, mas ainda assim ele sabe dosar, e muito bem, quando ele deve fazer o seu coração bater um tanto mais rápido.
|
||||
|
||||
** Animes
|
||||
Mais recentemente foi lançado na Netflix a adaptação do mangá [[https://en.wikipedia.org/wiki/Dandadan][Dandadan]], mas eu não o conheci por trailers ou por que me foi recomendado na home da Netflix. Eu fui apresentado à esse mangá por meio de um youtuber que acompanho, o [[https://www.youtube.com/@CentralNaythf][Naythf]].
|
||||
|
||||
[[https://youtu.be/eUQiwNVp6MU?si=M4N2eF5DmrYD7ZFp][No vídeo que ele comenta sobre Dandadan]], o Naythf fala sobre vários aspectos do mangá, como por exemplo os temas abordados e gêneros da obra. O curioso para mim foi a parte de terror do mangá. No maior estilo [[https://en.wikipedia.org/wiki/Junji_Ito][Junji Ito]], as partes de terror focam (e muito) na estranheza. Não sei dizer se chega a poder ser considerado algo do Vale, mas no mínimo chega perto.
|
||||
|
||||
[[../assets/img/dandadan-manga-primo-capitolo-05.jpg]]
|
||||
|
||||
Uma outra aparição de algo que me lembra o vale da estranheza foi no anime [[https://en.wikipedia.org/wiki/Chainsaw_Man][Chainsaw Man]], no caso em uma de suas finalizações de episódio. Para ser mais exato, na [[https://www.youtube.com/watch?v=ymQ3wEIq84Y][5ª finalização]].
|
||||
|
||||
[[../assets/img/chainsaw-man-ending-5.webp]]
|
||||
|
||||
Sei que a intenção não era exatamente o Vale, mas ainda assim não consigo assistir essa finalização sem fazer essa comparação.
|
||||
|
||||
Todo o cenário e a ambientação em que os personagens estão me lembram também os Espaços Liminares. Não seria uma surpresa para mim se essa semelhança fosse intencional, afinal, tanto o anime quanto os Espaços Liminares ficaram em alta +/- na mesma época.
|
||||
|
||||
* Espaços liminares
|
||||
Os espaços liminares tomam um rumo semelhante ao Vale, porém ele se diverge em um ponto: Na ambientação.
|
||||
|
||||
A ambientação dos espaços liminares é bem característica, são lugares que você espera que vá ter algo ou alguém por lá, mas, não há nada. Somente o que foi deixado por lá.
|
||||
|
||||
Sinceramente esse gênero de terror é o que mais me dá medo, por quê diferente de um alien vestido de ser humano e um cachorro assassino sem pele, um espaço liminar é perfeitamente possível na vida real. Na realidade eles não são possíveis, eles *existem*.
|
||||
|
||||
Essa é a parte que mais pega nos meus nervos. O fato de você não só ver ou achar, mas até mesmo de você ter alguma lembrança com o local. Como por exemplo, um parque aquático abandonado. Apesar de nunca ter ido a um pessoalmente, até mesmo eu fico com calafrios em ver algo como isso:
|
||||
|
||||
[[../assets/img/liminal.webp]]
|
||||
|
||||
Não tem nada de errado com o local em si, nem com a imagem, porém, ainda assim, algo parece estar errado.
|
||||
|
||||
Uma explicação dada por muitas pessoas na internet é a de que o motivo desse desconforto vêm do fato de você esperar vem alguém na foto, por ser um local público e por você sempre ver um local como esse, populado.
|
||||
|
||||
A verdade é que cada pessoa tem uma reação à espaços como esses, no meu caso eu sinto calafrios, quase como se tivesse algo a mais na foto, mas que eu não estou enxergando, para outras pessoas, é só uma foto de um lugar vazio.
|
||||
|
||||
Mas sem sombra de dúvidas, uma das modas da internet relacionada a esse tema que mais me intrigou foram as [[https://en.wikipedia.org/wiki/The_Backrooms][Backrooms]].
|
||||
|
||||
** The Backrooms
|
||||
|
||||
[[../assets/img/HobbyTown_USA_Oshkosh_interior_under_construction_2002_(The_Backrooms).jpg]]
|
||||
|
||||
Tudo começou com um post na aba paranormal do 4chan, a mensagem do usuário em si não tinha nada de mais, porém a resposta é uma coisa completamente a parte.
|
||||
|
||||
#+begin_quote
|
||||
If you're not careful and you noclip out of reality in the wrong areas, you'll end up in the Backrooms, where it's nothing but the stink of old moist carpet, the madness of mono-yellow, the endless background noise of fluorescent lights at maximum hum-buzz, and approximately six hundred million square miles of randomly segmented empty rooms to be trapped in
|
||||
|
||||
God save you if you hear something wandering around nearby, because it sure as hell has heard you
|
||||
#+end_quote
|
||||
|
||||
E é com essa resposta que nasce um fenômeno na internet, um [[https://en.wikipedia.org/wiki/Alternate_reality_game][ARG]], e claro, uma fandom.
|
||||
|
||||
O que mais me deixou intrigado foi a semelhança dos ARG's de The Backrooms com a [[https://en.wikipedia.org/wiki/SCP_Foundation][SCP Foundation]]. Cada sala em The Backrooms tem um padrão, um método a seguir para conseguir fugir, e claro, algum tipo de anomalia presente. Seja ela uma criatura humanoide ou até mesmo um sorriso flutuante.
|
||||
|
||||
The Backrooms ficou tão popular que ultrapassou o gênero de [[https://en.wikipedia.org/wiki/Analog_horror][Analog Horror]] (o meu gênero favorito de terror). Diversos criadores de conteúdo fizeram vídeos comentando sobre, teorizando, fazendo gameplays de alguns jogos com esse tema.
|
||||
|
||||
*** [[https://www.youtube.com/c/KANEpixels][Kane Pixels]]
|
||||
Esse carinha fez as Backrooms simplesmente explodirem.
|
||||
|
||||
Durante a onda de vídeos sobre as Backrooms, os vídeos dele se destacavam (e muito) entre todos os outros. Seja por qualidade técnica ou por ambientação, os vídeos que ele produzia (e produz até hoje) são de cair o queixo.
|
||||
|
||||
Ele não só conseguiu fazer uma combinação de Analog Horror com The Backrooms, como fez isso beirando a perfeição.
|
||||
|
||||
[[../assets/img/The-Backrooms-Kane-Pixels-01.jpg]]
|
||||
|
||||
Foi basicamente dos vídeos dele que surgiu a inspiração de diversos jogos que se vê por aí na Steam ou Itch.io.
|
||||
|
||||
[[../assets/img/smii7y_return_to_the_backrooms.webp]]
|
||||
|
||||
* Analog horror
|
||||
Bem, já que eu mencionei ele, por quê não comentar sobre?
|
||||
|
||||
Assim como The Backrooms, esse gênero ficou extremamente popular uns tempos atrás. Começando uma febre com vídeos do universo de [[https://en.wikipedia.org/wiki/Five_Nights_at_Freddy%27s][FNAF]], poís é, FNAF. A maior parte desses vídeos giravam em torno de serem fitas de uso interno da empresa - Fitas de treinamento, relatórios gravados, filmagens de segurança - e que não eram feitas para serem consumidas por pessoas não-autorizadas.
|
||||
|
||||
Mas sempre, de alguma forma, alguém conseguia acesso às fitas e colocava as gravações na internet.
|
||||
|
||||
A parte mais interessante de alguns desses vídeos era a parte técnica, muitos deles eram quase que um "olha só o que eu sei fazer".
|
||||
|
||||
Pois é, esse tema ficou saturado beeeeem rápido. Mas, algumas pessoas viram potêncial nesse estilo de terror, e decidiram criar universos próprios, tendo como uma base o horror analógico.
|
||||
|
||||
Coisas como [[https://www.youtube.com/@blackdrag0nfish][Nephthys Media]], que exploravam um horror cósmico, começaram a surgir. O que foi um fator que me fez ter interesse nesse gênero.
|
||||
|
||||
** Nephthys Media
|
||||
[[../assets/img/hqdefault.jpg]]
|
||||
|
||||
Apesar de não lembrar de praticamente nada do Nephthys Media, uma coisa que não tem como eu me esquecer é a atmosfera presente nele, é algo que me lembra os Espaços Liminares. É um desconforto constante e a impressão de que tem algo a mais que eu não estou enxergando.
|
||||
|
||||
Pode se dizer que esse analog horror em específico é o responsável por eu ter um certo medo de astros.
|
||||
|
||||
O enredo gira em torno de entidades que habitam os astros e em seus planos. Como disse eu não lembro de muita coisa, mas ainda assim é algo que eu recomendo.
|
||||
|
||||
** The Mandela Catalogue
|
||||
Outro que ficou extremamente popular, mas que o criador perdeu a mão.
|
||||
|
||||
Ele explora a bizarrice que são [[https://en.wikipedia.org/wiki/Doppelg%C3%A4nger][Doppelgängers]], e pelo menos no início da minisérie, consegue fazer isso muito bem até.
|
||||
|
||||
O maior problema do Mandela Catalogue é que o seu criador acabou enjoando da própria obra e quis fazer dela algo "maior". Vamos dizer que ele voou muito perto do sol e acabou estragando a minisérie, pelo menos para mim, eu já não tenho o mínimo de interesse por ela depois do 2º capítulo.
|
||||
|
||||
[[../assets/img/catalogue-mondela-mandela-magazine.gif]]
|
||||
#+begin_center
|
||||
[[https://www.youtube.com/watch?v=gk4AlxnZOYc][The Mandela Magazine]]
|
||||
#+end_center
|
||||
|
||||
Uma coisa que pode ser aprendida com o caso do Mandela Catalogue é a seguinte: Se a sua obra se tornou popular por conta da ambientação e do mistério que gira em torno de algo quase que no estilo Lovecraft de absurdo, não transforma ela em uma minisérie de terror adolescente.
|
||||
** The Walden Files
|
||||
Esse me dá arrepios só de lembrar.
|
||||
|
||||
The Walden Files é um ARG que tem inspirações em FNAF e em The Mandela Catalogue. Porém, só somente inspirações, ele é uma obra que não só se destaca como também elevou o padrão do gênero de Analog Horror.
|
||||
|
||||
Ele genuinamente me dá medo. Medo ao ponto de que eu só consumi ele por intermédio de um youtuber, o [[https://www.youtube.com/@pombatomico][Pombo Atômico]] e de dia na maior parte das vezes.
|
||||
|
||||
[[../assets/img/walden_files.webp]]
|
||||
|
||||
Ele também é extremamente gráfico e sonoro. Não é algo que eu recomendaria para a minha namorada por exemplo.
|
||||
|
||||
Mas a história que é contada... Olha, faz valer a pena. É com um dedo de FNAF, mas contada de uma forma coesa durante toda a obra e sem entregar fria e sem bandeja. Do início ao fim a sua curiosidade é instigada.
|
||||
|
||||
É uma ótima obra para se ver no Halloween. E talvez uma ótima obra para não assitir enquanto você está comendo alguma coisa.
|
||||
|
||||
* /Fin/
|
||||
Bem, isso é tudo o que eu tinha a comentar por agora. O halloween está chegando e eu quis dar os meus 5 centávos aqui.
|
||||
|
||||
Te vejo no próximo post!
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
#+TITLE: Vi, só que dentro do Emacs!
|
||||
|
||||
Esse mostro de um programa é tão cheio de coisa para se falar que já garantiu até uma trilogia nesse blog.
|
||||
|
||||
* Viper
|
||||
|
||||
A um pouco mais de 3 horas atrás, enquanto eu ainda estava no meu trabalho, eu fiquei pesquisando um pouco sobre o Emacs, e eu acabei achando o diretório de manuais de referência dele. Dois deles me chamaram (e muito) a minha atenção, os manuais de referência do vip-mode e do =viper-mode=.
|
||||
|
||||
Obviamente que quando eu vi esses manuais eu cliquei neles para ver do que eles se tratavam, e bom, eles são modos que emulam os controles do VI, o editor de texto modal que vem com qualquer sistema Unix e que foi dele que surgiu o Vim (VI iMproved).
|
||||
|
||||
Eu decidi usar o =viper= no lugar do vip só porque ele aparenta ser uma opção mais completa em comparação. Ele chega no nível de até mesmo ter um mini-tutorial e um wizard perguntando qual o seu nível de expertise com ele.
|
||||
|
||||
* Bem, e como é usar ele?
|
||||
|
||||
Como já disse, o =viper= emula o VI e não o Vim (isso é o que o evil-mode faz), sendo assim ele não tem as mesmas teclas/comandos que o Vim possui. Porém, você ainda pode usar as teclas do Emacs em conjunto com as teclas do VI, o que mais que compensa, *na minha opinião*, a falta das teclas do Vim.
|
||||
|
||||
Só de ter uma parte das teclas que são usadas no Vim já torna a minha experiência muito melhor. Afinal, apesar do Emacs ser um programa que é ótimo em diversos aspectos, as teclas de atalho dele não são particularmente um ponto positivo dele.
|
||||
|
||||
E é claro que como tudo no Emacs, eu posso customizar o =viper= e adicionar os comandos que eu acho extremamente úteis do Vim, no =viper=, criando assim um Frankenstein que nunca deveria ter nascido.
|
||||
|
||||
A minha configuração dele, inclusive, está bem modesta, com poucas linhas de código, mas já são o suficiente para deixar o meu uso do Emacs 10 vezes mais aconchegante.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq viper-mode t)
|
||||
(require 'viper)
|
||||
(setq viper-inhibit-startup-message 't)
|
||||
(setq viper-expert-level '5)
|
||||
(setq viper-want-ctl-h-help t)
|
||||
(setq viper-ex-style-editing nil)
|
||||
(setq viper-no-multiple-ESC nil)
|
||||
(setq viper-syntax-preference 'extended)
|
||||
(setq viper-vi-style-in-minibuffer nil)
|
||||
(define-key viper-vi-basic-map (kbd "v") 'set-mark-command)
|
||||
(define-key viper-vi-basic-map (kbd "f") 'find-file)
|
||||
(define-key viper-vi-basic-map (kbd "R") 'replace-rectangle)
|
||||
(define-key viper-vi-basic-map (kbd "C-v") 'rectangle-mark-mode)
|
||||
(define-key viper-vi-basic-map (kbd "x") 'kill-region)
|
||||
(viper-mode)
|
||||
#+end_src
|
||||
|
||||
Como eu disse, ainda está bem modesta. Apesar de que só tacar um bloco de código do nada não explica direito o que está acontecendo, Elisp é uma linguagem bem simples de entender, então eu acho que não vai ser tão problemático assim.
|
||||
|
||||
Mas, basicamente eu só ativei o =viper-mode= e configurei 5 teclas de atalho que "emulam" algumas teclas que eu uso no Neovim. Não são completamente idênticas, mas já dão conta do recado.
|
||||
|
||||
* /Fin/
|
||||
|
||||
Bom, é isso, acho que por agora eu não tenho mais o que falar sobre esse lindo programa chamado Emacs.
|
||||
|
||||
Até o próximo post!
|
|
@ -1,24 +0,0 @@
|
|||
#+TITLE: Tukain's Blog
|
||||
#+AUTHOR: Tukain
|
||||
#+DESCRIPTION: Um blog simples, feito usando o org-mode.
|
||||
#+OPTIONS: toc:nil
|
||||
|
||||
#+begin_center
|
||||
[[https://neocities.org/site/tukainpng][Neocities]] [[https://codeberg.org/tukain][Codeberg]] [[https://www.linkedin.com/in/diogo-fernandes-710193282/][LinkedIn]]
|
||||
#+end_center
|
||||
|
||||
#+begin_center
|
||||
/Feito com ❤️ usando o org-mode/
|
||||
#+end_center
|
||||
|
||||
* Bem-vindo ao meu blog!
|
||||
|
||||
Aqui é um lugar onde eu gosto de comentar sobre assuntos envolvendo o meu cotidiano nesse vasto mundo chamado internet. E também sobre alguns assuntos que eu achar relevante o suficiente para comentar.
|
||||
|
||||
Uma coisa que você pode acabar reparando é na aparência do site. O motivo dele ser dessa maneira é bem simples na realidade, eu quis deixar o site com uma aparência mais próxima possível do meu editor de texto favorito: O Emacs!
|
||||
|
||||
[[file:assets/img/emacsshot.png]]
|
||||
|
||||
#+begin_quote
|
||||
Este site não é otimizado para visualização em telas verticais!
|
||||
#+end_quote
|
|
@ -1,16 +0,0 @@
|
|||
#+TITLE: Sitemap
|
||||
|
||||
- [[file:404.org][Erro 404]]
|
||||
- [[file:teste.org][Teste]]
|
||||
- [[file:index.org][Tukain's Blog]]
|
||||
- Posts
|
||||
- [[file:Posts/c-e-hare.org][A simplicidade da C e da Hare]]
|
||||
- [[file:Posts/fiz-meu-próprio-ssg.org][Blog.sh, o meu próprio SSG]]
|
||||
- [[file:Posts/de-novo-no-emacs.org][De novo no Emacs]]
|
||||
- [[file:Posts/emacs.org][Emacs]]
|
||||
- [[file:Posts/emacs-parte-2.org][Emacs - Parte 2]]
|
||||
- [[file:Posts/god-mode.org][God mode]]
|
||||
- [[file:Posts/hare.org][Hare]]
|
||||
- [[file:Posts/proton.org][Tô usando o Proton]]
|
||||
- [[file:Posts/vale-da-estranheza.org][Vale da estranheza]]
|
||||
- [[file:Posts/viper-mode.org][Vi, só que dentro do Emacs!]]
|
|
@ -1,60 +0,0 @@
|
|||
#+TITLE: Teste
|
||||
|
||||
Essa página não contém nada de útil para o leitor, como o próprio nome dela já diz, ela é uma página de testes. Para ser mais específico, ela é uma página de testes do CSS do site.
|
||||
|
||||
* Blockquote
|
||||
#+begin_quote
|
||||
Não há nada a ser fazido ~ Napoleon
|
||||
#+end_quote
|
||||
* Verse
|
||||
#+begin_verse
|
||||
Dois, três, quatro, cinco, meia, sete, oito
|
||||
Tá na hora de molhar o biscoito
|
||||
Eu tô parado mas eu não me canso
|
||||
Tá na hora de afogar o ganço
|
||||
#+end_verse
|
||||
* Code-block
|
||||
#+begin_src hare
|
||||
use fmt;
|
||||
|
||||
export fn main() void = {
|
||||
const greetings = [
|
||||
"Hello, world!",
|
||||
"¡Hola Mundo!",
|
||||
"Γειά σου Κόσμε!",
|
||||
"Привіт, світе!",
|
||||
"こんにちは世界!",
|
||||
];
|
||||
for (let greeting .. greetings) {
|
||||
fmt::println(greeting)!;
|
||||
};
|
||||
};
|
||||
#+end_src
|
||||
* Inline-code
|
||||
=int= significa "Integer".
|
||||
* Center
|
||||
#+begin_center
|
||||
Estoy cansado, Thorfin
|
||||
#+end_center
|
||||
* Table
|
||||
| Item | Lvl |
|
||||
|---------------------+-----|
|
||||
| Capacete de goblin | 9 |
|
||||
| Armadura de ouro | 7 |
|
||||
| Espada de cavaleiro | 11 |
|
||||
* Organized list
|
||||
1. A
|
||||
1. aa
|
||||
1. aaa
|
||||
2. B
|
||||
3. C
|
||||
* Unorganized list
|
||||
- A
|
||||
- aa
|
||||
- aaa
|
||||
- B
|
||||
- C
|
||||
* Level 1
|
||||
** Level 2
|
||||
*** Level 3
|
||||
|
7
convert
Executable file
7
convert
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
mkdir -p out
|
||||
for FILE in $(/bin/ls ~/git/pages_src/content/Posts/)
|
||||
do
|
||||
pandoc -f org -t markdown ~/git/pages_src/content/Posts/$FILE > out/$FILE.md
|
||||
done
|
3
pages/footer.html
Normal file
3
pages/footer.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
</article>
|
||||
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>
|
||||
</body>
|
13
pages/head.html
Normal file
13
pages/head.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta http-equiv="Content-Language" content="pt-br" />
|
||||
<meta name="generator" content="blog.sh" />
|
||||
<meta name="author" content="Tukain" />
|
||||
<meta name="description" content="Aqui é um lugar onde eu gosto de comentar sobre assuntos envolvendo o meu cotidiano nesse vasto mundo chamado internet. E também sobre alguns assuntos que eu achar relevante o suficiente para comentar." />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" href="/assets/fav.webp" type="image/webp" />
|
||||
<link href="/assets/styles.css" rel="stylesheet">
|
||||
<title>Tukain's Blog</title>
|
||||
</head>
|
||||
<body>
|
5
pages/navbar.html
Normal file
5
pages/navbar.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
<header><nav><ul><li><a href="/">Home</a></li></ul><ul class="link">
|
||||
<li><a href="https://neocities.org/site/tukainpng">[Neocities]</a> </li>
|
||||
<li><a href="https://codeberg.org/tukain">[Codeberg]</a> </li>
|
||||
<li><a href="https://git.disroot.org/tukain">[Disroot]</a> </li>
|
||||
</ul><ul><li><a href="/blog.html">Blog</a></li></ul></nav></header><article>
|
Loading…
Reference in a new issue