Category: Desenvolvimento

SiYuan: Software de Gerenciamento de Conhecimento Pessoal, Privado e de Código Aberto

2024-12-26
SiYuan: Software de Gerenciamento de Conhecimento Pessoal, Privado e de Código Aberto

SiYuan é um software de gerenciamento de conhecimento pessoal, priorizando a privacidade, auto-hospedado e totalmente de código aberto, escrito em TypeScript e Go. Ele oferece recursos como referências de bloco granular, edição WYSIWYG Markdown, atributos personalizados, incorporação de consultas SQL, recorte da web e exportação de links de anotações de PDF. Disponível em lojas de aplicativos (App Store, Google Play, F-Droid) e Docker, o SiYuan fornece uma experiência poderosa e fácil de usar. A maioria dos recursos é gratuita para uso pessoal e comercial.

Coccinelle: Uma Ferramenta Poderosa para o Desenvolvimento do Kernel Linux

2024-12-26

Coccinelle é uma ferramenta poderosa para o desenvolvimento do kernel Linux, usada para correspondência de padrões e transformação de texto. Ela permite a aplicação de patches complexos em toda a árvore e detecta padrões de programação problemáticos. Este documento detalha a instalação, o uso, os vários modos (patch, report, context, org) e recursos avançados do Coccinelle, como paralelização, uso de um único patch semântico, controle de arquivos processados, depuração e suporte a .cocciconfig. O Coccinelle utiliza a Linguagem de Patch Semântico (SmPL) e oferece vários modos para gerar patches, relatórios, informações de contexto e relatórios no modo Org, atendendo a diversas necessidades.

Black Candy: Um servidor de streaming de música auto-hospedado

2024-12-26
Black Candy: Um servidor de streaming de música auto-hospedado

Black Candy é um servidor de streaming de música auto-hospedado, seu centro de música pessoal. Ele oferece instalação fácil via Docker, permitindo que você configure rapidamente seu próprio serviço de streaming de música. Uma demonstração está disponível para teste. Embora o SQLite seja o banco de dados padrão, o PostgreSQL também é compatível. A persistência de dados é gerenciada montando o diretório /app/storage. Para melhor desempenho, o proxy Nginx é suportado e aplicativos móveis estão disponíveis.

Desenvolvimento auto-hospedado

egui: Uma biblioteca GUI de modo imediato em Rust

2024-12-26

egui é uma biblioteca leve e eficiente de interface gráfica do usuário (GUI) em modo imediato escrita em Rust. Sua API limpa e simples permite que os desenvolvedores criem rapidamente interfaces interativas. Ao contrário das GUIs tradicionais de modo retido, o egui redesenha toda a interface a cada quadro, levando a layouts mais flexíveis e gerenciamento de estado mais simples. Isso o torna ideal para jogos, visualização de dados e aplicativos que exigem alta capacidade de resposta. Sua facilidade de uso e recursos poderosos tornam o egui uma escolha atraente para desenvolvedores Rust que constroem GUIs.

Desenvolvimento

Tempo POSIX: Não é o que você pensa

2024-12-26

Este artigo desmascara um equívoco comum sobre o tempo POSIX (tempo Unix): não é simplesmente o número de segundos desde 1º de janeiro de 1970, 00:00:00. Devido aos segundos bissextos, o número de segundos em um dia UTC não é uma constante de 86.400, levando a discrepâncias entre o tempo POSIX e o número real de segundos. O artigo examina o impacto dos segundos bissextos nos cálculos de tempo e recomenda alternativas como CLOCK_MONOTONIC ou TAI para medição de tempo precisa, evitando erros causados por segundos bissextos.

Um Bug de 50 Anos em E/S de Arquivos C: Desvendando um Mistério do Legado

2024-12-26

