From f4167e3e2c6be21fe21742bb3a8eefc471e08e82 Mon Sep 17 00:00:00 2001 From: esquizo Date: Fri, 19 Jun 2026 09:31:18 -0300 Subject: unificado posts em um arquivo --- tutoriais/makefiles.md | 116 -------------------------------------- tutoriais/orientacao-a-objetos.md | 88 ----------------------------- 2 files changed, 204 deletions(-) delete mode 100644 tutoriais/makefiles.md delete mode 100644 tutoriais/orientacao-a-objetos.md (limited to 'tutoriais') diff --git a/tutoriais/makefiles.md b/tutoriais/makefiles.md deleted file mode 100644 index 35d8921..0000000 --- a/tutoriais/makefiles.md +++ /dev/null @@ -1,116 +0,0 @@ -# Como dev, como você dev pensar? -## _Ou como usar makefiles...?_ - -Já vou começando dando um spoiler: _foque no que quer chegar, -não em como chegar_. - -Todo objeto que você quer construir tem o seu propósito, seja um HTML, -um programa nativo ou qualquer coisa. Quando você começa a analisar o -propósito daquilo que você quer construir, você sempre chega nas melhores -descrições do que quer fazer. _Descrição_ é uma palavra chave aqui. - -Se você quer construir um HTML para um blog ou um site, você faz o mais óbvio -pra construir o seu HTML: um bloco de notas, e um HTML. Pronto. Se precisar -fazer outra página, você só dá um ctrl-c/ctrl-v. Até aqui, está tudo certo, -não tem muito o que pensar. Mas agora vamos dizer que você queira fazer -uma mudança na estruturação do seu HTML, talvez adicionar uma header, footer, -um css. Agora essas mudanças precisam ser replicadas manualmente em cada HTML -que você criou. - -Mas temos um computador, podemos automatizar isso, não? Se todas as páginas -terão a mesma base, porquê não dizemos ao computador: construa esse HTML pra mim -usando esses pedaços? E não precisa ser algo grande. - -
index.html: header.html.part index.html.part footer.html.part
-	cat header.html.part index.html.part footer.html.part > index.html
- -E salvamos isso em um arquivo chamado `Makefile` pra que o programa `make` -leia isso pra nós e crie o index.html pra gente. A primeira linha contém o que -nós queremos (index.html) e o que vamos usar pra construir o que queremos. -Logo abaixo, e identado **com tabs**, o comando que queremos executar pra cada -um dos htmls que queremos fazer. - -Com isso, chegamos no conceito de "fonte". -Você pode entender a fonte como fonte de um recurso que um programa precisa pra -construir algo para nós, nós estamos passando o que queremos e os requisitos -para a construção do que queremos. Perceba que nós ainda queremos o HTML -completo, mas agora melhoramos a _descrição_ do nosso HTML para nós focarmos -apenas naquilo que é necessário: um HTML é construído com header, footer e o -nosso conteúdo. Agora podemos só editar o conteúdo, ou a header, ou a footer, -e todo HTML conterá as mudanças que queremos. - -Então fazemos isso para cada arquivo que criamos. - -
index.html: header.html.part index.html.part footer.html.part
-	cat header.html.part index.html.part footer.html.part > index.html
-
-about.html: header.html.part about.html.part footer.html.part
-	cat header.html.part about.html.part footer.html.part > about.html
- -Mas estamos no tema de automação usando o computador, não? Ok que reduzimos -bastante a quantidade de mudanças manuais que precisariamos fazer, mas podemos -ir um pouco além disso. - -
%.html: header.phtml %.phtml footer.phtml
-    cat $^ > $@
-
- -Agora os arquivos deverão ter uma extensão diferente porque o Makefile se -confunde um pouco se usarmos o jeito anterior, porém agora o `make` vai tentar -a executar essa regra para todo *.html que for requisitado. O `$^` significa -todos os requisitos, em ordem que foram declarados, e o $@ -significa o nome da output, para fins de tornar essa regra mais genérica. - -Com isso, estabelecemos um padrão para o nosso projeto. Todo HTML é construído -seguindo essa regra: existe um header.phtml, um outro .phtml com a mesmo nome, -e footer.phtml. E não só isso, como ainda podemos prosseguir adicionando mais -regras, e ainda regras sobre arquivos que existem. - -
%.html: header.phtml %.phtml footer.phtml
-    cat $^ > $@
-
-%.phtml: %.md
-    markdown < $< > $@
- -Agora toda vez que um phtml não existir, ele vai tentar criar a partir de um -arquivo markdown. - -Note o que estamos fazendo aqui: nós queremos um arquivo html. Não é o phtml, -não é o markdown, e sim o html final. Os phtmls e os arquivos markdowns são -apenas formas de se chegar no html. E cada vez que adicionamos mais uma camada -de dependência e regras de resolução de dependência, estamos aumentando a -capacidade de descrever o resultado final que queremos. - -O mesmo vale para o seu programa e na arquitetura do seu programa. Quanto mais -você consegue descrever sobre o seu programa, mais você irá notar componentes, -partes que se mantém estáveis, padrões, testes e outras coisas, e notar que essas -coisas existem irá tornar o seu programa mais simples de desenvolver, ou -pelo menos você irá fazer menos cagadas, afinal: você vai estar entendendo o -seu programa. - -Por fim, note que isso resulta em um grafo, mais especificamente uma árvore: - - index.html - | - +--- header.phtml - +--- footer.phtml - +--- index.phtml - - about.html - | - +--- header.phtml - +--- footer.phtml - +--- about.phtml - | - + --- about.md - -Ao notar essa árvore, perceba que nós não só podemos notar padrões mas agora -podemos planejar o que devemos fazer para resolver todos os problemas de forma -geral. - -As conexões também são pontos de resolução de problemas. Perceba aqui que o -`make` é um programa que nós já tinhamos em mãos para resolver as dependências -mas mesmo esses programas precisam de outros pra transformar "simbolos em -outros simbolos". Então não tenha medo de fazer _código que escreve código_, o -seu trabalho sempre foi resolver problemas usando o computador, inclusive os -seus próprios problemas. diff --git a/tutoriais/orientacao-a-objetos.md b/tutoriais/orientacao-a-objetos.md deleted file mode 100644 index b5121c0..0000000 --- a/tutoriais/orientacao-a-objetos.md +++ /dev/null @@ -1,88 +0,0 @@ -# Eu tenho certeza que você, um sênior, não sabe o que é orientação à objetos - -Sabe esse paradigma que aprendemos na faculdade? Os vários macetes, os -famigerados "Padrões de Projeto", o `sujeito.verbo(objeto)` e merdas assim? -Pois é, tá errado. Pelo menos de acordo com Alan Kay, porque Alan Kay não quis -dizer nada disso. - -O negócio é que existem duas "escolas" de orientação à objetos. Uma que veio do -Alan Kay originalmente, e a outra que veio do Simula e que foi mais ou menos -raptado pelo Bjarne Strousturp, o criador do C++, e que veio a ser base do Java -e outras linguagens ditas "orientadas à objetos". Então aqui vou tentar ensinar -sobre o que o Alan Kay realmente quis dizer com orientação à objetos. - -Antes eu quero que você saiba que o _Alan Kay não quis se focar nos objetos._ -Ele até chegou a pedir desculpas por chamar isso de "Orientação a Objetos" -porque isso confundiu muita gente, porém dá pra explicar a orientação a objetos -com um padrão que você já deve ter usado a bastante tempo. Na verdade, se você -quer um TL;DR disso tudo, você pode resumir o que Alan Kay quis dizer à -"Injeção de Dependência embebido com mijo de Chuck Norris", e até a linguagem -que é realmente "Orientada à Objetos", o Smalltalk, tem seus pontos parecidos -com os da programação funcional. Irei usar um pseudo-código parecido com Java -para demonstrar. - -Vejamos esse código aqui: - - shape.getDimensions().getX() - -Isso seria um código bem comum de ver em orientação a objetos, mas qual é a -interpretação que o Alan Kay teria sobre esse trecho? - -O `shape` é um objeto e, como objeto, ele recebe e responde à mensagens, no -caso, shape recebeu a mensagem `getDimensions` sem parâmetros. `shape` -reconhece essa mensagem e dessa mensagem responde com um outro objeto. Então -enviamos `getX` sem parâmetros, e esse objeto pode ou não responder a essa -mensagem. O Alan Kay estava se focando nesse modelo de envio de mensagens e não -no modelo atual de classes. Inclusive quando Alan Kay falou de hierarquias ele -não tava falando de "extensão" de classes como vemos em Java e sim que uma -classe `Foo` responde as mesmas mensagens da classe `Base`. - -Em outras palavras: **A CLASSE NÃO IMPORTA, O QUE IMPORTA É A INTERFACE!** O -que importa é se o `shape` reconhece `getDimensions`, inclusive tem um nome pra -isso, `Duck Typing`: se anda igual pato e quacka igual um pato, é um pato. A -classe, nessa visão, é só uma forma de construir objetos. - -Isso torna umas coisas um pouco mais interessantes. Vejamos esse trecho -de código. - - - fn foo(thing) { - thing.isTrue(() -> { - doThing(thing) - }) - } - -O que `thing` é? Não sei, só sei que `foo` precisa que `thing` reconheça -`isTrue` com um parâmetro de lambda qualquer coisa que o `doThing` reconheça. -Isso torna o `foo` extremamente reaproveitável e é com essa parte que o Alan -Kay quis dizer com "reaproveitamento de código", e agora você entende o porquê -que muitos javeiros adotaram o padrão de fazer getter e setter pra tudo, porque -isso faz uma função depender de uma interface ao invés de uma implementação e -isso faz a função ficar mais reaproveitável (mas vamos ser sinceros, 99% dos -javeiros nem sabem disso, eles só fazem isso porque disseram que sim pra eles, -e nem mesmo Alan Kay gosta dos getters and setters porque as mensagens eram pra -*mandar* no objeto e não *pedir* ao objeto). - -E perceba que eu usei lambda ao invés de ser algo mais procedural, como -`if`/`else`. Isso é porque a orientação a objetos realmente preza em tornar -todo código o mais reaproveitável possível e, ao usar `if`s, como o Java faria, -você torna o seu código um pouco mais rígido ao depender de uma implementação -de uma boolean. OOP do Alan Kay preza tanto por isso que esse mesmo exemplo -ficaria assim em Smalltalk (pelo menos, "aproximadamente" Smalltalk): - - foo: object [ - object ifTrue: [ - self doThing: object - ] - ] - -Não existe `if`/`else` em Smalltalk. E booleans não são tipos primitivos e sim -objetos. Integer, Strings, tudo é um objeto legítimo, com a sua lista de -mensagens que eles devem responder, e é aqui que a "Injeção de Dependência com -mijo de Chuck Norris" se apresenta. E de certa forma, é como nossos servidores -HTTP funcionam. Você não precisa saber se o servidor é feito em Java, C#, PHP, -feito com Spring Boot, Laravel ou algum outro framework. Você só precisa saber -se o servidor responde por um `POST /foo/bar`. - -Isso é orientação à objetos. O resto é só putaria tirada da bunda do -Strousturp. -- cgit v1.2.3 From b7d836559570e6c38c88119c3ae7ba65a215915d Mon Sep 17 00:00:00 2001 From: esquizo Date: Fri, 19 Jun 2026 14:07:13 -0300 Subject: movido */index.html para *.html --- Makefile | 30 +++++++++++++++--------------- blog/posts.csv | 9 --------- blogs.csv | 9 +++++++++ csv2index.sh | 4 ++-- templates/base.m4 | 4 ++-- tutoriais.csv | 2 ++ tutoriais/posts.csv | 2 -- 7 files changed, 30 insertions(+), 30 deletions(-) delete mode 100644 blog/posts.csv create mode 100644 blogs.csv create mode 100644 tutoriais.csv delete mode 100644 tutoriais/posts.csv (limited to 'tutoriais') diff --git a/Makefile b/Makefile index 164a388..8a03c96 100644 --- a/Makefile +++ b/Makefile @@ -3,15 +3,15 @@ POSTS=$(patsubst %.md,%.html,$(wildcard posts/*.md)) PAGES=index.html\ about.html\ - blog/index.html\ - tutoriais/index.html\ + blogs.html\ + tutoriais.html\ $(POSTS) -RSS = blog/index.rss tutoriais/index.rss +RSS = blogs.rss tutoriais.rss URL ?= http://localhost:8000 -all: $(PAGES) blog/index.rss static/style.css +all: $(PAGES) $(RSS) static/style.css clean: rm -f $(PAGES) $(RSS) dist.tar.gz static/style.css @@ -22,19 +22,19 @@ dist: all distzip: all zip -f dist.zip static $(RSS) $(PAGES) -tutoriais/index.rss: tutoriais/posts.csv - ./csv2rss.sh 'Tutoriais do Esquizo' '$(URL)/tutoriais' 'Tutoriais das vozes da minha cabeça' \ - < tutoriais/posts.csv > tutoriais/index.rss +tutoriais.rss: tutoriais.csv + ./csv2rss.sh 'Tutoriais do Esquizo' '$(URL)/tutoriais.rss' 'Tutoriais das vozes da minha cabeça' \ + < tutoriais.csv > tutoriais.rss -blog/index.rss: blog/posts.csv - ./csv2rss.sh 'Blogs do Esquizo' '$(URL)/blog' 'Transliteração das vozes da minha cabeça' \ - < blog/posts.csv > blog/index.rss +blogs.rss: blogs.csv + ./csv2rss.sh 'Blogs do Esquizo' '$(URL)/blogs.rss' 'Transliteração das vozes da minha cabeça' \ + < blogs.csv > blogs.rss -blog/index.html.m4: blog/posts.csv templates/base.m4 - ./csv2index.sh /blog < $< > $@ +blogs.html.m4: blogs.csv templates/base.m4 + ./csv2index.sh /blogs.rss < $< > $@ -tutoriais/index.html.m4: tutoriais/posts.csv templates/base.m4 - ./csv2index.sh /tutoriais < $< > $@ +tutoriais.html.m4: tutoriais.csv templates/base.m4 + ./csv2index.sh /tutoriais.rss < $< > $@ static/style.css: src/css/style.css src/css/style.css src/css/base.css src/css/navbar.css src/css/scanlines.css esbuild src/css/style.css --external:'/static/*' --bundle --minify --outfile=static/style.css @@ -47,4 +47,4 @@ static/style.css: src/css/style.css src/css/style.css src/css/base.css src/css/n .PHONY: all clean dist -.INTERMEDIATE: blog/index.html.m4 tutoriais/index.html.m4 +.INTERMEDIATE: blogs.html.m4 tutoriais.html.m4 diff --git a/blog/posts.csv b/blog/posts.csv deleted file mode 100644 index d203086..0000000 --- a/blog/posts.csv +++ /dev/null @@ -1,9 +0,0 @@ -"Tudo dentro do Rust, nada fora do Rust"|problemas-rust.html|Tue, 12 May 2026 11:24:27 -0300 -Espaços liminares e backrooms|espacos-liminares.html|Sun, 05 Apr 2026 15:10:23 -0300 -Você não precisa criar contas pra acompanhar seus criadores...|rss.html|Sun, 22 Mar 2026 13:39:53 -0300 -Se você queria motivos pra não usar systemd...|systemd.html| Thu, 19 Mar 2026 10:37:24 -0300 -Tem alguma coisa de errada com o Bazzite|tem-alguma-coisa-errada.html|Wed, 18 Mar 2026 12:05:54 -0300 -Yep, eu deletei a conta do xitter|conta-deletada.html|Tue, 17 Mar 2026 20:41:11 -0300 -Lei Felca é só consequência da centralização da internet|centralizacao-lei-felca.html|sáb 14 mar 2026 22:48:07 -03 -Anonimato é só estatistica|anonimato-estatistica.html|sex 13 mar 2026 10:58:31 -03 -First!|first.html|sex 13 mar 2026 00:36:42 -03 diff --git a/blogs.csv b/blogs.csv new file mode 100644 index 0000000..5eea999 --- /dev/null +++ b/blogs.csv @@ -0,0 +1,9 @@ +"Tudo dentro do Rust, nada fora do Rust"|/posts/problemas-rust.html|Tue, 12 May 2026 11:24:27 -0300 +Espaços liminares e backrooms|/posts/espacos-liminares.html|Sun, 05 Apr 2026 15:10:23 -0300 +Você não precisa criar contas pra acompanhar seus criadores...|/posts/rss.html|Sun, 22 Mar 2026 13:39:53 -0300 +Se você queria motivos pra não usar systemd...|/posts/systemd.html| Thu, 19 Mar 2026 10:37:24 -0300 +Tem alguma coisa de errada com o Bazzite|/posts/tem-alguma-coisa-errada.html|Wed, 18 Mar 2026 12:05:54 -0300 +Yep, eu deletei a conta do xitter|/posts/conta-deletada.html|Tue, 17 Mar 2026 20:41:11 -0300 +Lei Felca é só consequência da centralização da internet|/posts/centralizacao-lei-felca.html|sáb 14 mar 2026 22:48:07 -03 +Anonimato é só estatistica|/posts/anonimato-estatistica.html|sex 13 mar 2026 10:58:31 -03 +First!|/posts/first.html|sex 13 mar 2026 00:36:42 -03 diff --git a/csv2index.sh b/csv2index.sh index 958cf50..283edd8 100755 --- a/csv2index.sh +++ b/csv2index.sh @@ -5,7 +5,7 @@ LINK="$1" SCRIPT="$(cat << EOF { title = \$1 - url = "$LINK/" \$2 + url = \$2 date = \$3 print "
  • " print "" title " (" date ")" @@ -20,7 +20,7 @@ BASEPAGE(\` changequote(\`[[', \`]]')dnl EOF -echo "RSS" +echo "RSS" echo "Voltar" echo '
      ' diff --git a/templates/base.m4 b/templates/base.m4 index 240e49d..2358a08 100644 --- a/templates/base.m4 +++ b/templates/base.m4 @@ -44,8 +44,8 @@ define(`BASEPAGE', ` diff --git a/tutoriais.csv b/tutoriais.csv new file mode 100644 index 0000000..09024ad --- /dev/null +++ b/tutoriais.csv @@ -0,0 +1,2 @@ +Eu tenho certeza que você, um sênior, não sabe o que é orientação à objetos|/posts/orientacao-a-objetos.html|Mon, 15 Jun 2026 18:20:28 -0300 +Como dev, como você dev pensar?|/posts/makefiles.html|Mon, 15 Jun 2026 11:59:51 -0300 diff --git a/tutoriais/posts.csv b/tutoriais/posts.csv deleted file mode 100644 index 8a86ba7..0000000 --- a/tutoriais/posts.csv +++ /dev/null @@ -1,2 +0,0 @@ -Eu tenho certeza que você, um sênior, não sabe o que é orientação à objetos|orientacao-a-objetos.html|Mon, 15 Jun 2026 18:20:28 -0300 -Como dev, como você dev pensar?|makefiles.html|Mon, 15 Jun 2026 11:59:51 -0300 -- cgit v1.2.3