Utilitário de pesquisa ASCII em Ada: Um tutorial completo

2025-04-15

Este artigo detalha a criação de um utilitário de pesquisa ASCII de linha de comando escrito em Ada. O utilitário imprime a tabela ASCII completa ou, dado um valor hexadecimal, binário, octal ou decimal, fornece o código e o nome do caractere ASCII correspondente. O autor guia meticulosamente o leitor pelo processo de desenvolvimento, cobrindo a configuração do ambiente, a implementação do código e o tratamento de erros. Um link para o código fonte completo no GitHub é fornecido. Este artigo é adequado para leitores com alguma experiência em programação e oferece insights valiosos sobre programação Ada e desenvolvimento de ferramentas de linha de comando.

Leia mais
Desenvolvimento

2024: Encontrando Esperança em Meio à Adversidade

2024-12-30
2024: Encontrando Esperança em Meio à Adversidade

2024 apresentou ao mundo inúmeros desafios: guerras contínuas, eventos climáticos extremos e polarização política. No entanto, surgiram lampejos de esperança. O Chade erradicou a doença do sono, os EUA aprovaram novas drogas inovadoras, pesquisas mostraram que mesmo pequenas mudanças podem impactar positivamente a saúde, atletas alcançaram novos recordes e houve progresso na questão das mudanças climáticas, como a diminuição de substâncias que destroem a camada de ozônio e novas tecnologias de captura de carbono. Mesmo em meio à devastação, a humanidade demonstrou resiliência e apoio mútuo.

Leia mais

O Problema da Expressão: Soluções Elegantes em OOP e FP

2025-09-07

Este artigo mergulha no "problema da expressão" no design de software: como adicionar novos tipos de dados e operações sem modificar o código existente. O autor usa exemplos em C++ e Haskell para ilustrar as limitações da programação orientada a objetos e funcional na resolução desse problema. O artigo então explora soluções elegantes usando o padrão visitor e os multimethods e protocolos do Clojure. A abordagem do Clojure utiliza de forma inteligente o poder dos métodos abertos, separando as definições de métodos das definições de tipo, permitindo uma extensão flexível sem modificar o código existente.

Leia mais
Desenvolvimento problema da expressão

Um Flaw de Design e um Bule Oculto no Protetor de Tela 3D Pipes do Windows

2024-12-28
Um Flaw de Design e um Bule Oculto no Protetor de Tela 3D Pipes do Windows

O adorado protetor de tela 3D Pipes do Windows, conhecido por suas animações de canos hipnotizantes, esconde um segredo pouco conhecido: um bule que aparece raramente. Este bule é uma homenagem ao bule de Utah, um objeto de referência padrão em computação gráfica, mas sua taxa de aparecimento incrivelmente baixa levou a reclamações de usuários sobre baixa produtividade. O artigo também revela que, em versões mais antigas do Windows, o protetor de tela causava alto uso da CPU em servidores devido à renderização de software, recomendando um protetor de tela de tela preta para servidores.

Leia mais

Falha de software causa interrupção no tráfego aéreo da Nova Zelândia

2025-08-24
Falha de software causa interrupção no tráfego aéreo da Nova Zelândia

Uma falha de software no sistema de controle de tráfego aéreo da Nova Zelândia causou uma interrupção significativa no fim de semana, paralisando vários voos e causando atrasos. Cinco aviões circularam sobre Wellington, e quatro não conseguiram decolar devido a uma interrupção de uma hora resultante de problemas de transferência de dados de voo entre sistemas. O CEO da Airways, James Young, garante ao público que todas as aeronaves estavam sob controle e que o incidente não foi um ciberataque. Uma investigação está em andamento para determinar a causa raiz e melhorar a resiliência do sistema.

Leia mais
Tecnologia

Armadilha Surpreendente de Alocação de Memória em Go: Uma História de Regressão de 30%

2025-04-21
Armadilha Surpreendente de Alocação de Memória em Go: Uma História de Regressão de 30%

Uma refatoração aparentemente inócua em um projeto Go levou a uma regressão de desempenho de 30%. O culpado foi o método `GetBytes` da struct `ImmutableValue`, que usava um receptor de valor, causando uma alocação de heap a cada chamada. Alocação de heap é significativamente mais cara do que alocação de pilha. A causa raiz foi a análise de escape do compilador Go sendo imprecisa; ele falhou em reconhecer que o receptor de valor não escaparia. Mudar para um receptor de ponteiro resolveu o problema. Este caso destaca a importância de entender as decisões de alocação de memória do compilador Go e usar tipos de receptor apropriados para código Go de alto desempenho.

