Threads e Concorrência

The Free Lunch Is Over O The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software, numa tradução livre “O Almoço Grátis Acabou: Uma Virada Fundamental em Direção à Concorrência em Software”, é um artigo de 2005 alertando sobre a concorrência e multithreading, e será descrito brevemente a seguir. Andy and Bill’s law A lei de Andy e Bill é uma afirmação de que o novo software sempre consumirá qualquer aumento no poder computacional que o novo hardware possa fornecer. A lei se origina de uma frase humorística contada na década de 1990 durante conferências de computação: ...

2 nov. 2024 · 8874 palavras · danieltak

Quebrando Dependências

Introdução Esse post fala sobre o vídeo do Klaus Iglberger no “Meeting C++ de 2022”: Breaking Dependencies: The Path to High-Quality Software, em uma tradução livre “Quebrando Dependências: O Caminho para Software de Alta Qualidade”. O Software precisa mudar constantemente, mas não é fácil projetar um software para atender a esses requisitos. Definição de Design de Software: Design de Software é a arte de gerenciar interdependências entre componentes de software. Seu objetivo é minimizar dependências (técnicas) e introduzir as abstrações e os compromissos necessários. ...

5 out. 2024 · 741 palavras · danieltak

Receita Karê

O que é? O karê é um dos pratos da culinária japonesa, normalmente ele é servido com arroz branco. A base é feita com o tempero de pó de curry, que é uma mistura de especiarias e varia em cada país da Ásia, as principais marcas vendidas no Brasil são do Japão e da Índia. Do Japão: Da Índia: A principal diferença entre os condimentos de curry japonês e indiano reside na sua composição e nos perfis de sabor resultantes. O curry japonês em pó normalmente contém uma mistura de açafrão-da-terra, cominho, coentro, feno-grego e outras especiarias, frequentemente combinadas com farinha, óleo e, às vezes, açúcar ou outros adoçantes para um sabor mais suave e doce. Geralmente, ele vem em forma de bloco, facilitando o derretimento em uma consistência semelhante a um ensopado. ...

30 set. 2024 · 439 palavras · danieltak

Logging

Introdução Um log de erros é um arquivo de texto que registra a cronologia de eventos que ocorrem em um sistema operacional, aplicativo ou serviço. Esses registros são essenciais para monitoramento, auditoria, segurança e correção de problemas. Desde o momento em que o sistema operacional é iniciado, os primeiros logs começam a ser gravados, registrando informações como data, horário, carregamento do kernel e possíveis erros ou ações excepcionais executadas. Os logs de erro são valiosos para desenvolvedores e administradores, pois fornecem insights sobre falhas e exceções durante a execução de programas, permitindo a identificação e resolução de problemas. ...

8 set. 2024 · 1030 palavras · danieltak

Ponteiro Nulo - NULL e nullptr

Introdução Neste post eu irei explicar o que é um ponteiro nulo no C++ e se devemos usar o NULL ou nullptr? TL;DR; use a palavra-chave nullptr no C++11 ou posterior, mesmo que o NULL seja um typedef para o nullptr. Até o C++11 o ponteiro nulo era usado como um valor igual a 0 (ou NULL, sempre #definido como zero) nem era um tipo de ponteiro. Isso pode levar a alguns problemas em alguns casos, para isso o tipo std::nullptr_t foi introduzido. ...

21 mar. 2024 · 829 palavras · danieltak

Escolha do Sistema Operacional

Introdução Quando se trata de Sistema Operacional (SO) para desktop, como engenheiro e funcionário do mundo corporativo, a escolha sempre foi o Windows, pela compatibilidade com os softwares utilizados e o controle da TI. Mas para programação, o Linux pode ser uma alternativa em muitos casos, mas em empresas o Departamento de TI normalmente liberará somente o Windows. Já para servidores este cenário é um pouco diferente… Pois para desenvolvimento, necessitamos dos últimos pacotes ou de muitos drivers. Já para ambiente de produção, o principal é a robustes e alta disponibilidade. Os pacotes de desenvolvimento normalmente não estão instalados nos servidores ou demoram para serem atualizados. ...

15 mar. 2024 · 1165 palavras · danieltak

Não use o ifconfig

Por quê? Em uma resposta do website Server Fault de 2012, “Eu devo parar de usar o ifconfig?”. A resposta é a seguinte: O comando /bin/ip já existe há algum tempo. Mas as pessoas continuam usando o comando antigo /sbin/ifconfig. Sejamos claros: o ifconfig não irá desaparecer rapidamente, mas sua versão mais recente, ip, é mais poderosa e eventualmente irá substituí-lo. A página man do ip pode parecer intimidante no início, mas depois que você se familiarizar com a sintaxe do comando, será uma leitura fácil. Esta página não apresentará os novos recursos do ip. Em vez disso, apresenta uma comparação lado a lado entre ifconfig e ip para obter uma visão geral rápida da sintaxe do comando. ...

12 mar. 2024 · 333 palavras · danieltak

Enviar Sinal para Pthread ou Processo

Introdução Se você deseja enviar um sinal para um thread, você pode usar pthread_kill(), embora não seja semanticamente correto, a página man7 afirma: A função pthread_kill() envia o sinal sig para thread, um thread no mesmo processo que o chamador. O sinal é direcionado de forma assíncrona ao thread. Se sig for 0, nenhum sinal será enviado, mas a verificação de erros ainda será realizada. Vivo ou Morto? Thread Um código para obter o sinal de uma thread e verificar se a thread está “viva”: ...

10 mar. 2024 · 719 palavras · danieltak

Um Estudo sobre o Tempo

Introdução O tempo parece tão simples e trivial, mas ao mesmo tempo um conceito complexo e relativo. Desde muito tempo atrás o estudo sobre o tempo é realizado, na faculdade fiz um resumo do estudo de Aristóteles sobre o tempo, e até os dias de hoje as pessoas ainda debatem sobre o estudo dele e de muitos outros que vieram posteriormente. Mas e no C++? Neste post explicarei um pouco sbre a biblioteca STL do C++ std::chrono, num post anterior expliquei sobre o tempo no Linux. ...

3 mar. 2024 · 3008 palavras · danieltak

Quebra de Texto num Widget de Table usando QWidget

Introdução O word wrapping automático do Qt utilizando alguns flags funcionava corretamente na classe QTableWidget, porém outras propriedades não eram atendidas ao usar a classe padrão, para personalizar e contornar os delegates podem ser usados. Pela minha experiência, o QTableWidget é muito limitado, para um widget tão complexo como a tabela, dificilmente você criará uma classe que atenderá à todos requisitos de tabelas de um projeto inteiro e eventualmente você precisará criar um delegate para implementar funcionalidades personalizadas. ...

27 fev. 2024 · 1526 palavras · danieltak