Category: Desenvolvimento

Bloxi: Um Copiloto de IA para Simulink

2025-06-13
Bloxi: Um Copiloto de IA para Simulink

Um estudante de segundo ano de engenharia aeroespacial do Imperial College London criou o Bloxi, um copiloto de IA que traduz prompts em linguagem natural em modelos de sistemas de controle Simulink funcionais. Aproveitando LLMs multimodais, o Bloxi constrói modelos passo a passo, permitindo depuração em tempo real e um fluxo de trabalho mais intuitivo. O código foi disponibilizado publicamente pelo estudante.

Desenvolvimento Construção de Modelos

A Maneira Surpreendentemente Rápida de Encontrar Vogais em Strings

2025-06-13
A Maneira Surpreendentemente Rápida de Encontrar Vogais em Strings

Este artigo compara onze métodos diferentes para detectar vogais em strings, desde loops simples a expressões regulares e até mesmo uma abordagem baseada em números primos. Surpreendentemente, as expressões regulares superam consistentemente outros métodos, mesmo loops simples, em vários comprimentos de string. Uma análise aprofundada do bytecode Python e do mecanismo de expressão regular CPython revela o motivo da velocidade das expressões regulares. O autor conclui que, embora as expressões regulares sejam as mais rápidas na maioria dos casos, métodos mais simples são suficientes, a menos que se esteja lidando com milhões de strings.

Desenvolvimento processamento de strings

Escapando dos Golias do Software: Rumo a uma Computação Mais Livre e Segura

2025-06-13

Frustrado com o custo, a falta de confiabilidade e a lentidão do software moderno, o autor propõe uma alternativa: favorecer softwares com menos usuários, atualizações pouco frequentes, fácil modificação e uma cultura próspera de forks. Usando sua própria jornada com Lua e a engine de jogos LÖVE como estudo de caso, ele detalha como construir um ecossistema de software pequeno e autossuficiente. Ele encoraja os leitores a fazer fork e modificar softwares existentes para atender às suas necessidades, obtendo, em última análise, uma experiência de computação mais livre e segura. Essa abordagem defende a simplicidade e a praticidade, desafiando as desvantagens do desenvolvimento de software tradicional.

Desenvolvimento

Além de Hindley-Milner: Um tutorial sobre o compilador Cubiml com subtipagem algébrica

2025-06-13

Esta série de posts de blog apresenta o Cubiml, um tutorial de compilador construído em torno de um novo sistema de inferência de tipos chamado "cubic biunification", uma melhoria na Subtipagem Algébrica. Ele aborda as limitações da falta de suporte a subtipagem do sistema Hindley-Milner, fornecendo uma inferência de tipos mais poderosa e intuitiva. O tutorial percorre a implementação do Cubiml com exemplos de código detalhados, cobrindo booleanos, condicionais, registros, funções, ligações let, ligações let recursivas, recursão mútua e correspondência de tipos de caso. O objetivo final é um compilador que verifica tipos de programas sem exigir anotações de tipo manuais.

Desenvolvimento inferência de tipos

arXivLabs: Experimentos com Colaboração da Comunidade

2025-06-13
arXivLabs: Experimentos com Colaboração da Comunidade

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente no nosso site. Indivíduos e organizações que trabalham com o arXivLabs adotaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Tattoy: Aprimore seu terminal com efeitos poderosos com GPU

2025-06-13
Tattoy: Aprimore seu terminal com efeitos poderosos com GPU

Tattoy é uma estrutura de aprimoramento de terminal que renderiza gráficos usando blocos UTF8, suportando shaders de GPU e shaders ShaderToy, e fornece um minimapa atualizado em tempo real do histórico de rolagem do terminal. Ele ajusta automaticamente o contraste do texto, é compatível com shells e temas existentes, e permite executar comandos em segundo plano, como visualizações de áudio ou monitores de sistema. Além disso, o Tattoy possui um sistema de plugins que permite aos desenvolvedores estender a funcionalidade usando qualquer linguagem.

OxCaml: Aprimorando o OCaml para Desempenho

2025-06-13