Leia mais
Desenvolvimento

Rastreador de Preços de Congestionamento de NYC: Visualização de Dados em Tempo Real

2025-01-06

Benjamin e Joshua Moshes criaram um site, o "Rastreador de Preços de Congestionamento", que fornece dados em tempo real sobre o preço de congestionamento em Nova York. O site apresenta um mapa interativo e visualizações de dados, permitindo que os usuários vejam facilmente as taxas de preços de congestionamento e as condições de tráfego em diferentes áreas. Isso não é apenas útil para indivíduos planejando seus deslocamentos, mas também fornece dados valiosos para pesquisadores e urbanistas otimizarem o gerenciamento de tráfego e políticas. Isso demonstra o poder da tecnologia cívica na resolução de desafios urbanos.

Leia mais

Wikipédia: Lutando por fatos na era da guerra de informações

2025-09-05
Wikipédia: Lutando por fatos na era da guerra de informações

A Wikipédia, o maior acervo de conhecimento do mundo, enfrenta desafios sem precedentes de governos, forças políticas e indivíduos como Elon Musk. Do tratamento de uma controvérsia sobre uma saudação nazista envolvendo Musk à interferência governamental e ao assédio a editores em todo o mundo, este artigo revela como o mecanismo de consenso único da Wikipédia e o rigoroso processo de edição protegem a integridade factual em um mundo digital repleto de desinformação. Apesar da imensa pressão, a Wikipédia e seus editores se esforçam para manter a neutralidade e a confiabilidade, uma batalha crucial tanto para o livre fluxo de informações quanto para a saúde das sociedades democráticas.

Leia mais

arXivLabs: Construindo Novos Recursos arXiv com Colaboradores da Comunidade

2025-09-23
arXivLabs: Construindo Novos Recursos arXiv com Colaboradores da Comunidade

arXivLabs é uma estrutura colaborativa que permite que desenvolvedores criem e compartilhem novos recursos arXiv diretamente no site. Participantes, indivíduos e organizações, abraçam os valores do arXiv de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e apenas se associa a aqueles que os compartilham. Tem uma ideia para uma contribuição valiosa para a comunidade? Explore o arXivLabs!

Leia mais
Desenvolvimento

hledger 1.50 Lançado: Balanceamento de Transações Robusto e Mais

2025-09-04
hledger 1.50 Lançado: Balanceamento de Transações Robusto e Mais

O hledger 1.50 foi lançado, com um balanceamento de transações significativamente aprimorado, usando apenas precisões locais para maior precisão e robustez. Esta versão também inclui várias melhorias, como comandos de dados CSV, arquivamento de importação, melhorias no relógio de ponto e correções de bugs. A sintaxe e análise do relógio de ponto são mais robustas, sessões concorrentes são totalmente suportadas e os padrões glob na diretiva include são aprimorados para correspondência mais poderosa.

Leia mais
Desenvolvimento software financeiro

IA do Google resolve mistério de superbactérias de uma década em apenas dois dias

2025-03-17
IA do Google resolve mistério de superbactérias de uma década em apenas dois dias

Uma nova ferramenta de IA do Google resolveu um enigma científico de uma década em apenas dois dias: o mecanismo de resistência a antibióticos em superbactérias. Uma equipe do Imperial College London passou 10 anos pesquisando como certas superbactérias adquirem resistência, mas a ferramenta de IA 'co-cientista' do Google, com um simples comando, chegou à mesma resposta que as descobertas não publicadas da equipe em apenas 48 horas. Isso demonstra o potencial da IA para sintetizar evidências, orientar pesquisas e projetar experimentos, potencialmente revolucionando o progresso científico. No entanto, também levanta preocupações éticas e de confiabilidade sobre o uso da IA na pesquisa científica.

Leia mais

Relatório de Consumidores critica prazo final do Windows 10 da Microsoft

2025-09-17
Relatório de Consumidores critica prazo final do Windows 10 da Microsoft

