Category: Desenvolvimento

Vim: Uma Linguagem de Programação Além de um Editor

2024-12-15

O Vim é mais do que apenas um editor de texto; é uma linguagem para interagir com o seu computador. Sua estrutura de comandos concisa e eficiente é fácil de aprender e lembrar, e também fácil de interpretar para um computador. Embora o próprio Vim seja poderoso, sua força principal reside no fato de que seu modo foi integrado a quase todos os editores de código convencionais, permitindo que os desenvolvedores escolham flexiblmente a interface do editor de sua preferência, mantendo ao mesmo tempo a linguagem de comando eficiente do Vim. Portanto, o NeoVim, como a implementação mais completa e consistente da linguagem Vim, é valioso por fornecer essa linguagem de edição eficiente, não apenas o próprio editor.

Desenvolvimento

Linguagens de Programação: Equilibrando Segurança e Poder

2024-12-15

Este artigo explora a troca entre segurança e poder em linguagens de programação. A visão tradicional é que linguagens poderosas, como C com seu gerenciamento manual de memória, são inerentemente inseguras. No entanto, o autor argumenta que isso está desatualizado. Pesquisas modernas em linguagens de programação mostram que maior expressividade permite segurança e poder. A evolução de macros em Lisp, Scheme e Racket exemplifica isso, demonstrando como um design melhorado pode melhorar as capacidades de macro mantendo a segurança. O sistema de macros do Racket é apresentado como uma melhor prática, combinando código higiênico com capacidades de manipulação poderosas. O artigo conclui que sistemas seguros e confiáveis constroem softwares mais poderosos e confiáveis, e recomenda recursos para mais aprendizado sobre macros do Racket.

Gerenciamento de Dependências Python: Um Incêndio Descontrolado

2024-12-15

Este artigo mergulha na complexidade do gerenciamento de dependências Python, comparando-o à construção de uma fogueira em uma floresta seca. O autor argumenta que as dependências Python não são simplesmente uma questão de `pip install`; elas abrangem pacotes de projeto, pacotes do sistema, o sistema operacional, hardware e o ambiente em si. O bom gerenciamento de dependências é crucial para a reprodutibilidade — garantindo resultados consistentes em diferentes ambientes. O artigo detalha o controle de versão, o isolamento de ambiente, arquivos de definição, arquivos de bloqueio e outros conceitos-chave. Em seguida, fornece uma comparação abrangente de várias ferramentas, incluindo pip, venv, virtualenv, pip-tools, Pipenv, Poetry, PDM, pyenv, pipx, uv, Conda, Mamba, conda-lock e Pixi, analisando seus pontos fortes, fracos e casos de uso. Finalmente, o autor oferece recomendações de ferramentas com base em diferentes cenários (privilégios administrativos, tipos de dependências, sistemas operacionais etc.) e analisa as tendências futuras no gerenciamento de dependências Python.

Biblioteca C do LLVM Acelera GPUs: Executando código C em GPUs

2024-12-14

O projeto LLVM lançou uma biblioteca C para GPU que permite aos desenvolvedores executar funções libc e libm diretamente na GPU em código C/C++. A biblioteca suporta dois modos principais: como uma biblioteca suplementar para linguagens de offloading como OpenMP, CUDA ou HIP; e compilando diretamente código C/C++ para o alvo GPU. O artigo detalha como usar ambos os modos, incluindo opções de compilação, links e builds específicos para GPUs AMD e NVIDIA. Essa biblioteca permite que os desenvolvedores aproveitem o poder de processamento paralelo das GPUs, melhorando significativamente o desempenho sem a necessidade de profundo conhecimento de modelos complexos de programação de GPUs.

Buzee: Aplicativo de busca de texto completo de código aberto lançado

2024-12-14
Buzee: Aplicativo de busca de texto completo de código aberto lançado

Buzee é um aplicativo de busca de texto completo multiplataforma construído com Rust e Svelte. Ele permite a busca rápida de arquivos locais, pastas, histórico do navegador e muito mais, inclusive extraindo texto de PDFs e imagens usando OCR. Desenvolvido ao longo de dois anos, este projeto apresenta uma arquitetura robusta usando Tauri para desempenho, SQLite e Tantivy para indexação e um front-end Svelte limpo. Embora rico em recursos, ainda possui algumas áreas para desenvolvimento futuro, e o autor está lançando-o como código aberto para que outros possam contribuir.

