Category: Desenvolvimento

A Web Esquecida do Lado do Cliente: Por que Ninguém se Importa com Tempos de Carregamento Lento?

2025-08-23

Este artigo aborda a questão frequentemente ignorada das más experiências na web do lado do cliente. Embora os problemas do lado do servidor frequentemente dominem as discussões, o autor destaca a negligência consistente de tempos de carregamento lentos, interfaces de usuário desajeitadas e outras frustrações do lado do cliente. Usando a atualização recente do Github como exemplo, muitos usuários relatam baixo desempenho, mas os operadores de sites priorizam as preocupações do lado do servidor. O autor argumenta que os sites detêm poder significativo, deixando os usuários com boicotes como seu único recurso, que são amplamente ineficazes. Os sites geralmente carecem de medição eficaz da rotatividade de usuários, contribuindo para sua apatia em relação às experiências do lado do cliente. Por fim, o autor admite ter tomado decisões editoriais que podem afetar negativamente os usuários, mas as enquadra como um compromisso necessário.

Desenvolvimento lado do cliente

WebR: Executando R no seu navegador

2025-08-23

O projeto WebR compila a linguagem estatística R para WebAssembly, permitindo que ela seja executada diretamente em navegadores e Node.js sem a necessidade de um servidor R. Isso permite que os usuários executem código R localmente, com suporte para vários pacotes R portados. Embora a API esteja em desenvolvimento ativo e navegadores móveis possam impor limitações de memória, o WebR oferece uma maneira conveniente de realizar análise de dados diretamente no navegador.

Desenvolvimento

LibreOffice 25.8 abandona o suporte para Windows 7/8 e sistemas de 32 bits

2025-08-23
LibreOffice 25.8 abandona o suporte para Windows 7/8 e sistemas de 32 bits

O LibreOffice 25.8 chegou, trazendo melhorias de desempenho e novos recursos. No entanto, esta versão marca o fim do suporte para Windows 7, Windows 8/8.1 e Windows de 32 bits. Usuários nesses sistemas mais antigos precisam atualizar para continuar usando o LibreOffice. A atualização traz melhorias significativas em todo o pacote, incluindo hifenização aprimorada no Writer, novas funções no estilo Excel no Calc e recursos aprimorados de exportação de PDF.

Desenvolvimento Compatibilidade do Sistema

Bloqueio do Desenvolvedor: Estratégias Práticas para Superar Impasses na Codificação

2025-08-23

Desenvolvedores frequentemente experimentam o 'bloqueio do desenvolvedor', uma frustrante incapacidade de codificar. Este artigo explora dois cenários comuns: a paralisia de iniciar um novo projeto perfeitamente e a estagnação de trabalhar em projetos existentes. O perfeccionismo em novos projetos leva à superengenharia, enquanto os projetos existentes podem sofrer com falta de compreensão, esgotamento ou falta de motivação. O artigo oferece soluções práticas, como aprendizado incremental, reconhecimento da fadiga e pausas, desenvolvimento incremental, prototipagem, elaboração de documentação primeiro, evitar otimização prematura e lançar cedo e com frequência. Essas estratégias ajudam os desenvolvedores a superar bloqueios de codificação e aumentar a produtividade.

Desenvolvimento

FFmpeg 8.0 "Huffman" Lançado: Decodificação/Codificação Acelerada por Vulkan e Mais

2025-08-23

O FFmpeg 8.0 "Huffman" chegou! Após vários atrasos, esta versão principal oferece a maior atualização até agora. Ela introduz uma nova classe de decodificadores e codificadores baseados em computação pura Vulkan, com suporte para FFv1 e ProRes RAW (apenas decodificação). Isso permite melhorias significativas de velocidade em diversos hardwares, abrindo possibilidades para edição de vídeo não linear e gravação/streaming de tela sem perdas. A versão também inclui decodificadores nativos para APV, ProRes RAW, RealVideo 6.0 e mais, além de aprimoramentos de decodificação/codificação acelerada por hardware para Vulkan VP9, VAAPI VVC e OpenHarmony H264/5. Várias melhorias de formato e filtro completam esta atualização substancial.