O Consumer Reports está pedindo à Microsoft que estenda o prazo de 14 de outubro para atualizações de segurança gratuitas do Windows 10, argumentando que milhões de usuários com hardware incompatível ficarão vulneráveis. Com aproximadamente 46,2% dos usuários globais ainda no Windows 10 (dados de agosto de 2025) e uma estimativa de 200 a 400 milhões de PCs incapazes de atualizar para o Windows 11, o Consumer Reports considera a política da Microsoft hipócrita. Eles criticam a taxa de US$ 30 por uma extensão de um ano e as táticas da empresa de direcionar os usuários para produtos Microsoft. Tanto o Consumer Reports quanto um Grupo de Pesquisa de Interesse Público (PIRG) estão solicitando suporte gratuito estendido para evitar que milhões de computadores perfeitamente funcionais sejam descartados.

Leia mais

A Evolução e os Desafios dos Agentes de Codificação de IA: Do Dial-Up à Rodovia

2025-09-22
A Evolução e os Desafios dos Agentes de Codificação de IA: Do Dial-Up à Rodovia

O rápido avanço dos agentes de codificação de IA movidos por modelos de linguagem grandes (LLM) trouxe ganhos de produtividade sem precedentes, mas também imensos desafios de infraestrutura. Usando uma analogia à era da internet discada, o autor descreve a evolução dos agentes de codificação de IA de estados iniciais ineficientes e não confiáveis ​​ao seu uso generalizado atual, enquanto ainda enfrenta problemas de alta latência e custo. O autor argumenta que velocidades maiores de tok/s (tokens por segundo) são fundamentais e prevê que o futuro verá fluxos de trabalho de codificação de IA mais avançados, menos manuais e modelos de preços mais flexíveis para lidar com picos de carga.

Leia mais
Desenvolvimento

Comunidade do Kernel Debate Patches Gerados por IA

2025-08-23

A comunidade do kernel Linux está lidando com o aumento das ferramentas de codificação assistidas por IA. Submissões usando LLMs para gerar patches geraram debates, com propostas para adicionar tags que identifiquem o uso de LLMs. No entanto, preocupações sobre a qualidade dos patches, questões de direitos autorais e aumento da carga de trabalho dos mantenedores são prevalentes, levando alguns a sugerir a proibição de contribuições geradas por LLM. Um consenso permanece difícil de alcançar, mas as discussões estão se expandindo para incluir uma política de IA mais ampla, prevista para ser discutida na Cúpula de Mantenedores de dezembro.

Leia mais
Desenvolvimento Patches de Código

Vislumbres sobre a Estrutura de Incorporações Neurais

2024-12-27
Vislumbres sobre a Estrutura de Incorporações Neurais

Este artigo explora a estrutura das incorporações (espaços latentes) produzidas por redes neurais profundas. Vários hipóteses-chave são resumidas: a Hipótese da Variedade (dados de alta dimensão residem em uma variedade de baixa dimensão); Organização Hierárquica (as características se organizam hierarquicamente entre as camadas); Hipótese Linear (as redes neurais representam características como direções lineares em seu espaço de ativação); Hipótese de Superposição (as redes neurais representam mais características independentes do que uma camada possui neurônios); Hipótese de Universalidade (os circuitos reaparecem em diferentes modelos para os mesmos dados); Vulnerabilidade Adversarial (pequenas mudanças na entrada causam grandes mudanças na incorporação); e Colapso Neural (após o treinamento, as características da classe se agrupam firmemente em torno de suas médias). Essas hipóteses coletivamente iluminam a complexidade e as limitações potenciais das incorporações de redes neurais profundas.

Leia mais

A Experiência Corporal da Programação: Uma Sinestesia de Programador

2025-09-10
A Experiência Corporal da Programação: Uma Sinestesia de Programador

O autor descreve as sensações viscerais evocadas por diferentes linguagens de programação: parênteses aninhados em linguagens semelhantes a C parecem caminhar em uma corda bamba, programação funcional como rastejar por cavernas, e escrever firmware como um trabalho preciso e limitado. Usar Copilot e TypeScript é como voar, enquanto retornar ao Python sem tipo é como tropeçar bêbado. O autor argumenta que essa sinestesia de código, embora sutil, é comum e influencia a compreensão do código e o design do sistema. Embora essa sensação possa não melhorar diretamente a eficiência da codificação, ela é incrivelmente útil na compreensão de como startups funcionam, ajudando o autor a identificar partes críticas e conexões ausentes. O autor conclui sugerindo que ótimos editores de código devem aproveitar as intuições sensoriais de excelentes engenheiros, melhorando a maneira como o código é exibido para aprimorar a experiência de programação.

