Lista de Receitas

Jul 1, 2018 1 min.

Coisas relacionadas a minhas tentativas de cozinhar: Meu livro de receitas Meu diário de tentativas de cozinhar Meu álbum de fotos das minhas tentativas de cozinhar

Lista de Vinhos

Jul 1, 2018 1 min.

Coisas relacionadas a vinhos: Meu diário de degustação de vinhos Meu álbum de fotos de vinhos

O Café

Jul 1, 2018 5 min.

Vamos falar, então, de café? O café tem feito parte da minha vida em diferentes fases. Já o havia conhecido desde criança, pois diferente de hoje em dia, crianças podiam tomar o tradicional café da manhã com café e leite e ninguém ligava muito. Eu até participei do ritual infantil de molhar o pão com margarina na minha combinação perfeita entre café e leite quentinhos feitos pela mamãe. Talvez por isso a minha próxima fase com a bebida, como programador, tenha sido tão agradável e natural.

As Portas da Percepção

Jun 25, 2018 8 min.

As Portas da Percepção é um (ou dois) ensaio do escritor Aldous Huxley que descreve com uma precisão poética os efeitos do uso da droga conhecida como mescalina, e se você tem vergonha na cara já deve ter se lembrado desse nome citado nas inúmeras vezes que assistir ao filme The Matrix. Quando Neo recebe uma visita que o acorda (“the white rabbit”) ele ainda parece estar dormindo. Sua visita e cliente conhece esse efeito: “mescalina!

SSL e seu limite de pacote

May 22, 2018 2 min.

O protocolo TLS/SSL tem por objetivo criar uma camada de criptografia assimétrica para a aplicação. E quando eu falo em camada não estou me referindo às camadas OSI. Nem às camadas TCP/IP. Isso porque o SSL não se encaixa em nenhuma das duas. Ele interfere com muitas, inclusive a aplicação. E aprendi isso a duras penas: na ponta do depurador. O pacote SSL tem um limite de 16 KB, ou 16384 bytes.

Boost Meta State Machine

May 21, 2018 4 min.

O Boost Meta State Machine (MSM for short) é uma das duas bibliotecas mais famosinhas de state machine do Boost. Ela é uma versão estática que permite incluir chamadas para as entradas e saídas de um estado baseado em eventos. A sua principal vantagem é poder visualizar toda a máquina de estado em um só lugar, e sua principal desvantagem é pertecer ao Boost, o que quer dizer que você vai precisar fazer seu terceiro doutorado e ler uma documentação imensa sobre UML antes de conseguir produzir alguma coisa.

Lista Ligada; tá ligado?

Apr 24, 2018 3 min.

Uma lista ligada é uma lista de alguma coisa. Essa alguma coisa podem ser inteiros, strings ou estruturas inteiras. Independente do que for, você vai precisar de uma estrutura. Sabe por quê? Porque existe além dos dados em si mais uma informação que você precisará guardar em cada elemento de sua lista: o próximo elemento. Sua estrutura pode ser simples e direta. Digamos uma lista ligada de idades vai ter o endereço do próximo elemento e o dado propriamente dito deste elemento (a idade):

Projeto Aluno

Mar 21, 2018 2 min.

Observar um estudante de computação (qualquer curso) lutando nos primeiros meses para conseguir fazer seus programas compilarem em C é um misto de emoções. É uma mistura entre risos, risadas e gargalhadas. Há vários motivos para isso, mas o principal, o que vem à minha mente sempre que isso acontece, é a eterna questão: por que a pessoa encontra fórum de programação para perguntar sobre variável mas não consegue ler duas páginas de um livro?

Contra o 'Array de 100 bytes é suficiente'

Mar 11, 2018 2 min.

Desde o C++ moderno (pós-03) o uso de arrays de tamanho fixo estão se tornando depreciados. E por um bom motivo: você nunca sabe realmente qual o tamanho que você precisa para um array de bytes até você saber. Daí a próxima grande questão é: “como gerenciar essa memória dinâmica de forma efetiva?”. E a resposta moderna sempre é: “não faça isso você mesmo”. Eis o porquê: #include <string.h> #include <iostream> char* LegacyFunction() { char* ret = (char*) malloc(100); strcpy(ret, "old old string"); return ret; } void WideStringFunction(wchar_t* mbString) { std::wcout << mbString << L'\n'; } int main() { char* legacyString = LegacyFunction(); size_t legacyLen = strlen(legacyString); wchar_t* convertedString = new wchar_t[legacyLen+1]; // espalhando a merda de alocar dinamicamente mbstowcs(convertedString, legacyString, legacyLen+1); WideStringFunction(convertedString); free(legacyString); free(convertedString); // espalhando a merda de desalocar manualmente } Quando lidamos com funções legadas elas se misturam de tal maneira com código novo que a merda da alocação/desalocação dinâmica manual vai se espalhando também.

PHP Experience 2018 Dia 2: Críticas

Mar 7, 2018 3 min.

Grades decepcionantes. O segundo dia do PHP Experience demonstrou pela qualidadade e teor das palestras pelo menos duas coisas: 1) a comunidade parece interessada em boas práticas e arquitetura (o que é ruim), 2) a comunidade parece mais interessada em “diversidade” que qualidade (o que é duplamente ruim). As palestras que frequentei foram: Construindo aplicações PHP com Twelve-Factor App Uma lenta e dolorosa peregrinação teórica sobre boas práticas de como desenvolver e entregar software… até esqueci sobre que tipo de software.