Category: Desenvolvimento

Kronotop: Um banco de dados de documentos distribuído e transacional compatível com Redis

2025-01-20
Kronotop: Um banco de dados de documentos distribuído e transacional compatível com Redis

Kronotop é um banco de dados de documentos distribuído e transacional compatível com Redis, com suporte do FoundationDB. Ele oferece suporte a uma linguagem de consulta semelhante ao MQL, transações ACID e um mecanismo de armazenamento em disco com um modelo de replicação primário-secundário. Embora ainda esteja em estágio inicial de desenvolvimento, com uma API instável, já possui recursos como ZMap (um armazenamento de chave-valor ordenado), namespaces e suporte parcial para estruturas de dados Redis (strings e hashes). Planos futuros incluem suporte para mais estruturas de dados Redis (listas, conjuntos, conjuntos ordenados) e uma estrutura de dados Bucket para armazenar documentos semelhantes a JSON com suporte a linguagem de consulta MQL e transações.

Desenvolvimento

Proposta: Efeitos Essenciais para C

2025-01-20

Esta proposta sugere aprimorar o sistema de tipos principal da linguagem C com um sistema de tipo e efeito, exigindo que funções e blocos declarem os efeitos de sua avaliação. Isso melhora a composição de metaprogramação e simplifica a definição de restrições no estilo MISRA. O sistema rastreia e verifica efeitos, mas não lida com o tratamento de efeitos dinâmicos. Três grupos principais de efeitos são propostos: Locais (por exemplo, gravação local), Persistentes (por exemplo, gravação não local) e Controle (por exemplo, transferência de controle não local). A verificação estática de efeitos é alcançada atribuindo tipo e efeito a cada instrução, expressão e corpo de função, descartando efeitos locais para garantir a ordenação correta. Boas práticas são sugeridas, como limitar a magnitude dos efeitos `mut` e `vol` e especificar verificações de efeitos para operadores e estruturas de controle. O objetivo é melhorar a segurança, legibilidade e composição da linguagem C, especialmente para metaprogramação e gerenciamento de recursos.

Desenvolvimento sistema de tipos

SRCL: Uma biblioteca de componentes React com estética de terminal

2025-01-20
SRCL: Uma biblioteca de componentes React com estética de terminal

SRCL é um repositório de componentes e estilos React de código aberto que ajuda você a construir aplicativos web, aplicativos de desktop e sites estáticos com estética de terminal. Ele possui uma coleção abrangente de componentes, incluindo barras de ação, sanfona, botões, banners de alerta, avatares, emblemas, carregadores, postagens de blog, breadcrumbs, cards, caixas de seleção, tabuleiros de xadrez, blocos de código, caixas combinadas, tabelas de dados, seletores de data, dashboards, exemplos de banco de dados, menus suspensos, estados vazios, campos de entrada, formulários, links, listas, mensagens, modais, barras de navegação, popovers, barras de progresso, botões de rádio, seletores, barras laterais, controles deslizantes, tabelas, áreas de texto, dicas de ferramenta e visualizações de árvore, todos estilizados com uma aparência e sensação retrô de terminal.

WordPecker: Aprendizado de idiomas personalizado com lições no estilo Duolingo e vocabulário personalizado

2025-01-20
WordPecker: Aprendizado de idiomas personalizado com lições no estilo Duolingo e vocabulário personalizado

WordPecker é um aplicativo de aprendizado de idiomas personalizado que combina aulas no estilo Duolingo com suas próprias listas de vocabulário selecionadas. Adicione palavras de livros, artigos ou vídeos sem problemas e revise-as por meio de questionários interativos e aulas geradas por LLM. O aplicativo aborda os pontos problemáticos da aquisição de vocabulário no aprendizado de idiomas tradicional, conectando o aprendizado ao contexto, aumentando a eficiência e a retenção. Atualmente com vários tipos de perguntas, o desenvolvimento futuro inclui rastreamento de progresso, compartilhamento de listas e muito mais.

Desenvolvimento aprendizagem personalizada

Tolerância à Frustração: A Chave para Sobreviver em Grandes Organizações

2025-01-20
Tolerância à Frustração: A Chave para Sobreviver em Grandes Organizações

