Cesar Gimenes códigos, artigos, golang e unix

programação, eletrônica, golang, UNIX e muito mais papo nerd

MS-DOS, APM com C e Assembly

Para brincar de retro-computação eu uso o VirtualBox com o MS-DOS 6.22 e o DOSBox, os dois funcionam muito bem mas a tela fica ligeiramente melhor no VirtualBox e o DOSBox é mais rápido e fácil para desenvolver e ir rapidamente de um sistema para outro então acabo usando os dois. No DOSBox você pode fechar o simulador simplesmente digitando o comando exit que vai fechar uma sesseão do interpretador de comandos e se for a ultima sessão ela vai fechar o proprio DOSBox, o que é bem legal porque não precisa mover mouse nem nada e é um comportamento mais parecido com um terminal.

Acessando Dropbox com Golang

Precisei criar um pacote Go para ao Dropbox e fazer algumas operações basicas, listar arquivos, upload e download, para isso usei o dropbox-sdk-go-unofficial. Conectando Dropbox Para conectar o dropbox precisamos das credenciais de acesso, a forma mais fácil é criar um token, para isso entre em Dropbox developers apps e crie uma aplicação, então dentro do painel da aplicação crie o token. Configurando o sistema Todas as funções precisam das configurações com as credenciais de acesso e outros parâmetros úteis como por exemplo o nível de log.

Uma forma pratica de editar linhas de comando longas no terminal

Para editar linhas de comando longas de forma mais conveniente você pode usar seu editor de texto favorito, para isso basta usar o atalho ^xe (mantenha a tecla control pressionada enquanto pressiona as teclas x e depois e) Caso queira usar outro editor basta preencher a variável EDITOR Por exemplo: EDITOR=nano Outra coisa importante é tomar cuidado se o seu editor gera arquivos de backup ou cache, pode ser uma boa ideia desabilitar esse recurso para evitar que ele faça isso e acabe gerando arquivos perdidos no seu diretório temporário, sem contar a possibilidade de falha de segurança e de ele restaurar o comando antigo atrapalhando seu trabalho no terminal.

Usando gofn para subir containers docker e rodar Clojure e Python

Como carregar containers Docker usando gofn Primeiro instanciamos a struct BuildOptions que vai informar para o gofn os detalhes do container como o nome da imagem por exemplo. buildOpts := &provision.BuildOptions{ ImageName: "nome da imagem aqui", StdIN: "o que você quer passar no stdin para o container aqui", DoNotUsePrefixImageName: true, } Depois instanciamos as opções do container por exemplo se você quer passar variáveis de ambiente.

Compilação Estática Com Golang

Criando executáveis monolíticos Go já faz um bom trabalho compilando estaticamente praticamente tudo, mas dependendo do seu código é necessário incluir mais alguns parâmetros para garantir que seu executável seja totalmente livre de dependências. A primeira coisa é compilar o seu projeto e então inspecionar o binário para ver se ele tem alguma dependência. Para fazer isso no macOS usamos o utilitário otool (object file displaying tool) passando o parâmetro -L (mostra as shared libraries usadas) como no exemplo:

Acessando a porta serial

No canal Test After Deploy tivemos uma ótima explicação do funcionamento do tmux. E para mim uma das coisas mais interessantes é que os desenvolvedores preferiram deixar de fora algumas coisas que tem no screen, como o suporte a telnet e a portas seriais, eles fizeram isso porque acreditam na filosofia UNIX de faça apenas uma coisa e faça bem feito. E na minha opinião eles estão muito certos.

Antigo modulo txt2tags para o Apache

mod_t2t Não dou manutenção nesse código a mais de uma década, estou deixando disponível aqui apenas para deixar a historia registrada e não recomendo o uso do código. A ideia é simples, um módulo para o apache que inclui um handler para arquivos de marcação no formato t2t, fonte do txt2tags. Funciona assim, quando o apache recebe uma requisição de um arquivo com a extensão .t2t ele chama o txt2tags como via uma pequena função em Python que se encarrega de converter tudo para HTML e o resultado é enviado para o cliente.

Um conto de terror para programadores

Já tem muitos anos havia uma lista de discussão sobre Linux bem famosa, todo mundo se reunia por lá. Mas estávamos no inicio e as coisas não eram nem de perto tão robustas como são hoje, listas de e-mails ainda eram o principal meio para trocar informações porque ninguém tinha uma conexão 7x24 como as que temos hoje, você conectava, baixava seus e-mails, lia tudo off-line, respondia, conectava novamente e enviava suas respostas.

Go brincando com bits

Brincando com bits Estou brincando com um projeto de um interpretador BASIC escrito em Go e a saída de video em modo texto segue o padrão de cores do CGA ou seja um byte contem nos quatro bits mais altos o código para a cor do fundo e nos quatro bits mais baixos o código para a cor da fonte. Ou seja 16 cores para as letras e 16 cores para o fundo.

Interpretador BASIC

Por que? Você deve estar se perguntando algo como “por que diabos um interpretador BASIC nos dias de hoje?“. Bom já a algum tempo eu estava querendo uma maquina para ensinar os princípios da computação para minha filha, e precisa ser uma maquina resistente, para resistir a uma criança de 5 anos tem que praticamente ser um tanque de guerra, e não pode ter nada sofisticado em termos de sistema operacional, nada de Linux ou Windows porque a maquina não pode ter um sistema de arquivos montado que precise ser desligado corretamente, precisa ser algo que seja desligado simplesmente cortando o fornecimento de energia e que ligue instantaneamente caindo em um prompt de alguma linguagem simples, sem ícones sem comandos para carregar o interpretador, nada, ligou ta pronto para receber comandos.