Leia mais

Pink Floyd's 'Young Lust': Uma Chamada Telefônica que Revela a História da Tecnologia

2025-01-02

A misteriosa chamada telefônica no final da música 'Young Lust' do Pink Floyd não é apenas ruído aleatório; é um retrato da transição tecnológica de 1979 na telefonia. Este artigo decifra os vários tons - sinalização de multifrequência (MF), sinalização de monofrequência (SF) e interações de comutação - revelando a mudança de sistemas eletromecânicos para sistemas digitais eletrônicos. A gravação, meticulosamente planejada, captura as complexidades de uma chamada internacional, oferecendo um vislumbre fascinante da história da tecnologia.

Leia mais

Desacelerando programas intencionalmente: um aumento surpreendente na precisão das ferramentas de desenvolvedor

2025-08-27
Desacelerando programas intencionalmente: um aumento surpreendente na precisão das ferramentas de desenvolvedor

A maior parte da pesquisa sobre desempenho de linguagem de programação concentra-se em acelerar programas, mas um novo estudo explora os benefícios de desacelerá-los intencionalmente. Ao inserir instruções NOP ou MOV em blocos básicos de programas, os pesquisadores alcançaram um controle preciso sobre a execução do programa, levando a uma detecção mais precisa de condições de corrida, simulação de aceleração e avaliação da precisão do analisador de desempenho. Experimentos em um Intel Core i5-10600 mostraram que as instruções NOP e MOV são as mais adequadas para esse fim, abrindo novas possibilidades para ferramentas de desenvolvedor avançadas no futuro.

Leia mais
Desenvolvimento perfis

Milhões de Contas Vulneráveis Devido a Falha no OAuth do Google

2025-01-14
Milhões de Contas Vulneráveis Devido a Falha no OAuth do Google

Um novo estudo revela uma vulnerabilidade crítica no fluxo de autenticação "Entrar com o Google" do Google, potencialmente expondo dados de milhões de americanos. Atacadores podem comprar domínios de startups extintas, recriar contas de e-mail de ex-funcionários e acessar vários serviços SaaS vinculados a essas contas, incluindo sistemas de RH e plataformas de bate-papo contendo informações confidenciais. O pesquisador relatou o problema ao Google, que inicialmente o marcou como "não corrigirá". Somente depois que a palestra do pesquisador na Shmoocon foi aceita, o Google reabriu o problema e pagou uma recompensa. Enquanto o Google está trabalhando em uma solução, milhões de contas permanecem vulneráveis.

Leia mais
Tecnologia OAuth do Google

Máquina do Tempo da TV dos anos 90: Um Raspberry Pi que Reproduz Programas de TV Aleatórios dos anos 90

2025-09-20

Com saudade da espontaneidade da TV dos anos 90? Este projeto recria essa experiência usando um Raspberry Pi. O autor carregou programas clássicos dos anos 90 (Tartarugas Ninjas Mutantes Adolescentes, Star Trek: A Nova Geração, etc.) em um Raspberry Pi e escreveu um script para reproduzi-los aleatoriamente na inicialização. O guia detalha o processo: instalação do Raspberry Pi OS Lite, VLC, criação de um script para embaralhar e reproduzir vídeos e configuração de um serviço systemd para inicialização automática. É um projeto tecnológico nostálgico que mostra a versatilidade do Raspberry Pi.

Leia mais
Hardware TV dos anos 90

TikTok: A Industrialização da Atenção Humana

2025-09-10
TikTok: A Industrialização da Atenção Humana

Este artigo explora como o algoritmo sofisticado do TikTok transforma a cultura em um loop de feedback sem fim de impulso e aprendizado de máquina, efetivamente 'industrializando' a atenção humana. Ao contrário das narrativas coerentes da mídia tradicional, o TikTok usa microcomportamentos (como o tempo de espera) para aprendizado instantâneo, entregando conteúdo altamente personalizado e irresistível. Este modelo está sendo emulado globalmente em mídia, educação e entretenimento, resultando em spans de atenção cada vez mais fragmentados e uma perda de capacidade para o pensamento profundo e a exploração do desconhecido. Em última análise, o artigo leva à reflexão sobre se participamos conscientemente dessa 'negociação' de atenção.

