org-mode... de novo...

This commit is contained in:
tukain 2024-10-17 22:01:34 -03:00
parent 78f012af5f
commit 8b73d58625
24 changed files with 2033 additions and 781 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

View file

@ -1,156 +1,219 @@
:root {
--background: #1F1F28;
--foreground: #DCD7BA;
--grey: #2A2A37;
--red: #FF5D62;
--green: #98BB6C;
--blue: #7E9CD8;
--primary: #957FB8;
--border: solid 1px var(--grey);
--background: #1F1F28;
--foreground: #DCD7BA;
--grey: #2A2A37;
--accent: #957FB8;
--border: solid 1px var(--grey);
}
*::-webkit-scrollbar {
display: none;
display: none;
}
* {
margin: 0;
padding: 0;
margin: 0;
padding: 0;
}
html {
position: relative;
min-height: 100%;
font-family: system-ui;
scroll-behavior: smooth;
position: relative;
min-height: 100%;
font-family: system-ui;
scroll-behavior: smooth;
}
body {
background-color: var(--background);
color: var(--foreground);
background-color: var(--background);
color: var(--foreground);
}
a {
text-decoration: none;
color: var(--blue);
text-decoration: none;
color: var(--accent);
}
a:hover {
opacity: 80%;
opacity: 80%;
}
hr {
border: var(--border);
border-bottom: none;
border: var(--border);
border-bottom: none;
}
blockquote {
background-color: var(--grey);
color: var(--primary);
border-left: solid 5px var(--primary);
margin: 1em auto;
padding: 10px 1em;
}
blockquote > blockquote {
border-left: none;
border-top: solid 1px var(--primary);
margin: 0;
padding: 0;
color: var(--green);
p > code {
color: var(--foreground);
background-color: var(--grey);
border-radius: 3px;
}
pre, code {
font-family: monospace;
background-color: var(--grey);
padding: 3px;
overflow-x: scroll;
background-color: var(--grey);
padding: 3px;
overflow-x: scroll;
}
p, hr, ul, ol {
margin-top: 0.5em;
margin-bottom: 0.5em;
list-style-position: inside;
blockquote {
background-color: var(--grey);
color: var(--accent);
border-left: solid 5px var(--accent);
padding: 10px 20px;
}
s {
opacity: 50%;
blockquote > p > code {
background-color: var(--accent);
color: var(--background);
}
h1 {
background-color: var(--grey);
padding: 10px;
p,
hr,
ul,
ol {
margin-top: 0.5em;
margin-bottom: 0.5em;
list-style-position: inside;
}
h1, #links, #note {
margin-top: 0.5em;
margin-bottom: 0.5em;
text-align: center;
h1, #table-of-contents {
background-color: var(--grey);
padding: 10px;
border-radius: 3px;
}
h2 {
border-bottom: var(--border);
h1,
h4 {
margin-top: 0.5em;
margin-bottom: 0.5em;
text-align: center;
}
h2,
h3 {
border-bottom: var(--border);
}
h4:has(i) {
margin-bottom: 2em;
}
img {
max-height: 400px;
max-width: 100%;
object-fit: cover;
display: block;
margin: 1em auto;
border: var(--border);
max-height: 400px;
max-width: 100%;
object-fit: cover;
display: block;
margin: 1em auto;
border: var(--border);
}
table, th, td {
border: var(--border);
padding: 5px;
border-collapse: collapse;
table,
th,
td {
border: var(--border);
padding: 5px;
border-collapse: collapse;
}
table {
display: block;
margin-left: auto;
margin-right: auto;
border: none;
overflow: scroll;
border: none;
overflow: scroll;
margin: 1em;
margin-left: auto;
margin-right: auto;
}
th, td {
padding-left: 1em;
padding-right: 1em;
margin: 0;
colgroup {
display: block;
margin-left: auto;
margin-right: auto;
}
th,
td {
padding-left: 1em;
padding-right: 1em;
margin: 0;
}
th {
font-weight: bold;
background-color: var(--grey);
font-weight: bold;
background-color: var(--grey);
}
th:hover {
opacity: 80%;
opacity: 80%;
}
td:hover {
background-color: var(--grey);
opacity: 50%;
background-color: var(--grey);
opacity: 50%;
}
footer {
display: block;
margin-left: auto;
margin-right: auto;
padding-top: 1em;
padding-bottom: 1em;
text-align: center;
background-color: var(--grey);
display: block;
margin-left: auto;
margin-right: auto;
padding-top: 1em;
padding-bottom: 1em;
text-align: center;
background-color: var(--grey);
}
article {
max-width: 80ch;
display: block;
margin-left: auto;
margin-right: auto;
padding: 1em;
min-height: 100vh;
.content {
max-width: 80ch;
display: block;
margin-left: auto;
margin-right: auto;
padding: 1em;
min-height: 100vh;
}
#table-of-contents {
background-color: var(--grey);
padding: 5px;
}
.src:hover::before {
float: right;
color: var(--accent);
}
.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"
}

View file

@ -1,36 +1,59 @@
<!DOCTYPE html>
<html lang="pt-br">
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Tukain's Blog</title>
<meta name="author" content="Tukain" />
<meta name="description" content="Um blog simples, feito usando o org-mode." />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<article>
<h1>Tukain's Blog</h1>
<h4 id="links">
<a href="https://neocities.org/site/tukainpng">Neocities</a>
<a href="https://codeberg.org/tukain">Codeberg</a>
</h4>
<h4 id="note"><i>Feito com <3 usando o <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></i></h4>
<p><h2>Bem-vindo ao meu blog!</h2><p>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.</p></p>
<h2>Posts</h2>
<ul>
<li><a href="/posts/9990.fiz-meu-ssg.html">fiz-meu-ssg</a></li>
<li><a href="/posts/9991.viper-mode.html">viper-mode</a></li>
<li><a href="/posts/9992.emacs-parte-2.html">emacs-parte-2</a></li>
<li><a href="/posts/9993.emacs.html">emacs</a></li>
<li><a href="/posts/9994.proton.html">proton</a></li>
<li><a href="/posts/9995.raylib.html">raylib</a></li>
<li><a href="/posts/9996.algumas-atualizações.html">algumas-atualizações</a></li>
<li><a href="/posts/9997.tchau-hare.html">tchau-hare</a></li>
<li><a href="/posts/9998.c-e-hare.html">c-e-hare</a></li>
<li><a href="/posts/9999.hare.html">hare</a></li>
<div id="content" class="content">
<header>
<h1 class="title">Tukain's Blog</h1>
</header>
<div id="outline-container-org542c7f4" class="outline-4">
<h4 id="org542c7f4"><a href="https://neocities.org/site/tukainpng">Neocities</a> <a href="https://codeberg.org/tukain">Codeberg</a> <a href="https://www.linkedin.com/in/diogo-fernandes-710193282/">LinkedIn</a></h4>
</div>
<div id="outline-container-org93a55c2" class="outline-4">
<h4 id="org93a55c2"><i>Feito com ❤️ usando o org-mode</i></h4>
</div>
<div id="outline-container-org44e623f" class="outline-2">
<h2 id="org44e623f">Bem-vindo ao meu blog!</h2>
<div class="outline-text-2" id="text-org44e623f">
<p>
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.
</p>
</div>
</div>
<div id="outline-container-orgb37b622" class="outline-2">
<h2 id="orgb37b622">Posts</h2>
<div class="outline-text-2" id="text-orgb37b622">
<ul class="org-ul">
<li><a href="posts/god-mode.html">posts/god-mode.html</a></li>
<li><a href="posts/fiz-meu-próprio-ssg.html">posts/fiz-meu-próprio-ssg.html</a></li>
<li><a href="posts/viper-mode.html">posts/viper-mode.html</a></li>
<li><a href="posts/emacs-parte-2.html">posts/emacs-parte-2.html</a></li>
<li><a href="posts/emacs.html">posts/emacs.html</a></li>
<li><a href="posts/proton.html">posts/proton.html</a></li>
<li><a href="posts/raylib-ha.html">posts/raylib-ha.html</a></li>
<li><a href="posts/algumas-atualizações.html">posts/algumas-atualizações.html</a></li>
<li><a href="posts/tchau-hare.html">posts/tchau-hare.html</a></li>
<li><a href="posts/c-e-hare.html">posts/c-e-hare.html</a></li>
<li><a href="posts/hare.html">posts/hare.html</a></li>
</ul>
</article>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 20:52</p></footer>
</div>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>
</html>

View file

@ -1,80 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>Blog.sh, o meu próprio SSG</h1>
<p>Dos produtores de "Ovorefazermeusaite", vêm aí "E se eu fizer meu próprio
gerador de sites?"!</p>
<p>Agora falando sério, eu realmente fiz o meu próprio SSG (Static Site Generator).</p>
<p>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.</p>
<h2>Pera aí, você não estava usando o org-mode para fazer o site?</h2>
<p>Exatamente, estava. Mas agora eu vou utilizar a minha própria ferramenta, no
maior estilo Miles Morales:</p>
<p><img src="/assets/gif/myles.gif">
</p>
<p>Apesar disso, eu fiz questão de deixar a usabilidade e a experiência de uso
o mais próximo possível, e na realidade, deixando até mesmo mais fácil.</p>
<h2>Geração de site rápida pra k7</h2>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h2>Por debaixo dos panos</h2>
<p>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</p>
<p>Todos os arquivos dentro do diretório <code>content</code> são lidos pelo <code>smu</code>, programa
que é utilizado para converter um texto no estilo Markdown para HTML.</p>
<p>O <code>smu</code> 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 <code>smu</code> não tiver suporte pode ser
substituído por uma tag.</p>
<h2>Por que?</h2>
<p>Eu fiz isso puramente para ver se eu conseguiria fazer um SSG, e, se tratando de
funcionalidade básica, eu consegui sem nenhum problema.</p>
<p>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.</p>
<p>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:</p>
<pre><code>blog.sh build
</code></pre>
<p>E na realidade eu nem vou precisar digitar esse comando, eu já fiz um outro
comando que é um equivalente ao <code>hugo serve</code> da vida. Tudo o que eu preciso
fazer é digitar</p>
<pre><code>blog.sh serve
</code></pre>
<p>E isso vai abrir um servidor HTTP usando o <code>python -m http.server</code> e também vai
executar o comando <code>entr</code>, que serve para "ficar de olho em mudanças", e sempre
que o <code>entr</code> notar alguma mudança em algum arquivo do diretório <code>content</code> ele
mesmo executa o <code>blog.sh build</code> e atualiza as páginas.</p>
<p>Tudo o que eu preciso fazer agora é ficar de olho em qualquer bug que possa
aparecer.</p>
<h2><em>Fin</em></h2>
<p>Enfim, é isso o que eu tinha para falar por agora.</p>
<p>Te vejo no próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -1,48 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>Vi, só que entro do Emacs!</h1>
<p> Esse mostro de programa é tão cheio de coisa para se falar que já garantiu até uma trilogia nesse blog.</p>
<h2>Viper</h2>
<p>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.</p>
<p>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).</p>
<p>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.</p>
<h2>Bem, e como é usar ele?</h2>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<pre><code>(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)
</code></pre>
<p>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.</p>
<p>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.</p>
<h2><em>Fin</em></h2>
<p>Bom, é isso, acho que por agora eu não tenho mais o que falar sobre esse lindo programa chamado Emacs.</p>
<p>Até o próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -1,96 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>Emacs parte 2</h1>
<p>Hmmm… Parte 2? Hmmm…</p>
<p>Bem, eu não acho que isso vá ser um post longo ou que vá adicionar muito ao
post original, então você pode ignorar ele a vontade.</p>
<h2>Sobre o "ambiente onde eu possa usar o Emacs"</h2>
<p>Então, eu já consegui fazer um. É meio que feito na gambiarra, mas funciona.</p>
<p>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.</p>
<p>Porém, como eu posso rodar qualquer programa que eu quiser nele, então nada
melhor do que fazer um "kiosk" com o Emacs!</p>
<p>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.</p>
<p>Simplificando, eu posso usar até mesmo a tecla super (Windows) se eu quiser e
eu vou estar de boa.</p>
<h2>O que mais adicionei à minha configuração do Emacs?</h2>
<p>Teclas de atalho novas, como por exemplo, teclas para:</p>
<ul>
<li>Aumentar/diminuir o brilho da tela do meu notebook;</li>
<li>Aumentar/diminuir o volume do meu notebook;</li>
<li>Capturar a tela do Emacs (usando o próprio emacs).</li>
<li>Gravar a tela</li>
</ul>
<p>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.</p>
<h2>Org-publish é praticamente um SSG</h2>
<p>Eu sei que eu já comentei algo parecido com isso no meu outro post:</p>
<blockquote><p>Apesar de ter usado diversos SSG's nos últimos tempos, nenhum deles possui a</p>
</blockquote>
<p>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.</p>
<blockquote><p>Esse site inteiro foi refeito utilizando essa ferramenta de gereção de sites</p>
</blockquote>
<p>nativa do Emacs.</p>
<p>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.</p>
<p>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.</p>
<p>Todas as páginas seguem um padrão pré-definido, todas.</p>
<p>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.</p>
<p>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.</p>
<p>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!</p>
<p>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.</p>
<p>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).</p>
<h2>O site é praticamente um espelho da minha config</h2>
<p>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.</p>
<p>Não é que eu não veja como a página fica, mas eu não tenho a necessidade de ver
como ele fica.</p>
<p>Melhor do que só mencionar é mostrar, então aqui está uma screenshot do meu
Emacs:</p>
<p><img src='/assets/img/emacs-parte-2.webp'>
</p>
<p>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</p>
<p>Bem, é isso. Eu falei que esse posts seria algo rápido.</p>
<p>Enfim, até o próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -1,89 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>Emacs</h1>
<p>Olha só quem voltou! E mais uma vez com o site completamente mudado!</p>
<p>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).</p>
<h2>Emacs, que saudades que estava de você!</h2>
<p>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.</p>
<p>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.</p>
<h2>Org-mode, o criador de sites mais prático que conheço</h2>
<p>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.</p>
<p>Esse site inteiro foi refeito utilizando essa ferramenta de gereção de sites nativa do Emacs.</p>
<h2>Zero JavaScript</h2>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h2>Quase um SSG… Quase.</h2>
<p>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.</p>
<p>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:</p>
<p>Configurando o ox-publish e automatizando o processo de criação de HTML.</p>
<pre><code>(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 "&lt;link rel=stylesheet href=\"/assets/css/styles.css\" /&gt;"
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!")
</code></pre>
<p>Um script para executar os comandos necessários para gerar o site</p>
<pre><code>#!/bin/sh
mkdir -p public &amp;&amp; emacs -x build.el &amp;&amp; cp -r assets/ public/
</code></pre>
<p>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</p>
<p>É 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 🤓.</p>
<p>Atualmente eu já configurei o Emacs o suficiente para substituir a minha configuração do Neovim, e também configurei coisas como:</p>
<ul>
<li>Um servidor HTTP (para visualizar o meu site localmente)</li>
<li>Um agente PGP (EasyPG).</li>
<li>Um cliente de email (Gnus)</li>
<li>Uma interface para o Git (Magit)</li>
<li>Um leitor de feeds RSS (Elfeed)</li>
</ul>
<p>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.</p>
<h2>Aos poucos, estou deixando o meu setup ser apenas um ambiente onde eu possa usar o Emacs</h2>
<p>Eu ainda não iniciei o meu arco Uchirra da vida e saí eliminando meus programas, ainda.</p>
<p>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).</p>
<p>Mas vou deixar para fazer isso outra hora, afinal de contas isso vai tomar um pouco do meu tempo para poder concluir.</p>
<h2><em>Fin</em></h2>
<p>Enfim, acho que já é hora de eu para de ficar tagarelando.</p>
<p>Te vejo no próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -1,76 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>Tô usando os serviços da Proton</h1>
<p>Depois de aproximadamente 1 ano, eu criei uma nova conta no 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.</p>
<h2>Por que?</h2>
<p>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.</p>
<p>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 e
no mesmo dia a gente fez essa troca. E claro, eu coloquei a Lineage no G52.</p>
<p>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.</p>
<p>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á.</p>
<h2>Mudanças no armazenamento</h2>
<p>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.</p>
<p>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!</p>
<p>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.</p>
<h2>Uma senha praticamente impossível de digitar para a minha conta do Google</h2>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h2><em>Fin</em></h2>
<p>Enfim, acho que já tagarelei demais.</p>
<p>Até o próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -1,33 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>Raylib.ha</h1>
<p>Nos últimos dias eu ando trabalhando em um pequeno projeto, esse sendo algo que estou fazendo como uma forma de aprendizado. O nome que dei a esse projeto é raylib.ha.</p>
<p>A minha inspiração foi uma live de um streamer que eu acompanho, o Tsoding. A live em questão é uma em que ele explora a Harelang pela primeira vez, ao decorrer da live, ele se questiona se ele poderia usar a raylib com a Hare. Depois de alguns minutos explorando, ele descobre como ele pode fazer isso, e parte em direção para criar uma janela com um quadrado vermelho que pode se movimentar na janela com as teclas W/A/S/D.</p>
<h2>Do que se trata</h2>
<p>Bem, antes de falar sobre o meu projeto, acho melhor esclarecer a aqueles que não conhece a raylib o que ela é. A raylib, como o nome já pode soar, é uma biblioteca que serve para a criação de jogos em C sem muita dor de cabeça.</p>
<p>E o meu projeto se trata de algo cujo o objetivo é criar bindings que permitam o uso da raylib por meio da Harelang.
<h2>Meus objetivos</h2>
</p>
<p>Quero que, ao finalizar o projeto, seja possível criar jogos usando a raylib com a mesma facilidade, se não até mais, do que quando sendo feito usando C. Por enquanto estou focando nas partes necessárias para fazer um jogo 2D, seja esse jogo um plataformer, seja ele arena-shooter top-down.</p>
<p>Claro que isso implica também a necessidade de fazer bindings para a raymath, já que um jogo, por mais simples que seja, também precisa ter física. E eu vou sim fazer isso, só não agora. Ainda assim, não vai demorar muito para eu começar a fazer as bindings da raymath.</p>
<h2>Meu progresso até agora</h2>
<p>Ainda me considero um iniciante, e falta muito para conseguir fazer todas as bindings para jogos 2D, quem dirá para todo o resto. Porém, já consegui finalizar coisas como o input via gamepads, teclado e mouse, praticamente todas as formas geométricas com a excessão de apenas 3, funções de timing, enfim, tive um avanço significativo.</p>
<p>Além da tradução direta das funções feitas em C, eu também fiz algumas adaptações para que não ouvesse atrito/diferença na forma em que você usa algumas funções. Também adicionei um método alternativo para a criação de triângulos.</p>
<p>A última coisa que realizei até o momento foi o suporte a músicas, e irei adicionar as demais funções relacionadas a áudio ainda nessa semana. Essa última função foi também fruto de uma intuição sobre como poder utilizar structs definidos fora da raylib.ha, e pode ter certeza de que foi gratificante saber que deu certo.</p>
<h2><em>Fin</em></h2>
<p>Bem, isso é tudo o que eu tenho a comentar por agora.</p>
<p>Até o próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -1,62 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>Algumas Atualizações</h1>
<p>Tudo bem com você? Espero que sim. Bom, na última semana eu ando passando quase que por uma montanha-russa de emoções. Mudei a estrutura do meu site, migrei do Github para 3 serviços Git diferentes, voltei a usar o Neovim, decidi deixar a Hare de lado… Mas esse último não durou muito, e eu vou começar comentando sobre ele.</p>
<h2>Já estou usando a Hare de novo.</h2>
<p>Bom, apesar de tudo o que eu disse em um post de uma semana atrás, eu acabei voltando a usar a Hare. Dessa vez eu não sei muito bem como explicar o motivo de voltar, mas posso dizer que foi algo mais emocional do que lógico. Algo como um sentimento de nostalgia, já que Hare foi a primeira linguagem de programação que eu realmente parei para estudar e aprender a programar com ela.</p>
<p>Pode haver também um pouco de orgulho envolvido, já que ela é uma linguagem relativamente desconhecida e por conta disso não existem tutoriais e vídeos sobre ela por aí, com excessão dos vindos dos próprios desenvolvedores da Hare e de poucas excessões como o Tsoding.</p>
<p>E não, eu ainda não sei programar, mas posso dizer que estou aprendendo uma coisa ou outra, e devo isso à Hare. Acho que o design dela faz com que quando eu tente fazer algo e ele não funciona, o problema está puramente na forma em que eu me expressei, e não na forma que eu pensei.</p>
<p>Um exemplo muito bom disso é um problema que tive ao fazer um clone do comando “cat”. O problema era o seguinte:</p>
<p>O programa conseguia ler o arquivo dado pelo usuário sem problema, porém, ele mostrava apenas a primeira linha do arquivo. Então, eu precisaria de uma forma de mostrar a linha atual e depois disso a próxima e assim por diante, incrementando a posição atual.</p>
<p>Eu provavelmente não vou conseguir escrever exatamente como que estava a linha de código que só mostrava a primeira linha, mas era algo mais ou menos assim:</p>
<pre><code>fn lerArquivo(lines: []str) void = {
let total = len(lines);
for (let i = 0z; i &lt; total) {
fmt::println(lines[i])!;
i=i+1;
};
};
</code></pre>
<p>O erro está na 6ª linha, eu tentei fazer o valor de “i” ser incrementado por “1” até que o valor de “i” fosse igual ao “total”, o que em questão de lógica está correto, mas a expressão “i = i+1” está errada.</p>
<p>Se eu não estou enganado, esta é a sintaxe usada na linguagem de programação Lua.</p>
<p>A forma correta de incrementar um número em Hare (e em outras línguas) é com o operador “+=”, que serve justamente para incrementar. Então, feita essa pequena modificação, o programa re-itera pelo arquivo, lê, e escreve a linha atual sem nenhum problema.</p>
<p>E sim, eu tomei como base parte de um exemplo da documentação da Hare para fazer esse programa, sendo essa parte alguns dos módulos usados, mas a lógica em si e a execução foram feitos por conta própria.</p>
<h2>O site sofreu várias mudanças</h2>
<p>Acompanhada dessa minha saga de estudos sobre programação, vieram também diversas mudanças com esse site. Se bem que nesse aspecto, mudar o site é algo extremamente recorrente. Mas devo mencionar a atual presença de nenhum framework ou gerador de site estático sendo usada para a criação de páginas/posts.</p>
<p>Em relação a Web, a única coisa que se mantém consistente em todas as versões do meu site que já existiram é a falta ou presença mínima de javascript. Com excessão disso, já fiz diversas mudanças que variam de coisas como a estrutura de arquivos do site, para tags usadas, classes, propriedades, enfim, toda a infraestrutura.</p>
<p>A mudança mais atual é o meu próprio css sendo implementado e alterado conforme minhas necessidades. É a basicamente a minha primeira vez fazendo o css do meu site completamente do 0, e tomando cuidado também em relação a resposividade dele com aparelhos mobile, na verdade dando um foco especial a esses aparelhos.</p>
<p>O motivo disso é porque a única pessoa que eu tenho não só plena certeza de que lê todos os posts, como também é alguém que eu sempre tento agradar com cada post: a minha namorada.</p>
<p>E bom, a forma que ela lê os artigos é por meio do celular dela, então nada mais justo do que dar uma atenção especial para este tipo de aparelho.</p>
<h2>Migrei do Github para 3 serviços Git diferentes</h2>
<p>Ok, isso é algo que precisa de uma explicação mais detalhada.</p>
<p>A não muito tempo atrás esse site, junto de outros projetos, era hosteado no Github, o que eu já devo admitir que não gostava nem um pouco. A interface gráfica é muito sem personalidade, basicamente um espelho das interfaces corporativas que vemos pelo mundo afora.</p>
<p>O que não é uma surpresa na verdade, afinal, o Github é um produto da Microsoft, então isso não é nada além do mínimo esperado. E claro, ele também é algo de código fechado.</p>
<p>Ao menos para mim, não é muito confortável deixar algo de código aberto guardado em um produto de código fechado, muito menos depender desse produto.</p>
<p>Mas enfim, o motivo que me fez deixar de usar o Github foi simples: Ele simplesmente desabilitou minha conta por conta de “atividade suspeita na conta”, sendo que essa atividade foi realizada por mim mesmo, usando uma chave ssh verificada pela minha conta (que inclusive tem também autenticação de 2 fatores via OTP e app).</p>
<p>E já que o Github descidiu dar o primeiro passo, eu segui adiante.</p>
<p>Atualmente o meu site é hosteado no Codeberg, e também é nele que guardo meus projetos, porém, ele não é o meu Git principal, ele é o meu secundário. O meu git primário é o git.cbps.xyz/guapito, e eu também tenho um git reserva que uso como backup no git.disroot.org.</p>
<p>Eu mantenho todos os 3 gits sincronizados usando uma função que os 3 compartilham por usarem o mesmo software de servidor: push mirrors.</p>
<p>Tudo o que eu preciso fazer é garantir que todos os 3 possuem os mesmos repositórios, depois, em 1 dos gits eu adiciono os repositórios dos demais nas configurações do repositório respectivo na seção de push mirros e pronto, quaisquer mudanças feitas nesse repositório serão refletidas nos demais.</p>
<h2>Voltei a usar o Neovim</h2>
<p>Bom, eu já esperava que essa volta viria cedo ou tarde. O Helix é um ótimo editor de texto, e ele realmente é melhor que a minha configuração do Neovim, porém, o problema vive justamente aí, eu posso deixar o meu Neovim melhor que o Helix com apenas alguns ajustes e 2/3 plugins.</p>
<p>E eu fiz diversas mudanças na minha configuração do Neovim, a única coisa que está faltando mesmo é suporte a lsp, tirando isso, ela já está melhor que o Helix em seu estado atual.</p>
<p>A simples possibilidade de modificar a interface e como as coisas funcionam da forma que quiser já é algo que me faz preferir o Neovim. Claro que eu não sou um maníaco por customização, sempre que uma opção limitada for melhor que a customizável em certa tarefa, eu vou usar a opção limitada, e bom, esse foi o caso do Helix enquanto eu não aprimorava a minha configuração do Neovim.</p>
<p>E agora que a minha configuração está muito mais madura, eu oficialmente posso colocar o Helix em uma posição de editor de texto secundário, tomando o lugar do Emacs, que deixei de utilizar a um tempo.</p>
<h2>Fin</h2>
<p>Enfim, obrigado por ler este artigo, significa muito para mim.</p>
<p>Até o próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -1,36 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>Deixando a Hare de lado… Por enquanto.</h1>
<p>Irei começar me explicando o porquê de eu ter decidido isso de forma tão repentina. Bom, se você leu o meu último artigo, então sabe que eu ando estudando 2 linguagens de programação: C e Hare. Apesar de ter gostado e muito de estudar as duas línguas em conjunto, eu tenho que encarar um fato: eu não sei programar.</p>
<h2>Quer dizer então que vou desistir?</h2>
<p>Nada disso. Irei continuar meus estudos, porém, apenas usando uma língua, a C. O motivo disso é uma consequência de não saber programação no geral, há coisas que eu preciso de uma documentação detalhada ou até mesmo uma explicação em si, mas a Hare não está pronta, muito menos a sua documentação, sem se falar que ela é qualquer coisa, menos popular.</p>
<p>A consequência disso é que se eu estou em dúvida sobre algo que eu quero fazer, eu não vou achar no Google, e tem uma boa chance de não achar na documentação também.</p>
<p>Por isso irei continuar apenas com a C, ela é uma linguagem que é extremamente popular e utilizada até hoje, não falta nenhuma documentação/explicação sobre algo, e é uma linguagem que já está terminada.</p>
<h2>Ainda assim irei sentir saudades da Hare.</h2>
<p>Apesar de ter essa “deficiência” em relação a documentação, a Hare é uma linguagem muito boa, mesmo em seus estágios iniciais. O único erro foi eu querer aprender a programar com uma linguagem que não está pronta ainda.</p>
<p>O maior problema de tentar fazer o que eu fiz é que você não tem a quem, ou o que recorrer. Você está por conta própria. Sendo assim, a Hare é uma linguagem que eu recomendaria apenas para as pessoas que já são programadores, principalmente as que tem certa familiaridade com C.</p>
<h2>C também não é muito amigável, mas estou acostumado.</h2>
<p>Você poderia até mesmo achar que eu querer aprender a programar com C seria outra ideia ruim, mas eu acho que (para o meu caso) essa é uma ideia boa.</p>
<p>C é famosa por ser uma linguagem “difícil”, “insegura”, “limitada” e até mesmo “defasada”. A verdade é que certas coisas realmente estão corretas em relação a C, já que ela foi criada a quase 60 anos atrás, mas isso não quer dizer que ela é uma linguagem que não se deve aprender.</p>
<p>E até mesmo por ela ser “limitada” acaba tornando-a uma boa língua para aprender a programar. Ela é uma linguagem simples, com pouca coisa, mas com o suficiente para você conseguir fazer programas sem nenhuma dificuldade. E também, funciona em qualquer coisa que tenha um processador.</p>
<h2>Eu penso um pouco com a lógica de C.</h2>
<p>Posso estar me expressando mal ao dizer isso, mas eu tenho uma linha de raciocício que segue +/- a forma em que você faz algo em C. Por isso até que eu tive certa facilidade com a Hare e Go.</p>
<p>Um dos prováveis motivos de eu ter essa linha de raciocício pode ter sido o período em que eu utilizava softwares da suckless. Todos eles são feitos em C puro, e eu costumava aplicar muitos patches, por consequência, tive o hábito de consertar inconsistências e de corrigir erros na aplicação de patches.</p>
<p>Por conta disso, memorizei muitas das palavras-chave de C e também um pouco de como um programa feito em C é estruturado.</p>
<h2><em>Fin</em></h2>
<p>Hoje isso é tudo o que eu tenho a dizer.</p>
<p>Até o próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -1,86 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>A simplicidade da C e da Hare</h1>
<p>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).</p>
<h2>Por quê estou fazendo isso?</h2>
<p>Bom, isso é algo que eu simplesmente esqueci de comentar no meu último post, estou fazendo isso por 2 motivos principais:</p>
<p>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.</p>
<p>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.</p>
<h2>Existe algum outro motivo?</h2>
<p>Ó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.</p>
<p>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.</p>
<h2>Como está meu progresso até agora?</h2>
<p>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).</p>
<p>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.</p>
<p>Escrito em C:
<pre><code>
int main()
{
FILE *arq;
char nome[100];
printf("Digite o nome do arquivo: ");
scanf("%s", &amp;nome[0]);
if (fopen(nome, "r"))
{
printf("O arquivo já existe.\n");
}
else
{
arq = fopen(nome, "w");
}
}
</code></pre>
<pre><code>
</code></pre>
<p> <br /> </p>
</p>
<p>Escrito em Hare:
<pre><code>
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)!;
};
</code></pre>
<pre><code>
</code></pre>
<p> <br /> </p>
</p>
<h2>As diferenças</h2>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h2><em>Fin</em></h2>
<p>Bem, isso é tudo o que eu tenho a dizer por agora.</p>
<p>Até o próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -1,52 +0,0 @@
<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="<h2>Bem-vindo ao meu blog!</h2><p>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.</p>" />
<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>
<article>
<h1>Hare</h1>
<h2>Praticamente C, mas com diversas melhorias</h2>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h2>QBE como backend</h2>
<p>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:</p>
<blockquote><p>QBE é um backend para compiladores, com o foco de providenciar 70% da
performance de compiladores otimizados da indústria com 10% do código.</p>
</blockquote>
<p>De certa forma, o QBE se encaixa até mesmo na filosofia suckless, o que para
mim pelo menos, é um grande ponto possitivo.</p>
<h2>O que eu planejo fazer aprendendo a programar?</h2>
<p>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.</p>
<h2><em>Fin</em></h2>
<p>Enfim, é isso, até o próximo post!</p>
</article>
</body>
<footer><p>Made with <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a></p></footer>

