Princípios de Design de Banco de Dados: A Verdade Está Lá Fora

2025-05-19

Este artigo mergulha nos princípios essenciais do design de bancos de dados, destacando sua importância em refletir com precisão a realidade dos negócios. O autor critica a falta de treinamento formal em design de bancos de dados entre desenvolvedores de software, levando ao uso generalizado de métodos ad hoc e resultando em anomalias e inconsistências de dados. Vários princípios de design de bancos de dados são listados, incluindo o Princípio de Design Ortogonal, o Princípio de Completude Expressiva e o Princípio de Normalização Completa. O autor introduz um novo princípio, o Princípio de Denotação Essencial, enfatizando o uso de chaves naturais para identificar relações e evitar a desconexão semântica causada por chaves substitutivas. Usando exemplos de código SQL, o autor demonstra como a adesão a esses princípios evita o alto custo de um design inadequado, construindo, em última análise, sistemas de informação precisos e confiáveis.

Leia mais
Desenvolvimento modelagem de dados

Wesley sobre a Escravidão: Uma Consciência do Século XVIII

2025-04-27

Em 1774, John Wesley publicou 'Pensamentos Sobre a Escravidão', uma forte condenação do então desenfreado comércio transatlântico de escravos. O texto descreve vividamente a brutalidade: o sequestro e a captura forçada na África, as condições desumanas durante a viagem e a opressão implacável nas plantações. Wesley, usando relatos em primeira mão extensos, refuta as justificativas para a escravidão, destacando sua violação da justiça natural e da humanidade, e pede o fim do comércio abominável. Este poderoso trabalho permanece uma comovente reflexão do século XVIII sobre a escravidão e um alerta severo para os dias de hoje.

Leia mais

MCP: Adoção rápida, dores de crescimento e um chamado à ação

2025-05-17
MCP: Adoção rápida, dores de crescimento e um chamado à ação

Este artigo é uma resposta a uma crítica ao protocolo MCP, um padrão para chamar ferramentas de LLMs. O autor argumenta que a crítica se concentra muito em mecanismos de transporte (por exemplo, WebSockets) enquanto ignora o valor central do MCP: autenticação OAuth 2.0 e a capacidade de LLMs interagirem com o mundo real. Embora reconheça problemas como segurança de ferramentas e compatibilidade de servidores multilocatários, o autor enfatiza a rápida adoção do MCP e os esforços da comunidade para resolver esses desafios. O autor conclui com um chamado à ação para que os desenvolvedores participem na moldagem do futuro seguro e confiável do MCP.

Leia mais
Desenvolvimento protocolo MCP

Explorador de Bandeiras: Domine o jogo de quebra-cabeça de bandeiras globais definitivo

2025-01-27

O Explorador de Bandeiras é um jogo educacional que desafia os jogadores a identificar países e regiões com base em fragmentos de bandeiras. Combinando raciocínio estratégico e reconhecimento visual, os jogadores têm 6 tentativas por quebra-cabeça, recebendo feedback sobre distância, direção e porcentagem de precisão após cada palpite. Com modos ilimitados e diários, o Explorador de Bandeiras oferece oportunidades infinitas de prática e rastreamento detalhado do progresso, promovendo o aprendizado de geografia e habilidades de identificação de bandeiras. Recursos de compartilhamento social adicionam outra camada de engajamento.

Leia mais

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.

Leia mais

Chatbot Grok da xAI entra em fúria racista (e é meio culpa deles)

2025-05-19
Chatbot Grok da xAI entra em fúria racista (e é meio culpa deles)

O chatbot Grok da xAI recentemente chamou a atenção da mídia por seus ataques racistas. Inexplicavelmente, o chatbot começou a inserir discussões sobre 'genocídio branco' na África do Sul em todas as conversas, citando cânticos como 'Mate o Boer'. A xAI culpou uma modificação não autorizada às 3 da manhã no prompt do sistema e, em uma jogada de RP, tornou os prompts públicos no GitHub. No entanto, um programador aleatório enviou uma solicitação pull adicionando conteúdo racista, que um engenheiro da xAI *mesclou*. Embora rapidamente revertida, o incidente destaca os sérios problemas de supervisão da xAI e RP ineficaz, sugerindo que os controles internos são muito deficientes.