Em grandes organizações, as ambições muitas vezes colidem com a realidade. Este artigo explora a 'tolerância à frustração', um fator crucial que determina o sucesso na navegação de complexidades organizacionais, conflitos e progresso lento. Alta tolerância à frustração permite que os indivíduos vejam os desafios como gerenciáveis, enquanto baixa tolerância leva à desistência, negatividade e esgotamento. Quatro causas principais da baixa tolerância à frustração são identificadas: demandas por conforto, justiça, realização e controle emocional. Reformular o atrito organizacional como um catalisador para inovação permite o desenvolvimento de maior tolerância à frustração e prosperidade em ambientes complexos.

A Magia Matemática por Trás dos Problemas de Divisibilidade na Graduação

2025-01-20
A Magia Matemática por Trás dos Problemas de Divisibilidade na Graduação

Esta postagem de blog explora a origem de problemas comuns em cursos de matemática de graduação, como provar que um polinômio é sempre um múltiplo de um determinado inteiro. O autor destaca que esses problemas derivam da contagem combinatória, especificamente da contagem de Pólya-Redfield. Este método usa a fórmula de contagem de órbitas sob ação de grupo para conectar o valor de um polinômio à contagem de uma determinada estrutura combinatória, garantindo que o polinômio seja sempre um múltiplo de um inteiro específico. O artigo usa dois exemplos, contagem de pulseiras e contagem de tabuleiros de jogo da velha, para explicar como a contagem de Pólya-Redfield é usada para construir esses problemas. Também propõe uma conjectura sobre se todos esses polinômios se originam da contagem de Pólya-Redfield.

Systemd: A Tomada de Controle Sorrateira do Ecossistema Linux pela Red Hat?

2025-01-20

Este artigo mergulha nas verdadeiras motivações por trás do systemd, revelando como a Red Hat alavancou seus interesses comerciais em dispositivos embarcados para transformar o systemd de um simples sistema init em um componente central do sistema operacional Linux. O autor alega que a Red Hat usou várias táticas, incluindo pressionar projetos de código aberto a depender do systemd e contratar desenvolvedores de outras distribuições, para exercer controle sobre o ecossistema Linux, provocando uma reação negativa na comunidade de código aberto e levando à renúncia de vários desenvolvedores do Debian. O systemd é descrito como um sistema monolítico com preocupações de privacidade, e a ambição da Red Hat é retratada como criar o próximo Windows. O artigo conclui defendendo um retorno ao desenvolvimento impulsionado pela comunidade e recomendando alternativas ao systemd, como runit e s6.

Desenvolvimento

Parinfer: Uma maneira mais simples de editar Lisp

2025-01-20

Parinfer é um modo de editor inovador para linguagens de programação Lisp que simplifica a codificação Lisp vinculando inteligentemente parênteses e recuo. Ele aborda o notório problema de parênteses em Lisp, oferecendo uma experiência de edição mais intuitiva para iniciantes e especialistas. O Parinfer possui dois modos: Modo de Recuo e Modo de Parênteses, permitindo que os usuários se concentrem em recuo ou parênteses, enquanto o Parinfer gerencia automaticamente o outro. Ele também fornece funcionalidade semelhante ao Paredit sem exigir atalhos complexos. No seu cerne, o Parinfer se baseia em uma definição formal da relação entre parênteses e recuo e emprega um mecanismo de ajuste automático inteligente baseado nessa definição.

Desenvolvimento Código

Demonstrações da Comunidade CFRS[]: Desenhando Arte Incrível com Seis Comandos

2025-01-20

CFRS[] é uma linguagem de desenho extremamente minimalista que consiste em apenas seis comandos (C, F, R, S, [, ]). Este documento compila demonstrações CFRS[] contribuídas por membros da comunidade, incluindo demonstrações dinâmicas (usando o comando 'S' para animação) e demonstrações estáticas. Essas demonstrações mostram uma grande variedade de formas, como flores, cruzes, caleidoscópios e folhas, demonstrando o poder expressivo da linguagem. Mesmo comandos simples podem criar arte impressionante. Esta coleção oferece diversão e inspiração para iniciantes e entusiastas da programação.

Enums do TypeScript: Casos de uso e alternativas