Leia mais
Tecnologia

Kafka: Funcionário de Seguros, Defensor dos Trabalhadores

2025-02-07
Kafka: Funcionário de Seguros, Defensor dos Trabalhadores

Franz Kafka, famoso por obras como *A Metamorfose* e *O Processo*, ocupou um cargo menos conhecido no Instituto de Seguros contra Acidentes de Trabalhadores em Praga. Este trabalho aparentemente mundano tornou-se uma janela para os males da sociedade, permitindo a Kafka investigar as condições de trabalho nas fábricas e expor anonimamente a negligência corporativa à imprensa. Ele defendeu os direitos dos trabalhadores, defendendo regulamentos de segurança aprimorados e contribuindo, em última análise, para melhores condições para os trabalhadores boêmios. Isso revela um lado diferente de Kafka, além de sua persona literária: um defensor dedicado da justiça social.

Leia mais

Doações Incríveis: Uma Lista Curada de Projetos FLOSS para Apoiar

2025-01-03
Doações Incríveis: Uma Lista Curada de Projetos FLOSS para Apoiar

Este repositório GitHub, awesome-donations, é uma lista curada de opções de doação para inúmeros projetos de Software Livre e de Código Aberto (FLOSS). Ele fornece acesso fácil para apoiar projetos que vão desde grandes fundações como a Linux Foundation e a Mozilla Foundation até projetos individuais como LibreOffice, GIMP e QEMU. Seja você prefere PayPal, cartões de crédito ou outros métodos, você pode contribuir facilmente para a comunidade de código aberto e ajudar a garantir o desenvolvimento contínuo de softwares livres essenciais.

Leia mais
Desenvolvimento doações

Apoio à Pena de Morte Cai para Mínima de 5 Décadas: Jovens Lideram Oposição

2025-03-08
Apoio à Pena de Morte Cai para Mínima de 5 Décadas: Jovens Lideram Oposição

Uma pesquisa recente mostra que o apoio à pena de morte nos EUA caiu para uma mínima de cinco décadas, atingindo 53%. É notável que a maioria dos jovens americanos (18 a 43 anos) agora se opõe à pena capital. Mesmo entre aqueles que ainda apoiam a pena de morte, cresce a inquietação em torno da execução de indivíduos com deficiências mentais graves ou danos cerebrais resultantes de traumas. Essa mudança na opinião pública reflete uma reconsideração mais ampla da eficácia e das implicações morais da pena de morte, com muitas famílias de vítimas relatando que ela não traz nenhum fechamento.

Leia mais

Baseten atinge desempenho SOTA no GPT-OSS-120B: Uma corrida contra o tempo

2025-08-07
Baseten atinge desempenho SOTA no GPT-OSS-120B: Uma corrida contra o tempo

Como parceiro de lançamento do novo LLM de código aberto da OpenAI, a Baseten se esforçou para otimizar o GPT-OSS-120B para o máximo desempenho no dia do lançamento. Eles aproveitaram sua pilha de inferência flexível, testando em TensorRT-LLM, vLLM e SGLang, com suporte para arquiteturas de GPU Hopper e Blackwell. Otimizações importantes incluíram roteamento com awareness de cache KV e decodificação especulativa com Eagle. Priorizando a latência, eles escolheram o paralelismo de tensor e utilizaram o backend MoE do TensorRT-LLM. A equipe rapidamente solucionou problemas de compatibilidade e refinou continuamente a configuração do modelo, contribuindo de volta para a comunidade de código aberto. Melhorias futuras incluirão decodificação especulativa para inferência ainda mais rápida.

Leia mais
Desenvolvimento Otimização de Inferência

Cortes no Orçamento DOGE: Uma Farsa de RP que Mascara Problemas Maiores

2025-04-25