Desenvolvimento busca de texto completo

Roteadores de sub-rede Tailscale: Simplificando conexões de rede complexas

2024-12-14
Roteadores de sub-rede Tailscale: Simplificando conexões de rede complexas

O Tailscale normalmente exige a instalação de um cliente em cada dispositivo, mas isso não é sempre viável para dispositivos embutidos ou VPCs existentes. É aí que entram os roteadores de sub-rede. Eles permitem que os dispositivos se comuniquem usando a poderosa tecnologia de travessia NAT do Tailscale, independentemente de estarem executando o Tailscale ou não. Este artigo explica como os roteadores de sub-rede Tailscale funcionam, incluindo instalação e configuração no Windows e Linux. Para migrações de redes grandes ou conexão de VPCs da AWS, os roteadores de sub-rede oferecem uma maneira rápida e fácil de começar. O uso pessoal é gratuito e não conta para os limites de dispositivos.

Ataque de cadeia de suprimentos atinge Ultralytics: Análise de incidente de segurança do PyPI

2024-12-14
Ataque de cadeia de suprimentos atinge Ultralytics: Análise de incidente de segurança do PyPI

O projeto Python Ultralytics sofreu recentemente um ataque de cadeia de suprimentos. Os atacantes comprometeram os fluxos de trabalho do GitHub Actions do projeto e roubaram um token de API do PyPI, resultando em versões contaminadas 8.3.41, 8.3.42, 8.3.45 e 8.3.46. O ataque não explorou uma vulnerabilidade do PyPI, mas sim o cache do GitHub Actions. O PyPI, utilizando Publicação Confiável e logs de transparência do Sigstore, identificou e removeu rapidamente o malware. O incidente destacou deficiências nas configurações de tokens de API e ambientes do GitHub. O artigo enfatiza a segurança de forjas de software e fluxos de trabalho de compilação/publicação, fornecendo recomendações de segurança para desenvolvedores: usar Publicações Confiáveis, bloquear dependências, evitar padrões inseguros e habilitar autenticação multifatorial.

Rust Assíncrono em Microcontroladores Cortex-M: Uma Imersão Profunda

2024-12-14
Rust Assíncrono em Microcontroladores Cortex-M: Uma Imersão Profunda

Este artigo mergulha no mundo da programação assíncrona Rust em microcontroladores Cortex-M. Ele explica a mecânica de Futures, escalonamento cooperativo e executores assíncronos Rust, mostrando sua eficiência na gestão de recursos. A estrutura inovadora Embassy, ​​projetada para capacitar a programação assíncrona em microcontroladores, é apresentada. Por meio de exemplos práticos como um programa Blinky e Botão, o artigo ilustra a aplicação do Rust assíncrono em sistemas embarcados, comparando suas vantagens e desvantagens em relação às abordagens tradicionais de RTOS. A conclusão destaca os benefícios significativos do Rust assíncrono em termos de utilização de recursos e concorrência.

Fern, startup apoiada pela YC, contrata Engenheiro de Front-end Sênior

2024-12-14
Fern, startup apoiada pela YC, contrata Engenheiro de Front-end Sênior

A Fern, uma startup apoiada pela Y Combinator, está procurando um Engenheiro de Front-end Sênior com salário de US$ 168.000 a US$ 192.000, além de participação acionária. Localizada em Williamsburg, Brooklyn, NY, esta vaga presencial exige 4+ anos de experiência em desenvolvimento de front-end, proficiência em JavaScript/TypeScript, React e Next.js. As responsabilidades incluem otimizar a experiência do desenvolvedor, gerenciar a infraestrutura de front-end, construir recursos voltados para o usuário e cultivar fortes relacionamentos com clientes. A Fern simplifica o uso de APIs e conta com Cohere, ElevenLabs, Webflow e Merge.dev entre seus clientes.

Desenvolvimento Engenheiro de Front-end

Svader: Biblioteca Svelte para Componentes Renderizados por GPU