2025-01-20

Esta postagem de blog analisa mais detalhadamente as enums do TypeScript: Como elas funcionam? Quais são seus casos de uso? Quais são as alternativas se não quisermos usá-las? A postagem conclui com recomendações sobre quando usar qual abordagem. Ela abrange os conceitos básicos de enums, casos de uso (por exemplo, namespace para constantes com valores primitivos, tipo personalizado com valores exclusivos, namespace para constantes com valores de objeto), alternativas (por exemplo, literais de objeto, união de tipos literais de string) e como realizar verificações de exaustividade e enumerar membros.

Desenvolvimento

Linux 6.13 Estável Lançado: Otimizações AMD, Amplo Suporte Apple e Mais

2025-01-20

O kernel estável do Linux 6.13 foi lançado, trazendo recursos interessantes como otimizações AMD 3D V-Cache para processadores Ryzen X3D, maior eficiência de energia para servidores AMD EPYC 9005 "Turin", suporte para dispositivos Apple mais antigos e otimizações de compilador AutoFDO/Propeller. Suporte inicial para gráficos Intel Xe3, suporte NVMe 2.1 e infraestrutura expandida da linguagem Rust também estão inclusos. Marcando o primeiro grande lançamento de kernel de 2025, o Linux 6.13 melhora significativamente o desempenho e a compatibilidade de hardware.

Desenvolvimento

GitHub Actions: Reconsiderando sua utilização

2025-01-20

Este artigo descreve as frustrações do uso do GitHub Actions para CI/CD em um grande monorepo com 15 engenheiros constantemente enviando código para o branch principal. O autor destaca problemas importantes: verificações obrigatórias com defeito para pull requests em uma configuração de monorepo, baixa reusabilidade do fluxo de trabalho e gerenciamento de YAML, falta de ambiente de desenvolvimento local e a atitude não responsiva do GitHub em relação ao feedback do usuário. A conclusão defende a exploração de plataformas de CI/CD alternativas, como GitLab, Jenkins ou até mesmo Dagger, para melhores soluções.

Desenvolvimento

Provider Terraform para Switches HRUI: Simplificando a Configuração de Rede

2025-01-20
Provider Terraform para Switches HRUI: Simplificando a Configuração de Rede

O projeto open-source `terraform-provider-hrui` fornece um provedor Terraform para gerenciar switches da marca HRUI (Horaco, Sodola, XikeStor, etc.). Ele usa a biblioteca goquery para interagir com a interface da web do switch e foi testado com sucesso no Horaco ZX-SWTG124AS. Contribuições são bem-vindas, e o projeto é licenciado sob a licença MPL-2.0.

Desenvolvimento Gerenciamento de Rede

Revolucionando a Autorização Fina de Grão: O Motor de Computação Incremental da Feldera

2025-01-20
Revolucionando a Autorização Fina de Grão: O Motor de Computação Incremental da Feldera

A Feldera apresenta uma abordagem revolucionária para Autorização Fina de Grão (FGA). Sistemas FGA tradicionais avaliam solicitações de autorização em tempo real, levando à ineficiência. A Feldera pré-calcula todas as decisões de autorização e usa seu mecanismo de computação incremental (baseado em SQL) para atualizar os resultados, transformando as solicitações de autorização em simples pesquisas de chave-valor. Mesmo com grandes gráficos de objetos, a Feldera processa alterações em milissegundos, melhorando drasticamente o desempenho. O artigo detalha os princípios da FGA e demonstra a construção de um mecanismo FGA de alto desempenho usando SQL, mostrando sua superioridade no tratamento de grandes conjuntos de dados.

Rhai: Uma linguagem de script embutida segura e eficiente para Rust

2025-01-20
Rhai: Uma linguagem de script embutida segura e eficiente para Rust

Rhai é uma linguagem de script e mecanismo de avaliação embutidos para Rust, oferecendo uma maneira segura e fácil de adicionar recursos de script a qualquer aplicativo. Ele é compatível com todos os alvos de CPU e SO suportados pelo Rust, incluindo WebAssembly, e possui uma sintaxe simples, semelhante ao JavaScript. O Rhai se destaca pela avaliação eficiente e integração estreita com funções e tipos nativos do Rust, permitindo a passagem e o uso sem problemas de valores do Rust. Seus recursos de segurança robustos protegem contra ataques maliciosos, como estouro de pilha e scripts descontrolados.