Enquanto as manchetes se concentram nos cortes no orçamento DOGE, seu impacto no déficit é insignificante — US$ 0,00. O Departamento de Eficiência do Governo cancelou zero bolsas e contratos, resultando em custos sociais significativos para comunidades vulneráveis, pesquisas e serviços essenciais. O artigo destaca duas políticas alternativas que gerariam muito mais economia do que os cortes DOGE, como fechar brechas fiscais corporativas e reduzir as emissões de carbono. Essas políticas oferecem uma abordagem mais substancial e significativa para lidar com o déficit enquanto mantêm serviços críticos.

Leia mais

IA impulsiona a detecção de ondas gravitacionais: Avanço do Deep Loop Shaping

2025-09-05
IA impulsiona a detecção de ondas gravitacionais: Avanço do Deep Loop Shaping

Cientistas usaram uma técnica de aprendizado profundo chamada Deep Loop Shaping para melhorar significativamente a precisão do controle do Observatório de Ondas Gravitacionais do Interferômetro Laser (LIGO), reduzindo o ruído em até 100 vezes. Essa tecnologia, usando aprendizado por reforço, otimiza o sistema de controle de feedback do LIGO, permitindo que ele meça ondas gravitacionais de forma mais estável. Isso ajuda os astrônomos a se aprofundarem na dinâmica e na formação do universo, como detectar mais buracos negros de massa intermediária e estudar colisões de estrelas de nêutrons com mais detalhes. Espera-se que essa descoberta influencie o design de futuros observatórios de ondas gravitacionais e amplie ainda mais nossa compreensão do cosmos.

Leia mais
Tecnologia

Minhas Aventuras com Agentes de Codificação LLM: Melhore seu Desenvolvimento Assistido por IA

2025-08-23
Minhas Aventuras com Agentes de Codificação LLM: Melhore seu Desenvolvimento Assistido por IA

Esta publicação detalha a jornada de um entusiasta usando agentes de codificação de modelos de linguagem grandes (LLM) para construir software além de suas habilidades. O autor compartilha dicas difíceis de obter para maximizar a eficiência, incluindo gerenciamento eficaz de contexto (fornecendo informações relevantes sem sobrecarregar o modelo), documentação de design meticulosa, planejamento detalhado e divisão de tarefas, registro abrangente para depuração e estratégias defensivas de Git. O autor enfatiza a importância de usar ferramentas para extrair informações de arquivos grandes, compactar o contexto para evitar perder o quadro geral e tratar o agente como uma ferramenta em vez de um colaborador. Seguindo essas estratégias, o autor concluiu com sucesso um projeto complexo.

Leia mais
Desenvolvimento

Imersão no Ruído de Gradiente baseado em GPU: De 1D para 3D e Cálculo de Derivadas

2025-06-07

Este artigo mergulha nas intrincadas implementações de ruído de gradiente em uma GPU, começando com ruído 1D e progredindo gradualmente para dimensões superiores. Ele abrange funções de hash, geração de valores pseudoaleatórios, implementação de ruído de gradiente em várias dimensões e cálculo de derivadas. O artigo se concentra no cálculo eficiente baseado em GPU usando WebGL2/GLSL, comparando abordagens de derivadas numéricas e analíticas. Além disso, explora aplicações de Movimento Browniano Fracionário (fBm) e derivadas na geração de texturas, cálculos de iluminação e simulação de terreno. O conteúdo detalhado é ideal para leitores interessados em gráficos de computador e programação de shaders.

Leia mais
Desenvolvimento Ruído de Gradiente

Armadilhas para Desenvolvedores: Bugs Escondidos em Seu Código

2025-08-16
Armadilhas para Desenvolvedores: Bugs Escondidos em Seu Código

Este artigo resume as armadilhas comuns que os desenvolvedores encontram em HTML, CSS, JavaScript, Go, Java, C/C++, Python, bancos de dados SQL, concorrência, Git e redes. Essas armadilhas, muitas vezes sutis e difíceis de depurar, incluem problemas como a prioridade do atributo `min-width` do CSS, peculiaridades de elementos flutuantes, contextos de formatação de bloco (BFCs) e contextos de empilhamento, tratamento de caracteres Unicode, problemas de precisão de ponto flutuante, segundos bissextos e fusos horários no tratamento de tempo e vários comportamentos específicos da linguagem e da biblioteca. O artigo detalha as causas e as soluções, com o objetivo de ajudar os desenvolvedores a escrever código mais robusto e confiável.

Leia mais
1 2 50 51 52 54 56 57 58 595 596