2024-12-14
Svader: Biblioteca Svelte para Componentes Renderizados por GPU

Svader é uma biblioteca para criar componentes Svelte renderizados por GPU usando shaders de fragmentos WebGL e WebGPU. Os desenvolvedores podem escrever programas em shaders de fragmentos para personalizar as cores dos pixels e controlar os efeitos de renderização por meio da passagem de parâmetros. Suporta Svelte 4 e 5, oferecendo modos de renderização WebGL e WebGPU com parâmetros integrados, como resolução, escala e tempo. Svader simplifica a renderização de GPU com componentes fáceis de usar e fornece renderização de fallback em ambientes sem suporte a WebGL ou WebGPU.

Desenvolvimento

A Ciência do Roteamento de Pedidos de Impressão na Canva

2024-12-14
A Ciência do Roteamento de Pedidos de Impressão na Canva

A equipe de engenharia da Canva construiu um sistema de regras configurável para travessia de grafos, a fim de otimizar o roteamento de pedidos de impressão. A separação da construção do grafo, da travessia e da tomada de decisões garante alta disponibilidade e escalabilidade. Usa bancos de dados relacionais para gerenciamento de dados e gera grafos em cache de forma assíncrona para consultas rápidas. Um mecanismo de regras e um algoritmo de fluxo de custo mínimo modificado encontram a rota ideal em milissegundos, minimizando a distância de transporte e as emissões de carbono, melhorando a experiência do usuário e a eficiência operacional.

Go: Quando dizer não

2024-12-14
Go: Quando dizer não

Um desenvolvedor, após anos usando Go, está voltando para Java. Ele considera o Go deficiente em várias áreas: opções de loop limitadas, ausência de funções de ordem superior, tratamento de erros complicado, estilo de codificação excessivamente restritivo levando a código verboso e difícil de manter, e um ecossistema de pacotes imaturo. Embora reconheça a adequação do Go para projetos de infraestrutura, ele desaconselha seu uso em aplicativos empresariais complexos.

Desenvolvimento desenvolvimento

O Debate Sobre Tipagem Estática em PHP: Flexibilidade e Eficiência das Linguagens Dinâmicas

2024-12-14

Neste artigo, Tony Marston critica veementemente as mudanças de verificação de tipo estático obrigatória introduzidas no PHP 8.1. Ele argumenta que essa mudança viola os princípios de design básicos da tipagem dinâmica do PHP, conflitando com a abordagem flexível de longa data do PHP para o tratamento de tipos de dados e impondo uma carga de trabalho significativa aos desenvolvedores. O artigo mergulha nas vantagens do sistema de tipo dinâmico do PHP, como a conversão automática de tipo e o tratamento flexível de dados, apontando que os benefícios de desempenho da tipagem estática são insignificantes em hardware moderno, enquanto prejudicam a eficiência do desenvolvimento. Marston argumenta que o sistema de tipo dinâmico do PHP é mais adequado para lidar com dados de front-end HTML e back-end SQL, e que a imposição de verificação de tipo estático é contraproducente, afetando negativamente a comunidade PHP.

Desenvolvimento tipagem dinâmica

uv: Um gerenciador de pacotes e projetos Python extremamente rápido

2024-12-14

uv é um gerenciador de pacotes e projetos Python extremamente rápido, escrito em Rust, que substitui ferramentas como pip, pip-tools, pipx, poetry, pyenv, twine e virtualenv. Com uma melhoria de velocidade de 10 a 100 vezes, uv oferece gerenciamento de projetos, gerenciamento de ferramentas, gerenciamento de versões do Python, suporte a scripts e uma interface compatível com pip. Recursos como cache global e suporte a workspace otimizam os fluxos de trabalho. Da criação de projetos e gerenciamento de dependências à execução de scripts e construção de distribuições, uv fornece soluções eficientes e convenientes para todas as suas necessidades de desenvolvimento Python.

De Estagiário a Engenheiro de Equipe na Meta em 3 Anos: A História de Sucesso de Evan King

2024-12-14
De Estagiário a Engenheiro de Equipe na Meta em 3 Anos: A História de Sucesso de Evan King