Desenvolvimento Codec de Vídeo

DeepCode: Revolucionando a Geração de Código com Sistemas Multiagentes

2025-08-23
DeepCode: Revolucionando a Geração de Código com Sistemas Multiagentes

DeepCode é uma plataforma revolucionária de geração de código alimentada por IA que utiliza sistemas multiagentes para transformar artigos de pesquisa, descrições em linguagem natural e até URLs em código pronto para produção. Automatiza a implementação de algoritmos complexos, desenvolvimento front-end e back-end, reduzindo drasticamente o tempo de desenvolvimento. DeepCode consegue isso por meio de análise inteligente de documentos, planejamento de código, mineração de referências e muito mais, gerando, em última análise, código de alta qualidade, suítes de testes e documentação, aumentando significativamente a produtividade do desenvolvedor. Seu design modular e conjunto rico de ferramentas o tornam facilmente extensível e integrável em vários fluxos de trabalho de desenvolvimento.

ManimGL: O motor por trás das animações matemáticas do 3Blue1Brown

2025-08-23
ManimGL: O motor por trás das animações matemáticas do 3Blue1Brown

ManimGL é um poderoso motor para criar animações programáticas precisas, usado principalmente para vídeos de matemática explicativos. Originado como um projeto pessoal do criador do 3Blue1Brown, agora existe em duas versões: a original e uma edição mais estável, dirigida pela comunidade. Este guia se concentra na instalação e no uso do ManimGL, descrevendo os requisitos do sistema (Python 3.7+, FFmpeg, OpenGL, LaTeX opcional), comandos de instalação (`pip install manimgl`), sinalizadores úteis de linha de comando (-w, -o, -s, -so, -n, -f) e configuração personalizada (custom_config.yml). Recursos como documentação em chinês e informações de contribuição da comunidade também são fornecidos.

Devenv Simplifica o Empacotamento de Aplicações Rust no Nix

2025-08-23
Devenv Simplifica o Empacotamento de Aplicações Rust no Nix

O Devenv resolve o problema de escolher uma ferramenta de empacotamento de aplicativos Rust no Nix. Ele simplifica a configuração do ambiente de desenvolvimento com `languages.rust.enable`, fornecendo ferramentas como cargo e rustc. `languages.rust.import` usa o crate2nix para empacotar aplicativos, eliminando a necessidade de os desenvolvedores escolherem entre crate2nix, cargo2nix e outras ferramentas. Essa interface unificada se estende a outras linguagens, como Python usando uv2nix. O Devenv gera automaticamente expressões Nix, simplificando o empacotamento e a implantação de aplicativos Rust e melhorando a eficiência do desenvolvedor.

Desenvolvimento

Três dicas para superar problemas difíceis no desenvolvimento de software

2025-08-23
Três dicas para superar problemas difíceis no desenvolvimento de software

Superar problemas difíceis no desenvolvimento de software não é fácil. Este artigo sugere três dicas práticas: Primeiro, ouça ativamente as dificuldades de seus colegas de equipe e pergunte diretamente: "Por que isso é difícil?" Segundo, incentive a exploração profunda de soluções aparentemente impossíveis, investigando sua viabilidade em circunstâncias específicas. Mesmo que não seja adotado, esse processo gera novas ideias. Finalmente, projete várias soluções; mesmo que pareça demorado, uma compreensão mais profunda do problema fornece mais alavancagem para a implementação final. Em última análise, a compreensão coletiva é muito mais importante do que o próprio código.

Desenvolvimento

Dica de Gerenciamento: Agora, Juntos

2025-08-23
Dica de Gerenciamento: Agora, Juntos

Este artigo apresenta uma técnica de gerenciamento de equipe altamente eficaz chamada "Agora, Juntos". Quando uma tarefa de um engenheiro está atrasada, os gerentes podem usar o tempo de reunião individual para concluir a tarefa em conjunto com o engenheiro. Isso não apenas resolve problemas rapidamente, mas também descobre possíveis obstáculos, como falta de motivação, excesso de trabalho ou bloqueadores não detectados. Isso permite que os gerentes apoiem melhor os membros da equipe e melhorem a eficiência da equipe. O uso excessivo dessa técnica pode sinalizar problemas de gerenciamento maiores que requerem atenção adicional.

