<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Robson Cassiano</title>
    <description>The latest articles on DEV Community by Robson Cassiano (@robsoncassiano-software).</description>
    <link>https://dev.to/robsoncassiano-software</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F133171%2Fd3b705c2-c5c2-434f-88cb-2a31d4a04524.png</url>
      <title>DEV Community: Robson Cassiano</title>
      <link>https://dev.to/robsoncassiano-software</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/robsoncassiano-software"/>
    <language>en</language>
    <item>
      <title>Simulador do Setun, o computador Soviético Ternário Balanceado</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sun, 19 Oct 2025 02:41:26 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/simulador-do-setun-o-computador-sovietico-ternario-balanceado-3j7b</link>
      <guid>https://dev.to/robsoncassiano-software/simulador-do-setun-o-computador-sovietico-ternario-balanceado-3j7b</guid>
      <description>&lt;p&gt;Sou Robson Cassiano e, neste post, apresento o trabalho que venho desenvolvendo sobre computação ternária balanceada — tanto a parte histórica quanto um simulador prático que criei em JavaScript.&lt;/p&gt;

&lt;p&gt;A ideia é explorar uma alternativa ao paradigma binário que domina a computação moderna: usar trits (−1, 0, +1) em vez de bits (0, 1).&lt;/p&gt;

&lt;p&gt;Se você quer entender como funcionava o primeiro computador ternário soviético e experimentar um simulador didático, siga comigo.&lt;/p&gt;

&lt;p&gt;Abaixo a live com a demonstração pratica do Simulador Setun.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/NuAWG3BX-GM"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;Por que pensar além do binário?&lt;/p&gt;

&lt;p&gt;O binário é dominante por conveniência histórica: transistores, no início, apresentavam dois estados bem definidos (alto/baixo), então 0 e 1 foram a escolha natural. Mas isso não significa que seja a melhor base para computação em todos os aspectos. A base 3 balanceada — o ternário balanceado — resolve limitações físicas e matemáticas do sistema binário em várias situações.&lt;/p&gt;

&lt;p&gt;Em termos simples: o ternário balanceado usa três valores (−1, 0, +1). O binário é um subconjunto desse conjunto (0 e 1 aparecem nele), o que facilita interoperabilidade. Existem várias vantagens teóricas documentadas, inclusive em uma tese do meu orientador de doutorado, Dr. Steven Boss.&lt;/p&gt;

&lt;p&gt;Vantagens práticas e matemáticas&lt;/p&gt;

&lt;p&gt;Representação mais compacta: com o ternário balanceado consegue-se representar números inteiros com menos dígitos do que no binário — economias na ordem de ~16% no número de casas em exemplos práticos.&lt;/p&gt;

&lt;p&gt;Negativos nativos: a sinalização de números negativos é simples (inversão de posições), sem necessidade de artifícios complexos como complemento de dois.&lt;/p&gt;

&lt;p&gt;Proximidade com constantes matemáticas: a base 3 está, matematicamente, mais próxima de certas constantes (por exemplo, a constante de Euler) do que outras bases comuns — há demonstrações formais sobre eficiência de representação.&lt;/p&gt;

&lt;p&gt;Compatibilidade com computação quântica: há trabalhos sobre q-trits (qubits generalizados para três níveis) que mostram potencial teórico superior ao uso exclusivo de qubits binários em alguns contextos.&lt;/p&gt;

&lt;p&gt;História resumida: o Setun (o computador ternário soviético)&lt;/p&gt;

&lt;p&gt;Na década de 1950 existiu, na antiga União Soviética, um computador ternário balanceado que marcou a história — o Setun. Foi uma CPU ternária real, mas o desenvolvimento foi interrompido por razões políticas na época. Apesar disso, o Setun deixou uma base histórica que mostra que a ideia de computação ternária é viável.&lt;/p&gt;

&lt;p&gt;O simulador: objetivo e funcionamento&lt;/p&gt;

&lt;p&gt;Desenvolvi um simulador do Setun em JavaScript que roda no navegador. É um simulador (não um emulador): ele reproduz o comportamento, a interface e as operações de um computador ternário da década de 1950 de forma didática, permitindo entender como as instruções e os registradores funcionavam.&lt;/p&gt;

&lt;p&gt;Onde testar&lt;/p&gt;

&lt;p&gt;Simulador do Setun: &lt;a href="https://tryquetra.github.io/setun-online-simulator/?lang=us" rel="noopener noreferrer"&gt;https://tryquetra.github.io/setun-online-simulator/?lang=us&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repositório GitHub (simulador e conversores): &lt;a href="https://github.com/Tryquetra/setun-online-simulator" rel="noopener noreferrer"&gt;https://github.com/Tryquetra/setun-online-simulator&lt;/a&gt; (o repositório está configurado para GitHub Pages)&lt;/p&gt;

&lt;p&gt;Componentes do simulador e arquitetura&lt;/p&gt;

&lt;p&gt;O simulador replica vários elementos clássicos do Setun e acrescenta ferramentas didáticas. Entre os componentes:&lt;/p&gt;

&lt;p&gt;Fitas (tape): originalmente havia fita perfurada física. No simulador há duas fitas virtuais: uma para o programa (FT1) e outra para dados (FT2). Na prática atual do simulador, uso principalmente a fita de programa; a fita de dados é uma feature a implementar.&lt;/p&gt;

&lt;p&gt;Registradores: o registrador S (somador) no topo e um registrador auxiliar para multiplicação (multiplicando) na parte inferior. A parte superior cuida de adições; a inferior serve como registrador auxiliar quando há multiplicação.&lt;/p&gt;

&lt;p&gt;Omega (ômega): um indicador que mostra se o valor no registrador é positivo, negativo ou zero — crucial para instruções que dependem do sinal.&lt;/p&gt;

&lt;p&gt;Contador de comandos (Program Counter): conta a posição na fita (como numa máquina de Turing), indicando qual instrução está sendo executada.&lt;/p&gt;

&lt;p&gt;Modificador: uma funcionalidade presente nas especificações históricas do Setun; no simulador ainda não está explorada completamente.&lt;/p&gt;

&lt;p&gt;Zona MB (memória de tambor): análogo ao HD/ram da época; era usado um tambor magnético para persistência. No simulador, o armazenamento persistente ainda é um alvo de implementação futura.&lt;/p&gt;

&lt;p&gt;Console / impressora: nos computadores antigos havia uma impressora de papel; no simulador isso é representado por um console que registra saídas (como um log).&lt;/p&gt;

&lt;p&gt;Interface e instruções&lt;/p&gt;

&lt;p&gt;No Setun as instruções eram codificadas em trits.&lt;/p&gt;

&lt;p&gt;O simulador usa os três primeiros trits para representar a instrução (a ISA). &lt;/p&gt;

&lt;p&gt;O resto do campo pode conter operandos e endereços — partes que ainda estou expandindo no simulador.&lt;/p&gt;

&lt;p&gt;Exemplo de instrução didática usada no demo: o código ternário para adição apareceu como “+ 0 +“ (mais, zero, mais), onde “+” é +1, “0” é 0 e “−” é −1. Após carregar a fita do programa, é possível executar passo a passo (debug) e ver os registradores mudarem de estado.&lt;/p&gt;