OxCaml é uma extensão de alto desempenho para a linguagem de programação OCaml, desenvolvida pela Jane Street. Servindo como seu compilador de produção e uma plataforma experimental, o OxCaml visa melhorar a adequação do OCaml para programação orientada a desempenho. Ele oferece controle seguro, conveniente e previsível sobre aspectos críticos de desempenho, focando em concorrência sem medo, controle de layout de memória e gerenciamento de alocação. Embora vise a contribuição a montante, algumas extensões do OxCaml são atualmente não portáteis, resultando em bibliotecas exclusivas para OxCaml. De código aberto e buscando ativamente usuários experimentais, o OxCaml aprimora o OCaml com melhorias na qualidade de vida, como parâmetros polimórficos e matrizes imutáveis.

Desenvolvimento

Google descontinua o recurso de Apps Instantâneos do Android

2025-06-13
Google descontinua o recurso de Apps Instantâneos do Android

O Google está desativando seu recurso de Apps Instantâneos do Android em dezembro de 2025. Esse recurso permitia que os usuários experimentassem partes de um aplicativo sem precisar fazer uma instalação completa na Play Store. A baixa adoção por parte dos desenvolvedores é a provável razão para o encerramento, pois a criação das versões menores de aplicativos instantâneos exigia muito trabalho. Embora projetado para melhorar a experiência do usuário, oferecendo acesso mais rápido ao aplicativo e necessidades reduzidas de armazenamento, a alta sobrecarga de desenvolvimento acabou sendo insustentável.

Desenvolvimento Apps Instantâneos

qrkey: Ferramenta de linha de comando para backup offline de chave privada com códigos QR

2025-06-13
qrkey: Ferramenta de linha de comando para backup offline de chave privada com códigos QR

qrkey é uma ferramenta de linha de comando para gerar e recuperar códigos QR de arquivos para backup offline de chave privada. Ele lida com arquivos grandes, dividindo-os em vários códigos QR, e inclui metadados para facilitar a recuperação e validação. Instale via Homebrew (macOS), Docker ou consulte as versões para outros sistemas. Gerar: `qrkey generate --in --out file.pdf`; Recuperar: `qrkey recover --in `.

Desenvolvimento backup de chave privada

Gerenciamento de Estado Reativo em Python: Um Guia Prático

2025-06-13
Gerenciamento de Estado Reativo em Python: Um Guia Prático

Este artigo explora o gerenciamento de estado reativo em Python usando sinais. Abordagens tradicionais dependem de atualizações manuais, levando a bugs e dores de cabeça na manutenção. Sinais oferecem uma alternativa declarativa, definindo dependências entre estados e atualizando automaticamente valores derivados. Isso resolve problemas comuns como atualizações esquecidas, estados inconsistentes e testes complexos. O artigo detalha três primitivas principais: Sinal, Calculado e Efeito. Exemplos do mundo real demonstram seu uso em gerenciamento de configuração de microsserviços, painéis de controle em tempo real e monitoramento de sistemas distribuídos.

Desenvolvimento

GetHooky: Nunca mais esqueça de fazer lint!

2025-06-13

Cansado de esquecer de executar o seu linter antes de enviar para produção? GetHooky é uma ferramenta de linha de comando multiplataforma que testa e faz lint no seu código automaticamente ao confirmar ou enviar. É super fácil de usar — instale uma vez, use em qualquer lugar. Funciona com qualquer projeto, em qualquer linguagem e suporta todos os hooks do Git. Diga adeus ao código desorganizado e olá ao desenvolvimento eficiente!

Desenvolvimento

Cliente BitTorrent em Go: Em Desenvolvimento

2025-06-13
Cliente BitTorrent em Go: Em Desenvolvimento

Este projeto implementa um cliente BitTorrent em Go, lidando com análise de arquivos torrent, descoberta de pares e download de arquivos. Funcionalidades principais já implementadas incluem codificação/decodificação Bencode, processamento de arquivos torrent, comunicação entre pares e gerenciamento de downloads para torrents de arquivo único e múltiplos. Desenvolvimento futuro inclui suporte para links magnéticos, protocolo de troca de metadados e DHT.

Desenvolvimento

Renderização de Glifos Vetoriais em Tempo Real: Além dos SDFs, rumo ao Anti-aliasing de Alta Precisão

2025-06-13