View file

@ -0,0 +1,295 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Algumas atualizações</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">Algumas atualizações</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org274dd5c">Já estou usando a Hare de novo.</a></li>
<li><a href="#org5c9bb93">O site sofreu várias mudanças</a></li>
<li><a href="#org76f9c5c">Migrei do Github para 3 serviços Git diferentes</a></li>
<li><a href="#org783724e">Voltei a usar o Neovim</a></li>
<li><a href="#org7284bd8"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
Tudo bem com você? Espero que sim. Bom, na última semana eu ando
passando quase que por uma montanha-russa de emoções. Mudei a
estrutura do meu site, migrei do Github para 3 serviços Git
diferentes, voltei a usar o Neovim, decidi deixar a Hare de lado… Mas
esse último não durou muito, e eu vou começar comentando sobre ele.
</p>
<div id="outline-container-org274dd5c" class="outline-2">
<h2 id="org274dd5c">Já estou usando a Hare de novo.</h2>
<div class="outline-text-2" id="text-org274dd5c">
<p>
Bom, apesar de tudo o que eu disse em um post de uma semana atrás, eu
acabei voltando a usar a Hare. Dessa vez eu não sei muito bem como
explicar o motivo de voltar, mas posso dizer que foi algo mais
emocional do que lógico. Algo como um sentimento de nostalgia, já que
Hare foi a primeira linguagem de programação que eu realmente parei
para estudar e aprender a programar com ela.
</p>
<p>
Pode haver também um pouco de orgulho envolvido, já que ela é uma
linguagem relativamente desconhecida e por conta disso não existem
tutoriais e vídeos sobre ela por aí, com excessão dos vindos dos
próprios desenvolvedores da Hare e de poucas excessões como o Tsoding.
</p>
<p>
E não, eu ainda não sei programar, mas posso dizer que estou
aprendendo uma coisa ou outra, e devo isso à Hare. Acho que o design
dela faz com que quando eu tente fazer algo e ele não funciona, o
problema está puramente na forma em que eu me expressei, e não na
forma que eu pensei.
</p>
<p>
Um exemplo muito bom disso é um problema que tive ao fazer um clone do
comando “cat”. O problema era o seguinte:
</p>
<p>
O programa conseguia ler o arquivo dado pelo usuário sem problema,
porém, ele mostrava apenas a primeira linha do arquivo. Então, eu
precisaria de uma forma de mostrar a linha atual e depois disso a
próxima e assim por diante, incrementando a posição atual.
</p>
<p>
Eu provavelmente não vou conseguir escrever exatamente como que estava
a linha de código que só mostrava a primeira linha, mas era algo mais
ou menos assim:
</p>
<div class="org-src-container">
<pre class="src src-hare"><span style="color: #957FB8; font-weight: bold; font-style: italic;">fn</span> lerArquivo(lines: []<span style="color: #7AA89F;">str</span>) <span style="color: #7AA89F;">void</span> = {
<span style="color: #957FB8; font-weight: bold; font-style: italic;">let</span> total = <span style="color: #DCD7BA;">len</span>(lines);
<span style="color: #957FB8; font-weight: bold; font-style: italic;">for</span> (<span style="color: #957FB8; font-weight: bold; font-style: italic;">let</span> i = 0z; i &lt; total) {
fmt::println(lines[i])!;
i=i+1;
};
};
</pre>
</div>
<p>
O erro está na 6ª linha, eu tentei fazer o valor de “i” ser
incrementado por “1” até que o valor de “i” fosse igual ao “total”, o
que em questão de lógica está correto, mas a expressão “i = i+1” está
errada.
</p>
<p>
Se eu não estou enganado, esta é a sintaxe usada na linguagem de
programação Lua.
</p>
<p>
A forma correta de incrementar um número em Hare (e em outras línguas)
é com o operador “+=”, que serve justamente para incrementar. Então,
feita essa pequena modificação, o programa re-itera pelo arquivo, lê,
e escreve a linha atual sem nenhum problema.
</p>
<p>
E sim, eu tomei como base parte de um exemplo da documentação da Hare
para fazer esse programa, sendo essa parte alguns dos módulos usados,
mas a lógica em si e a execução foram feitos por conta própria.
</p>
</div>
</div>
<div id="outline-container-org5c9bb93" class="outline-2">
<h2 id="org5c9bb93">O site sofreu várias mudanças</h2>
<div class="outline-text-2" id="text-org5c9bb93">
<p>
Acompanhada dessa minha saga de estudos sobre programação, vieram
também diversas mudanças com esse site. Se bem que nesse aspecto,
mudar o site é algo extremamente recorrente. Mas devo mencionar a
atual presença de nenhum framework ou gerador de site estático sendo
usada para a criação de páginas/posts.
</p>
<p>
Em relação a Web, a única coisa que se mantém consistente em todas as
versões do meu site que já existiram é a falta ou presença mínima de
javascript. Com excessão disso, já fiz diversas mudanças que variam de
coisas como a estrutura de arquivos do site, para tags usadas,
classes, propriedades, enfim, toda a infraestrutura.
</p>
<p>
A mudança mais atual é o meu próprio css sendo implementado e alterado
conforme minhas necessidades. É a basicamente a minha primeira vez
fazendo o css do meu site completamente do 0, e tomando cuidado também
em relação a resposividade dele com aparelhos mobile, na verdade dando
um foco especial a esses aparelhos.
</p>
<p>
O motivo disso é porque a única pessoa que eu tenho não só plena
certeza de que lê todos os posts, como também é alguém que eu sempre
tento agradar com cada post: a minha namorada.
</p>
<p>
E bom, a forma que ela lê os artigos é por meio do celular dela, então
nada mais justo do que dar uma atenção especial para este tipo de
aparelho.
</p>
</div>
</div>
<div id="outline-container-org76f9c5c" class="outline-2">
<h2 id="org76f9c5c">Migrei do Github para 3 serviços Git diferentes</h2>
<div class="outline-text-2" id="text-org76f9c5c">
<p>
Ok, isso é algo que precisa de uma explicação mais detalhada.
</p>
<p>
A não muito tempo atrás esse site, junto de outros projetos, era
hosteado no Github, o que eu já devo admitir que não gostava nem um
pouco. A interface gráfica é muito sem personalidade, basicamente um
espelho das interfaces corporativas que vemos pelo mundo afora.
</p>
<p>
O que não é uma surpresa na verdade, afinal, o Github é um produto da
Microsoft, então isso não é nada além do mínimo esperado. E claro, ele
também é algo de código fechado.
</p>
<p>
Ao menos para mim, não é muito confortável deixar algo de código
aberto guardado em um produto de código fechado, muito menos depender
desse produto.
</p>
<p>
Mas enfim, o motivo que me fez deixar de usar o Github foi simples:
Ele simplesmente desabilitou minha conta por conta de “atividade
suspeita na conta”, sendo que essa atividade foi realizada por mim
mesmo, usando uma chave ssh verificada pela minha conta (que inclusive
tem também autenticação de 2 fatores via OTP e app).
</p>
<p>
E já que o Github descidiu dar o primeiro passo, eu segui adiante.
</p>
<p>
Atualmente o meu site é hosteado no Codeberg, e também é nele que
guardo meus projetos, porém, ele não é o meu Git principal, ele é o
meu secundário. O meu git primário é o git.cbps.xyz/guapito, e eu
também tenho um git reserva que uso como backup no git.disroot.org.
</p>
<p>
Eu mantenho todos os 3 gits sincronizados usando uma função que os 3
compartilham por usarem o mesmo software de servidor: push mirrors.
</p>
<p>
Tudo o que eu preciso fazer é garantir que todos os 3 possuem os
mesmos repositórios, depois, em 1 dos gits eu adiciono os repositórios
dos demais nas configurações do repositório respectivo na seção de
push mirros e pronto, quaisquer mudanças feitas nesse repositório
serão refletidas nos demais.
</p>
</div>
</div>
<div id="outline-container-org783724e" class="outline-2">
<h2 id="org783724e">Voltei a usar o Neovim</h2>
<div class="outline-text-2" id="text-org783724e">
<p>
Bom, eu já esperava que essa volta viria cedo ou tarde. O Helix é um
ótimo editor de texto, e ele realmente é melhor que a minha
configuração do Neovim, porém, o problema vive justamente aí, eu posso
deixar o meu Neovim melhor que o Helix com apenas alguns ajustes e 2/3
plugins.
</p>
<p>
E eu fiz diversas mudanças na minha configuração do Neovim, a única
coisa que está faltando mesmo é suporte a lsp, tirando isso, ela já
está melhor que o Helix em seu estado atual.
</p>
<p>
A simples possibilidade de modificar a interface e como as coisas
funcionam da forma que quiser já é algo que me faz preferir o
Neovim. Claro que eu não sou um maníaco por customização, sempre que
uma opção limitada for melhor que a customizável em certa tarefa, eu
vou usar a opção limitada, e bom, esse foi o caso do Helix enquanto eu
não aprimorava a minha configuração do Neovim.
</p>
<p>
E agora que a minha configuração está muito mais madura, eu
oficialmente posso colocar o Helix em uma posição de editor de texto
secundário, tomando o lugar do Emacs, que deixei de utilizar a um
tempo.
</p>
</div>
</div>
<div id="outline-container-org7284bd8" class="outline-2">
<h2 id="org7284bd8"><i>Fin</i></h2>
<div class="outline-text-2" id="text-org7284bd8">
<p>
Enfim, obrigado por ler este artigo, significa muito para mim.
</p>
<p>
Até o próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>