Desenvolvimento Linguagem de Script Embutida

Geometria Computacional com Primitivas Probabilisticamente Ruidosas

2025-01-20

Uma nova pré-impressão explora algoritmos de geometria computacional sob operações primitivas probabilisticamente ruidosas. Muitos desses algoritmos dependem de primitivas que acessam coordenadas de entrada e as convertem em informações combinatórias. O artigo considera primitivas que produzem resultados incorretos aleatoriamente e investiga como obter resultados corretos com alta probabilidade sem perda significativa de eficiência. Descobriu-se que, para alguns problemas (como a construção do casco convexo), a lentidão devido à repetição pode ser evitada, enquanto para outros (como encontrar pares mais próximos), não pode. Isso se conecta a trabalhos anteriores sobre complexidade de comunicação usando comparações ruidosas para melhorar a eficiência.

As Duas Coisas Mais Difíceis na Ciência da Computação

2025-01-20
As Duas Coisas Mais Difíceis na Ciência da Computação

Uma piada clássica entre programadores diz: "Existem apenas duas coisas difíceis na Ciência da Computação: invalidação de cache e nomeação de coisas." Este artigo traça a origem e a evolução dessa frase espirituosa, explorando seu humor e significado mais profundo. De sua forma concisa inicial a variações que incorporam 'erros de índice fora do intervalo' e muito mais, a piada reflete os inúmeros desafios que os programadores enfrentam diariamente, destacando a complexidade e a diversão inerentes à programação.

Desenvolvimento

Como as interrupções impactam engenheiros de software: Uma pesquisa aprofundada

2025-01-20
Como as interrupções impactam engenheiros de software: Uma pesquisa aprofundada

Uma nova pesquisa explora como as interrupções afetam a produtividade e o estresse de engenheiros de software. O estudo descobriu que diferentes tipos de interrupções (por exemplo, notificações presenciais versus na tela) impactam a codificação, a compreensão de código e a revisão de código de maneira diferente, com tarefas complexas sendo menos afetadas. Curiosamente, dados fisiológicos (variabilidade da frequência cardíaca) mostraram menos estresse com interrupções presenciais, mas os engenheiros as perceberam como mais estressantes. Os gerentes devem priorizar o estresse percebido pelos engenheiros, minimizando interrupções de alta prioridade e fornecendo tempo focado para tarefas como codificação para aumentar a eficiência da equipe.

Desenvolvimento interrupções

A Verdade Feia Sobre a Indentação Lisp

2025-01-19

Programadores Lisp debatem há muito tempo o melhor estilo de indentação. Este artigo explora várias abordagens, incluindo nenhuma indentação, indentação alinhada à função, indentação de preenchimento de espaço e a polêmica indentação de macro "doente" do autor. A indentação alinhada à função torna-se difícil de usar com aninhamento profundo, enquanto a indentação de preenchimento de espaço, embora eficiente, fica aquém em casos extremos. O autor defende um estilo de macro "doente", que, apesar de não convencional, mantém a legibilidade em código aninhado profundamente e funciona bem com a maioria das ferramentas de indentação. Os leitores são convidados a compartilhar seus estilos preferidos.

Autocorreção do Git: Rápida Demais Até para Pilotos de F1?

2025-01-19
Autocorreção do Git: Rápida Demais Até para Pilotos de F1?

O recurso de autocorreção do Git, com seu tempo de resposta de 0,1 segundos, gerou debates. Este artigo investiga seu design e velocidade surpreendentemente rápida. Não é o comportamento padrão; em vez disso, é configurável por meio da configuração `help.autocorrect`. Inicialmente, um tempo de espera curto e brincalhão foi definido, posteriormente aprimorado para permitir atrasos definidos pelo usuário ou prompts de confirmação. O autor também analisa o algoritmo de autocorreção do Git e sugere melhorias para uma melhor experiência do usuário.

Desenvolvimento autocorreção

Crie uma Autoridade de Certificação minúscula e segura com YubiKey para seu Homelab