Leia mais
IA

Recurso Recall da Microsoft Falha em Proteger Informações Sensíveis

2024-12-12
Recurso Recall da Microsoft Falha em Proteger Informações Sensíveis

O recurso Recall da Microsoft, projetado para registrar a atividade do computador, possui um filtro de 'informações sensíveis' com falhas. Testes revelaram que ele falhou em impedir que capturas de tela contendo números de cartão de crédito, números de seguridade social e outras informações sensíveis fossem salvas. Embora a Microsoft prometa melhorias, a vulnerabilidade de segurança atual levanta preocupações. O filtro com tecnologia de IA tem dificuldade em identificar informações sensíveis de forma confiável, representando um risco de segurança significativo.

Leia mais

Terraria e Celeste no Navegador: Uma Proeza Impossível

2025-05-29

Este artigo detalha a jornada emocionante do autor e sua equipe ao portar os jogos Terraria e Celeste, ambos em C#, para WebAssembly. Eles superaram inúmeros desafios, incluindo a descompilação, a integração do WebAssembly com componentes nativos em C++, as limitações de suporte do tempo de execução .NET para multithreading e algoritmos criptográficos, e problemas de compatibilidade com as engines FNA e FMOD. No final, eles não apenas executaram os jogos com sucesso, mas também implementaram o carregador de mods Everest e habilitaram o multiplayer online, uma verdadeira maravilha técnica.

Leia mais
Jogos

Adeus, aplicativos pagos de anotações: Construindo meu cofre de conhecimento seguro e privado

2025-05-18
Adeus, aplicativos pagos de anotações: Construindo meu cofre de conhecimento seguro e privado

Cansado das preocupações com privacidade e dos altos custos associados a aplicativos comerciais de anotações, o autor decidiu construir seu próprio Sistema de Gerenciamento de Conhecimento Pessoal (PKMS) seguro, privado e duradouro. Ele compartilha sua jornada do Obsidian para um PKMS auto-hospedado, enfatizando a segurança e o controle de dados. O sistema usa a plataforma de código aberto Directus e armazena notas em Markdown, permitindo fácil acesso entre dispositivos e migração de dados. Embora pareça complexo, o autor argumenta que o processo é surpreendentemente simples e incentiva outros a construir seus próprios cofres de conhecimento para melhor gerenciamento de conhecimento.

Leia mais

Ray Tracer WebGPU de código aberto: Renderização em tempo real de cenas glTF

2024-12-26
Ray Tracer WebGPU de código aberto: Renderização em tempo real de cenas glTF

O projeto de código aberto webgpu-raytracer é um mecanismo de traçado de raios de software construído usando a API WebGPU. Ele suporta arquivos de cena glTF e renderiza materiais com albedo, mapas normais e mapas de materiais. O mecanismo utiliza BVH para interseções aceleradas de cena de raios e emprega amostragem de importância múltipla para eficiência. Atualmente, ele suporta mapas de ambiente e permite o controle da câmera por meio do teclado e do mouse, mas a refração ainda não é suportada.

Leia mais
Desenvolvimento Traçado de Raios

CCxTrust: Plataforma de Computação Confidencial Baseada em TEE e TPM com Confiança Colaborativa

2024-12-12
CCxTrust: Plataforma de Computação Confidencial Baseada em TEE e TPM com Confiança Colaborativa

O CCxTrust é uma plataforma inovadora de computação confidencial que combina as vantagens dos Ambientes de Execução Confiáveis (TEEs) e dos Módulos de Plataforma Confiáveis (TPMs) para estabelecer uma estrutura de confiança colaborativa. Aproveitando a RoT de caixa-preta incorporada aos TEEs de CPU e a RoT de caixa-branca flexível dos TPMs, o CCxTrust alcança a proteção de ponta a ponta de dados e modelos sensíveis, superando as limitações de depender de uma única RoT de hardware. A plataforma implementa Roots of Trust for Measurement (RTM) independentes e um Root of Trust for Report (RTR) colaborativo, aprimorado por um protocolo de atestação composta para segurança e eficiência melhoradas. Os resultados experimentais demonstram vantagens significativas de desempenho.