186
posts/c-e-hare.html Normal file
View file

@ -0,0 +1,186 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>A simplicidade da C e da Hare</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">A simplicidade da C e da Hare</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org5712104">Por quê estou fazendo isso?</a></li>
<li><a href="#orgb53c49a">Existe algum outro motivo?</a></li>
<li><a href="#org10c57a9">Como está meu progresso até agora?</a></li>
<li><a href="#org270d8bc"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
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).
</p>
<div id="outline-container-org5712104" class="outline-2">
<h2 id="org5712104">Por quê estou fazendo isso?</h2>
<div class="outline-text-2" id="text-org5712104">
<p>
Bom, isso é algo que eu simplesmente esqueci de comentar no meu último
post, estou fazendo isso por 2 motivos principais:
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-orgb53c49a" class="outline-2">
<h2 id="orgb53c49a">Existe algum outro motivo?</h2>
<div class="outline-text-2" id="text-orgb53c49a">
<p>
Ó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.
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-org10c57a9" class="outline-2">
<h2 id="org10c57a9">Como está meu progresso até agora?</h2>
<div class="outline-text-2" id="text-org10c57a9">
<p>
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).
</p>
<p>
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.
</p>
<p>
Escrito em C:
</p>
<div class="org-src-container">
<pre class="src src-C"><span style="color: #7AA89F;">int</span> <span style="color: #7E9CD8;">main</span>()
{
<span style="color: #7AA89F;">FILE</span> *<span style="color: #E6C384;">arq</span>;
<span style="color: #7AA89F;">char</span> <span style="color: #E6C384;">nome</span>[100];
printf(<span style="color: #98BB6C;">"Digite o nome do arquivo: "</span>);
scanf(<span style="color: #98BB6C;">"%s"</span>, &amp;nome[0]);
<span style="color: #957FB8; font-weight: bold; font-style: italic;">if</span> (fopen(nome, <span style="color: #98BB6C;">"r"</span>))
{
printf(<span style="color: #98BB6C;">"O arquivo j&#225; existe.\n"</span>);
}
<span style="color: #957FB8; font-weight: bold; font-style: italic;">else</span>
{
arq = fopen(nome, <span style="color: #98BB6C;">"w"</span>);
}
}
</pre>
</div>
<p>
Escrito em Hare:
</p>
<div class="org-src-container">
<pre class="src src-hare"><span style="color: #957FB8; font-weight: bold; font-style: italic;">use</span> os;
<span style="color: #957FB8; font-weight: bold; font-style: italic;">use</span> bufio;
<span style="color: #957FB8; font-weight: bold; font-style: italic;">use</span> strings;
<span style="color: #957FB8; font-weight: bold; font-style: italic;">export</span> <span style="color: #957FB8; font-weight: bold; font-style: italic;">fn</span> main() <span style="color: #7AA89F;">void</span> = {
<span style="color: #957FB8; font-weight: bold; font-style: italic;">let</span> arquivo = nomeDoArquivo();
<span style="color: #957FB8; font-weight: bold; font-style: italic;">if</span> (os::exists(arquivo)) {
fmt::println(<span style="color: #98BB6C;">"Arquivo j&#225; existe.\n"</span>)!;
} <span style="color: #957FB8; font-weight: bold; font-style: italic;">else</span> {
os::create(arquivo, 384)!;
};
};
<span style="color: #957FB8; font-weight: bold; font-style: italic;">fn</span> nomeDoArquivo() <span style="color: #7AA89F;">str</span> = {
fmt::printf(<span style="color: #98BB6C;">"Escreva o nome do arquivo.\n:"</span>)!;
<span style="color: #957FB8; font-weight: bold; font-style: italic;">const</span> inputUser = bufio::read_line(os::stdin)! <span style="color: #957FB8; font-weight: bold; font-style: italic;">as</span> []<span style="color: #7AA89F;">u8</span>;
<span style="color: #957FB8; font-weight: bold; font-style: italic;">return</span> strings::fromutf8(inputUser)!;
};
</pre>
</div>
<p>
As diferenças
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-org270d8bc" class="outline-2">
<h2 id="org270d8bc"><i>Fin</i></h2>
<div class="outline-text-2" id="text-org270d8bc">
<p>
Bem, isso é tudo o que eu tenho a dizer por agora.
</p>
<p>
Até o próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>