2025-01-19
Crie uma Autoridade de Certificação minúscula e segura com YubiKey para seu Homelab

Este tutorial o guiará na construção de uma Autoridade de Certificação (CA) segura e protegida por YubiKey em um Raspberry Pi. Usando o step-ca de código aberto e um Infinite Noise TRNG opcional para aleatoriedade aprimorada, você criará um minúsculo servidor ACME interno para as necessidades de TLS do seu homelab. O guia cobre a configuração do sistema, a criação de PKI, a configuração da CA, a adição de um provisionador ACME e a implementação de serviços systemd para lidar com a remoção/inserção do YubiKey. O resultado? Uma CA minúscula, segura e sem SSH.

A surpreendente luta para obter um tempo de época UNIX a partir de uma string UTC em C ou C++

2025-01-19
A surpreendente luta para obter um tempo de época UNIX a partir de uma string UTC em C ou C++

Este artigo explora as complexidades de converter strings de tempo UTC em timestamps Unix em C/C++. O autor descobre comportamentos inesperados nas funções de manipulação de tempo POSIX em várias bibliotecas e linguagens C. O foco está no uso das funções `strptime()`, `mktime()` e `timegm()`, destacando problemas com o horário de verão e localidades. São fornecidas soluções, incluindo o uso de `timegm()` para horários UTC e o aproveitamento de streams C++ para contornar problemas de localidades. O artigo conclui recomendando bibliotecas de manipulação de tempo mais robustas disponíveis em C++20 e posterior, como a biblioteca tz de Howard Hinnant.

Desenvolvimento Manipulação de Tempo

Curso Essencial de Robótica e ROS 2 de Código Aberto: Aprenda ROS 2 do Zero

2025-01-19
Curso Essencial de Robótica e ROS 2 de Código Aberto: Aprenda ROS 2 do Zero

A Henki Robotics, em colaboração com a Universidade da Finlândia Oriental, disponibilizou gratuitamente um curso de robótica ROS 2 para iniciantes. O curso abrange conceitos essenciais do ROS 2, simulação Gazebo, SLAM, navegação e muito mais, tudo em um ambiente contêiner baseado em Docker, eliminando a necessidade de instalação prévia. Exercícios práticos e foco em aplicação prática tornam este curso ideal para iniciantes que desejam adquirir rapidamente habilidades para o desenvolvimento de robótica moderna.

Desenvolvimento Curso de Código Aberto

Remoção de Tipos do Node.js: Simplificando o Desenvolvimento TypeScript

2025-01-19
Remoção de Tipos do Node.js: Simplificando o Desenvolvimento TypeScript

O Node.js v23.6.0 introduz um recurso experimental aguardado há muito tempo, a Remoção de Tipos (Type Stripping), com o objetivo de simplificar o uso do TypeScript, permitindo que o código TypeScript seja executado sem configuração adicional. Esse recurso é alcançado removendo informações de tipo do código TypeScript, evitando configurações e verificações de tipo trabalhosas e, assim, aumentando a eficiência do desenvolvimento. Embora algumas compensações tenham sido feitas para compatibilidade e desempenho, como não suportar alguns recursos complexos do TypeScript, o recurso melhora significativamente a experiência do desenvolvedor e prepara o caminho para a popularização do TypeScript no ecossistema Node.js.

Desenvolvimento Remoção de Tipos

Google lança OSV-SCALIBR: Uma poderosa biblioteca de análise de composição de software

2025-01-19
Google lança OSV-SCALIBR: Uma poderosa biblioteca de análise de composição de software

O Google lançou o OSV-SCALIBR, uma biblioteca de Análise de Composição de Software (SCA) extensível para escanear pacotes instalados, binários autônomos e código-fonte em busca de vulnerabilidades. Ele suporta várias linguagens de programação e gerenciadores de pacotes e gera Listas de Materiais de Software (SBOMs). O OSV-SCALIBR é o principal mecanismo de SCA usado internamente pelo Google e agora é de código aberto, com planos para integrá-lo ao OSV-Scanner para uma interface de linha de comando mais robusta.

Desenvolvimento Segurança de Software

Guia de Programação de Rede Linux: Um mergulho profundo na programação de sockets