Ao melhorar um emulador DOS, um desenvolvedor encontrou um bug aparentemente trivial em E/S de arquivos: anexar texto a um arquivo usando o comando `echo` produziu resultados inesperados. A depuração revelou uma falha em como as bibliotecas de tempo de execução C lidam com a alternância entre leitura e escrita, uma falha que remonta à década de 1970 e até mesmo a sistemas UNIX anteriores. O artigo aprofunda o contexto histórico, do C K&R inicial aos padrões C modernos, explorando diferenças de implementação em várias versões do UNIX e compiladores C. A causa raiz é identificada como limitações no tratamento do modo de atualização pelas bibliotecas C iniciais, com variações em como diferentes sistemas operacionais e compiladores lidaram com essas limitações. O autor conclui que, mesmo hoje, para código C portátil, uma chamada `fseek` explícita é necessária ao alternar entre leitura e escrita de um arquivo.

Desenvolvimento E/S de arquivos bug legado

Leituras no Postgres que causam escritas: MVCC, Limpeza de páginas e bits de dica

2024-12-25

Este artigo investiga o comportamento aparentemente paradoxal no PostgreSQL, onde consultas SELECT simples podem disparar gravações de dados. Começando com o mecanismo de Controle de Concorrência de Versões Múltiplas (MVCC), ele explica conceitos como versões de linhas, páginas e tuplas. Através de exemplos de código, ele analisa como as atualizações de bits de dica e a limpeza de páginas fazem com que operações de leitura modifiquem páginas, levando em última análise a gravações em disco. O artigo também discute a estratégia de otimização de atualização HOT e usa ferramentas de inspeção de páginas para ilustrar como os dados são armazenados e atualizados dentro das páginas.

Eventos enviados pelo servidor (SSE): Uma solução de streaming de dados em tempo real subestimada

2024-12-25
Eventos enviados pelo servidor (SSE): Uma solução de streaming de dados em tempo real subestimada

Este artigo explora os Eventos enviados pelo servidor (SSE), uma solução de comunicação em tempo real unidirecional mais simples e eficiente em comparação com WebSockets. O SSE utiliza protocolos HTTP padrão, tornando-o fácil de implementar e implantar, compatível com infraestrutura existente, eficiente em termos de recursos e com recurso de reconexão automática. O artigo detalha o funcionamento, as vantagens e os cenários de aplicação do SSE (como notícias em tempo real, cotações de ações, barras de progresso, etc.), mostrando exemplos de código com Flask e JavaScript. Além disso, analisa como LLMs como o ChatGPT utilizam SSE para respostas em streaming e aponta as limitações do SSE, como comunicação unidirecional e restrições de formato de dados. Em resumo, o SSE fornece uma solução elegante para muitas aplicações que requerem streams de dados em tempo real unidirecionais.

Mergulho Profundo em CPS: Uma Jornada na Compilação de Programação Funcional

2024-12-25
Mergulho Profundo em CPS: Uma Jornada na Compilação de Programação Funcional

Este artigo mergulha no Estilo de Passagem de Continuação (CPS) e sua aplicação na compilação de linguagens de programação funcional. O autor constrói um transformador CPS passo a passo para uma linguagem simples semelhante ao Scheme, explicando estratégias de otimização e métodos de geração de código. O artigo detalha a transformação de inteiros, variáveis, chamadas de função, operadores aritméticos, expressões lambda e expressões if em forma CPS. Ele também discute meta-continuações e técnicas de otimização, como dobramento de constantes e redução beta. Finalmente, descreve várias abordagens para gerar código executável a partir de CPS, incluindo a geração de código C, o uso de trampolim e o emprego de uma única instrução switch grande.

Desenvolvimento Programação Funcional

Portspoof: Ferramenta de falsificação de portas de código aberto frustra varreduras de portas

2024-12-25
Portspoof: Ferramenta de falsificação de portas de código aberto frustra varreduras de portas

Portspoof é uma ferramenta de falsificação de portas de código aberto projetada para aprimorar a segurança do sistema operacional. Ela confunde scanners de portas mantendo sempre todos os 65535 portas TCP abertas e respondendo com SYN+ACK a cada tentativa de conexão. Além disso, o Portspoof possui um banco de dados maciço de assinaturas de serviço dinâmicas, imitando vários banners de serviço para dificultar ainda mais que os invasores identifiquem os serviços reais. Isso aumenta significativamente o tempo e a dificuldade para os invasores realizarem varreduras de portas e identificação de serviços, melhorando efetivamente a segurança do sistema sem exigir privilégios de root.