211
posts/emacs-parte-2.html Normal file
View file

@ -0,0 +1,211 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Emacs - Parte 2</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">Emacs - Parte 2</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#orgef1411a">Sobre o "ambiente onde eu possa usar o Emacs"</a></li>
<li><a href="#orga268bed">O que mais adicionei à minha configuração do Emacs?</a></li>
<li><a href="#org1c14f12">Org-publish é praticamente um SSG</a></li>
<li><a href="#orgd2b04db">A site é praticamente um espelho da minha config</a></li>
<li><a href="#org341c640"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
Hmmm&#x2026; Parte 2? Hmmm&#x2026;
</p>
<p>
Bem, eu não acho que isso vá ser um post longo ou que vá adicionar
muito ao <a href="./emacs.html">post original</a>, então você pode ignorar ele a vontade.
</p>
<div id="outline-container-orgef1411a" class="outline-2">
<h2 id="orgef1411a">Sobre o "ambiente onde eu possa usar o Emacs"</h2>
<div class="outline-text-2" id="text-orgef1411a">
<p>
Então, eu já consegui fazer um. É meio que feito na gambiarra, mas
funciona.
</p>
<p>
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.
</p>
<p>
Porém, como eu posso rodar qualquer programa que eu quiser nele, então
nada melhor do que fazer um "kiosk" com o Emacs!
</p>
<p>
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.
</p>
<p>
Simplificando, eu posso usar até mesmo a tecla super (Windows) se eu
quiser e eu vou estar de boa.
</p>
</div>
</div>
<div id="outline-container-orga268bed" class="outline-2">
<h2 id="orga268bed">O que mais adicionei à minha configuração do Emacs?</h2>
<div class="outline-text-2" id="text-orga268bed">
<p>
Teclas de atalho novas, como por exemplo, teclas para:
</p>
<ul class="org-ul">
<li>Aumentar/diminuir o brilho da tela do meu notebook;</li>
<li>Aumentar/diminuir o volume do meu notebook;</li>
<li>Capturar a tela do Emacs (<a href="https://gitlab.com/marcowahl/emacsshot">usando o próprio emacs</a>).</li>
<li>Gravar a tela</li>
</ul>
<p>
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 <code>display-battery-mode</code>,
e <code>display-time-mode</code>. 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.
</p>
</div>
</div>
<div id="outline-container-org1c14f12" class="outline-2">
<h2 id="org1c14f12">Org-publish é praticamente um SSG</h2>
<div class="outline-text-2" id="text-org1c14f12">
<p>
Eu sei que eu já comentei algo parecido com isso no meu <a href="./emacs.html">outro post</a>:
</p>
<blockquote>
<p>
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.
</p>
<p>
Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
sites nativa do Emacs.
</p>
</blockquote>
<p>
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.
</p>
<p>
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.
</p>
<p>
Todas as páginas seguem um padrão pré-definido, todas.
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
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!
</p>
<p>
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.
</p>
<p>
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).
</p>
</div>
</div>
<div id="outline-container-orgd2b04db" class="outline-2">
<h2 id="orgd2b04db">A site é praticamente um espelho da minha config</h2>
<div class="outline-text-2" id="text-orgd2b04db">
<p>
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.
</p>
<p>
Não é que eu não veja como a página fica, mas eu não tenho a necessidade de ver como ele fica.
</p>
<p>
Melhor do que só mencionar é mostrar, então aqui está uma screenshot do meu Emacs:
</p>
<figure id="orgab2c8e7">
<img src="../assets/img/emacs-parte-2.webp" alt="emacs-parte-2.webp">
</figure>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-org341c640" class="outline-2">
<h2 id="org341c640"><i>Fin</i></h2>
<div class="outline-text-2" id="text-org341c640">
<p>
Bem, é isso. Eu falei que esse posts seria algo rápido.
</p>
<p>
Enfim, até o próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>