Frustrado com as limitações das soluções existentes de renderização de texto em tempo real, como os problemas de desfoque e textura dos SDFs, o autor embarcou em uma nova abordagem. Os problemas de estrutura de subpixels de seu novo monitor OLED serviram como o impulso final. Ele abandonou os SDFs e, em vez disso, rasteriza curvas Bézier de glifos diretamente na GPU, empregando acumulação temporal para refinar a qualidade do anti-aliasing ao longo do tempo. Métodos inteligentes de empacotamento de atlas e algoritmos de ordem Z gerenciam eficientemente os dados dos glifos, enquanto o anti-aliasing de subpixels resolve problemas de franjas de cores em telas OLED. O resultado é uma renderização de texto em tempo real de alta qualidade e alto desempenho, especialmente impressionante ao lidar com linhas finas e glifos intrincados.

Desenvolvimento renderização de glifos

jemalloc: 20 anos de um alocador de memória de código aberto

2025-06-13
jemalloc: 20 anos de um alocador de memória de código aberto

O jemalloc, o alocador de memória de código aberto, percorreu um caminho de 20 anos desde sua criação em 2004. De sua origem como um alocador de memória para a linguagem de programação Lyken, à sua integração no FreeBSD e adoção generalizada pelo Firefox e Facebook, o jemalloc passou por várias fases e enfrentou diversos desafios, como problemas de fragmentação e a remoção do suporte ao Valgrind. Embora o Facebook/Meta tenha finalmente interrompido o desenvolvimento ativo do jemalloc, o código permanece publicamente disponível, e seu histórico de desenvolvimento oferece lições valiosas para a manutenção de software de código aberto e colaboração da comunidade.

Desenvolvimento alocador de memória

Construindo Software Melhor na Era da IA

2025-06-13
Construindo Software Melhor na Era da IA

Em uma era de ferramentas de geração de código prontamente disponíveis, o gargalo no desenvolvimento de software não é mais a velocidade, mas a qualidade. O autor defende um equilíbrio entre 'lançamento' e 'artesanato', criticando a prática de sacrificar a qualidade pela velocidade. Usando o desenvolvimento de seu editor de código, Zed, como exemplo, ele demonstra como a IA pode preencher lacunas de conhecimento e ajudar os desenvolvedores a buscar uma experiência de usuário excepcional. O artigo conclui introduzindo a 'Engenharia Agencial', um conceito que combina o artesanato humano com ferramentas de IA para construir software superior.

Desenvolvimento

Emulando iOS 14 no QEMU: Da Tela Preta à Tela Inicial

2025-06-12
Emulando iOS 14 no QEMU: Da Tela Preta à Tela Inicial

Este post de blog detalha a jornada de emular o iOS 14 no QEMU. A equipe superou inúmeros obstáculos, incluindo a análise de logs do sistema, depuração de espaço de usuário (utilizando símbolos de cache dyld e o stub gdb), e contornando a migração de dados e código relacionado ao SEP. Através de patches, soluções criativas (como o uso do modo de acessibilidade do iOS), eles conseguiram inicializar, desbloquear, suporte multitoque, conectividade de rede, e até mesmo a capacidade de instalar e executar arquivos IPA arbitrários. O post descreve meticulosamente os detalhes técnicos, mostrando a experiência e a perseverança da equipe.

Desenvolvimento

McWig: Um Editor de Texto do tipo Vim em Go – Um Experimento Rápido

2025-06-12
McWig: Um Editor de Texto do tipo Vim em Go – Um Experimento Rápido

McWig é um editor de texto modal, semelhante ao Vim, escrito em Go, atualmente usado pelo seu criador como editor principal. Ele suporta apenas arquivos .go e está em desenvolvimento inicial, portanto, use com cautela, pois pode danificar arquivos. Os recursos incluem autocompletar LSP, goto definition, informações de hover, suporte Tree-sitter e temas de cores (emprestados do editor de texto Helix). No entanto, também possui muitos bugs. O projeto foi um experimento rápido para explorar o espaço do editor de texto, e o autor pretende desenvolvê-lo em um editor estável e com recursos completos.

Desenvolvimento

Google remove repositórios de hardware do Pixel do Android 16: o futuro do AOSP é incerto?

2025-06-12
Google remove repositórios de hardware do Pixel do Android 16: o futuro do AOSP é incerto?