Evan King compartilha sua jornada de rápida ascensão de recém-formado a Engenheiro de Equipe na Meta em apenas três anos. Seus seis princípios-chave para o sucesso incluem: priorizar a velocidade e a eficiência para liberar tempo para o crescimento; ampliar a perspectiva para pensar estrategicamente como um engenheiro de nível superior; abraçar a incerteza e compartilhar ideias livremente; focar na resolução de problemas em vez de complexidade técnica; construir boa vontade e relacionamentos fortes; e manter uma atitude positiva. Embora reconhecendo o papel da sorte e do tempo, Evan enfatiza a importância de cultivar hábitos sustentáveis que se acumulam ao longo do tempo, focando nas competências essenciais e utilizando estrategicamente a largura de banda extra criada pela eficiência.

Tratamento de Erros em Clojure: Sem Bala de Prata, Apenas Escolhas

2024-12-14

Clojure oferece uma variedade de abordagens para tratamento de erros, sem uma única melhor prática. O artigo explora vários métodos: lançando exceções nativas, usando `ex-info` para exceções que transportam dados, retornando mapas de erro e utilizando várias bibliotecas para fluxos de tratamento de erros mais sofisticados, como a biblioteca `anomalies` ou opções como `pact` e `failjure`. O autor enfatiza que a escolha depende do contexto específico e que uma mistura de abordagens pode coexistir em um único projeto. Os desenvolvedores têm o poder de selecionar a solução mais adequada para suas necessidades; Clojure abraça essa liberdade.

Desenvolvimento tratamento de erros

Notas de lançamento do HTMX v2.0.4: Correções de bugs e melhorias

2024-12-14
Notas de lançamento do HTMX v2.0.4: Correções de bugs e melhorias

As notas de lançamento do HTMX v2.0.4 detalham inúmeras correções de bugs e melhorias. Esta versão concentra-se em aprimoramentos de estabilidade e compatibilidade, incluindo correções para problemas de Shadow DOM aninhados, comportamento aprimorado do `hx-boost` em formulários, melhor suporte para Web Components e Shadow DOM e extensões atualizadas para desempenho e confiabilidade aprimorados. Ajustes na função `htmx.ajax` e otimizações para o tratamento de eventos `hx-trigger` também estão incluídos.

Orientador de PhD automatiza a melhoria da escrita com scripts Shell

2024-12-14

Para melhorar a escrita de seus alunos de doutorado, um orientador criou três scripts Shell para detectar o uso excessivo da voz passiva, palavras vagas e palavras duplicadas. Integrados ao sistema de construção LaTeX, esses scripts incentivam escolhas conscientes para clareza e precisão, em vez de uma adesão cega às regras gramaticais. O orientador defende o uso da automação por programadores para combater fraquezas na escrita e recomenda recursos como "Style: The Basics of Clarity and Grace".

Atualização macOS 15.2 quebra a replicação do sistema: usuários enfrentam pesadelo de backup de dados

2024-12-14

Um bug crítico no macOS 15.2 quebrou o recurso de replicação do sistema, fazendo com que os backups de dados falhem com um erro de 'Recurso Ocupado', especificamente ao tentar copiar as partições Preboot ou Recovery. O desenvolvedor Dave Nanian explica que o problema decorre do próprio código da Apple e atualmente não tem solução fácil. Os usuários são obrigados a depender de soluções de backup de terceiros, utilizando um método 'Backup - todos os arquivos' com uma atualização inteligente para restaurar seus dados após uma instalação limpa do sistema. Essa questão está causando frustração significativa para os usuários, principalmente com a aproximação das festas de fim de ano.

Farebox: Roteamento Multimodal em Rust

2024-12-14
Farebox: Roteamento Multimodal em Rust

Farebox é uma implementação rápida do RAPTOR em Rust, projetada para máquinas com restrições de memória. Ele utiliza o Valhalla para transferências e roteamento de primeira/última milha, suportando roteamento multiagência e com reconhecimento de fuso horário. O objetivo do projeto é complementar o OpenTripPlanner, fornecendo um serviço de preenchimento para áreas não cobertas por instâncias existentes. O mapeamento de memória é usado para tabelas de horários para permitir cobertura em escala planetária com uma única instância e reduzir os custos de hospedagem. Planos futuros incluem suporte a GTFS-RT e potencialmente rRAPTOR para cálculo simultâneo de itinerários em vários horários de partida.