239
posts/emacs.html Normal file
View file

@ -0,0 +1,239 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Emacs</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">Emacs</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org8bb7618">Emacs, que saudades que estava de você!</a></li>
<li><a href="#orga85c252">Org-mode, o criador de sites mais prático que conheço</a></li>
<li><a href="#orge48bfc7">Zero JavaScript</a></li>
<li><a href="#orgaf81e1b">Quase um SSG&#x2026; Quase.</a></li>
<li><a href="#org9144513">Outras coisas que estão no meu Emacs</a></li>
<li><a href="#org151d377">Aos poucos, estou deixando o meu setup ser apenas um ambiente onde eu possa usar o Emacs</a></li>
<li><a href="#org3102927"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
Olha só quem voltou! E mais uma vez com o site completamente mudado!
</p>
<p>
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).
</p>
<div id="outline-container-org8bb7618" class="outline-2">
<h2 id="org8bb7618">Emacs, que saudades que estava de você!</h2>
<div class="outline-text-2" id="text-org8bb7618">
<p>
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.
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-orga85c252" class="outline-2">
<h2 id="orga85c252">Org-mode, o criador de sites mais prático que conheço</h2>
<div class="outline-text-2" id="text-orga85c252">
<p>
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.
</p>
<p>
Esse site inteiro foi refeito utilizando essa ferramenta de gereção de
sites nativa do Emacs.
</p>
</div>
</div>
<div id="outline-container-orge48bfc7" class="outline-2">
<h2 id="orge48bfc7">Zero JavaScript</h2>
<div class="outline-text-2" id="text-orge48bfc7">
<p>
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.
</p>
<p>
E não é porque eu não tenho JS que eu perco coisas como
<i>Table-of-contents</i> ou <i>Syntax-highlighting</i>, nada disso, ambos são
coisas nativas do org-mode, feitos para serem utilizados e abusados.
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-orgaf81e1b" class="outline-2">
<h2 id="orgaf81e1b">Quase um SSG&#x2026; Quase.</h2>
<div class="outline-text-2" id="text-orgaf81e1b">
<p>
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-<b>publish</b>. Ainda assim, com um script simples e um
pouco de elisp, você consegue ter um pouco do que um SSG consegue te
oferecer.
</p>
<p>
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:
</p>
<p>
<i>Configurando o ox-publish e automatizando o processo de criação de HTML.</i>
</p>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span style="color: #957FB8; font-weight: bold; font-style: italic;">require</span> '<span style="color: #FFA066;">ox-publish</span>)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">require</span> '<span style="color: #FFA066;">package</span>)
(add-to-list 'package-archives '(<span style="color: #98BB6C;">"melpa"</span> . <span style="color: #98BB6C;">"http://melpa.org/packages/"</span>))
(package-initialize)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">unless</span> (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">eval-when-compile</span>
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">require</span> '<span style="color: #FFA066;">use-package</span>))
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">use-package</span> htmlize
<span style="color: #DCD7BA;">:ensure</span> t)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">use-package</span> kanagawa-themes
<span style="color: #DCD7BA;">:ensure</span> t
<span style="color: #DCD7BA;">:init</span> (load-theme 'kanagawa-wave t))
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">require</span> '<span style="color: #FFA066;">htmlize</span>)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> org-html-head <span style="color: #98BB6C;">"&lt;link rel=stylesheet href=\"/assets/css/styles.css\" /&gt;"</span>
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)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> org-publish-project-alist
(list
(list <span style="color: #98BB6C;">"Tukain's Blog"</span>
<span style="color: #DCD7BA;">:base-directory</span> <span style="color: #98BB6C;">"./content"</span>
<span style="color: #DCD7BA;">:recursive</span> t
<span style="color: #DCD7BA;">:htmlized-source</span> t
<span style="color: #DCD7BA;">:publishing-directory</span> <span style="color: #98BB6C;">"./public"</span>
<span style="color: #DCD7BA;">:section-numbers</span> nil
<span style="color: #DCD7BA;">:publishing-function</span> 'org-html-publish-to-html)))
(org-publish-all t)
(message <span style="color: #98BB6C;">"Site gerado!"</span>)
</pre>
</div>
<p>
<i>Um script para executar os comandos necessários para gerar o site</i>
</p>
<div class="org-src-container">
<pre class="src src-bash"><span style="color: #727169;">#</span><span style="color: #727169; font-style: italic;">!/bin/</span><span style="color: #957FB8; font-weight: bold; font-style: italic;">sh</span>
mkdir -p public &amp;&amp; emacs -x build.el &amp;&amp; cp -r assets/ public/
</pre>
</div>
<p>
Depois disso, o único trabalho que eu tenho é de fazer um artigo e
listá-lo na minha homepage, e pronto!
</p>
</div>
</div>
<div id="outline-container-org9144513" class="outline-2">
<h2 id="org9144513">Outras coisas que estão no meu Emacs</h2>
<div class="outline-text-2" id="text-org9144513">
<p>
É 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 🤓.
</p>
<p>
Atualmente eu já configurei o Emacs o suficiente para substituir a minha
configuração do Neovim, e também configurei coisas como:
</p>
<ul class="org-ul">
<li>Um servidor HTTP (para visualizar o meu site localmente)</li>
<li>Um agente PGP (EasyPG).</li>
<li>Um cliente de email (Gnus)</li>
<li>Uma interface para o Git (Magit)</li>
<li>Um leitor de feeds RSS (Elfeed)</li>
</ul>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-org151d377" class="outline-2">
<h2 id="org151d377">Aos poucos, estou deixando o meu setup ser apenas um ambiente onde eu possa usar o Emacs</h2>
<div class="outline-text-2" id="text-org151d377">
<p>
Eu ainda não iniciei o meu arco Uchirra da vida e saí eliminando meus programas,
ainda.
</p>
<p>
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).
</p>
<p>
Mas vou deixar para fazer isso outra hora, afinal de contas isso vai tomar um
pouco do meu tempo para poder concluir.
</p>
</div>
</div>
<div id="outline-container-org3102927" class="outline-2">
<h2 id="org3102927"><i>Fin</i></h2>
<div class="outline-text-2" id="text-org3102927">
<p>
Enfim, acho que já é hora de eu para de ficar tagarelando.
</p>
<p>
Te vejo no próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>

View file

@ -0,0 +1,129 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Blog.sh, o meu próprio SSG</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">Blog.sh, o meu próprio SSG</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#orgeb973ba">Geração de site rápida pra k7</a></li>
<li><a href="#orgb1e97c1">Por debaixo dos panos</a></li>
<li><a href="#orgdb62a47">Por que?</a></li>
<li><a href="#orgfd156e2"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
Dos produtores de "Ovorefazermeusaite", vêm aí "E se eu fizer meu próprio gerador de sites?"!
</p>
<p>
Agora falando sério, eu realmente fiz o meu próprio SSG (Static Site Generator).
</p>
<p>
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.
</p>
<div id="outline-container-orgeb973ba" class="outline-2">
<h2 id="orgeb973ba">Geração de site rápida pra k7</h2>
<div class="outline-text-2" id="text-orgeb973ba">
<p>
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-orgb1e97c1" class="outline-2">
<h2 id="orgb1e97c1">Por debaixo dos panos</h2>
<div class="outline-text-2" id="text-orgb1e97c1">
<p>
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
</p>
<p>
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.
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-orgdb62a47" class="outline-2">
<h2 id="orgdb62a47">Por que?</h2>
<div class="outline-text-2" id="text-orgdb62a47">
<p>
Eu fiz isso puramente para ver se eu conseguiria fazer um SSG, e, se tratando de funcionalidade básica, eu consegui sem nenhum problema.
</p>
<p>
Mas um outro ponto que me fez fazer isso foi o Neovim&#x2026; 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.
</p>
<p>
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:
</p>
<div class="org-src-container">
<pre class="src src-bash">blog.sh build
</pre>
</div>
<p>
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
</p>
<div class="org-src-container">
<pre class="src src-bash">blog.sh serve
</pre>
</div>
<p>
E isso vai abrir um servidor HTTP usando o <code>python -m http.server</code> e também vai executar o comando <code>entr</code>, que serve para "ficar de olho em mudanças", e sempre que o <code>entr</code> notar alguma mudança em algum arquivo do diretório content ele mesmo executa o <code>blog.sh build</code> e atualiza as páginas.
</p>
<p>
Tudo o que eu preciso fazer agora é ficar de olho em qualquer bug que possa aparecer.
</p>
</div>
</div>
<div id="outline-container-orgfd156e2" class="outline-2">
<h2 id="orgfd156e2"><i>Fin</i></h2>
<div class="outline-text-2" id="text-orgfd156e2">
<p>
Enfim, é isso o que eu tinha para falar por agora.
</p>
<p>
Te vejo no próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>

113
posts/god-mode.html Normal file
View file

@ -0,0 +1,113 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>God mode</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">God mode</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org0f9c575">God mode</a></li>
<li><a href="#org700bf7d">E quanto ao blog.sh?</a></li>
<li><a href="#org510c7fc">O estilo do site</a></li>
<li><a href="#orgc5766a8"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
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 <code>viper-mode</code>, não não, dessa vez eu estou usando algo mais&#x2026; <i>abençoado?</i>
</p>
<div id="outline-container-org0f9c575" class="outline-2">
<h2 id="org0f9c575">God mode</h2>
<div class="outline-text-2" id="text-org0f9c575">
<p>
O nome é um pouco exagerado, mas isso não significa que ele não é algo que melhora <b>E MUITO</b> no uso do Emacs.
</p>
<p>
Ele basicamente faz isso aqui com o <code>Ctrl</code> e <code>Alt</code>:
</p>
<figure id="org3803cc1">
<img src="https://i.makeagif.com/media/5-05-2024/1KNCKC.gif" alt="1KNCKC.gif">
</figure>
<p>
Isso não é exagero, basicamente qualquer <i>key-chord</i> do emacs pode ser escrita sem a necessidade de usar algum modificador como o <code>Ctrl</code>, <code>Alt</code>, ou os dois ao mesmo tempo (como por exemplo a key-chord para selecionar uma palavra abaixo do cursor: <code>Ctrl Alt Espaço</code>).
</p>
<p>
A consequência disso é bem direta ao ponto na realidade, primeiro que você não tem mais o risco de adquirir uma <a href="https://pt.wikipedia.org/wiki/Les%C3%A3o_por_esfor%C3%A7o_repetitivo">L.E.R</a> da vida por ficar apertando o <code>Ctrl</code> 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 <code>Evil-mode</code>, que faz com que o Emacs se comporte como o Vim, se tratando de teclas de atalho.
</p>
</div>
</div>
<div id="outline-container-org700bf7d" class="outline-2">
<h2 id="org700bf7d">E quanto ao <a href="https://codeberg.org/tukain/blog.sh">blog.sh</a>?</h2>
<div class="outline-text-2" id="text-org700bf7d">
<p>
Tendo em vista que eu já estou usando o <code>org-mode</code> 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.
</p>
<p>
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 <code>blog.sh</code> novamente, mas no momento, eu prefiro continuar com o <code>org-mode</code>.
</p>
</div>
</div>
<div id="outline-container-org510c7fc" class="outline-2">
<h2 id="org510c7fc">O estilo do site</h2>
<div class="outline-text-2" id="text-org510c7fc">
<p>
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.
</p>
<p>
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.
</p>
<p>
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).
</p>
<p>
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.
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-orgc5766a8" class="outline-2">
<h2 id="orgc5766a8"><i>Fin</i></h2>
<div class="outline-text-2" id="text-orgc5766a8">
<p>
Enfim, chega de ficar tagarelando com coisas que ninguém liga.
</p>
<p>
Até o próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 21:55</p></footer>
</div>
</body>
</html>