Desenvolvimento

De macOS para Arch Linux: A Jornada de um Desenvolvedor

2025-08-23
De macOS para Arch Linux: A Jornada de um Desenvolvedor

Um desenvolvedor trocou seu MacBook Pro M1 Max de cinco anos por um laptop Lenovo ThinkBook 14 G7 AMD econômico rodando Arch Linux (Omarchy). Após um mês, ele descobriu que o Linux, embora sem alguns recursos polidos do macOS (como ferramentas de captura de tela e backups), oferece personalização sem precedentes. Criando atalhos personalizados e configurando várias ferramentas, ele alcançou um fluxo de trabalho comparável, ou até superior, à sua experiência no macOS. Ele abraçou a liberdade de adaptar seu SO, aceitando alegremente os compromissos na duração da bateria e na refrigeração. Essa transição destacou a alegria de um sistema altamente personalizável.

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.

Desenvolvimento Patches de Código

PubSub e Registro com Segurança de Tipos para Atores Gleam

2025-08-23
PubSub e Registro com Segurança de Tipos para Atores Gleam

Glyn é uma biblioteca que fornece PubSub e registro com segurança de tipos para atores Gleam, com suporte para clusterização distribuída. Construído na biblioteca Erlang syn, ele oferece dois sistemas complementares de comunicação de atores: PubSub para transmissão de eventos e um registro para roteamento direto de comandos. O Glyn se integra perfeitamente ao modelo de ator do Gleam usando padrões de composição de seletores. Decodificadores explícitos são necessários para segurança de tipos ao enviar mensagens entre nós em um cluster. Os exemplos de código demonstram a definição de tipos de mensagens, a criação de decodificadores e o uso de PubSub e do registro para comunicação de atores. A integração de atores multicanal também é apresentada, permitindo cenários de comunicação mais complexos.

Desenvolvimento Ator

Top Secret: Uma Nova Ferramenta de Filtragem de Texto para Proteger Informações Sensíveis

2025-08-23
Top Secret: Uma Nova Ferramenta de Filtragem de Texto para Proteger Informações Sensíveis

Proteger informações sensíveis é crucial ao interagir com chatbots e LLMs. Top Secret é uma nova ferramenta que combina expressões regulares e Reconhecimento de Entidade Nomeada (NER) para filtrar efetivamente informações sensíveis, como informações de identificação pessoal e locais, de texto livre. Além de filtrar, o Top Secret gera um mapeamento para restaurar valores filtrados em respostas, garantindo a integridade da conversa sem comprometer dados sensíveis. Também funciona como uma ferramenta de validação de banco de dados, impedindo que informações sensíveis sejam armazenadas. O Top Secret oferece configuração flexível, permitindo que filtros sejam habilitados ou desabilitados conforme necessário.

Nitro: Um Supervisor de Processos Pequeno, Mas Flexível

2025-08-23

Nitro é um supervisor de processos leve que também pode ser usado como pid 1 no Linux. Projetado para sistemas embarcados, desktops, servidores e contêineres, ele é configurado por meio de um diretório de scripts. Seu estado na memória permite a operação em sistemas de arquivos raiz somente leitura. Eficiente e acionado por eventos, o Nitro possui alocação zero de memória em tempo de execução e suporta reinicialização confiável de serviços e cadeias de registro. Serviços parametrizados e controle remoto por meio da ferramenta `nitroctl` aumentam sua versatilidade.

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.

Desenvolvimento

Executando uma Área de Trabalho Linux Completa em um Contêiner Docker: Um Experimento Desafiador

2025-08-23
Executando uma Área de Trabalho Linux Completa em um Contêiner Docker: Um Experimento Desafiador