&lt;p&gt;Demonstração prática do simulador&lt;/p&gt;

&lt;p&gt;Carregar programa no campo FT1T e clicar em “carregar programa”.&lt;/p&gt;

&lt;p&gt;O simulador leu três instruções (no exemplo uma delas era comentário, outra instrução e a última era “parar”).&lt;/p&gt;

&lt;p&gt;Executar passo a passo com o botão “passo” para observar o Program Counter, transferências para S (somador) e operações aritméticas em ternário.&lt;/p&gt;

&lt;p&gt;Exemplo do demo: carreguei o valor 10 (representado em ternário balanceado) no registrador S, somei −2 e o resultado final foi 8, exatamente como esperado.&lt;/p&gt;

&lt;p&gt;Ferramentas didáticas integradas&lt;/p&gt;

&lt;p&gt;Para ajudar o entendimento, implementei:&lt;/p&gt;

&lt;p&gt;Um conversor de bases (ternário balanceado ↔ decimal ↔ binário etc.).&lt;/p&gt;

&lt;p&gt;Um ábaco ternário balanceado inspirado no Soroban (ábaco japonês) para visualizar colunas de 3^0, 3^1, 3^2, ... — útil para ver por que 1, 3, 9, 27, 81 ... cresce mais rápido em termos de densidade de informação que o binário 1, 2, 4, 8 ...&lt;/p&gt;

&lt;p&gt;Botão de inverter sinal (inverte rapidamente um número para seu negativo), mostrando que numa arquitetura ternária balanceada inverter sinal é uma operação simples e rápida.&lt;/p&gt;

&lt;p&gt;Relação com computação quântica&lt;/p&gt;

&lt;p&gt;O qubit é um estado entre 0 e 1; analogamente, existe o conceito de q-trit (qutrit), que usa três níveis. Estudos indicam que q-trits podem ser mais eficientes em certas operações. Em resumo: computação ternária clássica e computação quântica com trits podem ser complementares — teoricamente há vantagens ao considerar três níveis em vez de dois.&lt;/p&gt;

&lt;p&gt;Se você se interessa pelo fundamento teórico, recomendo a tese do Dr. Steven Boss — meu orientador — que aborda as vantagens matemáticas e lógicas do ternário balanceado. Eu li praticamente toda a tese e vou continuar estudando as referências e bibliografia ao longo dos próximos anos.&lt;/p&gt;

&lt;p&gt;Próximos passos e plano de longo prazo&lt;/p&gt;

&lt;p&gt;Minha ideia para este ano e o próximo é explorar ao máximo o conceito de computação ternária balanceada:&lt;/p&gt;

&lt;p&gt;Criar uma empresa dedicada a construir hardware ternário balanceado para CPU/GPU quando houver viabilidade de mercado.&lt;/p&gt;




&lt;p&gt;Adquira clareza e previsibilidade com os processos internacionais que pagam em dólar 👉 &lt;a href="https://robsoncassiano.software/descomplica-dev-na-gringa-hotmart" rel="noopener noreferrer"&gt;https://robsoncassiano.software/descomplica-dev-na-gringa-hotmart&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;P.S. Método baseado em dados, evidências e provas. Tudo real, auditável e replicável.&lt;/p&gt;

&lt;p&gt;Montar uma fundação (no modelo da Free Software Foundation) para a parte teórica: especificação de instruções, ISA e padrões abertos.&lt;/p&gt;

&lt;p&gt;Desenvolver o hardware e empurrar uma implementação prática para o mercado.&lt;/p&gt;

&lt;p&gt;Chamado à comunidade&lt;/p&gt;

&lt;p&gt;Este projeto é bastante nichado, mas estou aberto a contribuições e sugestões para o simulador. Se você tem interesse em arquitetura alternativa, teoria de computadores, computação quântica com trits, ou quer contribuir no GitHub, sua ajuda é bem-vinda.&lt;/p&gt;

&lt;p&gt;Repositório do simulador: &lt;a href="https://github.com/randintn/setun-simulator" rel="noopener noreferrer"&gt;https://github.com/randintn/setun-simulator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simulador online (GitHub Pages): &lt;a href="https://randintn.github.io/setun-simulator/?lang=pt-br" rel="noopener noreferrer"&gt;https://randintn.github.io/setun-simulator/?lang=pt-br&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusão&lt;/p&gt;

&lt;p&gt;O ternário balanceado não é apenas uma curiosidade histórica: tem fundamentação teórica sólida, experimentos e demonstrações, e até patentes modernas que exploram ideias similares. Com ferramentas didáticas é possível entender de forma prática como uma CPU ternária funciona e por que o ternário pode ser mais eficiente em certas aplicações.&lt;/p&gt;

&lt;p&gt;O Setun Simulator é uma ponte entre a história e um futuro possível. Se você gostou desse assunto, acompanhe as novidades — vou publicar avanços do simulador, melhorias na ISA, suporte à fita de dados, operações de subtração, multiplicação e, futuramente, implementações mais completas da arquitetura ternária balanceada.&lt;/p&gt;

&lt;p&gt;“O binário é um subconjunto do ternário; o ternário balanceado permite representar mais com menos.”&lt;/p&gt;

&lt;p&gt;Obrigado pela leitura — e, se estiver curioso, experimente o simulador e contribua no GitHub.&lt;/p&gt;

</description>
      <category>ternary</category>
      <category>simulator</category>
      <category>setun</category>
    </item>
    <item>
      <title>O Programador Que Só Pensa em Código Está Fadado à Irrelevância?</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Tue, 18 Feb 2025 13:50:20 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/o-programador-que-so-pensa-em-codigo-esta-fadado-a-irrelevancia-4njn</link>
      <guid>https://dev.to/robsoncassiano-software/o-programador-que-so-pensa-em-codigo-esta-fadado-a-irrelevancia-4njn</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp0fri7us52e96ubqfkm5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp0fri7us52e96ubqfkm5.jpg" alt="Alienação Técnica" width="720" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Muitos desenvolvedores entram na área apaixonados por código, buscando sempre escrever a solução mais otimizada, a arquitetura mais elegante ou o design de software mais sofisticado.&lt;/p&gt;

&lt;p&gt;No entanto, a realidade do mercado é dura: se o código não resolve um problema de negócio e não gera valor, ele não passa de um exercício acadêmico(remunerado pelo mercado) ou um projeto de hobby.&lt;/p&gt;

&lt;p&gt;Código Bonito vs. Código Útil&lt;/p&gt;

&lt;p&gt;O mundo real não recompensa código perfeito.&lt;/p&gt;

&lt;p&gt;Ele recompensa soluções eficientes para problemas reais. &lt;/p&gt;

&lt;p&gt;Isso não significa que boas práticas não importam, mas um desenvolvedor que só pensa em código e ignora o impacto que ele tem no negócio corre um sério risco de se tornar irrelevante.&lt;/p&gt;

&lt;p&gt;Aqui estão alguns sinais de que um programador está caindo nessa armadilha:&lt;/p&gt;