Desenvolvimento falsificação de portas

Carga Cognitiva: O Assassino Silencioso no Desenvolvimento de Software

2024-12-25

Este artigo explora a importância da carga cognitiva no desenvolvimento de software. Carga cognitiva refere-se à quantidade de esforço mental que um desenvolvedor precisa para concluir uma tarefa; alta carga cognitiva leva à confusão, perda de tempo e dinheiro. O artigo analisa a carga cognitiva intrínseca e extrínseca, ilustrando como reduzir a carga extrínseca por meio de exemplos de código, como usar variáveis intermediárias significativas, evitar instruções if aninhadas e priorizar a composição em vez de herança. Também enfatiza evitar microserviços excessivos, escolher recursos de linguagem apropriados e aderir ao Princípio da Responsabilidade Única, observando que a abstração excessiva e arquiteturas em camadas podem aumentar a carga cognitiva. Finalmente, o artigo aconselha os desenvolvedores a se concentrarem na legibilidade do código e a colaborarem com desenvolvedores juniores para identificar e melhorar problemas de carga cognitiva.

Projeto Sherlock: Encontre contas de mídia social em mais de 400 redes

2024-12-25

O Projeto Sherlock é uma ferramenta poderosa que permite aos usuários pesquisar contas de mídia social em mais de 400 redes usando apenas um nome de usuário. É fácil começar com instruções simples de instalação e uso, e suporta uma ampla gama de sites. Contribuições da comunidade são bem-vindas, permitindo que os usuários adicionem novos sites e melhorem a funcionalidade.

Recursos de Aprendizagem do MDN Recebem Atualização Principal: Nova Experiência de Aprendizagem Lançada

2024-12-25
Recursos de Aprendizagem do MDN Recebem Atualização Principal: Nova Experiência de Aprendizagem Lançada

Em dezembro de 2024, o MDN lançou uma atualização principal em sua seção "Aprenda Desenvolvimento Web", mesclando o Currículo MDN com o conteúdo de aprendizado existente para criar um caminho de aprendizado mais simplificado. Esta atualização visa resolver problemas anteriores, como conteúdo inchado e caminhos de aprendizado pouco claros, fornecendo uma experiência mais clara e acessível para iniciantes. O novo site usa uma estrutura modular com seções "Introdução", "Essencial" e "Extensões", incorporando objetivos de aprendizado claros e conteúdo interativo. O MDN continuará aprimorando o conteúdo e o design, com o objetivo de fornecer recursos de aprendizado ainda melhores no futuro.

Microsoft Research lança F*: Uma linguagem de programação orientada a prova

2024-12-25

F* (pronuncia-se F estrela) é uma linguagem de programação de uso geral orientada a prova, suportando tanto programação puramente funcional quanto com efeitos colaterais. Ela combina o poder expressivo de tipos dependentes com automação de prova baseada em resolução SMT e prova de teoremas interativa baseada em táticas. Programas F* compilam, por padrão, para OCaml. Vários fragmentos de F* também podem ser extraídos para F#, C ou Wasm por meio de uma ferramenta chamada KaRaMeL, ou para assembly usando a cadeia de ferramentas Vale. F* é implementado em F* e inicializado usando OCaml. F* é de código aberto no GitHub e está em desenvolvimento ativo pela Microsoft Research, Inria e pela comunidade. É utilizado em diversos projetos, incluindo o Mozilla Firefox e o kernel do Linux, demonstrando sua aplicabilidade em segurança, criptografia e desenvolvimento de sistemas.

OKRs: Ferramenta ou Armadilha?

2024-12-25
OKRs: Ferramenta ou Armadilha?

Este artigo explora a dualidade dos OKRs (Objetivos e Resultados-Chave). O autor aponta que muitas empresas usam mal os OKRs para avaliações de desempenho, levando as equipes a superenfatizar métricas mensuráveis ​​enquanto negligenciam os objetivos reais e os efeitos externos. O autor usa o exemplo da Alexa para ilustrar como a busca cega por resultados-chave pode ser contraproducente. Em contraste, a Honeycomb usa OKRs como uma ferramenta para comunicação e reflexão, tratando os resultados-chave como pistas para observar o mundo e melhorar o trabalho, em vez de critérios de julgamento finais, evitando assim a distorção de métricas.