109
posts/hare.html Normal file
View file

@ -0,0 +1,109 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Hare</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">Hare</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org35b9234">Praticamente C, mas com diversas melhorias</a></li>
<li><a href="#org94ac789">QBE como backend</a></li>
<li><a href="#org7d5c627">O que eu planejo fazer aprendendo a programar?</a></li>
<li><a href="#org922e037"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
Eu sei que isso soa contraditório depois de ter feito um post sobre a Go,
mas a realidade é que eu não quero aprender a programar com a Go,
eu quero aprender a programar com uma linguagem low-level,
tipo a C (que eu também estou estudando), e é aí que a Hare entra.
</p>
<div id="outline-container-org35b9234" class="outline-2">
<h2 id="org35b9234">Praticamente C, mas com diversas melhorias</h2>
<div class="outline-text-2" id="text-org35b9234">
<p>
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&#x2026; Confuso para dizer no mínimo.
</p>
</div>
</div>
<div id="outline-container-org94ac789" class="outline-2">
<h2 id="org94ac789">QBE como backend</h2>
<div class="outline-text-2" id="text-org94ac789">
<p>
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:
</p>
<blockquote>
<p>
QBE é um backend para compiladores, com o foco de providenciar 70% da
performance de compiladores otimizados da indústria com 10% do código.
</p>
</blockquote>
<p>
De certa forma, o QBE se encaixa até mesmo na filosofia suckless, o que para mim
pelo menos, é um grande ponto possitivo.
</p>
</div>
</div>
<div id="outline-container-org7d5c627" class="outline-2">
<h2 id="org7d5c627">O que eu planejo fazer aprendendo a programar?</h2>
<div class="outline-text-2" id="text-org7d5c627">
<p>
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.
</p>
</div>
</div>
<div id="outline-container-org922e037" class="outline-2">
<h2 id="org922e037"><i>Fin</i></h2>
<div class="outline-text-2" id="text-org922e037">
<p>
Enfim, é isso, até o próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>