&lt;p&gt;✔️ Refatora compulsivamente código funcional sem um motivo claro.&lt;/p&gt;

&lt;p&gt;✔️ Ignora prazos e necessidades comerciais em prol de uma solução mais "elegante".&lt;/p&gt;

&lt;p&gt;✔️ Despreza regras de negócio, tratando-as como meros obstáculos técnicos.&lt;/p&gt;

&lt;p&gt;✔️ Não se comunica com áreas estratégicas da empresa, como produto e vendas.&lt;/p&gt;

&lt;p&gt;Negócio Primeiro, Código Depois&lt;/p&gt;

&lt;p&gt;No fim das contas, programação é uma ferramenta, não um fim em si mesmo. &lt;/p&gt;

&lt;p&gt;Quem domina apenas a parte técnica, mas não entende a lógica do negócio, acaba se tornando um executor de tarefas e não um profissional estratégico.&lt;/p&gt;

&lt;p&gt;Quem sobrevive na indústria?&lt;/p&gt;

&lt;p&gt;🔹 Os que sabem alinhar tecnologia e valor comercial.&lt;/p&gt;

&lt;p&gt;🔹 Os que entendem as dores dos clientes e do mercado.&lt;/p&gt;

&lt;p&gt;🔹 Os que resolvem problemas de forma pragmática, não apenas idealista.&lt;/p&gt;

&lt;p&gt;O programador que quer ter um impacto real precisa sair da bolha técnica e enxergar o código como um meio para gerar resultados, não como o objetivo final.&lt;/p&gt;

&lt;p&gt;P.S. A headline e a escolha da imagem foram minhas, o resto foi o Gepeto, mas até que pra uma IA ficou bom.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>carreira</category>
      <category>bolhadev</category>
    </item>
    <item>
      <title>The Best Productivity Tool for Using a Computer</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sat, 18 Nov 2023 21:51:24 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/the-best-productivity-tool-for-using-a-computer-7jd</link>
      <guid>https://dev.to/robsoncassiano-software/the-best-productivity-tool-for-using-a-computer-7jd</guid>
      <description>&lt;p&gt;The best productivity tool for using a computer is a clipboard manager, a program that &lt;strong&gt;locally stores&lt;/strong&gt; everything you copy with control + c.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;The clipboard is an essential tool for any computer user. It allows you to copy and paste text, images, and other data from one application to another. However, the clipboard has a limitation: it can only store one thing at a time.&lt;/p&gt;

&lt;p&gt;This can be a problem if you're working on a project that requires copying multiple items from the clipboard. For example, if you're writing an article and need to copy a block of text from a website, an image from a document, and a link from a web page, you'll need to paste each item one at a time. This can be a time-consuming and frustrating process.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;One way to solve this problem is by using a clipboard manager. A clipboard manager is a tool that stores all the items you copy to the clipboard. This means you can copy as many items as you want and paste them whenever you want.&lt;/p&gt;

&lt;p&gt;There are many clipboard managers available, but one of the most popular ones is Ditto. Ditto is a free and open-source clipboard manager that is easy to use. It allows you to store up to 100 items on the clipboard, and you can organize items into folders.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5d17ygh2jjflcoj9xuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5d17ygh2jjflcoj9xuf.png" alt="An image of a clipboard manager" width="301" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some advantages of using a clipboard manager:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Productivity:&lt;/strong&gt; A clipboard manager can help you be more productive when working on projects that require copying multiple items from the clipboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Convenience:&lt;/strong&gt; A clipboard manager makes it easier to copy and paste items from the clipboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organization:&lt;/strong&gt; A clipboard manager allows you to organize clipboard items into folders.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Tool
&lt;/h3&gt;

&lt;p&gt;If you're looking for a way to enhance your productivity when using a computer, a clipboard manager is a great option. Ditto is an excellent tool to start with because it's free, easy to use, and offers many features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips
&lt;/h3&gt;

&lt;p&gt;Here are some tips for using a clipboard manager:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assign a keyboard shortcut to the clipboard manager. This will make it easier to open the clipboard manager when you need it.&lt;/li&gt;
&lt;li&gt;Organize clipboard items into folders. This will help you quickly find the items you need.&lt;/li&gt;
&lt;li&gt;Use the search features of the clipboard manager. This can help you find specific items in the clipboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With a little practice, you'll be using a clipboard manager like a pro in no time.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tools</category>
      <category>clipboard</category>
    </item>
    <item>
      <title>A melhor ferramenta de produtividade para usar um computador</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sat, 18 Nov 2023 21:47:19 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/a-melhor-ferramenta-de-produtividade-para-usar-um-computador-12jj</link>
      <guid>https://dev.to/robsoncassiano-software/a-melhor-ferramenta-de-produtividade-para-usar-um-computador-12jj</guid>
      <description>&lt;p&gt;A melhor ferramenta de produtividade para usar um computador é um gerenciador de área de transferência, ou seja, um programa que guarda &lt;strong&gt;apenas localmente&lt;/strong&gt; tudo que você copia com control + c.&lt;/p&gt;

&lt;h3&gt;
  
  
  O problema
&lt;/h3&gt;

&lt;p&gt;O clipboard é uma ferramenta essencial para qualquer usuário de computador. Ele permite que você copie e cole texto, imagens e outros dados de um aplicativo para outro. No entanto, o clipboard tem uma limitação: ele só pode armazenar uma coisa por vez.&lt;/p&gt;

&lt;p&gt;Isso pode ser um problema se você estiver trabalhando em um projeto que requer a cópia de vários itens do clipboard. Por exemplo, se você estiver escrevendo um artigo e precisar copiar um bloco de texto de um site, uma imagem de um documento e um link de uma página da web, você precisará colar cada item um de cada vez. Isso pode ser um processo demorado e frustrante.&lt;/p&gt;

&lt;h3&gt;
  
  
  A solução
&lt;/h3&gt;

&lt;p&gt;Uma maneira de resolver esse problema é usar um gerenciador de clipboard. Um gerenciador de clipboard é uma ferramenta que armazena todos os itens que você copia no clipboard. Isso significa que você pode copiar quantos itens quiser e colá-los quando quiser.&lt;/p&gt;

&lt;p&gt;Existem muitos gerenciadores de clipboard disponíveis, mas um dos mais populares é o Ditto. O Ditto é um gerenciador de clipboard gratuito e de código aberto que é fácil de usar. Ele permite que você armazene até 100 itens no clipboard, e você pode organizar os itens em pastas.&lt;/p&gt;

&lt;p&gt;Aqui estão algumas das vantagens de usar um gerenciador de clipboard:&lt;/p&gt;

&lt;p&gt;Produtividade: Um gerenciador de clipboard pode ajudá-lo a ser mais produtivo ao trabalhar em projetos que requerem a cópia de vários itens do clipboard.&lt;br&gt;
Conveniência: Um gerenciador de clipboard torna mais fácil copiar e colar itens do clipboard.&lt;br&gt;
Organização: Um gerenciador de clipboard permite que você organize os itens do clipboard em pastas.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Ferramenta
&lt;/h3&gt;