EZRGB: Utilizando o DBOS para criar shows de luzes de Natal animados

2024-12-25

A EZRGB utiliza o DBOS para simplificar a criação e implantação de shows de luzes de Natal animados. Sua plataforma EZSequence permite que os usuários comprem sequências pré-fabricadas e as mapeiem automaticamente para os layouts de suas casas, eliminando o processo manual complexo. Construída com WordPress, DBOS Transact, AWS SQS e S3, a plataforma oferece uma solução escalonável e confiável, provando que até mesmo um nicho de mercado pode se beneficiar de tecnologia robusta.

Programador cria visualizador de Flame Graph nativo: superando o Xlib e gargalos de desempenho

2024-12-25

Um programador Rust, precisando depurar o Rust Analyzer, começou a construir um visualizador de Flame Graph nativo. Tentativas iniciais usando vários kits de ferramentas GUI se mostraram muito intensivas em memória. Em vez disso, ele usou o Xlib de forma inteligente, superando desafios como desempenho de rolagem, renderização de milhares de botões e tratamento de interações com o mouse. O resultado: um visualizador de Flame Graph leve e eficiente. Este projeto demonstra excelentes habilidades de programação e um profundo conhecimento de otimização de desempenho, oferecendo lições valiosas para outros desenvolvedores.

Desenvolvimento gráfico de chamas

Primeiros Passos em Assembly: Otimizando um Lexador com Vetores de Bits

2024-12-25

Após ler "Writing an Interpreter in Go", um programador tentou reescrever em Zig e Rust, focando na otimização do desempenho do analisador léxico. Ele explorou vários métodos: ramificações, tabelas de pesquisa e vetores de bits. Os vetores de bits comprimem a representação do estado mapeando caracteres ASCII para bits, reduzindo o uso de memória e melhorando a eficiência de pesquisa. Embora uma tentativa de usar instruções SIMD tenha falhado, ele implementou com sucesso vetores de bits em Zig e obteve bons resultados nos benchmarks, ganhando experiência valiosa em programação em assembly e otimização de desempenho.

Ruby 3.4.0 Lançado: Aumento de Desempenho e Melhorias na Linguagem

2024-12-25

O Ruby 3.4.0 chegou com atualizações empolgantes! Na linguagem, foram adicionadas novas sintaxes para referência de parâmetros de bloco, melhorias em literais de string, argumentos de dispersão de palavras-chave e atribuições de índice, além de melhorias no tratamento de exceções. Classes principais como Array, Hash, IO::Buffer, Integer e String foram otimizadas com novos métodos adicionados. O YJIT recebeu melhorias significativas, aumentando o desempenho e a eficiência de memória. A biblioteca padrão também foi atualizada, incluindo uma velocidade 1,5x mais rápida no parsing JSON. Esta versão melhora o suporte para processadores multinúcleo e aprimora a eficiência do garbage collection.

Desenvolvimento Melhorias de desempenho

Ruby 3.4.0 Lançado: Desempenho Aprimorado e Novos Recursos

2024-12-25

O Ruby 3.4.0 foi lançado, trazendo melhorias significativas! Os destaques incluem um compilador YJIT com desempenho aprimorado, um novo mecanismo de coleta de lixo modular e a conveniente referência de parâmetro de bloco `it`. O analisador padrão foi alterado para Prism, e a biblioteca socket agora possui o Happy Eyeballs V2 para conexões de rede mais eficientes. As classes principais receberam atualizações e vários bugs foram corrigidos. A versão também inclui avisos de depreciação para modificações de literais de string e melhorias no splatting de palavras-chave.

Desenvolvimento lançamento

SiaPy: Ferramenta Python para processamento eficiente de imagens espectrais

2024-12-25
SiaPy: Ferramenta Python para processamento eficiente de imagens espectrais