Desenvolvimento Roteamento

Linguagem de Programação Luon: Um Lua com Tipagem Estática

2024-12-14
Linguagem de Programação Luon: Um Lua com Tipagem Estática

Luon é uma nova linguagem de programação com tipagem estática, com sintaxe semelhante às linguagens baseadas em Oberon e incorporando conceitos do Lua, com destino à máquina virtual LuaJIT. Essencialmente, uma versão tipada estaticamente do Lua, permite a reutilização de bibliotecas Lua e C existentes por meio de declarações de procedimentos externos. Luon aborda deficiências no tratamento de erros e na estrutura de código do Lua, oferecendo um compilador e IDE integrado que suporta programação procedural, genérica e orientada a objetos. O projeto inclui exemplos e casos de teste extensos e está em desenvolvimento ativo.

Desenvolvimento tipagem estática

SCCS: O Motel de Código-Fonte Após 50 Anos

2024-12-13

Este artigo analisa retrospectivamente a influência do Sistema de Controle de Código-Fonte (SCCS) nos últimos 50 anos. O autor, Larry McVoy, detalha o formato exclusivo de tecelagem do SCCS, que permite a mesclagem por referência, evitando as ineficiências da cópia baseada em patches encontrada em outros sistemas. Ele explica como o SCCS usa essa tecelagem para recuperar qualquer versão de arquivo em tempo constante e preserva a autoria entre as versões. Embora reconheça desvantagens como bloqueios de longo prazo e orientação a arquivos, McVoy destaca a eficiência do formato de tecelagem e sua preservação da autoria como inovadoras, lançando as bases para sistemas posteriores como o BitKeeper.

Arquitetura Hexagonal no Rails: Um Caminho para o Desacoplamento

2024-12-13
Arquitetura Hexagonal no Rails: Um Caminho para o Desacoplamento

Este artigo explora a implementação da Arquitetura Hexagonal (padrão Ports and Adapters) em aplicações Rails. O autor inicialmente teve dificuldades com o padrão até perceber que 'adapter' se refere diretamente ao padrão Adapter do Gang of Four. O artigo detalha as portas de entrada e saída e como os adaptadores desacoplam a lógica da aplicação de serviços externos (bancos de dados, logs, e-mail, etc.). Controladores Rails podem servir como adaptadores HTTP, mas o autor enfatiza evitar o uso direto do ActiveRecord. Em vez disso, repositórios personalizados acessam dados, melhorando o desacoplamento e a manutenibilidade. O artigo conclui encorajando desenvolvedores Rails a adotarem a Arquitetura Hexagonal para aplicações mais robustas e manuteníveis.

Desenvolvimento Arquitetura Hexagonal

Transformando smartphones antigos em nós de cluster Kubernetes com postmarketOS

2024-12-13
Transformando smartphones antigos em nós de cluster Kubernetes com postmarketOS

O autor construiu um cluster Kubernetes funcional usando smartphones antigos descartados e o sistema operacional postmarketOS. O artigo detalha o processo, incluindo as razões para escolher smartphones antigos (poder de computação considerável, baterias integradas), as vantagens do postmarketOS (baseado em Alpine Linux, usa o kernel Linux principal) e os desafios encontrados durante a configuração (módulos do kernel, configuração de rede). Soluções para esses desafios são explicadas detalhadamente. O autor conseguiu reutilizar smartphones antigos como nós Kubernetes, utilizando recursos de forma eficiente e promovendo a sustentabilidade.

Contornando as Mitigações do Kernel do Windows: Uma Análise Profunda do Violet Phosphorus

2024-12-13

Esta publicação mergulha na técnica de contornar as mitigações modernas do kernel do Windows 10 e 11, como SMEP e VBS. O autor detalha o Violet Phosphorus, uma técnica universal de bypass para VBS/SMEP, fornecendo código PoC e uma chain ROP. Explica o funcionamento do SMEP e VBS, demonstrando como explorar uma vulnerabilidade no driver HackSysExtremeVulnerableDriver para usar gadgets ROP e a função MiGetPteAddress para modificar entradas da tabela de páginas, permitindo a execução de código no kernel. O autor também mostra como usar o shellcode SYSRET do Kristal-G para retornar ao modo usuário. Este é um recurso valioso para desenvolvedores de exploits de kernel e pesquisadores de segurança, categorizado como Desenvolvimento.