&lt;p&gt;Se você está procurando uma maneira de melhorar sua produtividade ao usar um computador, um gerenciador de clipboard é uma ótima opção. &lt;br&gt;
O Ditto é uma ótima ferramenta para começar, pois é gratuita, fácil de usar e oferece muitos recursos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dicas
&lt;/h3&gt;

&lt;p&gt;Aqui estão algumas dicas para usar um gerenciador de clipboard:&lt;/p&gt;

&lt;p&gt;Atribua um atalho de teclado ao gerenciador de clipboard. Isso tornará mais fácil abrir o gerenciador de clipboard quando você precisar.&lt;/p&gt;

&lt;p&gt;Organize os itens do clipboard em pastas. Isso ajudará você a encontrar os itens que precisa rapidamente.&lt;br&gt;
Use os recursos de pesquisa do gerenciador de clipboard. Isso pode ajudá-lo a encontrar itens específicos no clipboard.&lt;/p&gt;

&lt;p&gt;Com um pouco de prática, você estará usando um gerenciador de clipboard como um profissional em pouco tempo.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>produtividade</category>
      <category>ditto</category>
      <category>ferramentas</category>
      <category>clipboard</category>
    </item>
    <item>
      <title>What is a REST API?</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sat, 18 Nov 2023 21:30:25 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/what-is-a-rest-api-22i7</link>
      <guid>https://dev.to/robsoncassiano-software/what-is-a-rest-api-22i7</guid>
      <description>&lt;p&gt;A REST API (Representational State Transfer) is an application programming interface (API) that follows a set of architectural constraints. These constraints define how resources are represented, how requests are made, and how responses are returned.&lt;/p&gt;

&lt;p&gt;REST APIs are commonly used to connect different web applications. For example, an e-commerce application may use a REST API to connect to a payment service to process transactions.&lt;/p&gt;

&lt;p&gt;Video for Portuguese speakers:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/F9n1N8ThpF0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources and URIs
&lt;/h3&gt;

&lt;p&gt;The central concept of a REST API is the resource. A resource is an object or entity that can be manipulated through the API. For example, a resource could be a product, a user, or a transaction.&lt;/p&gt;

&lt;p&gt;Each resource is identified by a URI (Uniform Resource Identifier). A URI is an address that identifies a resource on the web. For example, the URI /products/1 could identify a specific product.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTP Methods
&lt;/h3&gt;

&lt;p&gt;REST APIs use HTTP methods to perform operations on resources. The most common HTTP methods are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GET:&lt;/strong&gt; Retrieve information about a resource.&lt;br&gt;
&lt;strong&gt;POST:&lt;/strong&gt; Create a new resource.&lt;br&gt;
&lt;strong&gt;PUT:&lt;/strong&gt; Update an existing resource.&lt;br&gt;
&lt;strong&gt;DELETE:&lt;/strong&gt; Delete an existing resource.&lt;br&gt;
&lt;strong&gt;HEAD:&lt;/strong&gt; Useful for retrieving only the header of the request and saving data.&lt;/p&gt;
&lt;h3&gt;
  
  
  Representation of Resources
&lt;/h3&gt;

&lt;p&gt;Responses from a REST API are typically represented in JSON or XML. JSON is a human-readable text format that is easy to serialize and deserialize. XML is a more structured text format that is more suitable for describing complex data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Most Web APIs today respond in JSON&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;JSON is the most commonly used resource representation format in Web APIs. This is because JSON is easy to understand and work with, both for humans and machines.&lt;/p&gt;

&lt;p&gt;JSON is also a lightweight format, making it ideal for mobile applications and devices with limited resources.&lt;/p&gt;

&lt;p&gt;Example JSON representing bank customer data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"John Silva"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"cpf"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123.456.789-00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"date_of_birth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1980-01-01"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"address"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"zip_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"12345-678"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"street"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Flower Street"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"number"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"complement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Apt 101"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"neighborhood"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Downtown"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"city"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"São Paulo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"state"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SP"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"accounts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"number"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1234567890&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"checking"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"balance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1000.00&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"number"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9876543210&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"savings"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"balance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;500.00&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;REST APIs are a powerful tool that can be used to connect different web applications. They are easy to use and implement, and widely used on the web.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>rest</category>
      <category>web</category>
      <category>json</category>
    </item>
    <item>
      <title>O que é API REST? Entenda de uma vez por todas.</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sat, 18 Nov 2023 21:25:45 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/o-que-e-api-rest-entenda-de-uma-vez-por-todas-599g</link>
      <guid>https://dev.to/robsoncassiano-software/o-que-e-api-rest-entenda-de-uma-vez-por-todas-599g</guid>
      <description>&lt;p&gt;Uma API REST (Representational State Transfer) é uma interface de programação de aplicações (API) que segue um conjunto de restrições de arquitetura. Essas restrições definem como os recursos são representados, como as solicitações são feitas e como as respostas são retornadas.&lt;/p&gt;

&lt;p&gt;As APIs REST são comumente usadas para conectar aplicações web diferentes. Por exemplo, um aplicativo de e-commerce pode usar uma API REST para se conectar a um serviço de pagamento para processar transações.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/F9n1N8ThpF0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Recursos e URIs
&lt;/h3&gt;

&lt;p&gt;O conceito central de uma API REST é o recurso. Um recurso é um objeto ou entidade que pode ser manipulado por meio da API. Por exemplo, um recurso pode ser um produto, um usuário ou uma transação.&lt;/p&gt;

&lt;p&gt;Cada recurso é identificado por um URI (Uniform Resource Identifier). Um URI é um endereço que identifica um recurso na web. Por exemplo, o URI /produtos/1 pode identificar um produto específico.&lt;/p&gt;

&lt;h3&gt;
  
  
  Métodos HTTP
&lt;/h3&gt;

&lt;p&gt;As APIs REST usam os métodos HTTP para realizar operações em recursos. Os métodos HTTP mais comuns são:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GET:&lt;/strong&gt; Obter informações sobre um recurso.&lt;br&gt;
&lt;strong&gt;POST:&lt;/strong&gt; Criar um novo recurso.&lt;br&gt;
&lt;strong&gt;PUT:&lt;/strong&gt; Atualizar um recurso existente.&lt;br&gt;
&lt;strong&gt;DELETE:&lt;/strong&gt; Excluir um recurso existente.&lt;br&gt;
&lt;strong&gt;HEAD:&lt;/strong&gt; Util para obter apenas o cabeçalho da requisição e economizar dados.&lt;/p&gt;
&lt;h3&gt;
  
  
  Representação de recursos
&lt;/h3&gt;

&lt;p&gt;As respostas de uma API REST são geralmente representadas em JSON ou XML. JSON é um formato de texto legível por humanos que é fácil de serializar e desserializar. XML é um formato de texto mais estruturado que é mais adequado para descrever dados complexos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A maioria das APIs Web hoje respondem em JSON&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;JSON é o formato de representação de recursos mais comumente usado nas APIs Web. Isso ocorre porque JSON é fácil de entender e trabalhar, tanto para humanos quanto para máquinas.&lt;/p&gt;

&lt;p&gt;JSON também é um formato leve, o que o torna ideal para aplicativos móveis e dispositivos com recursos limitados.&lt;/p&gt;