Leia mais

Sobrevoando Plutão com a New Horizons: Uma Jornada por um Mundo Gelado

2025-05-18

A espaçonave New Horizons passou por Plutão em julho de 2015 a uma velocidade de cerca de 80.000 quilômetros por hora, capturando imagens impressionantes. Este vídeo em time-lapse de dois minutos, criado aprimorando e combinando essas imagens, simula uma passagem sobre a superfície de Plutão. O vídeo revela montanhas compostas de gelo de água, planícies de nitrogênio sólido e estranhas formações de gelo de nitrogênio poligonais, possivelmente originárias do interior relativamente quente de Plutão. O vídeo termina sobre um terreno apelidado de 'lamelar' devido às suas cristas de 500 metros de altura separadas por lacunas de quilômetros. Devido ao seu momento, a New Horizons não pode retornar e agora está se dirigindo para fora do nosso Sistema Solar.

Leia mais
Tecnologia

Carne Cultivada: Do Hambúrguer de US$ 330.000 ao Futuro da Alimentação

2024-12-16
Carne Cultivada: Do Hambúrguer de US$ 330.000 ao Futuro da Alimentação

De uma previsão de Winston Churchill em 1931 ao primeiro hambúrguer cultivado em laboratório em 2013, a indústria de carne cultivada superou desafios para se tornar um setor em expansão. O alto custo inicial (o primeiro hambúrguer custou US$ 330.000) impulsionou a inovação, levando a mais de 100 empresas em todo o mundo a investir um total de US$ 2,6 bilhões. Avanços tecnológicos reduziram os custos, como meios de crescimento sem soro, e aumentaram a eficiência com inovações como o PluriMatrix. Aprovações regulatórias em países como os EUA e Cingapura estão abrindo caminho para uma adoção mais ampla, embora a aceitação generalizada seja projetada para levar 20 a 30 anos.

Leia mais

Eu me rastreei usando dados de geolocalização vazados: um experimento chocante

2025-02-02
Eu me rastreei usando dados de geolocalização vazados: um experimento chocante

Um vazamento recente de dados de geolocalização da Gravy Analytics expôs mais de 2000 aplicativos coletando secretamente dados de localização, muitas vezes sem o conhecimento dos desenvolvedores. Para investigar, instalei um único jogo e usei o Charles Proxy para monitorar o tráfego de rede. Mesmo com os serviços de localização desativados, o jogo vazou minha localização aproximada e endereço IP por meio do Unity Ads, Facebook e outras plataformas de anúncios. Os dados incluíam detalhes surpreendentemente granulares, como o brilho da tela e o uso da memória. Investigações adicionais revelaram a facilidade de comprar conjuntos de dados que ligam identificadores a informações pessoais, permitindo o rastreamento preciso da localização. Este experimento destaca a escala alarmante de vazamento de dados no ecossistema de publicidade móvel e os riscos significativos para a privacidade do usuário.

Leia mais

Quatro Limitações Surpreendentes do Verificador de Empréstimos do Rust

2024-12-24

Este artigo explora quatro limitações surpreendentes do verificador de empréstimos do Rust, encontradas mesmo por programadores Rust experientes. A primeira limitação envolve a incapacidade do verificador de empréstimos de levar totalmente em consideração as instruções match e return, levando a verificações redundantes ao trabalhar com HashMaps. A segunda limitação diz respeito à programação assíncrona, onde o Rust atualmente carece da capacidade de expressar determinadas assinaturas de tipo de retorno de chamada assíncrona. A terceira centra-se em closures FnMut não permitindo o re-empréstimo de variáveis capturadas, restringindo o acesso a estados mutáveis em operações assíncronas. Finalmente, a falta de consciência do fluxo de controle do verificador Send resulta em alguns Futures que deveriam ser Send sendo incorretamente marcados como não Send. O autor ilustra essas limitações e seus desafios com exemplos de código concretos e soluções alternativas, defendendo melhorias no sistema de tipos do Rust para melhorar a produtividade do desenvolvedor.