148
posts/proton.html Normal file
View file

@ -0,0 +1,148 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Tô usando o Proton</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">Tô usando o Proton</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org014291e">Por que?</a></li>
<li><a href="#orgf8dbbf1">Mudanças no armazenamento</a></li>
<li><a href="#org4aefece">Uma senha praticamente impossível de digitar para a minha conta do Google</a></li>
<li><a href="#org729aa86"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
Depois de aproximadamente 1 ano, eu criei uma nova conta no <a href="https://proton.me">Proton</a>.
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.
</p>
<div id="outline-container-org014291e" class="outline-2">
<h2 id="org014291e">Por que?</h2>
<div class="outline-text-2" id="text-org014291e">
<p>
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.
</p>
<p>
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 <a href="https://i.pinimg.com/736x/87/07/97/8707972a759975b07d188308c948cc27.jpg">ativação neural</a> e no mesmo dia a gente fez
essa troca. E claro, eu coloquei a Lineage no G52.
</p>
<p>
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.
</p>
<p>
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á.
</p>
</div>
</div>
<div id="outline-container-orgf8dbbf1" class="outline-2">
<h2 id="orgf8dbbf1">Mudanças no armazenamento</h2>
<div class="outline-text-2" id="text-orgf8dbbf1">
<p>
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.
</p>
<p>
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!
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-org4aefece" class="outline-2">
<h2 id="org4aefece">Uma senha praticamente impossível de digitar para a minha conta do Google</h2>
<div class="outline-text-2" id="text-org4aefece">
<p>
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.
</p>
<p>
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.
</p>
<p>
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.
</p>
</div>
</div>
<div id="outline-container-org729aa86" class="outline-2">
<h2 id="org729aa86"><i>Fin</i></h2>
<div class="outline-text-2" id="text-org729aa86">
<p>
Enfim, acho que já tagarelei demais.
</p>
<p>
Até o próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>

126
posts/raylib-ha.html Normal file
View file

@ -0,0 +1,126 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Raylib.ha</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">Raylib.ha</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org938c69c">Do que se trata</a></li>
<li><a href="#org0605281">Meus objetivos</a></li>
<li><a href="#orgb8c6fe2">Meu progresso até agora</a></li>
<li><a href="#org3e63d70"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
Nos últimos dias eu ando trabalhando em um pequeno projeto, esse sendo
algo que estou fazendo como uma forma de aprendizado. O nome que dei a
esse projeto é raylib.ha.
</p>
<p>
A minha inspiração foi uma live de um streamer que eu acompanho, o
Tsoding. A live em questão é uma em que ele explora a Harelang pela
primeira vez, ao decorrer da live, ele se questiona se ele poderia
usar a raylib com a Hare. Depois de alguns minutos explorando, ele
descobre como ele pode fazer isso, e parte em direção para criar uma
janela com um quadrado vermelho que pode se movimentar na janela com
as teclas W/A/S/D.
</p>
<div id="outline-container-org938c69c" class="outline-2">
<h2 id="org938c69c">Do que se trata</h2>
<div class="outline-text-2" id="text-org938c69c">
<p>
Bem, antes de falar sobre o meu projeto, acho melhor esclarecer a
aqueles que não conhece a raylib o que ela é. A raylib, como o nome já
pode soar, é uma biblioteca que serve para a criação de jogos em C sem
muita dor de cabeça.
</p>
<p>
E o meu projeto se trata de algo cujo o objetivo é criar bindings que
permitam o uso da raylib por meio da Harelang.
</p>
</div>
</div>
<div id="outline-container-org0605281" class="outline-2">
<h2 id="org0605281">Meus objetivos</h2>
<div class="outline-text-2" id="text-org0605281">
<p>
Quero que, ao finalizar o projeto, seja possível criar jogos usando a
raylib com a mesma facilidade, se não até mais, do que quando sendo
feito usando C. Por enquanto estou focando nas partes necessárias para
fazer um jogo 2D, seja esse jogo um plataformer, seja ele
arena-shooter top-down.
</p>
<p>
Claro que isso implica também a necessidade de fazer bindings para a
raymath, já que um jogo, por mais simples que seja, também precisa ter
física. E eu vou sim fazer isso, só não agora. Ainda assim, não vai
demorar muito para eu começar a fazer as bindings da raymath.
</p>
</div>
</div>
<div id="outline-container-orgb8c6fe2" class="outline-2">
<h2 id="orgb8c6fe2">Meu progresso até agora</h2>
<div class="outline-text-2" id="text-orgb8c6fe2">
<p>
Ainda me considero um iniciante, e falta muito para conseguir fazer
todas as bindings para jogos 2D, quem dirá para todo o resto. Porém,
já consegui finalizar coisas como o input via gamepads, teclado e
mouse, praticamente todas as formas geométricas com a excessão de
apenas 3, funções de timing, enfim, tive um avanço significativo.
</p>
<p>
Além da tradução direta das funções feitas em C, eu também fiz algumas
adaptações para que não ouvesse atrito/diferença na forma em que você
usa algumas funções. Também adicionei um método alternativo para a
criação de triângulos.
</p>
<p>
A última coisa que realizei até o momento foi o suporte a músicas, e
irei adicionar as demais funções relacionadas a áudio ainda nessa
semana. Essa última função foi também fruto de uma intuição sobre como
poder utilizar structs definidos fora da raylib.ha, e pode ter certeza
de que foi gratificante saber que deu certo.
</p>
</div>
</div>
<div id="outline-container-org3e63d70" class="outline-2">
<h2 id="org3e63d70"><i>Fin</i></h2>
<div class="outline-text-2" id="text-org3e63d70">
<p>
Bem, isso é tudo o que eu tenho a comentar por agora.
</p>
<p>
Até o próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>