&lt;p&gt;Exemplo de JSON que representa os dados de um cliente bancário:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"nome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"João da Silva"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"cpf"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123.456.789-00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data_nascimento"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1980-01-01"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"endereco"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cep"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"12345-678"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"logradouro"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Rua das Flores"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"numero"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"complemento"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Apto 101"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"bairro"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Centro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cidade"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"São Paulo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"estado"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SP"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"contas"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"numero"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1234567890&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"tipo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"corrente"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"saldo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1000.00&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"numero"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9876543210&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"tipo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"poupança"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"saldo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;500.00&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;As APIs REST são uma ferramenta poderosa que pode ser usada para conectar aplicações web diferentes. Elas são fáceis de usar e implementar, e são amplamente utilizadas na web.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>rest</category>
      <category>json</category>
      <category>web</category>
    </item>
    <item>
      <title>A exceção é o exemplo do burro</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sun, 05 Nov 2023 17:54:06 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/a-excecao-e-o-exemplo-do-burro-4bkd</link>
      <guid>https://dev.to/robsoncassiano-software/a-excecao-e-o-exemplo-do-burro-4bkd</guid>
      <description>&lt;h1&gt;
  
  
  ViaDeRegra
&lt;/h1&gt;

&lt;p&gt;Citar situações fora da curva, de exceção, que raramente ocorrem ou que são irrelevantes é burrice em qualquer debate ou conversa séria.&lt;/p&gt;

&lt;h1&gt;
  
  
  A Regra dos Números Naturais Consecutivos
&lt;/h1&gt;

&lt;p&gt;Na matemática, como em muitas áreas da vida, existem regras que servem como alicerce para o entendimento e resolução de problemas. Uma dessas regras básicas envolve números naturais consecutivos. A afirmação é simples: "Dados quaisquer naturais consecutivos, NÃO EXISTE, um natural entre eles!" Essa afirmação, por sua vez, está intimamente relacionada a dois provérbios populares em latim que têm grande relevância no mundo matemático: &lt;br&gt;
&lt;em&gt;"Exceptio probat regulam"&lt;/em&gt; e &lt;em&gt;"A exceção não anula a regra, ela confirma a regra."&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  O Pano de Fundo da Regra dos Números Naturais Consecutivos
&lt;/h2&gt;

&lt;p&gt;Antes de explorar esses provérbios e sua relação com a regra em questão, é importante entender o conceito de números naturais consecutivos. Os números naturais são aqueles inteiros positivos, começando com 1, ou seja, 1, 2, 3, 4, 5 e assim por diante. Quando falamos em números naturais consecutivos, referimo-nos a esses números em sequência, como 1 e 2, 2 e 3, 3 e 4, e assim por diante.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Regra em Sua Essência
&lt;/h2&gt;

&lt;p&gt;A afirmação de que entre quaisquer números naturais consecutivos, não há outro número natural é uma regra matemática fundamental. Isso significa que, por exemplo, entre os números 2 e 3, não existe um número inteiro. Esses números são consecutivos e estão "colados" um ao outro, não deixando espaço para mais números inteiros entre eles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Provérbios em Ação
&lt;/h2&gt;

&lt;p&gt;Agora, vejamos como os provérbios latinos da Roma Antiga, que são usados há mais de 2 mil anos se relacionam com essa regra:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Exceptio probat regulam&lt;/strong&gt;: Este provérbio pode ser traduzido como "A exceção deve ser tratada como previsto na regra, a menos que pertença à lista de exceções explicitamente mencionada." No contexto dos números naturais consecutivos, isso significa que a regra é aplicável a todos os casos em que números são consecutivos, a menos que haja uma lista de exceções claramente definida que permita a existência de números inteiros entre eles. No entanto, em matemática, essa lista de exceções não existe para números naturais consecutivos. Portanto, a regra se mantém firme.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A exceção não anula a regra, ela confirma a regra&lt;/strong&gt;: Este provérbio destaca que a existência de exceções não invalida a regra, mas, pelo contrário, a confirma. No contexto dos números naturais consecutivos, a afirmação de que não há números inteiros entre eles é confirmada a cada vez que se tenta encontrar um exemplo de exceção. Cada tentativa de encontrar um número inteiro entre números naturais consecutivos resulta em fracasso, reforçando a regra.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Por Que Exemplos de Exceção Não São Bem-Vistos e Úteis?
&lt;/h2&gt;

&lt;p&gt;A matemática é uma disciplina que se baseia na precisão e na clareza das regras. No caso da regra dos números naturais consecutivos, tentar encontrar exceções é, na verdade, contraproducente. Isso ocorre porque a regra é definida de forma a não permitir exceções. Assim, qualquer tentativa de encontrar um número inteiro entre números naturais consecutivos resultará em um beco sem saída.&lt;/p&gt;

&lt;p&gt;Em resumo, a regra dos números naturais consecutivos é uma base sólida da matemática, e os provérbios latinos "Exceptio probat regulam" e "A exceção não anula a regra, ela confirma a regra" destacam a importância de respeitar e entender as regras estabelecidas. Tentar encontrar exceções nesse caso específico não é bem-visto e não leva a novos insights matemáticos. Pelo contrário, serve para reforçar a robustez das regras estabelecidas e a precisão da matemática.&lt;/p&gt;

&lt;h1&gt;
  
  
  Exemplos de Exceção na Matemática
&lt;/h1&gt;

&lt;p&gt;Embora a regra dos números naturais consecutivos seja uma base sólida na matemática, e exemplos de exceção não se apliquem a ela, pode haver situações extremamente isoladas em que aparentemente existam exceções. No entanto, essas situações são frequentemente contextos específicos que não se encaixam na definição padrão dos números naturais consecutivos. Aqui estão alguns exemplos que, embora pareçam exceções, não são relevantes para essa regra:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Números Reais e Irracionais&lt;/strong&gt;: Quando nos afastamos dos números naturais (1, 2, 3, etc.) e consideramos números reais e irracionais, podemos encontrar números entre dois números naturais consecutivos. Por exemplo, entre 1 e 2, temos uma infinidade de números reais, como 1.5, 1.25, 1.1 e assim por diante. No entanto, essa situação envolve uma extensão para além dos números naturais.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conjuntos Infinitos e Infinitesimais&lt;/strong&gt;: Em matemática avançada, como a teoria dos conjuntos, é possível discutir conjuntos infinitos e números infinitesimais. Nesses contextos, pode haver casos extremamente específicos em que a ideia de "não existe um natural entre eles" seja mais complexa. No entanto, essas situações não se aplicam à definição padrão de números naturais consecutivos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Contextos Teóricos Específicos&lt;/strong&gt;: Em campos matemáticos mais abstratos, como a teoria dos números, a topologia ou a análise matemática avançada, podem surgir situações onde conceitos mais complexos permitem "exceções". No entanto, essas situações são altamente especializadas e não se aplicam à compreensão comum de números naturais consecutivos.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É importante ressaltar que, em um contexto básico de números naturais consecutivos, a regra permanece válida e é aplicável à maioria das situações mat&lt;/p&gt;

&lt;h1&gt;
  
  
  Meio Jurídico