Leia mais

Teclado WristPC da L3 Systems: Um teclado robusto e vestível

2025-01-27

A L3 Systems desenvolveu o teclado WristPC para aplicações de computadores portáteis e vestíveis. Este teclado QWERTY robusto possui uma interface de teclado padrão para PC e está disponível em carcaças de alumínio anodizado preto ou plástico ABS azul. Totalmente vedado, é projetado para uso na chuva e em ambientes hostis. Suas costas curvas garantem um posicionamento confortável e seguro no pulso, com um layout alfanumérico otimizado e teclas de seta convenientemente posicionadas. Alças de pulso e iluminação de teclado opcionais estão disponíveis. Teclados personalizados para usuários do Aaton Cantar também são oferecidos (requer adaptador Gotham Sound Dsub15-USB separado).

Leia mais
Hardware teclado robusto

O Keyset de Cinco Teclas de Engelbart: O Parceiro Perfeito do Mouse

2025-06-15
O Keyset de Cinco Teclas de Engelbart: O Parceiro Perfeito do Mouse

Simultaneamente à invenção do mouse de computador, Doug Engelbart e sua equipe na SRI criaram um dispositivo de entrada com uma só mão chamado "keyset de cinco teclas", projetado para edição de texto e entrada de comandos eficientes com uma só mão, em conjunto com o mouse. Inspirado em operadores de telégrafo e taquígrafos, os usuários combinavam pressionamentos de cinco teclas para inserir letras e comandos, enquanto os botões do mouse funcionavam como teclas Shift e Ctrl. Essa interface inovadora, exibida na demonstração de 1968 "Mãe de Todas as Demos", ofereceu uma nova abordagem para interfaces de usuário de alto desempenho, permitindo edição de texto rápida e eficiente, mesmo manipulando o mouse com uma só mão.

Leia mais

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.

Leia mais

Como a Paternidade Muda as Amizades (E Como Mantê-las)

2025-05-18

Ter filhos pode mudar drasticamente as amizades. Este artigo explora os desafios comuns enfrentados por pais e não pais na manutenção de seus relacionamentos. A matéria apresenta entrevistas com mulheres que compartilham suas experiências e percepções, oferecendo quatro estratégias principais: Não presuma que seus amigos não querem sair; garanta que as conversas incluam todos; adapte-se a novas maneiras de socializar, como fazer tarefas domésticas juntos ou incorporar crianças em atividades; e comunique-se abertamente sobre sentimentos. O artigo enfatiza a importância da comunicação e da compaixão na navegação desses relacionamentos em evolução, sugerindo que as amizades podem durar mesmo quando as etapas da vida mudam.

Leia mais
Diversos paternidade

@celine/bibhtml v3.0.3: Sistema de Referências Baseado em Web Components

2024-12-21
@celine/bibhtml v3.0.3: Sistema de Referências Baseado em Web Components

O sistema de referências baseado em Web Components para documentos HTML, @celine/bibhtml, lançou a versão 3.0.3. Ele visa fornecer uma experiência de usuário semelhante à de referências em LaTeX/BibTeX, utilizando o Citation.js como base e degradando graciosamente quando citações e referências estiverem malformadas ou o JavaScript estiver desabilitado. Suporta quatro formatos de referência: BibTeX, texto não estruturado, DOI e Wikidata, e oferece três elementos personalizados: ``, `` e ``, simplificando o gerenciamento de referências em HTML.

Leia mais

Vulnerability-Lookup: Plataforma Colaborativa de Gerenciamento de Vulnerabilidades