SiaPy é uma ferramenta Python para o processamento eficiente de imagens espectrais. Ele fornece um conjunto abrangente de ferramentas para carregar, processar e analisar dados de imagens espectrais. SiaPy suporta vários formatos de arquivo e possui uma API fácil de usar. O projeto é licenciado sob a Licença MIT e recebe contribuições da comunidade.

ScyllaDB muda para uma única edição Enterprise e oferece nível gratuito

2024-12-25
ScyllaDB muda para uma única edição Enterprise e oferece nível gratuito

A ScyllaDB anunciou uma mudança estratégica para se concentrar em um único fluxo de lançamento: o ScyllaDB Enterprise, encerrando sua oferta de código aberto com licença AGPL. Um nível gratuito do ScyllaDB Enterprise estará disponível para a comunidade, incluindo todos os recursos de desempenho, eficiência e segurança anteriormente reservados para a edição Enterprise. O nível gratuito é limitado a 50 vCPUs e 10 TB de armazenamento total. Isso simplifica a linha de produtos, oferecendo ao mesmo tempo uma opção gratuita poderosa para os usuários.

Desenvolvimento

Distros Linux Imutáveis: São a escolha certa para você?

2024-12-25
Distros Linux Imutáveis: São a escolha certa para você?

Este artigo explora distribuições Linux imutáveis, que melhoram a estabilidade e a segurança ao bloquear o sistema principal como somente leitura. Ele explica o conceito, as vantagens e os critérios de seleção para distros imutáveis, recomendando várias opções para desktop e servidor, como Fedora Silverblue, Vanilla OS e openSUSE Aeon. O autor compartilha experiências pessoais e discute as diferenças entre distros imutáveis e tradicionais, juntamente com ferramentas de snapshot como Timeshift e Btrfs. Em essência, as distros Linux imutáveis oferecem uma alternativa convincente para usuários que priorizam estabilidade e segurança, trocando alguma flexibilidade por uma experiência mais livre de manutenção.

Jujutsu VCS: Otimizando Mesclas de Código e Gerenciamento de Ramos

2024-12-25
Jujutsu VCS: Otimizando Mesclas de Código e Gerenciamento de Ramos

Este artigo apresenta um fluxo de trabalho altamente eficiente para gerenciar mesclas de código e ramos usando o sistema de controle de versão Jujutsu. O autor introduz uma abordagem 'megamerge': crie um commit de mesclagem como área de trabalho e, em seguida, use `jj squash` para integrar as alterações nos commits pai apropriados após a conclusão de cada tarefa. A otimização adicional é alcançada com o comando `jj absorb`, que automatiza esse processo de integração. Este fluxo de trabalho permite que os desenvolvedores gerenciem perfeitamente vários fluxos de trabalho paralelos, aumentando significativamente a eficiência, particularmente ao lidar com atualizações grandes e de longa duração. O autor contrasta isso com as complexidades de alcançar os mesmos resultados com o Git.

Desenvolvimento Mesclagem de Código

T2 SDE: Atualização Principal para Ambiente de Desenvolvimento de SO Multiarquitetura

2024-12-24

O T2 SDE é um gerenciador de pacotes e distribuição Linux de baixo código e ultraportátil que permite a compilação cruzada totalmente automatizada e reprodutível de sistemas operacionais personalizados em várias arquiteturas (ARM, x86-64, etc.). A versão mais recente, T2 24.12, possui 37 imagens ISO pré-compiladas, suportando 25 arquiteturas de CPU e incluindo vários pacotes, como LibreOffice e OpenJDK. Ele até tem suporte experimental para o Nintendo Wii U. O T2 continua a melhorar, com um compromisso de suporte à arquitetura IA-64 Itanium, aprimorando recursos de segurança, como criptografia de disco completo, e aumentando o desempenho por meio de recursos como codificação e decodificação de vídeo por hardware.

A reação negativa à IA: Uma correção necessária para a implementação prática

2024-12-24
A reação negativa à IA: Uma correção necessária para a implementação prática