&lt;/h1&gt;

&lt;p&gt;O provérbio em latim "Exceptio probat regulam" tem relevância no meio jurídico e é frequentemente usado para se referir a situações legais em que uma exceção confirma uma regra. No contexto jurídico, esse provérbio é usado de várias maneiras:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interpretação da Lei&lt;/strong&gt;: O provérbio é frequentemente invocado para destacar que a existência de uma exceção em uma lei ou regulamento geralmente indica a presença de uma regra subjacente. Em outras palavras, se a lei faz uma exceção para um determinado caso, isso implica que existe uma regra geral que se aplica a todos os outros casos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evidência de Prática ou Costume&lt;/strong&gt;: No campo do direito, o provérbio pode ser usado para mostrar que certos comportamentos ou práticas comuns, mesmo que não sejam expressamente regulamentados, podem ser considerados como confirmadores de uma regra subjacente ou um costume estabelecido.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limitações da Exceção&lt;/strong&gt;: A presença de uma exceção em um contrato ou em uma disposição legal pode ser usada para enfatizar que a regra geral se aplica a todos os outros casos, exceto àqueles explicitamente mencionados na exceção.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Argumentos Jurídicos&lt;/strong&gt;: Advogados e juristas podem usar o provérbio em seus argumentos para enfatizar que a existência de uma exceção não deve ser interpretada como uma negação da regra, mas como uma confirmação de que a regra é a norma padrão.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Em resumo, no meio jurídico, o provérbio "Exceptio probat regulam" é frequentemente utilizado para enfatizar a importância da regra geral em situações legais, mesmo quando uma exceção é mencionada. Isso ajuda a garantir a clareza na interpretação da lei e a manutenção da coerência nas decisões judiciais.&lt;/p&gt;

&lt;p&gt;A exceção confirma a regra em todos os casos não excecionados, ponto final.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>carreira</category>
      <category>programação</category>
      <category>matemática</category>
      <category>lógica</category>
    </item>
    <item>
      <title>Managing JDK Installation on Linux with SDKMAN</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sat, 04 Nov 2023 01:59:44 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/managing-jdk-installation-on-linux-with-sdkman-49f6</link>
      <guid>https://dev.to/robsoncassiano-software/managing-jdk-installation-on-linux-with-sdkman-49f6</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4bduvh6ee2l6r2v9pez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4bduvh6ee2l6r2v9pez.png" alt="SDKMAN" width="305" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're a software developer working with Java in a Linux environment, SDKMAN is an essential tool that will simplify the process of installing and managing Java Development Kit (JDK) versions. In this article, we will explore the benefits of SDKMAN and provide basic instructions to install and configure it on your system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use SDKMAN?
&lt;/h2&gt;

&lt;p&gt;SDKMAN is a software management tool that makes it easy to install and use various JDK versions, as well as other related tools like Groovy, Kotlin, and Gradle. Here are some of the key benefits of using SDKMAN:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simplicity&lt;/strong&gt;: SDKMAN simplifies the installation of various JDK versions with a single command. This is particularly useful if you work on different projects that require different Java versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ease of Use&lt;/strong&gt;: SDKMAN has a user-friendly and easy-to-use interface. You don't need to worry about environment variables or complex settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Updates and Rollbacks&lt;/strong&gt;: With SDKMAN, you can easily update to the latest JDK versions or roll back to previous ones if needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Other Tools&lt;/strong&gt;: In addition to JDK, SDKMAN supports various other development tools, allowing you to install and manage them with the same ease.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installing SDKMAN
&lt;/h2&gt;