O lançamento do Android 16 pelo Google omitiu os repositórios de hardware e árvores de dispositivos Pixel cruciais para desenvolvedores de ROMs personalizados, gerando especulações sobre o futuro do AOSP. Embora o Google negue a descontinuação, a mudança parece deliberada. A ausência desses repositórios dificulta significativamente as atualizações de ROMs personalizadas e pode afetar a pesquisa de segurança. O Google garante o compromisso contínuo com o AOSP, mas muda para um alvo de referência independente de hardware, sugerindo o fim dos lançamentos de árvores de dispositivos Pixel. Os usuários de ROMs personalizadas enfrentam um caminho mais desafiador pela frente.

Desenvolvimento

Roame contrata Engenheiro Full Stack Sênior para revolucionar viagens com pontos usando IA

2025-06-12
Roame contrata Engenheiro Full Stack Sênior para revolucionar viagens com pontos usando IA

A Roame, um motor de busca de voos que utiliza pontos e milhas de cartão de crédito, apoiada pela Y Combinator e outros grandes investidores, procura um Engenheiro Full Stack Sênior. Este cargo prático exige experiência com Next.js, Firebase e Go, e envolve a construção de toda a parte frontal e contribuição para a parte traseira. O candidato ideal é apaixonado por viagens, otimização de pontos e IA, e prospera em um ambiente de startup acelerado. A vaga oferece salário competitivo, participação nos lucros e benefícios, incluindo almoços gratuitos e viagens da empresa.

Desenvolvimento Pontos de Viagem

QEMU: Uma poderosa ferramenta de virtualização de código aberto

2025-06-12
QEMU: Uma poderosa ferramenta de virtualização de código aberto

O QEMU é um emulador e virtualizador de máquina genérico e de código aberto. Ele pode emular uma máquina completa em software sem precisar de suporte de virtualização de hardware, alcançando bom desempenho por meio de tradução dinâmica. O QEMU se integra aos hipervisores Xen e KVM, fornecendo hardware emulado enquanto permite que o hipervisor gerencie a CPU para desempenho próximo ao nativo. Ele permite executar sistemas operacionais criados para uma arquitetura em outra e oferece virtualização de API de espaço de usuário para executar binários compilados contra diferentes ABIs. O QEMU possui uma interface de linha de comando estável e API de monitoramento, integra-se a ferramentas como libvirt, oVirt, OpenStack e virt-manager e possui licença GPLv2. Documentação abrangente e uma comunidade vibrante garantem facilidade de uso e suporte.

Desenvolvimento

Resolvendo o Problema das Rainhas do LinkedIn com SMT: Mais Fácil que SAT!

2025-06-12
Resolvendo o Problema das Rainhas do LinkedIn com SMT: Mais Fácil que SAT!

Este artigo descreve como resolver o quebra-cabeça das 'Rainhas do LinkedIn' — uma variação do clássico problema das N-Rainhas com restrições regionais adicionais — usando o resolvedor SMT Z3. O autor demonstra que expressar o problema em SMT, utilizando variáveis ​​inteiras e restrições, é significativamente mais simples do que a formulação SAT equivalente, que requer muitas cláusulas booleanas. Embora os resolvedores SMT possam ser mais lentos do que os resolvedores SAT altamente otimizados como o Glucose, a facilidade de codificação torna o SMT preferível para muitos. A postagem inclui código completo e verificações de sanidade úteis para verificar a correção do modelo. Isso fornece uma explicação convincente para a preferência da indústria por ferramentas que compilam para SAT em vez de usar SAT diretamente.

Desenvolvimento resolvedor SMT

Imagens de disco ASIF do macOS Tahoe: Um salto de desempenho

2025-06-12
Imagens de disco ASIF do macOS Tahoe: Um salto de desempenho

O macOS Tahoe introduz o ASIF, um novo formato de imagem de disco que melhora dramaticamente o desempenho da máquina virtual. As imagens ASIF são independentes das capacidades do sistema de arquivos do host, atingindo velocidades quase nativas; por exemplo, em um MacBook Pro M3 Pro, volumes APFS não criptografados atingiram 5,8 GB/s de leitura e 6,6 GB/s de gravação. O ASIF oferece uma vantagem de velocidade enorme em comparação com as imagens UDSP anteriores e economiza espaço em disco. Atualmente, as imagens ASIF só podem ser criadas no Tahoe, mas funcionam no Sequoia. Espera-se que softwares de virtualização futuros suportem o ASIF, melhorando ainda mais o desempenho da VM.