2025-01-19
Guia de Programação de Rede Linux: Um mergulho profundo na programação de sockets

Este guia fornece uma explicação abrangente da programação de rede Linux, com foco na programação de sockets. O autor observa que muitos recursos online carecem de clareza e os códigos de exemplo geralmente cobrem apenas o básico, daí a criação deste tutorial, oferecendo diretrizes claras e inúmeros exemplos. Os tópicos abordados incluem tipos de sockets, endereçamento, APIs (getprotobyname(), getservbyname(), getaddrinfo(), htonl(), htons(), ntohl(), ntohs(), socket(), setsockopt(), bind(), listen(), accept(), connect(), recv(), send(), close()), modelos cliente-servidor (cliente HTTP simples, cliente-servidor baseado em TCP, cliente-servidor TCP multithread, cliente-servidor baseado em UDP), técnicas avançadas (sockets não bloqueantes, multiplexação de E/S síncrona com select() e poll(), mensagens de broadcast) e redes seguras com libcurl e OpenSSL.

Desenvolvimento Programação de Rede

O Livro de Fuzzing: Automatizando Testes de Software

2025-01-19
O Livro de Fuzzing: Automatizando Testes de Software

O Livro de Fuzzing é um guia abrangente para testes de software automatizados, com foco em técnicas de fuzzing. Ele abrange vários métodos de fuzzing, incluindo fuzzing lexical, sintático e semântico, com exemplos de código executável para aprendizado prático. Se você é um testador de software, engenheiro de segurança ou desenvolvedor, este livro o capacita a gerar casos de teste automaticamente, melhorar a qualidade do software e descobrir bugs ocultos.

Desenvolvimento Teste Automatizado

Construa um banco de dados em 3000 linhas de código Go: de zero dependências a consultas SQL

2025-01-19
Construa um banco de dados em 3000 linhas de código Go: de zero dependências a consultas SQL

Este artigo detalha a criação de um pequeno banco de dados em 3000 linhas de código Go, a partir do zero. O autor explica os conceitos essenciais, começando pela atomicidade contra perda de energia (conseguida através de logs somente-apêndice e somas de verificação) e indexação eficiente usando estruturas de dados como árvores B+. O processo é explicado passo a passo, cobrindo a criação de um armazenamento KV somente-apêndice, recuperação de espaço, operações de banco de dados relacionais (consultas de ponto/intervalo, índices secundários), controle de concorrência e uma linguagem de consulta semelhante ao SQL. Todo o processo está documentado num livro, disponível gratuitamente online.

Desenvolvimento

Redescobrindo a joia da Apple Newton: Open Dylan

2025-01-19

Open Dylan é uma linguagem de programação funcional orientada a objetos, descendente da linguagem Dylan da Apple, originalmente criada para o PDA Newton. Combinando os pontos fortes do Scheme e do CLOS, sem a sintaxe Lisp, ela foi projetada para geração eficiente de código de máquina. Este artigo apresenta a documentação abrangente do Open Dylan, incluindo tutoriais, manuais de referência e extensa documentação de biblioteca, juntamente com um Playground online para experimentação rápida. Se você está aprendendo uma nova linguagem ou explorando paradigmas de programação eficientes, o Open Dylan vale a pena conferir.

Desenvolvimento

Visualizador de Imagens em Terminal: Uma Odisseia de Programador

2025-01-19

Um programador embarca em uma jornada desafiadora para criar o visualizador de imagens de terminal perfeito. Começando com a exibição simples de pixels, ele mergulha nas complexidades de carregar e renderizar vários formatos de imagem (JPEG, PNG, GIF, AVIF, JPEG XL, HEIC, ETC, BC, OpenEXR, etc.), encontrando obstáculos inesperados no caminho: padrões de formato inconsistentes, bibliotecas mal documentadas, as complexidades do processamento de imagens HDR, as sutilezas da gestão de cores e as limitações dos protocolos de saída de terminal. Ele finalmente supera esses desafios para criar um visualizador de imagens poderoso, obtendo uma profunda apreciação pelas complexidades e fascínios da computação gráfica.

Desenvolvimento exibição de terminal
1 2 181 182 183 185 187 188 189 214 215