A InfoWorld relata uma crescente frustração dos desenvolvedores com o hype em torno da IA, enfatizando a necessidade de ferramentas práticas e facilmente integráveis. O artigo usa o projeto RamaLama como exemplo, mostrando como a tecnologia de contêineres simplifica a implantação e o uso de modelos de IA, e destaca a importância de modelos de IA menores e mais fáceis de entender. Os desenvolvedores querem que a IA se integre perfeitamente aos seus fluxos de trabalho, não como uma entidade separada. Essa "reação negativa à IA" representa uma oportunidade para uma implementação eficaz da IA.

Aplicativo de monitoramento em tempo real do tanque de urina da ISS lançado

2024-12-24
Aplicativo de monitoramento em tempo real do tanque de urina da ISS lançado

Um desenvolvedor criou o pISSStream, um aplicativo para a barra de menu do macOS que mostra o nível de enchimento do tanque de urina da Estação Espacial Internacional em tempo real. Embora o estilo de codificação não seja perfeito, o conceito único do aplicativo oferece um olhar divertido sobre um detalhe da vida no espaço. O desenvolvedor afirmou que não adicionará outros dados, focando apenas no nível de enchimento do tanque de urina.

PGP Operacional: Um Guia para Comunicação Segura por E-mail

2024-12-24
PGP Operacional: Um Guia para Comunicação Segura por E-mail

Este guia não é sobre instalar ou usar PGP; é sobre usá-lo com segurança. Ele enfatiza a segurança operacional além de apenas criptografar o conteúdo do e-mail, cobrindo a composição do e-mail, armazenamento, gerenciamento de chaves e muito mais. Recomenda-se compor e-mails em um editor de texto, evitando salvar rascunhos em clientes de e-mail; gerar e destruir chaves com frequência; evitar publicar chaves em servidores de chaves; manter os assuntos de e-mail em branco para minimizar o vazamento de metadados; usar a opção `gpg --throw-keys` durante a criptografia; habilitar a criptografia por padrão e escolher explicitamente se deseja assinar e-mails. O objetivo é maximizar o potencial de segurança do PGP.

Eventos Amplos: Um Guia Prático para Observabilidade Aprimorada

2024-12-24

Este artigo apresenta os 'Eventos Amplos', uma abordagem de observabilidade que aprimora o monitoramento e a depuração de sistemas emitindo um único evento contendo todas as informações coletáveis para cada unidade de trabalho. O autor detalha como escolher ferramentas apropriadas (como o Honeycomb), adicionar atributos abrangentes (incluindo metadados do serviço, informações da instância, informações da compilação, detalhes de solicitações e respostas HTTP, informações do usuário e do cliente, limites de taxa, informações de cache, informações de localização, tempo de atividade, métricas, resumos de solicitações assíncronas, informações de amostragem e informações de tempo), e lidar com erros e sinalizadores de recursos. Preocupações comuns, como o volume excessivo de dados, dados redundantes e a relação com as métricas existentes, são abordadas. O artigo destaca o significativo valor prático dessa abordagem, mostrando como ela simplifica a depuração e revela comportamentos inesperados do sistema.

Adicionando Tipos de Refinamento ao Rust: Um Estudo de Viabilidade

2024-12-24

Este artigo explora a viabilidade de adicionar tipos de refinamento à linguagem de programação Rust. Com base na experiência com o YAIOUOM, um analisador estático que utilizava tipos de refinamento para verificar unidades de medida, o autor examina abordagens para implementar tipos de refinamento dentro do sistema de tipos do Rust. Várias opções são propostas, incluindo modificações na resolução de traços, unificação de variáveis de tipo e a introdução de um mecanismo de palavra-chave plugável para verificação de tipos pós-compilação. Uma abordagem otimista — ignorando informações de unidade no início da compilação e verificando posteriormente — é considerada mais prática. O design da API e o tratamento de mensagens de erro são discutidos. O trabalho futuro envolve coletar feedback, escrever um driver rustc que suporte plug-ins e implementar vários tipos de refinamento, potencialmente incluindo uma nova versão do YAIOUOM e subconjuntos de Flux ou Liquid Haskell.

1 2 188 189 190 192 194 195 196 201 202