O autor tenta executar um ambiente de área de trabalho Linux completo dentro de um contêiner Docker, desafiando o uso convencional do Docker. Após uma tentativa inicial fracassada de construir uma imagem personalizada do zero, o autor muda para uma imagem pré-construída do Docker Hub e executa com sucesso um ambiente de área de trabalho XFCE. Embora encontre problemas como problemas de renderização de GPU e compatibilidade com Flatpak, o autor finalmente consegue executar uma área de trabalho Linux completa em um navegador. Além disso, o autor explora soluções como Webtop e Kasm Workspaces, descobrindo vantagens inesperadas, como acesso à área de trabalho remota, permitindo o acesso a uma área de trabalho de alto desempenho a partir de um dispositivo de baixa potência.

Desenvolvimento

Construindo Sites Web com XSL do Navegador: Sem Código do Lado do Servidor

2025-08-23
Construindo Sites Web com XSL do Navegador: Sem Código do Lado do Servidor

Este artigo demonstra como construir sites web usando o suporte XSL integrado dos navegadores, eliminando a necessidade de código do lado do servidor, geradores de sites estáticos ou JavaScript. Ao definir modelos em arquivos XML, o navegador renderiza tags personalizadas como HTML, criando um site com tema consistente. Exemplos avançados mostrando modelos com campos e modelos aninhados também são fornecidos.

Desenvolvimento

O Selvagem Oeste da Codificação com IA: Bugs, Explosões e o Futuro do Software

2025-08-22
O Selvagem Oeste da Codificação com IA: Bugs, Explosões e o Futuro do Software

A ascensão das ferramentas de codificação com IA aumentou dramaticamente a velocidade de desenvolvimento, mas também desencadeou uma enxurrada de bugs e vulnerabilidades de segurança. O autor relata uma experiência pessoal de 'codificação vibe', destacando o caos e os desafios. Embora a IA gere código rapidamente, sua confiabilidade questionável exige revisões de código mais rigorosas, testes e monitoramento. As empresas precisam investir fortemente em infraestrutura de CI/CD e adotar plataformas avançadas de análise de logs para gerenciar os riscos e colher os benefícios da revolução da IA no desenvolvimento de software. O futuro pertence àqueles que constroem salvaguardas robustas contra a natureza imprevisível do código gerado por IA.

Desenvolvimento

O Ciclo do Hype da IA: Esgotando Engenheiros e Esvaziando os Bolsos do VC

2025-08-22
O Ciclo do Hype da IA: Esgotando Engenheiros e Esvaziando os Bolsos do VC

Este artigo detalha como o uso excessivo de ferramentas de IA está levando ao esgotamento de engenheiros. Engenheiros juniores estão confiando excessivamente em LLMs, enviando códigos de baixa qualidade que exigem tempo significativo de revisão de engenheiros seniores, resultando em ineficiência. Isso não é isolado; muitas empresas cegamente perseguem a IA, levando ao desperdício de recursos e falhas de projetos. O autor pede uma parada na dependência excessiva de IA, um retorno aos fundamentos da engenharia de software e um foco no desenvolvimento de habilidades práticas dos engenheiros. O modelo de negócios atual de IA, fortemente dependente de financiamento de capital de risco e consumo de energia insustentável, não é sustentável a longo prazo.

Reparo: Como Bons Gerentes Aprendem com Erros

2025-08-22
Reparo: Como Bons Gerentes Aprendem com Erros

Gerentes cometem erros, isso é inevitável. Este artigo enfatiza a importância do "reparo", ou seja, reconhecer proativamente os erros, assumir a responsabilidade e compensar as falhas. Em vez de buscar a perfeição, concentre-se em reparar os relacionamentos com sua equipe. O autor usa anedotas pessoais e observações para ilustrar como reparar erros por meio de etapas específicas: ser específico sobre o erro, focar no impacto sobre os outros, mudar o comportamento e melhorar consistentemente. Em última análise, gerentes que são bons em reparos constroem uma confiança mais forte e melhoram o desempenho da equipe.

Desenvolvimento equipe

Uma Década de Reclamações sobre Go: Por que este Programador Ainda Odeia Go

2025-08-22