Lançamento da biblioteca Node.js EPUB @smoores/epub

2024-12-13
Lançamento da biblioteca Node.js EPUB @smoores/epub

Uma nova biblioteca Node.js, @smoores/epub, foi lançada. Ela permite que desenvolvedores inspecionem, modifiquem e criem publicações EPUB 3. A biblioteca oferece APIs de alto nível que simplificam a interação com a especificação EPUB, como definir o título e recuperar informações do autor. APIs de baixo nível fornecem controle granular sobre a estrutura do EPUB, permitindo tarefas como adicionar capítulos e metadados. Construído sobre o fast-xml-parser, o @smoores/epub fornece recursos robustos de análise e manipulação XML, facilitando o manuseio eficiente do conteúdo XML de arquivos EPUB.

Desenvolvimento Biblioteca

Reinicializações Agendadas: Uma Abordagem Preventiva

2024-12-13

Uma equipe de pesquisa universitária enfrentou um problema desafiador de administração de sistemas: seus servidores estavam funcionando há muito tempo e precisavam ser reinicializados, mas reinicializações frequentes interrompem a experiência do usuário. Seu padrão era evitar reinicializações, mas uma reinicialização em larga escala recente devido ao tempo de atividade prolongado forçou uma mudança. Para evitar problemas semelhantes, eles decidiram um cronograma de reinicialização anual — pelo menos três vezes por ano, alinhando-se com o cronograma de ensino da universidade — equilibrando a manutenção preventiva com a experiência do usuário.

Microsoft lança código aberto MarkItDown: Ferramenta de conversão de arquivos para Markdown

2024-12-13
Microsoft lança código aberto MarkItDown: Ferramenta de conversão de arquivos para Markdown

A Microsoft lançou o código aberto do MarkItDown, uma ferramenta Python que converte vários arquivos (incluindo PDF, PowerPoint, Word, Excel, imagens, áudio e HTML) para o formato Markdown. A ferramenta possui uma API simples, suporta uma ampla variedade de tipos de arquivos e incorpora OCR e transcrição de fala para maior funcionalidade, tornando-a ideal para análise de texto ou indexação. Contribuições são bem-vindas, e o projeto segue o Código de Conduta de Código Aberto da Microsoft.

Coleta de Lixo de Ciclos Concorrentes: Ponteiros Inteligentes com Coleta de Lixo em Rust para Scheme

2024-12-13

Este artigo detalha a implementação de um coletor de lixo de ciclos concorrentes em Rust para ponteiros inteligentes com coleta de lixo (Gc) dentro de um interpretador Scheme. Gc funciona de forma semelhante a Arc>, suportando mutabilidade interna, clonagem e envio entre threads. O artigo explica detalhadamente a implementação de Gc, incluindo mutabilidade interna segura para threads usando semáforos e bloqueios de leitura/escrita, e os detalhes de implementação da coleta de lixo de ciclos concorrentes com base no algoritmo de Bacon e Rajan. Isso inclui o traço de atributo, detecção de ciclos e mecanismos para lidar com modificações concorrentes.

Desenvolvimento Coleta de Lixo Concorrência

HyperDX Contrata Engenheiros Full-Stack, Front-end e Back-end

2024-12-13
HyperDX Contrata Engenheiros Full-Stack, Front-end e Back-end

A HyperDX, apoiada pela Y Combinator, está contratando Engenheiros Full-Stack, Front-end e Back-end. A HyperDX constrói uma plataforma de observabilidade de código aberto e amigável para desenvolvedores, com o objetivo de substituir ferramentas como Datadog e New Relic, ajudando os engenheiros a identificar problemas de produção mais rapidamente. Oferece salários competitivos e opções de trabalho remoto, visando engenheiros experientes.

Desenvolvimento Engenheiros Observabilidade
1 2 207 208 209 210 211 213 215