Desenvolvimento

Tempos de compilação lentos do Rust: Uma análise aprofundada

2025-06-12

O loop de feedback lento e os longos tempos de compilação do Rust são reclamações frequentes. Este post de blog aprofunda os esforços da equipe do compilador Rust para melhorar a velocidade de compilação e os desafios que enfrentam. Embora a equipe faça progresso semanalmente, lidando com melhorias e regressões de desempenho, e tenha obtido ganhos significativos (por exemplo, quase dobrando a velocidade em um benchmark específico em três anos), a compilação quase instantânea permanece difícil de alcançar devido a obstáculos técnicos e priorização. Isso inclui a grande e complexa base de código do compilador, a necessidade de equilibrar várias compensações em otimizações, manter a estabilidade, adicionar novos recursos e o tempo e recursos limitados de colaboradores voluntários. O post conclui descrevendo direções futuras de melhoria, como otimizar fluxos de trabalho de compilação específicos e realizar refatoração em larga escala do compilador.

Desenvolvimento Desempenho do Compilador

Tornando-se um Engenheiro 10x com IA: Uma Mudança de Mentalidade

2025-06-12
Tornando-se um Engenheiro 10x com IA: Uma Mudança de Mentalidade

Este artigo detalha como o autor utiliza a IA para aumentar significativamente sua produtividade em engenharia de software. Em vez de ver a IA como uma mera geradora de código, ele a vê como um parceiro de engenharia altamente experiente. A chave é a engenharia de prompts eficaz para maximizar o potencial da IA. O autor enfatiza a importância de prompts bem elaborados e a necessidade de verificar o código gerado pela IA. Além da geração de código, a IA é usada para entender conceitos complexos e acelerar a aprendizagem. O autor incentiva os engenheiros a experimentar ativamente e aprender continuamente para se tornarem verdadeiramente nativos da IA.

Desenvolvimento

Google dificulta o desenvolvimento de ROMs personalizadas para telefones Pixel

2025-06-12
Google dificulta o desenvolvimento de ROMs personalizadas para telefones Pixel

O lançamento mais recente do AOSP do Android 16 do Google omite as árvores de dispositivos e os binários de driver para telefones Pixel, aumentando significativamente a dificuldade de construção de ROMs personalizadas. Embora o Google assegure que o AOSP não desaparecerá e esteja mudando para um dispositivo virtual chamado "Cuttlefish" como seu alvo de referência, os desenvolvedores agora precisam fazer engenharia reversa das alterações, adicionando complexidade. Isso afeta a comunidade de ROMs personalizadas, como LineageOS e GrapheneOS, exigindo que eles reconstruam as árvores de dispositivos do zero, aumentando substancialmente sua carga de trabalho. Apesar do Google afirmar que o AOSP não está sendo eliminado gradualmente, as alterações tornam mais difícil o suporte a dispositivos Pixel.

Desenvolvimento ROMs personalizadas

Geração de código de IA: precisão e confiança são essenciais

2025-06-12
Geração de código de IA: precisão e confiança são essenciais

Apenas 3,8% dos desenvolvedores relatam ter experimentado baixa alucinação e alta confiança no envio de código gerado por IA. Essas são as equipes que realmente se beneficiam da IA na produção. Eles confiam nas sugestões, enviam mais rápido e fecham o ciclo com feedback de alta qualidade. Entre esse grupo de baixa alucinação, aqueles que também se sentem confiantes (17%) relatam: 1,3 vezes maior probabilidade de ver ganhos na qualidade do código (44% vs. 35%); 2,5 vezes mais confiança no envio de código de IA (24% vs. 9%). Este é o grupo que consideramos o “ponto ideal” — e, dentro dele, mais da metade (53%) relata melhorias claras na qualidade do código. Isso sugere uma forte ligação entre precisão, qualidade e confiança. Quando os desenvolvedores veem menos erros e saída de maior qualidade, eles têm muito mais probabilidade de confiar na IA e usá-la na produção. Também vemos que baixas alucinações tornam os desenvolvedores 1,3 vezes mais propensos a dizer que a IA melhorou a qualidade do código (44% vs. 35% no geral). Ainda assim, a maioria dos desenvolvedores — mesmo aqueles com saída precisa — permanece hesitante. É aí que os controles de qualidade automatizados podem preencher a lacuna.