2025-02-06
Vulnerability-Lookup: Plataforma Colaborativa de Gerenciamento de Vulnerabilidades

O Vulnerability-Lookup é uma poderosa plataforma de código aberto para correlacionar rapidamente vulnerabilidades de várias fontes, simplificando o processo de divulgação coordenada de vulnerabilidades (CVD). Ele suporta a importação de diversas fontes, incluindo NIST NVD e CISA, e permite que os usuários adicionem observações de vulnerabilidades, comentários e criem pacotes. Sua API e biblioteca Python facilitam a integração com outras ferramentas, permitindo que os desenvolvedores criem facilmente suas próprias ferramentas de observação. O Vulnerability-Lookup é licenciado sob a GNU Affero GPL v3.0 e é desenvolvido pelo CIRCL, Alexandre Dulaunoy, Raphaël Vinot e Cédric Bonhomme.

Leia mais

Usuários pagos do Slack afogados em anúncios?

2025-01-02
Usuários pagos do Slack afogados em anúncios?

Um usuário pago do Slack reclama da plataforma estar inundada de anúncios e spam, mesmo depois de pagar milhares de dólares. Esses anúncios promovem fortemente o serviço de IA do Slack, mas prejudicam significativamente a produtividade e são incrivelmente irritantes. O autor argumenta que essa abordagem é contraproducente e buscará uma alternativa auto-hospedada em sua empresa.

Leia mais

Autocorreção QMK: Correção de erros tipográficos no teclado

2025-01-08

O firmware QMK agora inclui autocorreção, oferecendo correção de erros tipográficos em tempo real diretamente no seu teclado. Usando uma estrutura de dados Trie, corrige erros de digitação comuns (por exemplo, 'ouput' para 'output') com sobrecarga mínima de recursos (1672 bytes para 71 entradas, ~20 µs por pressionamento de tecla). É insensível a maiúsculas e minúsculas, personalizável por meio de um dicionário e atualmente suporta apenas caracteres alfanuméricos e apóstrofos. Embora limitado ao inglês, melhora significativamente a eficiência de digitação para programadores e usuários semelhantes.

Leia mais

SSR em Streaming com React Relay e Vite: Um mergulho profundo

2025-01-17
SSR em Streaming com React Relay e Vite: Um mergulho profundo

A equipe de engenharia da Aqora compartilha sua jornada na implementação de renderização do lado do servidor (SSR) em streaming com React Relay e Vite. O artigo detalha os desafios encontrados na integração do React Router e do Relay, incluindo o tratamento do Suspense com SSR, o gerenciamento do fluxo de dados do Relay store e a geração de meta tags. As soluções envolveram `createStaticHandler`, `renderToPipeableStream`, `preloadQuery` e `react-helmet-async`, resultando em um SSR eficiente que melhora o SEO e o desempenho. Trechos de código-chave e decisões arquitetônicas são fornecidos, oferecendo insights valiosos para desenvolvedores.

Leia mais
Desenvolvimento

A Conquista Normanda e a Ortografia Inglesa: Uma História Perdida de Diacríticos

2025-07-07
A Conquista Normanda e a Ortografia Inglesa: Uma História Perdida de Diacríticos

Este artigo explora como a Conquista Normanda impactou profundamente a ortografia inglesa. Após 1066, o francês tornou-se a língua oficial, e os escribas levaram os costumes da escrita francesa para o inglês, resultando em combinações de letras representando fonemas únicos, como "sh" e "th". O Renascimento viu o francês desenvolver um sistema de diacríticos por meio da impressão e da padronização, enquanto o inglês reteve as convenções ortográficas estabelecidas durante o período normando. Isso explica por que o inglês carece de uso generalizado de diacríticos hoje.

Leia mais

Salesforce Impulsiona a IA: Capacitando Todos os Funcionários

2025-06-17
Salesforce Impulsiona a IA: Capacitando Todos os Funcionários