Uma crítica de dez anos de um programador sobre Go destaca várias falhas frustrantes. Os problemas incluem: escopo de variável de erro ilógico que leva a problemas de legibilidade e bugs; dois tipos de nil aumentando a complexidade; baixa portabilidade com compilação condicional desajeitada; comportamento imprevisível da função append; instruções defer inflexíveis para gerenciamento de recursos; a biblioteca padrão engolindo exceções; suporte insuficiente para codificação diferente de UTF-8; e gerenciamento de memória ineficiente. O autor argumenta que esses não são desafios técnicos, mas sim falhas de design fundamentais, afirmando que Go poderia ter sido muito superior.

Desenvolvimento

Ex-Desenvolvedor Preso por Sabotar Rede da Empresa com Interruptor de Desativação

2025-08-22
Ex-Desenvolvedor Preso por Sabotar Rede da Empresa com Interruptor de Desativação

Davis Lu, 55 anos, foi condenado a quatro anos de prisão por sabotar a rede Windows de seu antigo empregador. Após ser demitido, Lu ativou um código malicioso que ele havia secretamente embutido, causando falhas no sistema e bloqueando milhares de usuários por meio de um interruptor de desativação. Ele também excluiu dados criptografados de seu laptop da empresa. O ato resultou em perdas financeiras significativas para a empresa sediada em Ohio. Ele foi considerado culpado de danificar intencionalmente computadores protegidos e cumprirá três anos de liberdade condicional após sua sentença de prisão.

Desenvolvimento

O Caso Curioso do Comprimento de Emojis em JavaScript: UTF-8, UTF-16, UTF-32 e Clusters de Grafemas

2025-08-22

Este artigo aprofunda as discrepâncias no comprimento de strings de emojis em diferentes linguagens de programação. Por exemplo, em JavaScript "🤦🏼‍♂️".length é 7, enquanto em Python é 5 e em Rust, 17. Isso decorre de variações em como as linguagens manipulam a codificação de strings (UTF-16, UTF-8, etc.) e unidades de caracteres (valores escalares Unicode, clusters de grafemas estendidos, etc.). O autor argumenta que memorizar o comprimento na codificação nativa é razoável, mas outros comprimentos (como clusters de grafemas estendidos) devem ser calculados sob demanda para evitar sobrecarga de armazenamento desnecessária e problemas de sincronização. O artigo analisa ainda os prós e contras de diferentes esquemas de codificação, destacando as vantagens do UTF-8 em armazenamento e intercâmbio. Finalmente, aborda a questão de cotas de comprimento justas, demonstrando que não há uma maneira simples de medir de forma justa a densidade de informação em diferentes idiomas, ilustrando isso com traduções da Declaração Universal dos Direitos Humanos.

Desenvolvimento Codificação de Strings

Decodificando os inúmeros títulos de emprego em IA: Uma folha de dicas

2025-08-22
Decodificando os inúmeros títulos de emprego em IA: Uma folha de dicas

Navegar pela paisagem em constante evolução dos títulos de emprego em IA pode ser desafiador. Esta folha de dicas fornece uma estrutura para entender a terminologia muitas vezes confusa. Ao dividir títulos como "Engenheiro de IA Aplicada" e "Engenheiro de IA Desdobrado para Frente", o autor revela componentes comuns e explica o significado de modificadores (por exemplo, "Aplicado", "Desdobrado para Frente") e domínios (por exemplo, "ML", "IA Generativa"). A ambiguidade em torno do título "Pesquisador", que difere entre a academia e a indústria, é destacada, sugerindo que descrições de trabalho mais claras são necessárias. Este guia ajuda a decifrar os papéis de IA e oferece insights valiosos para a exploração de carreira.

Integração perfeita entre NetHack e o cliente de email Emacs mu4e

2025-08-22
Integração perfeita entre NetHack e o cliente de email Emacs mu4e