156
posts/tchau-hare.html Normal file
View file

@ -0,0 +1,156 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Deixando a Hare de lado&#x2026; Por enquanto.</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">Deixando a Hare de lado&#x2026; Por enquanto.</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org1fab2b2">Quer dizer então que vou desistir?</a></li>
<li><a href="#org21233e8">Ainda assim irei sentir saudades da Hare.</a></li>
<li><a href="#orgc0c0984">C também não é muito amigável, mas estou acostumado.</a></li>
<li><a href="#org3224f8a">Eu penso um pouco com a lógica de C.</a></li>
<li><a href="#orged06d40"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
Irei começar me explicando o porquê de eu ter decidido isso de forma
tão repentina. Bom, se você leu o meu último artigo, então sabe que eu
ando estudando 2 linguagens de programação: C e Hare. Apesar de ter
gostado e muito de estudar as duas línguas em conjunto, eu tenho que
encarar um fato: eu não sei programar.
</p>
<div id="outline-container-org1fab2b2" class="outline-2">
<h2 id="org1fab2b2">Quer dizer então que vou desistir?</h2>
<div class="outline-text-2" id="text-org1fab2b2">
<p>
Nada disso. Irei continuar meus estudos, porém, apenas usando uma
língua, a C. O motivo disso é uma consequência de não saber
programação no geral, há coisas que eu preciso de uma documentação
detalhada ou até mesmo uma explicação em si, mas a Hare não está
pronta, muito menos a sua documentação, sem se falar que ela é
qualquer coisa, menos popular. A consequência disso é que se eu estou
em dúvida sobre algo que eu quero fazer, eu não vou achar no Google, e
tem uma boa chance de não achar na documentação também.
</p>
<p>
Por isso irei continuar apenas com a C, ela é uma linguagem que é
extremamente popular e utilizada até hoje, não falta nenhuma
documentação/explicação sobre algo, e é uma linguagem que já está
terminada.
</p>
</div>
</div>
<div id="outline-container-org21233e8" class="outline-2">
<h2 id="org21233e8">Ainda assim irei sentir saudades da Hare.</h2>
<div class="outline-text-2" id="text-org21233e8">
<p>
Apesar de ter essa “deficiência” em relação a documentação, a Hare é
uma linguagem muito boa, mesmo em seus estágios iniciais. O único erro
foi eu querer aprender a programar com uma linguagem que não está
pronta ainda.
</p>
<p>
O maior problema de tentar fazer o que eu fiz é que você não tem a
quem, ou o que recorrer. Você está por conta própria. Sendo assim, a
Hare é uma linguagem que eu recomendaria apenas para as pessoas que já
são programadores, principalmente as que tem certa familiaridade com
C.
</p>
</div>
</div>
<div id="outline-container-orgc0c0984" class="outline-2">
<h2 id="orgc0c0984">C também não é muito amigável, mas estou acostumado.</h2>
<div class="outline-text-2" id="text-orgc0c0984">
<p>
Você poderia até mesmo achar que eu querer aprender a programar com C
seria outra ideia ruim, mas eu acho que (para o meu caso) essa é uma
ideia boa.
</p>
<p>
C é famosa por ser uma linguagem “difícil”, “insegura”, “limitada” e
até mesmo “defasada”. A verdade é que certas coisas realmente estão
corretas em relação a C, já que ela foi criada a quase 60 anos atrás,
mas isso não quer dizer que ela é uma linguagem que não se deve
aprender.
</p>
<p>
E até mesmo por ela ser “limitada” acaba tornando-a uma boa língua
para aprender a programar. Ela é uma linguagem simples, com pouca
coisa, mas com o suficiente para você conseguir fazer programas sem
nenhuma dificuldade. E também, funciona em qualquer coisa que tenha um
processador.
</p>
</div>
</div>
<div id="outline-container-org3224f8a" class="outline-2">
<h2 id="org3224f8a">Eu penso um pouco com a lógica de C.</h2>
<div class="outline-text-2" id="text-org3224f8a">
<p>
Posso estar me expressando mal ao dizer isso, mas eu tenho uma linha
de raciocício que segue +/- a forma em que você faz algo em C. Por
isso até que eu tive certa facilidade com a Hare e Go.
</p>
<p>
Um dos prováveis motivos de eu ter essa linha de raciocício pode ter
sido o período em que eu utilizava softwares da suckless. Todos eles
são feitos em C puro, e eu costumava aplicar muitos patches, por
consequência, tive o hábito de consertar inconsistências e de corrigir
erros na aplicação de patches.
</p>
<p>
Por conta disso, memorizei muitas das palavras-chave de C e também um
pouco de como um programa feito em C é estruturado.
</p>
</div>
</div>
<div id="outline-container-orged06d40" class="outline-2">
<h2 id="orged06d40"><i>Fin</i></h2>
<div class="outline-text-2" id="text-orged06d40">
<p>
Hoje isso é tudo o que eu tenho a dizer.
</p>
<p>
Até o próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>

112
posts/viper-mode.html Normal file
View file

@ -0,0 +1,112 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<!-- 2024-10-17 Thu 21:57 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Vi, só que dentro do Emacs!</title>
<meta name="author" content="Tukain" />
<meta name="generator" content="Org Mode" />
<link rel=icon type="image/webp" href="/assets/fav.webp"> <link rel=stylesheet href="/assets/styles.css" />
</head>
<body>
<div id="content" class="content">
<header>
<h1 class="title">Vi, só que dentro do Emacs!</h1>
</header><nav id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org854ee30">Viper</a></li>
<li><a href="#org496e2fb">Bem, e como é usar ele?</a></li>
<li><a href="#org5835aa3"><i>Fin</i></a></li>
</ul>
</div>
</nav>
<p>
Esse mostro de um programa é tão cheio de coisa para se falar que já garantiu até uma trilogia nesse blog.
</p>
<div id="outline-container-org854ee30" class="outline-2">
<h2 id="org854ee30">Viper</h2>
<div class="outline-text-2" id="text-org854ee30">
<p>
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 <code>viper-mode</code>.
</p>
<p>
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).
</p>
<p>
Eu decidi usar o <code>viper</code> 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.
</p>
</div>
</div>
<div id="outline-container-org496e2fb" class="outline-2">
<h2 id="org496e2fb">Bem, e como é usar ele?</h2>
<div class="outline-text-2" id="text-org496e2fb">
<p>
Como já disse, o <code>viper</code> 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, <b>na minha opinião</b>, a falta das teclas do Vim.
</p>
<p>
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.
</p>
<p>
E é claro que como tudo no Emacs, eu posso customizar o <code>viper</code> e adicionar os comandos que eu acho extremamente úteis do Vim, no <code>viper</code>, criando assim um Frankenstein que nunca deveria ter nascido.
</p>
<p>
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.
</p>
<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> viper-mode t)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">require</span> '<span style="color: #FFA066;">viper</span>)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> viper-inhibit-startup-message 't)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> viper-expert-level '5)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> viper-want-ctl-h-help t)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> viper-ex-style-editing nil)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> viper-no-multiple-ESC nil)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> viper-syntax-preference 'extended)
(<span style="color: #957FB8; font-weight: bold; font-style: italic;">setq</span> viper-vi-style-in-minibuffer nil)
(define-key viper-vi-basic-map (kbd <span style="color: #98BB6C;">"v"</span>) 'set-mark-command)
(define-key viper-vi-basic-map (kbd <span style="color: #98BB6C;">"f"</span>) 'find-file)
(define-key viper-vi-basic-map (kbd <span style="color: #98BB6C;">"R"</span>) 'replace-rectangle)
(define-key viper-vi-basic-map (kbd <span style="color: #98BB6C;">"C-v"</span>) 'rectangle-mark-mode)
(define-key viper-vi-basic-map (kbd <span style="color: #98BB6C;">"x"</span>) 'kill-region)
(viper-mode)
</pre>
</div>
<p>
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.
</p>
<p>
Mas, basicamente eu só ativei o <code>viper-mode</code> 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.
</p>
</div>
</div>
<div id="outline-container-org5835aa3" class="outline-2">
<h2 id="org5835aa3"><i>Fin</i></h2>
<div class="outline-text-2" id="text-org5835aa3">
<p>
Bom, é isso, acho que por agora eu não tenho mais o que falar sobre esse lindo programa chamado Emacs.
</p>
<p>
Até o próximo post!
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<footer><p>Tukain - 2024-10-17 Thu 08:21</p></footer>
</div>
</body>
</html>