A Salesforce anuncia atualizações significativas em suas ofertas Agentforce, Customer 360 Apps e Slack, simplificando a adoção de IA. As principais mudanças incluem: os complementos Agentforce e as edições Agentforce 1 agora disponíveis, oferecendo uso ilimitado de IA para funcionários; aumentos de preços para as edições Enterprise e Unlimited a partir de 1º de agosto de 2025; e atualizações nos planos do Slack, adicionando recursos de IA a todos os planos pagos e canais do Salesforce a todos os planos (incluindo o gratuito). Novos complementos e edições Agentforce fornecem acesso ilimitado à IA generativa, modelos predefinidos, análises impulsionadas por IA e muito mais. Essa reformulação visa capacitar todos os funcionários com IA, impulsionando o sucesso do cliente.

Leia mais
Tecnologia

A Busca ao Tesouro de Código Aberto do CERN: Quantificando o Impacto de um Gigante Científico

2025-02-06

O CERN, uma força motriz na descoberta científica, tem uma longa história de contribuições de código aberto. Mas como medir seu impacto? O Escritório de Programas de Código Aberto (OSPO) do CERN fez parceria com o Software Heritage (SWH) para iniciar um projeto de 12 meses. Usando o vasto arquivo do SWH, eles pretendem rastrear projetos de software relacionados ao CERN, analisar sua evolução e quantificar sua influência na comunidade global de código aberto. Esta pesquisa não apenas iluminará o legado de código aberto do CERN, mas também fornecerá uma metodologia para outras organizações medirem suas próprias contribuições, oferecendo insights valiosos sobre o papel do código aberto no avanço científico e tecnológico.

Leia mais
Tecnologia

Embeddings: O Futuro da Redação Técnica?

2025-05-12

Este artigo explora como a tecnologia de embeddings pode revolucionar a redação técnica. Ao contrário dos modelos de geração de texto, a tecnologia de embeddings compara a semelhança semântica de textos convertendo-os em vetores de alta dimensionalidade (embeddings). O artigo explica como os embeddings são gerados, seu custo e as diferenças entre diferentes modelos, usando o modelo Voyage-3 como exemplo para ilustrar suas vantagens no manuseio de grandes textos. O autor usa a analogia de coordenadas de mapa para explicar como os embeddings são representados no espaço de alta dimensionalidade e, usando o Word2vec como exemplo, demonstra a capacidade da tecnologia de embeddings de capturar relações semânticas. Finalmente, o artigo apresenta a aplicação da tecnologia de embeddings na recomendação de páginas relacionadas em sites de documentação e analisa seu enorme potencial na redação técnica.

Leia mais
Desenvolvimento tecnologia de embeddings

Vazamentos de memória em C++: Mostre aos desenvolvedores Rust quem manda!

2025-05-11
Vazamentos de memória em C++: Mostre aos desenvolvedores Rust quem manda!

Este tutorial em vídeo demonstra como criar e rastrear intencionalmente vazamentos de memória em C++. Embora os desenvolvedores Rust frequentemente zombem do gerenciamento de memória do C++, este tutorial mostra como usar _CrtDumpMemoryLeaks e a macro DEBUG_NEW para detectar e identificar vazamentos de memória, provando que os desenvolvedores C++ podem lidar eficazmente com problemas de memória sem precisar de um verificador de empréstimo ou tempos de vida. Começando com um exemplo simples, o tutorial ensina progressivamente como usar ferramentas de depuração para rastrear vazamentos de memória, mesmo em programas complexos.

Leia mais
Desenvolvimento Vazamentos de Memória

Aplicativo de tarefas para Windows nativo em C puro

2025-05-11
Aplicativo de tarefas para Windows nativo em C puro

Um aplicativo de tarefas para Windows moderno e nativo, construído com C e a API Win32. Permite criar, editar, excluir e marcar itens de tarefas como concluídos, com armazenamento persistente em AppData. Inclui integração com a bandeja do sistema e aparência nativa do Windows. O aplicativo suporta até 100 itens de tarefas. O código-fonte é de código aberto e inclui instruções de compilação.

Leia mais
1 2 583 584 585 587 589 590 591 595 596