O autor, totalmente imerso em uma partida de NetHack, criou uma solução elegante para verificar emails sem interromper o jogo. Aproveitando a funcionalidade do daemon de email do NetHack, um script Python converte maildir para o formato mbox e verifica a hora de modificação do arquivo mbox. Novos emails acionam um script Bash que inicia o emacsclient, abrindo o mu4e e navegando diretamente para as mensagens não lidas. Essa integração engenhosa mostra as habilidades de resolução de problemas do autor e seu fluxo de trabalho eficiente.

Desenvolvimento

Text.ai: Engenheiro Full-Stack Fundador – Construa o Futuro da Comunicação Nativa de IA

2025-08-22
Text.ai: Engenheiro Full-Stack Fundador – Construa o Futuro da Comunicação Nativa de IA

A Text.ai, uma empresa nativa de IA voltada para o consumidor, está procurando um Engenheiro Full-Stack Fundador. Eles estão construindo uma plataforma de comunicação com tecnologia de IA que resolve o desafio de agradar várias pessoas simultaneamente em bate-papos em grupo. Isso envolve a criação de experiências de colaboração em grupo perfeita, usando IA para tarefas como planejamento de viagens e seleção de restaurantes. Apoiada pela Y Combinator, SV Angel e investidores da Shopify e Tencent, a equipe inclui fundadores da Tesla, Eventbrite, Amazon e McKinsey. A função exige 4+ anos de experiência em React Native, integração de backend (Python) e paixão por IA. Esta é uma chance de construir padrões inovadores de interação com IA e impactar milhões de usuários.

Desenvolvimento Aplicativo nativo de IA

Limitações da Aplicação de Sugestões de Código do GitHub: 12 Cenários que Você Pode Encontrar

2025-08-22
Limitações da Aplicação de Sugestões de Código do GitHub: 12 Cenários que Você Pode Encontrar

Esta nota concisa lista 12 limitações potenciais encontradas ao aplicar sugestões de código no GitHub, como nenhuma alteração de código feita, pull request fechado, visualização de um subconjunto de alterações, apenas uma sugestão por linha, aplicação em linhas excluídas, sugestão já aplicada ou marcada como resolvida, e muito mais. Essas limitações são projetadas para manter a integridade da base de código e a eficiência do processo de revisão.

Desenvolvimento

A Mudança de Paradigma no Desenvolvimento de Produtos de IA: Do Determinismo à Probabilidade

2025-08-22
A Mudança de Paradigma no Desenvolvimento de Produtos de IA: Do Determinismo à Probabilidade

Este artigo explora como a inteligência artificial de propósito geral (AGI) está perturbando a indústria de tecnologia, particularmente no design de software, engenharia, construção e crescimento. O desenvolvimento de software tradicional segue um modelo determinístico: entradas conhecidas produzem saídas esperadas. No entanto, os modelos AGI são probabilísticos, com saídas baseadas em distribuições estatísticas e incerteza inerente. Isso torna obsoletos os métodos e métricas tradicionais de engenharia de software (como SLOs). O autor defende uma abordagem empírica, usando métodos científicos e tomada de decisões baseadas em dados para construir e iterar produtos de IA, em vez de depender do pensamento de engenharia tradicional. Isso exige que as organizações transitem da engenharia para a ciência, centralizando-se nos dados e quebrando os silos departamentais para uma visão holística de sistemas.

Desenvolvimento

Desvendando o SVG `<path>`: Dominando a Arte do Desenho de Curvas

2025-08-22
Desvendando o SVG `<path>`: Dominando a Arte do Desenho de Curvas

Esta postagem de blog fornece um guia abrangente sobre o elemento SVG ``, uma ferramenta poderosa para criar formas curvas complexas. Ele descreve os comandos - M, L, Q, C e o infame A (arco) - explicando seus parâmetros e funcionalidades com exemplos claros e analogias perspicazes. O autor aborda as complexidades do comando de arco, esclarecendo seus aspectos frequentemente confusos. A postagem também cobre o comando Z, comandos relativos e dicas práticas, como suavizar curvas de Bézier em cadeia. Uma leitura obrigatória para desenvolvedores web de todos os níveis.

Desenvolvimento desenho de curvas
1 2 3 4 5 7 9 10 11 198 199