&lt;p&gt;Installing SDKMAN is straightforward. Follow the steps below to set it up on your Linux system:&lt;br&gt;
(It's necessary to have &lt;strong&gt;zip&lt;/strong&gt; and &lt;strong&gt;unzip&lt;/strong&gt; installed on your Linux Distribution)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open a terminal and run the following command to download and install SDKMAN:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://get.sdkman.io"&lt;/span&gt; | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After this step, restart your linux terminal.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing JDK with SDKMAN
&lt;/h2&gt;

&lt;p&gt;Now that SDKMAN is installed, you can use the sdk command to install and manage various JDK versions. For example, to install the latest version of OpenJDK, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sdk &lt;span class="nb"&gt;install &lt;/span&gt;java
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To install a specific version of JDK, you can provide the version number, like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sdk &lt;span class="nb"&gt;install &lt;/span&gt;java 21-amzn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installation, you can switch between JDK versions using the use command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sdk use java 21-amzn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;SDKMAN is a powerful tool to simplify the management of different JDK versions in the Linux environment. With its user-friendly interface and simple commands, it allows software developers to save time and effort in setting up the development environment.&lt;/p&gt;

&lt;p&gt;For more information and resources, visit the official SDKMAN website.&lt;/p&gt;

&lt;p&gt;In this article, we've highlighted the benefits of SDKMAN and provided basic instructions for installing and configuring it. Now, you can start using SDKMAN to streamline your Java development workflow on Linux.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>skdman</category>
      <category>linux</category>
      <category>jvm</category>
    </item>
    <item>
      <title>The Need to Delete Old and Unnecessary Code from Code Bases: An Analogy with Diogenes Syndrome</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sat, 04 Nov 2023 01:57:49 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/the-need-to-delete-old-and-unnecessary-code-from-code-bases-an-analogy-with-diogenes-syndrome-5gic</link>
      <guid>https://dev.to/robsoncassiano-software/the-need-to-delete-old-and-unnecessary-code-from-code-bases-an-analogy-with-diogenes-syndrome-5gic</guid>
      <description>&lt;p&gt;In the continuous pursuit of efficient software development and maintenance, cleaning and organizing code bases become crucial. Just as in our lives, accumulating seemingly worthless objects can lead to a cluttered and unproductive environment, in code, the accumulation of unused or obsolete code snippets can lead to similar issues. In this article, we explore the importance of deleting or removing old and unnecessary code, drawing parallels with Diogenes Syndrome.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Code Accumulation and the Analogy with Diogenes Syndrome&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Diogenes Syndrome is a disorder characterized by compulsive hoarding of objects, often seemingly without value, resulting in chaotic and unsanitary living conditions. This syndrome can be likened to the tendency to accumulate unused code in a codebase. Just as object accumulation can overwhelm a physical space, unnecessary code can overload a codebase, making it hard to understand, maintain, and update.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Reasons for Code Accumulation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Often, code is accumulated for legitimate reasons such as testing, prototyping, or experimentation. However, when these code snippets are not removed after use, they can turn into a burden, making it difficult to understand the system and increasing complexity.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Negative Impacts of Code Accumulation&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increased Complexity:&lt;/strong&gt; Unused code adds unnecessary complexity to the codebase. This can make it harder for developers to grasp the program's flow and identify issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complicated Maintenance:&lt;/strong&gt; As the codebase grows, maintenance becomes more challenging. Unused code needs to be tracked and considered during updates, increasing the risk of errors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Efficiency Decrease:&lt;/strong&gt; Time spent navigating through unused code or trying to understand its purpose reduces development efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Potential for Errors:&lt;/strong&gt; Obsolete code may contain undetected bugs that can surface later, affecting software stability.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Benefits of Deleting Old Code&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhanced Readability:&lt;/strong&gt; A lean codebase is more readable and facilitates understanding of the system's functionalities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Streamlined Maintenance:&lt;/strong&gt; With less code to consider, maintenance becomes more efficient and less error-prone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Better Scalability:&lt;/strong&gt; Organized codebases are easier to expand and adapt to new requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Risk Reduction:&lt;/strong&gt; Removing obsolete code lowers the likelihood of unexpected bugs and increases stability.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Process of Code Removal&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When removing old code, it's important to follow best practices, including:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evaluation:&lt;/strong&gt; Identify unused code and determine its current relevance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Testing:&lt;/strong&gt; Ensure that removal doesn't affect other parts of the system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Documentation:&lt;/strong&gt; Update documentation to reflect the changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Version Control:&lt;/strong&gt; Use version control systems to track and document changes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Similar to Diogenes Syndrome leading to the hoarding of valueless objects, the accumulation of old and unnecessary code can hinder efficiency, readability, and maintenance of a codebase. Thoughtful removal of unused code snippets is essential to maintaining a healthy and productive development environment. So, while reviewing and cleaning your codebase, remember that "less is more" and prioritize quality over quantity.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>clean</category>
      <category>code</category>
      <category>linux</category>
      <category>programming</category>
    </item>
    <item>
      <title>Kotlin vs Java: Como carros automáticos vs Carros Manuais</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sat, 04 Nov 2023 01:56:06 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/kotlin-vs-java-como-carros-automaticos-vs-carros-manuais-3hh0</link>
      <guid>https://dev.to/robsoncassiano-software/kotlin-vs-java-como-carros-automaticos-vs-carros-manuais-3hh0</guid>
      <description>&lt;p&gt;Kotlin e Java, duas linguagens de programação robustas, podem ser comparadas a carros automáticos e manuais, respectivamente. Se Java é como um carro manual, que exige controle meticuloso de todos os aspectos, Kotlin é mais semelhante a um carro automático, fornecendo muitas conveniências e eficiências embutidas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Java: O Carro Manual
&lt;/h2&gt;

&lt;p&gt;Java, como um carro manual, dá aos programadores um alto grau de controle e visibilidade detalhada do funcionamento de seu código. A sintaxe verbosa do Java exige que cada detalhe seja explicitamente mencionado, muito como um motorista tem que mudar manualmente as marchas em um carro manual. Isso pode fornecer uma compreensão profunda e controle detalhado, mas também significa mais trabalho para o programador.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kotlin: O Carro Automático
&lt;/h2&gt;

&lt;p&gt;Kotlin, por outro lado, é mais como um carro automático. Ele cuida de muitas tarefas para você, oferecendo uma sintaxe mais concisa e recursos modernos embutidos, que aumentam a produtividade e a legibilidade. Assim como um carro automático muda as marchas automaticamente com base na velocidade e nas condições de direção, Kotlin gerencia muitas tarefas de programação, reduzindo o código de preenchimento automático que um programador precisa escrever.&lt;/p&gt;

&lt;p&gt;Tanto Kotlin quanto Java têm suas forças e são escolhidos com base em fatores como requisitos do projeto, habilidades da equipe e preferência pessoal. Enquanto a abordagem 'carro manual' do Java dá aos desenvolvedores controle e precisão, o estilo 'carro automático' do Kotlin proporciona facilidade de uso e eficiência. A escolha entre eles recai sobre o que você valoriza mais em sua jornada de desenvolvimento: controle ou conveniência.&lt;/p&gt;

&lt;h2&gt;
  
  
  Principais Diferenças Entre Kotlin e Java
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sintaxe:&lt;/strong&gt; Kotlin tem uma sintaxe mais concisa comparada ao Java. Onde Java exige ponto-e-vírgula para terminar uma declaração, Kotlin não tem tal requisito. Da mesma forma, as declarações de tipo em Kotlin são mais simples, aumentando a legibilidade do código e reduzindo a chance de erros.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Segurança Null:&lt;/strong&gt; Kotlin oferece segurança nula inerente, uma característica que falta no Java. Em Kotlin, a nulidade é explícita no sistema de tipos, reduzindo a probabilidade de uma Exceção de Ponteiro Nulo - o infame 'erro de bilhão de dólares'. Java, no entanto, permite valores nulos por padrão, o que pode levar a erros nulos frequentes em tempo de execução, se não forem devidamente tratados.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Funções de Extensão:&lt;/strong&gt; Kotlin suporta funções e propriedades de extensão, permitindo que você estenda uma classe com novas funcionalidades sem ter que herdar da classe. Este recurso pode ajudar na escrita de códigos mais limpos e legíveis. Java carece deste recurso, e a extensão de funcionalidades muitas vezes requer a criação de uma nova classe que herda da classe base.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Preferência dos Desenvolvedores: Kotlin vs Java
&lt;/h2&gt;

&lt;p&gt;De acordo com a Pesquisa de Desenvolvedores do Stack Overflow 2020, Kotlin figura entre as linguagens mais amadas, com 62,9% dos desenvolvedores expressando interesse em continuar a desenvolver com ela. Em contraste, Java se mostra menos favorecido, com apenas 44,1% dos desenvolvedores querendo continuar a usar. Isso indica uma preferência crescente pelo Kotlin entre os desenvolvedores globalmente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kotlin: Vantagens Sobre Java
&lt;/h2&gt;

&lt;p&gt;Kotlin oferece várias vantagens sobre Java que podem melhorar drasticamente a experiência de codificação. A sintaxe concisa do Kotlin facilita o código mais legível e sustentável, economizando tempo valioso e reduzindo a probabilidade de erros.&lt;/p&gt;

&lt;p&gt;A segurança nula inerente em Kotlin reduz consideravelmente o risco de falhas em tempo de execução causadas por exceções de ponteiro nulo, uma armadilha comum em Java. Por último, o suporte do Kotlin para funções de extensão melhora a legibilidade e a organização do código, evitando hierarquias de classe desnecessárias que podem complicar o código base.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Em uma indústria dinâmica e acelerada onde eficiência, confiabilidade e sustentabilidade são primordiais, adotar Kotlin pode se provar uma jogada estratégica. Não se trata apenas de pular no vagão da banda, mas de escolher uma linguagem que possa melhorar sua produtividade, reduzir bugs e tornar a codificação uma experiência satisfatória e agradável.&lt;/p&gt;

&lt;p&gt;Assim, mudar para Kotlin do Java parece ser uma consideração válida para qualquer desenvolvedor ou organização visando superior qualidade de código e produtividade. No mundo da programação, Kotlin é o novo Java - uma verdadeira mudança de jogo em termos de eficiência, confiabilidade e satisfação do desenvolvedor.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kotlin</category>
      <category>java</category>
      <category>programação</category>
    </item>
    <item>
      <title>Nala: uma alternativa mais amigável ao gerenciador de pacotes APT</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sat, 04 Nov 2023 01:53:34 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/nala-uma-alternativa-mais-amigavel-ao-gerenciador-de-pacotes-apt-3oo</link>
      <guid>https://dev.to/robsoncassiano-software/nala-uma-alternativa-mais-amigavel-ao-gerenciador-de-pacotes-apt-3oo</guid>
      <description>&lt;p&gt;O Nala é um gerenciador de pacotes frontend para o APT, o gerenciador de pacotes padrão para sistemas operacionais Linux baseados em Debian, como Ubuntu e Mint. &lt;/p&gt;

&lt;p&gt;O Nala fornece uma interface mais amigável e fácil de usar para o APT, com recursos como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Saída colorida e formatada:&lt;/strong&gt; O Nala fornece uma saída colorida e formatada que é mais fácil de ler e entender.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Completamento de tabulação:&lt;/strong&gt; O Nala suporta o preenchimento de tabulação, o que torna mais fácil digitar comandos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suporte para pesquisa e filtragem:&lt;/strong&gt; O Nala permite que você pesquise e filtre pacotes, o que facilita encontrar o que você precisa.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Instalação do Nala
&lt;/h2&gt;

&lt;p&gt;Para instalar o Nala, você precisará ter o Python 3 instalado em seu sistema. Em seguida, você pode usar o seguinte comando para instalar o Nala:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nala
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Uso do Nala
&lt;/h2&gt;

&lt;p&gt;O Nala usa os mesmos comandos básicos do APT. Por exemplo, para atualizar o índice de pacotes, você usaria o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nala update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para instalar um pacote, você usaria o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nala &lt;span class="nb"&gt;install&lt;/span&gt; &amp;lt;nome &lt;span class="k"&gt;do &lt;/span&gt;pacote&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para remover um pacote, você usaria o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nala remove &amp;lt;nome &lt;span class="k"&gt;do &lt;/span&gt;pacote&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Servidor mais rápido
&lt;/h2&gt;

&lt;p&gt;O Nala pode selecionar os servidores mais rápidos pra você e baixar vários pacotes ao mesmo tempo, basta usar o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nala fetch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E selecione os servidores mais rápidos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparação com o APT
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6flayfgmdx7uxcomlnl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6flayfgmdx7uxcomlnl.png" alt=" " width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyy69y6rsofzw16pdse2x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyy69y6rsofzw16pdse2x.png" alt=" " width="705" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxee4ck6raqyd840g6gi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxee4ck6raqyd840g6gi.png" alt=" " width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;O Nala é uma excelente opção para usuários que procuram uma alternativa mais amigável ao gerenciador de pacotes APT. O Nala oferece uma série de recursos que o tornam mais fácil de usar e mais poderoso.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nala</category>
      <category>apt</category>
      <category>linux</category>
    </item>
    <item>
      <title>Gerenciando a Instalação da JDK no Linux com SDKMAN</title>
      <dc:creator>Robson Cassiano</dc:creator>
      <pubDate>Sat, 04 Nov 2023 01:51:28 +0000</pubDate>
      <link>https://dev.to/robsoncassiano-software/gerenciando-a-instalacao-da-jdk-no-linux-com-sdkman-44d7</link>
      <guid>https://dev.to/robsoncassiano-software/gerenciando-a-instalacao-da-jdk-no-linux-com-sdkman-44d7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4bduvh6ee2l6r2v9pez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4bduvh6ee2l6r2v9pez.png" alt="SDKMAN" width="305" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se você é um desenvolvedor de software que trabalha com Java e usa um ambiente Linux, o SDKMAN é uma ferramenta essencial que simplificará o processo de instalação e gerenciamento das versões do Java Development Kit (JDK). Neste artigo, exploraremos os benefícios do SDKMAN e forneceremos instruções básicas para instalá-lo e configurá-lo no seu sistema.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/cOBMViq3KnM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que usar o SDKMAN?
&lt;/h2&gt;

&lt;p&gt;O SDKMAN é uma ferramenta de gerenciamento de software que facilita a instalação e o uso de várias versões do JDK, bem como outras ferramentas relacionadas, como Groovy, Kotlin e Gradle. Aqui estão alguns dos principais benefícios de usar o SDKMAN:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simplicidade&lt;/strong&gt;: O SDKMAN simplifica a instalação de várias versões do JDK com um único comando. Isso é particularmente útil se você trabalha em diferentes projetos que requerem versões diferentes do Java.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Facilidade de Uso&lt;/strong&gt;: A interface do SDKMAN é amigável e fácil de usar. Você não precisa se preocupar com variáveis de ambiente ou configurações complexas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Atualizações e Rollbacks&lt;/strong&gt;: Com o SDKMAN, você pode facilmente atualizar para as versões mais recentes do JDK ou reverter para versões anteriores, se necessário.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Outras Ferramentas&lt;/strong&gt;: Além do JDK, o SDKMAN suporta várias outras ferramentas de desenvolvimento, permitindo que você as instale e gerencie com a mesma facilidade.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Instalação do SDKMAN
&lt;/h2&gt;

&lt;p&gt;A instalação do SDKMAN é simples e direta. Siga as etapas abaixo para configurá-lo no seu sistema Linux(é necessário ter o &lt;strong&gt;zip&lt;/strong&gt; e o &lt;strong&gt;unzip&lt;/strong&gt; instaldo na sua Distribuição Linux):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Abra um terminal e execute o seguinte comando para baixar e instalar o SDKMAN:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://get.sdkman.io"&lt;/span&gt; | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após essa instalação, reinicie o terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalando o JDK com o SDKMAN
&lt;/h2&gt;

&lt;p&gt;Agora que o SDKMAN está instalado, você pode usar o comando sdk para instalar e gerenciar várias versões do JDK. Por exemplo, para instalar a versão mais recente do OpenJDK, execute o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sdk &lt;span class="nb"&gt;install &lt;/span&gt;java
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para instalar uma versão específica do JDK, você pode fornecer o número da versão, como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sdk &lt;span class="nb"&gt;install &lt;/span&gt;java 21-amzn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após a instalação, você pode alternar entre as versões do JDK usando o comando use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sdk use java 21-amzn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;O SDKMAN é uma ferramenta poderosa para simplificar o gerenciamento de diferentes versões do JDK no ambiente Linux. Com sua interface fácil de usar e comandos simples, ele permite que os desenvolvedores de software economizem tempo e esforço na configuração do ambiente de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Para obter mais informações e recursos, visite &lt;a href="https://sdkman.io/" rel="noopener noreferrer"&gt;o site oficial do SDKMAN&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Neste artigo, destacamos os benefícios do SDKMAN e fornecemos instruções básicas para instalá-lo e configurá-lo. Agora você pode começar a usar o SDKMAN para simplificar seu fluxo de trabalho de desenvolvimento Java no Linux.&lt;/p&gt;




&lt;p&gt;Eu ajudo DEVs Especialistas a conseguirem contratos fora do Brasil. &lt;/p&gt;

&lt;p&gt;Confira 👉 &lt;a href="https://lnkd.in/dMp-G5Uf" rel="noopener noreferrer"&gt;https://lnkd.in/dMp-G5Uf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>sdkman</category>
      <category>java</category>
      <category>jvm</category>
    </item>
  </channel>
</rss>