Desenvolvimento confiança do desenvolvedor

Ferramentas de Codificação de IA: Aumento de Produtividade, Déficit de Confiança

2025-06-12
Ferramentas de Codificação de IA: Aumento de Produtividade, Déficit de Confiança

Uma pesquisa da Qodo revela que, embora as ferramentas de codificação de IA aumentem significativamente a produtividade dos desenvolvedores, a confiança em seus resultados permanece baixa. Muitos desenvolvedores ainda revisam manualmente o código gerado por IA, anulando alguns ganhos de produtividade. A pesquisa descobriu que desenvolvedores experientes se beneficiam mais, enquanto a maioria vê melhorias moderadas, e alguns não conseguem usar efetivamente as ferramentas de IA. Embora cerca de 60% dos desenvolvedores relatem melhoria na qualidade do código com IA, 76% ainda não enviam código gerado por IA sem revisão humana. Os principais pedidos de melhoria dos desenvolvedores incluem melhor compreensão contextual, redução de alucinações e melhor qualidade do código. O CEO da Qodo sugere fornecer informações mais detalhadas aos modelos de IA — requisitos de produto, especificações, estilos de codificação — para melhorar a qualidade da saída.

Desenvolvimento

Conquistando a Procrastinação: De Notas Adesivas a Impressora Térmica

2025-06-12
Conquistando a Procrastinação: De Notas Adesivas a Impressora Térmica

O autor, atormentado pela procrastinação por anos, descobriu um sistema para aumentar a produtividade ao estudar os mecanismos de vício em videogames. Ele divide as tarefas em microtarefas (notas adesivas), amassa e descarta as concluídas em um pote para obter feedback imediato. Para melhorar a eficiência, ele integrou uma impressora térmica para listas de tarefas automatizadas, melhorando dramaticamente a consistência. Finalmente, ele desenvolveu um software para decompor tarefas horizontalmente para facilitar a impressão e o gerenciamento. Este sistema melhorou significativamente sua produtividade e oferece insights valiosos para outros que enfrentam dificuldades semelhantes.

Desenvolvimento impressora térmica

Notas de Aula de Computação Quântica do MIT 2022

2025-06-12

As notas de aula do curso de Computação Quântica (8.370/18.435) do outono de 2022 do professor Peter Shor, do MIT, estão disponíveis. As notas abrangem uma ampla gama de tópicos, desde conceitos fundamentais como superposição e evolução unitária até medição quântica, emaranhamento e algoritmos quânticos importantes, como os algoritmos de Deutsch-Jozsa, Simon, Shor e Grover. Tópicos avançados, incluindo códigos de correção de erros quânticos e protocolos de distribuição de chaves quânticas, também estão incluídos. Embora a Aula 26 esteja faltando, este recurso abrangente fornece uma base valiosa para aprender computação quântica.

Desenvolvimento informação quântica

Next.js 15.1+ Quebrado Fora do Vercel: Pesadelo de SEO e Falha de Segurança

2025-06-12

O Next.js 15.1 e versões posteriores estão seriamente quebrados fora das implantações do Vercel. O streaming de metadados do Vercel, destinado à otimização de desempenho, quebra o tratamento de metadados em plataformas que não são do Vercel, prejudicando o SEO. Os rastreadores de mecanismos de busca não conseguem ler os metadados gerados por JavaScript, e até mesmo builds estáticos exigem a execução de JavaScript para metadados. Além disso, a versão 15.1.8 contém uma vulnerabilidade de segurança crítica (CVE-2025-29927), corrigida apenas na versão 15.2.3. Este artigo aconselha fortemente contra o uso do Next.js 15.1+ e sugere considerar alternativas para evitar o travamento do Vercel e potenciais riscos de segurança.

Desenvolvimento
1 2 61 62 63 65 67 68 69 214 215