Actividade Agosto 2021
   4 min leitura

Pois, tenho mexido aqui nalgumas coisas nos bastidores:

Alterações no tema

Eu queria usar um tema Hugo para documentação (documentos estruturados), se possível com um blog associado para conteúdo menos estruturado.
Queria que tivesse (sem ordem de importância):

  • Tema claro / escuro
  • Multilíngua (i18n)
  • Várias secções independentes
  • Capacidade de incluir nas caixas de código tanto números de linha como prompts fora do texto, para que fossem ignorados ao copiar o conteúdo da caixa
  • Ter caixas de saída de comandos com formatação distinta

Só encontrei este tema, o Zdoc, que tinha uma grande parte das coisas que queria (o Docz parece estar a evoluir como uma alternativa), mas ainda lhe falta muita coisa:

  • Não suporta caixas de saída de comandos
  • Só inclui prompts $ e > (e eu precisava também de #, PS e PS#)
  • não podia inserir ficheiros de configuração externos inline
  • não tem um botão para copiar o conteúdo de uma caixa de código

De ressalvar que nenhum tema Hugo tem isto tudo.

Caixas de saída de comandos

Resolvi com um shortcode e formatação CSS inline

1
2
  <pre style="font-style: italic; font-size: 0.79rem">
    {{.Inner}}</pre>

Output...

Prompts para root, PowerShell e PowerShell admin

Não foi nada de que me sinta especialmente orgulhoso, porque o código original era muito simples, bastou-me copiar e mudar alguns valores:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var hashCodeElem = document.querySelectorAll('div.language-\\#');

hashCodeElem ?
hashCodeElem.forEach(function(elem) {
    var lnts = elem.parentNode.parentNode ? elem.parentNode.parentNode.querySelectorAll('.lnt') : null;
    lnts ? 
    lnts.forEach(function(lnt) {
      lnt.innerHTML = '#<br/>';
    }) : null;
}) : null;

var psCodeElem = document.querySelectorAll('div.language-\\ps');

psCodeElem ?
psCodeElem.forEach(function(elem) {
    var lnts = elem.parentNode.parentNode ? elem.parentNode.parentNode.querySelectorAll('.lnt') : null;
    lnts ? 
    lnts.forEach(function(lnt) {
      lnt.innerHTML = 'PS><br/>';
    }) : null;
}) : null;
    
var psadmCodeElem = document.querySelectorAll('div.language-\\psa');

psadmCodeElem ?
psadmCodeElem.forEach(function(elem) {
    var lnts = elem.parentNode.parentNode ? elem.parentNode.parentNode.querySelectorAll('.lnt') : null;
    lnts ? 
    lnts.forEach(function(lnt) {
      lnt.innerHTML = 'PS#<br/>';
    }) : null;
}) : null;
1
rm -rf /
1
Stop-Computer
1
Stop-Computer -Computer DC01

Inserir ficheiros de texto externos

Não consegui o que queria mas desenrasquei-me assim:

  • Um shortcode para ler um ficheiro externo e colocá-lo dentro de um code fence:
1
2
3
4
<!--https://stackoverflow.com/a/45421343-->
{{ $file := .Get "file" | readFile }}
{{ $lang := .Get "language" }}
{{ (print "```" $lang "\n" $file "\n```") | markdownify }}
  • Colocado dentro de um shortcode expand para criar um dropdown (incluído no Zdocs)
  • E antecedido dum link para descarregar o ficheiro
    Toda esta complicação é para minorar o problema que se segue.

Copiar blocos de código

Não consegui dar a volta; por causa do processamento que o tema faz aos code fences para inserir os prompts, o código que encontro para fazer isso falha, porque tenta copiar o texto do sítio errado ou coloca o botão no sítio errado.
E como o CINEL, na sua imensa sabedoria, não me ensinou CSS nem estrutura DOM (o primeiro ano desse curso em que deixaram de ensinar isso), ainda estou um bocado perdido.

Mudança da fonte de título

A fonte de título original do tema era a Montserrat, que era graficamente muito engraçada mas eu achei que no peso Black-900 que estava a ser usado desiquilibrava muito a página e a leitura era difícil.
Mudei-a para a fonte MPlus.

Conteúdo

Desenvolver conteúdos para pôr aqui tem sido mais difícil do que estava à espera (além disso, agora tenho um trabalho que me paga as contas). A maior parte do que eu tenho pronto foi desenvolvido durante o curso CET-GRSI, e não posso exactamente chapar isso aqui e deixar os exercícios resolvidos aos próximos alunos!
Estou a tentar extrair as partes mais avançadas que eram “bombons” no projecto e que só beneficiariam quem já tivesse feito o grosso dos trabalhos por si, mas não é fácil.
Entretanto, estou a preparar uma série de artigos sobre Public Key Infrastructure
Mantenham-se atentos.

Cadência

Vou alternar a publicação; cada artigo vai aparecer primeiro em Português, e na semana seguinte uma versão traduzida será publicada no site em Inglês (junto com uma versão portuguesa corrigida).
Espero publicar novos artigos em semanas alternadas.