<?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: Francisco Chaves</title>
    <description>The latest articles on DEV Community by Francisco Chaves (@franciscochaves).</description>
    <link>https://dev.to/franciscochaves</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%2F467197%2F1fb5d68f-a8b9-48b8-9d31-f5ed85dbc660.jpeg</url>
      <title>DEV Community: Francisco Chaves</title>
      <link>https://dev.to/franciscochaves</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/franciscochaves"/>
    <language>en</language>
    <item>
      <title>Hello World em TypeScript</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Mon, 08 Jan 2024 02:59:14 +0000</pubDate>
      <link>https://dev.to/franciscochaves/hello-world-em-typescript-453o</link>
      <guid>https://dev.to/franciscochaves/hello-world-em-typescript-453o</guid>
      <description>&lt;p&gt;Olá pessoal, hoje iremos conhecer como criar um projeto em &lt;strong&gt;TypeScript&lt;/strong&gt; e imprimir a mensagem “ &lt;strong&gt;Hello, world!”&lt;/strong&gt; no terminal.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;TypeScript&lt;/strong&gt; é uma linguagem desenvolvida pela Microsoft em 2012, traz uma abordagem mais estruturada ao JavaScript, permitindo a definição explícita de tipos. Esta funcionalidade auxilia na detecção precoce de erros durante o desenvolvimento, proporcionando maior robustez ao código. Além disso, o &lt;strong&gt;TypeScript&lt;/strong&gt; oferece recursos adicionais, como interfaces, classes e módulos.&lt;/p&gt;

&lt;p&gt;Para iniciar a estrutura do projeto , crie uma pasta com o nome hello-world-typescript, utilize o comando abaixo para criar pelo terminal:&lt;br&gt;
bash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir hello-world-typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Entre na pasta:&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;cd &lt;/span&gt;hello-world-typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Será necessário ter o &lt;strong&gt;Node.js&lt;/strong&gt; instalado na máquina, para realizar a instalação acesse esse post &lt;a href="https://franciscochaves.com.br/blog/instale-nodejs-no-xubuntu"&gt;Instale Node.js no Xubuntu&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Após a instalação do &lt;strong&gt;Node.js&lt;/strong&gt; , inicie o projeto com o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instale o &lt;strong&gt;TypeScript&lt;/strong&gt; como dependência de desenvolvimento :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pode-se instalar o &lt;strong&gt;TypeScript&lt;/strong&gt; globalmente com o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O comando para criar o arquivo de configuração com o &lt;strong&gt;TypeScript&lt;/strong&gt; instalado globalmente com o &lt;code&gt;tsc&lt;/code&gt; (&lt;em&gt;TypeScript compiler&lt;/em&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;tsc &lt;span class="nt"&gt;--init&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Outra alternativa para criar o arquivo de configuração do &lt;strong&gt;TypeScript&lt;/strong&gt; é com o &lt;code&gt;npx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tsc &lt;span class="nt"&gt;--init&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado no terminal após a criação do arquivo &lt;strong&gt;&lt;em&gt;tsconfig.json&lt;/em&gt;&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Created a new tsconfig.json with:
                                            TS
  target: es2016
  module: commonjs
  strict: true
  esModuleInterop: true
  skipLibCheck: true
  forceConsistentCasingInFileNames: true

You can learn more at https://aka.ms/tsconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A estrutura do projeto será a seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
└── hello-world-typescript
    ├── node_modules
    ├── package.json
    ├── package-lock.json
    └── tsconfig.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;node_modules 

&lt;ul&gt;
&lt;li&gt;Pasta com as dependências instaladas&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;package-lock.json 

&lt;ul&gt;
&lt;li&gt;Árvore de dependências do projeto&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;package.json 

&lt;ul&gt;
&lt;li&gt;Arquivo de configuração do &lt;strong&gt;Node.js&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;tsconfig.json 

&lt;ul&gt;
&lt;li&gt;Arquivo de configuração do &lt;strong&gt;TypeScript&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Crie um pasta para os códigos em &lt;strong&gt;TypeScript&lt;/strong&gt; com o nome &lt;strong&gt;&lt;em&gt;src&lt;/em&gt;&lt;/strong&gt; (source):&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;mkdir &lt;/span&gt;src
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro da pasta &lt;strong&gt;&lt;em&gt;src&lt;/em&gt;&lt;/strong&gt; , crie um arquivo com o nome &lt;strong&gt;&lt;em&gt;index.ts&lt;/em&gt;&lt;/strong&gt; , a extensão &lt;strong&gt;&lt;em&gt;.ts&lt;/em&gt;&lt;/strong&gt; é referente a arquivos do tipo &lt;strong&gt;TypeScript&lt;/strong&gt; :&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;touch &lt;/span&gt;index.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adicione o conteúdo abaixo no arquivo &lt;strong&gt;&lt;em&gt;index.ts&lt;/em&gt;&lt;/strong&gt; , pode-se observar que a variável &lt;code&gt;hello&lt;/code&gt; é do tipo &lt;code&gt;string&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello, world!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para realizar a transpilação (converter o código de uma linguagem para outra) dos arquivos &lt;strong&gt;TypeScript&lt;/strong&gt; para JavaScript, utilize o comando &lt;code&gt;tsc&lt;/code&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tsc ./src/index.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pode-se observar que foi gerado um novo arquivo na pasta &lt;strong&gt;&lt;em&gt;src&lt;/em&gt;&lt;/strong&gt; com o nome &lt;strong&gt;&lt;em&gt;index.js&lt;/em&gt;&lt;/strong&gt; e conteúdo na linguagem &lt;strong&gt;JavaScript&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;hello&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello, world!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A estrutura do projeto após criar a pasta &lt;strong&gt;&lt;em&gt;src&lt;/em&gt;&lt;/strong&gt; e transpilar o arquivo &lt;strong&gt;&lt;em&gt;index.ts&lt;/em&gt;&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
└── hello-world-typescript
    ├── node_modules
    ├── package.json
    ├── package-lock.json
    ├── src
    │ ├── index.js
    │ └── index.ts
    └── tsconfig.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O arquivo &lt;strong&gt;&lt;em&gt;index.js&lt;/em&gt;&lt;/strong&gt; foi criado na mesma pasta do &lt;strong&gt;&lt;em&gt;index.ts&lt;/em&gt;&lt;/strong&gt; , mas pode-se alterar o destino dos arquivos transpilados para uma pasta diferente adicionado duas configurações no arquivo &lt;strong&gt;&lt;em&gt;tsconfig.json&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As configurações:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;rootDir&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;A pasta dos arquivos &lt;strong&gt;TypeScript&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;outDir&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;A pasta de destino dos arquivos transpilados&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O arquivo &lt;code&gt;tsconfig.json&lt;/code&gt;:&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;"compilerOptions"&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;"target"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"es2016"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"commonjs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rootDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./src/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"outDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./dist/"&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;p&gt;Delete o arquivo &lt;strong&gt;&lt;em&gt;index.js&lt;/em&gt;&lt;/strong&gt; da pasta &lt;strong&gt;&lt;em&gt;src&lt;/em&gt;&lt;/strong&gt; e execute o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tsc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pode-se observar que foi criada uma nova pasta com o nome &lt;strong&gt;&lt;em&gt;dist&lt;/em&gt;&lt;/strong&gt; que possui um arquivo &lt;strong&gt;&lt;em&gt;index.js&lt;/em&gt;&lt;/strong&gt; na linguagem &lt;strong&gt;JavaScript&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Estrutura do projeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
└── hello-world-typescript
    ├── dist
    │ └── index.js
    ├── node_modules
    ├── package.json
    ├── package-lock.json
    ├── src
    │ └── index.ts
    └── tsconfig.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A pasta &lt;strong&gt;&lt;em&gt;dist&lt;/em&gt;&lt;/strong&gt; será o código utilizado em produção, para testar utilize o &lt;strong&gt;Node.js&lt;/strong&gt; com o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node ./dist/index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado da execução do arquivo &lt;strong&gt;&lt;em&gt;index.js&lt;/em&gt;&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello, world!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link para o repositório do projeto: &lt;a href="https://gitlab.com/franciscochaves/hello-world-typescript"&gt;https://gitlab.com/franciscochaves/hello-world-typescript&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Valeu pessoal 😎✌️!&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;TYPESCRIPT. TypeScript. Disponível em: &lt;a href="https://www.typescriptlang.org/"&gt;https://www.typescriptlang.org/&lt;/a&gt;. Acesso em: 6 de jan. de 2024.&lt;/p&gt;

&lt;p&gt;DUARTE JUNIOR, Luiz Fernando. [Live] Aulão de TypeScript. LuizTools, 1 de jan. de 2024. 1 vídeo (1h 19min 50s). Disponível em: &lt;a href="https://www.youtube.com/watch?v=omfawXuJ-o4"&gt;https://www.youtube.com/watch?v=omfawXuJ-o4&lt;/a&gt;. Acesso em: 6 de jan. de 2024.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>tutorial</category>
      <category>typescript</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Aumente sua produtividade no Xubuntu com o Ulauncher</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Mon, 22 Mar 2021 17:21:38 +0000</pubDate>
      <link>https://dev.to/franciscochaves/aumente-sua-produtividade-no-xubuntu-com-o-ulauncher-4375</link>
      <guid>https://dev.to/franciscochaves/aumente-sua-produtividade-no-xubuntu-com-o-ulauncher-4375</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NXej_vPB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2021/jan/logo-ulauncher.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NXej_vPB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2021/jan/logo-ulauncher.png" alt="Logo" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Olá pessoal, hoje vamos conhecer um programa &lt;strong&gt;Ulauncher&lt;/strong&gt;, que é um lançador de aplicativos, que permitirá melhorar a produtividade no sistema operacional &lt;strong&gt;Xubuntu 18.04&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Os &lt;em&gt;Launchers&lt;/em&gt; (lançadores) são utilizados para localizar e iniciar aplicativos, ajudam bastante o usuário, já que não precisará realizar vários cliques, basta apenas chamar o &lt;em&gt;Launcher&lt;/em&gt; com algumas teclas de atalhos, digita o nome do aplicativo desejado e pressionar a tecla &lt;code&gt;Enter&lt;/code&gt; para inicializá-lo.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;Ulauncher&lt;/strong&gt; possui algumas características:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pesquisa pelo nome do aplicativo, o Ulauncher entenderá o que você quis dizer;&lt;/li&gt;
&lt;li&gt;Lembra escolhas realizadas anteriores;&lt;/li&gt;
&lt;li&gt;Possui temas integrados, mas podem serem alterados utilizando &lt;a href="https://gist.github.com/gornostal/02a232e6e560da7946c053555ced6cce"&gt;temas disponibilizados pela comunidade&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Possui atalhos e &lt;a href="https://ext.ulauncher.io/"&gt;extensões&lt;/a&gt; personalizáveis; e&lt;/li&gt;
&lt;li&gt;Navegação de diretórios e por arquivos;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Acesse o site do projeto neste &lt;a href="https://ulauncher.io/"&gt;link&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Nh2yN9ob--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2021/jan/site-ulauncher.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Nh2yN9ob--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2021/jan/site-ulauncher.png" alt="Site Ulauncher" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clique no ícone para realizar o &lt;em&gt;download&lt;/em&gt; do pacote &lt;code&gt;.deb&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gSTHl4SD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2021/jan/site-ulauncher-download.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gSTHl4SD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2021/jan/site-ulauncher-download.png" alt="Site Ulauncher opções download" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abra o terminal, navege até o arquivo, e utilize o comando abaixo para realizar a instalação:&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; ./ulauncher&lt;span class="k"&gt;*&lt;/span&gt;.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pesquise no menu de aplicativos e execute.&lt;/p&gt;

&lt;p&gt;Agora ao pressionar as teclas &lt;code&gt;Ctrl + Space&lt;/code&gt; podemos acessar o Ulauncher, digite o aplicativo que deseja executar, navegue pelo resultados com as setas direcionais e pressione a tecla &lt;code&gt;Enter&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://franciscochaves.com.br/assets/img/blog/2021/jan/ulauncher-demo.gif"&gt;Demonstração do Ulauncher&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;Application launcher for Linux. &lt;strong&gt;Ulauncher&lt;/strong&gt;. Disponível em: &lt;a href="https://ulauncher.io"&gt;https://ulauncher.io&lt;/a&gt;. Acesso em: 04 jan. 2021.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>productivity</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Copie e Cole pelo terminal com Xclip</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Thu, 18 Mar 2021 13:09:26 +0000</pubDate>
      <link>https://dev.to/franciscochaves/copie-e-cole-pelo-terminal-com-xclip-27g5</link>
      <guid>https://dev.to/franciscochaves/copie-e-cole-pelo-terminal-com-xclip-27g5</guid>
      <description>&lt;p&gt;Olá pessoal, hoje vamos conhecer o programa &lt;code&gt;xclip&lt;/code&gt; que possibilita uma forma de copiar o conteúdo do terminal para a área de transferência do sistema ou do &lt;em&gt;mouse&lt;/em&gt;. O &lt;code&gt;xclip&lt;/code&gt; é um utilitário de linha de comando preparado para sistemas que utilizam o &lt;strong&gt;X11&lt;/strong&gt; (servidor gráfico). Neste tutorial, estarei utilizando o sistema operacional Xubuntu 18.04.&lt;/p&gt;

&lt;p&gt;Abra o terminal e realize a instalação do programa com o comando abaixo:&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-get &lt;span class="nb"&gt;install &lt;/span&gt;xclip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Realize a cópia para área de transferência do &lt;em&gt;mouse&lt;/em&gt; (primário), com o comando abaixo:&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;echo &lt;/span&gt;1234 | xclip &lt;span class="nt"&gt;-selection&lt;/span&gt; primary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos também realizar a cópia diretamente para o &lt;em&gt;mouse&lt;/em&gt; sem utilizar as opções para definir a seleção, porque é a opção padrão.&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;echo &lt;/span&gt;1234 | xclip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O conteúdo da área de transferência do &lt;em&gt;mouse&lt;/em&gt; pode ser utilizado com a opção &lt;code&gt;-o&lt;/code&gt;, também podemos utilizar o clique no botão do meio do &lt;em&gt;mouse&lt;/em&gt; para colar o conteúdo, e no terminal as teclas &lt;code&gt;Shift + Insert&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xclip &lt;span class="nt"&gt;-o&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora vamos utilizar a área de transferência do sistema, para isso execute o comando abaixo, onde é utilizado a opção de seleção &lt;code&gt;clipboard&lt;/code&gt;, podemos pensar que estamos usando as teclas &lt;code&gt;Ctrl + C&lt;/code&gt;:&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;echo &lt;/span&gt;1234 | xclip &lt;span class="nt"&gt;-select&lt;/span&gt; clipboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos deixar mais enxuto o comando acima:&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;echo &lt;/span&gt;1234 | xclip &lt;span class="nt"&gt;-sel&lt;/span&gt; clip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para utilizar o conteúdo da área de transferência do sistema, será semelhante ao do &lt;em&gt;mouse&lt;/em&gt;, mas precisamos especificar a seleção &lt;code&gt;clipboard&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xclip &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nt"&gt;-sel&lt;/span&gt; clip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos realizar a leitura de um arquivo com a opção &lt;code&gt;-i&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xclip &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nt"&gt;-sel&lt;/span&gt; clip arquivo.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com o &lt;code&gt;xclip&lt;/code&gt; também são instalados os programas para manipulação de arquivos: &lt;code&gt;xclip-copyfile&lt;/code&gt; (copiar arquivos), &lt;code&gt;xclip-pastefile&lt;/code&gt; (colar arquivos), e &lt;code&gt;xclip-cutfile&lt;/code&gt; (recortar arquivos).&lt;/p&gt;

&lt;p&gt;Para conhecer mais sobre o &lt;strong&gt;xclip&lt;/strong&gt; consulte o manual com o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;man xclip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;ASTRAND/XCLIP. GitHub. Disponível em: &lt;a href="https://github.com/astrand/xclip"&gt;https://github.com/astrand/xclip&lt;/a&gt;. Acesso em: 26 dez. 2020.&lt;/p&gt;

&lt;p&gt;MUNGAI, Dennis. Using Xclip To Copy Terminal Content To The Clip Board On Linux. 26 abr. 2017. GitHub Gist. Disponível em: &lt;a href="https://gist.github.com/Brainiarc7/f5eb9a91973b62a0f71b4c4c6fbb9e03"&gt;https://gist.github.com/Brainiarc7/f5eb9a91973b62a0f71b4c4c6fbb9e03&lt;/a&gt;. Acesso em: 26 dez. 2020.&lt;/p&gt;

&lt;p&gt;O QUE É X11?. Comunidade Hardware. Disponível em: &lt;a href="https://www.hardware.com.br/comunidade/x11/292664/"&gt;https://www.hardware.com.br/comunidade/x11/292664/&lt;/a&gt;. Acesso em: 26 dez. 2020.&lt;/p&gt;

&lt;p&gt;O QUE É XORG? 6 ago. 2012. VIVA O LINUX. Disponível em: &lt;a href="https://www.vivaolinux.com.br/topico/Conhecimento-Livre/O-que-e-Xorg-1"&gt;https://www.vivaolinux.com.br/topico/Conhecimento-Livre/O-que-e-Xorg-1&lt;/a&gt;. Acesso em: 26 dez. 2020.&lt;/p&gt;

&lt;p&gt;WHY DO WE HAVE 3 TYPES OF X-SELECTIONS IN LINUX? 17 out. 2010. Super User. Disponível em: &lt;a href="https://superuser.com/questions/200444/why-do-we-have-3-types-of-x-selections-in-linux"&gt;https://superuser.com/questions/200444/why-do-we-have-3-types-of-x-selections-in-linux&lt;/a&gt;. Acesso em: 26 dez. 2020.&lt;/p&gt;

&lt;p&gt;XCLIP(1): CLI TO X SELECTIONS - LINUX MAN PAGE. Disponível em: &lt;a href="https://linux.die.net/man/1/xclip"&gt;https://linux.die.net/man/1/xclip&lt;/a&gt;. Acesso em: 26 dez. 2020.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>ubuntu</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>BC a calculadora do Bash</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Wed, 17 Mar 2021 10:57:39 +0000</pubDate>
      <link>https://dev.to/franciscochaves/bc-a-calculadora-do-bash-4n66</link>
      <guid>https://dev.to/franciscochaves/bc-a-calculadora-do-bash-4n66</guid>
      <description>&lt;p&gt;Olá pessoal, hoje vamos aprender utilizar o &lt;strong&gt;BC&lt;/strong&gt; , que é uma linguagem de programação, que podemos utilizar como calculadora no bash. Por ser uma linguagem de programação temos a opção de utilizar estrutura condicional, laços de repetições e outros recursos da linguagem.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;BC&lt;/strong&gt; permite várias operações matemática e possui algumas operações definidas por padrão.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;^&lt;/code&gt; (potenciação);&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*&lt;/code&gt; (multiplicação) e &lt;code&gt;/&lt;/code&gt; (divisão);&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;+&lt;/code&gt; (adição), &lt;code&gt;-&lt;/code&gt; (subtração), &lt;code&gt;%&lt;/code&gt; (resto da divisão);&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sqrt(x)&lt;/code&gt; (raiz quadrada de x); e&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;last&lt;/code&gt; (último resultado).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Abra o terminal e execute o comando a seguir, para ter acesso ao modo interativo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Digite as expressões a seguir, depois de digitar cada expressão pressione a tecla &lt;code&gt;Enter&lt;/code&gt; para visualizar o resultado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2^8
4*2
5/2
10%3
2+2
21-5
sqrt(last)
sqrt(81)
last-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jKJNm6Da--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jKJNm6Da--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes.png" alt="Expressões matemáticas com o BC" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos observar que o resultado da divisão de 5 por 2 não foi exatamente o esperado, para isso temos que utilizar o &lt;code&gt;scale=2&lt;/code&gt; para o resultado ter duas casas decimais após o ponto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iDA7lUev--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-scale-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iDA7lUev--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-scale-2.png" alt="Expressões matemáticas com o BC com o scale=2" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para sair do modo interativo, utilize &lt;strong&gt;&lt;em&gt;quit&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cmVtd1yT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-quit.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cmVtd1yT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-quit.png" alt="Expressões matemáticas com o BC" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Outra forma para utilizar no modo interativo é ativar a biblioteca padrão de funções matemáticas, com a opção &lt;code&gt;-l&lt;/code&gt; que tem por padrão o &lt;code&gt;scale=20&lt;/code&gt; e assim podemos utilizar as seguintes funções:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;s(x)&lt;/code&gt; o seno de &lt;code&gt;x&lt;/code&gt;, onde &lt;code&gt;x&lt;/code&gt; é em radianos;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;c(x)&lt;/code&gt; o cosseno de &lt;code&gt;x&lt;/code&gt;, onde &lt;code&gt;x&lt;/code&gt; é em radianos;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;a(x)&lt;/code&gt; o arcotangente de &lt;code&gt;x&lt;/code&gt;, a resposta é dada em radianos;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;l(x)&lt;/code&gt; o logaritmo natural de &lt;code&gt;x&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;e(x)&lt;/code&gt; a função exponencial de &lt;code&gt;e&lt;/code&gt; elevado a &lt;code&gt;x&lt;/code&gt;; e&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;j(n, x)&lt;/code&gt; a função de Bessel da ordem de &lt;code&gt;n&lt;/code&gt; de &lt;code&gt;x&lt;/code&gt;;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mhqG9u0K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-com-opcao-l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mhqG9u0K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-com-opcao-l.png" alt="Expressões matemáticas com o BC e opção -l" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora vamos ver alguma opções de execução do &lt;strong&gt;BC&lt;/strong&gt; diretamente na linha de comando.&lt;/p&gt;

&lt;p&gt;Primeira forma de utilização:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bc &amp;lt;&amp;lt;&amp;lt; "scale=3;7/3"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Segunda forma de utilização:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "scale=3;7/3" | bc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vamos utilizar o &lt;strong&gt;BC&lt;/strong&gt; para conversão de base com os comandos &lt;code&gt;ibase&lt;/code&gt; (base numérica de entrada) e &lt;code&gt;obase&lt;/code&gt; (base numérica de saída), por padrão a base de entrada e saída é 10, e se utilizar apenas um dígito será interpretado em hexadecimal, veja alguns exemplos:&lt;/p&gt;

&lt;p&gt;Converter o número hexadecimal 3F para decimal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bc &amp;lt;&amp;lt;&amp;lt; "ibase=16;obase=A;3F"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Converter o número decimal 63 em hexadecimal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bc &amp;lt;&amp;lt;&amp;lt; "ibase=A;obase=16;63"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Converter o número decimal 63 em octal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bc &amp;lt;&amp;lt;&amp;lt; "ibase=A;obase=8;63"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Converter o número octal 77 em decimal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bc &amp;lt;&amp;lt;&amp;lt; "ibase=8;obase=A;77"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Converter o número decimal 63 em binário.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bc &amp;lt;&amp;lt;&amp;lt; "ibase=A;obase=2;63"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Converter o número binário 111111 em decimal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bc &amp;lt;&amp;lt;&amp;lt; "ibase=2;obase=A;111111"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também podemos criar um &lt;em&gt;script&lt;/em&gt; para verificar se o número é ímpar ou par, crie o arquivo abaixo e salve o arquivo com o nome &lt;code&gt;par-ou-impar.bc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/bc -l

# autor: Francisco Chaves &amp;lt;https://franciscochaves.com.br&amp;gt;
# descrição: Descubra se o número é ímpar ou par

print "\n"

for (i=0; i &amp;lt; 40; i++) {
  print "*"
}

print "\nInsira um número inteiro\n"

num = read()

if (num % 2 == 0) {
  print "Número é par"
} else {
  print "Número é ímpar"
}

print "\n"

cont=0

while (cont++ &amp;lt; 40) {
  print "*"
}

print "\n"

quit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Atribua permissão de execução ao arquivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chmod +x par-ou-impar.bc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute o arquivo e insira um valor válido, o &lt;strong&gt;BC&lt;/strong&gt; não tem tratamento de erros:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./par-ou-impar.bc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0vlf_koB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-script-impar-ou-par.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0vlf_koB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-script-impar-ou-par.png" alt="Script em BC para saber se o número é ímpar ou par" width="800" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Outra coisa bem interessante é a criação de funções com o &lt;strong&gt;BC&lt;/strong&gt; , para isso utilizamos o comando &lt;code&gt;define&lt;/code&gt;. Vamos criar o script com o nome &lt;code&gt;calculadora.bc&lt;/code&gt; com funções de uma simples calculadora.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/bc -l

# autor: Francisco Chaves &amp;lt;https://franciscochaves.com.br&amp;gt;
# descrição: Operações matemáticas básicas

define soma(a, b) {
  return a + b
}

define subtracao(a, b) {
  return a - b
}

define multiplicacao(a, b) {
  return a * b
}

define divisao(a, b) {
  scale=2
  return a / b
}

print "\n ********CALCULADORA******** \n"

print "\nDigite o primeiro número:\n"
num1 = read()

print "\nDigite o segundo número:\n"
num2 = read()

print "\n **Soma** \n "
soma(num1, num2)
print "\n **Subtração** \n "
subtracao(num1, num2)
print "\n **Multiplicação** \n "
multiplicacao(num1, num2)
print "\n **Divisão** \n "
divisao(num1, num2)

quit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZpByTfTA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-script-calculadora.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZpByTfTA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2020/dez/bc-expressoes-script-calculadora.png" alt="Script em BC para operações matemáticas básicas" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para conhecer mais sobre o &lt;strong&gt;BC&lt;/strong&gt; consulte o manual com o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;man bc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;BC | GUIA LINUX. [s.d.]. &lt;strong&gt;UNIRIO / CCET - Ensino e Pesquisa - Produzir e disseminar conhecimento&lt;/strong&gt;. Disponível em: &lt;a href="https://guialinux.uniriotec.br/bc/"&gt;https://guialinux.uniriotec.br/bc/&lt;/a&gt;. Acesso em: 24 dez. 2020.&lt;/p&gt;

&lt;p&gt;CONVERSÃO DE BASE NO SHELL. 9 ago. 2017. &lt;strong&gt;Mente Binária&lt;/strong&gt;. Disponível em: &lt;a href="https://www.mentebinaria.com.br/forums/topic/54-convers%C3%A3o-de-base-no-shell/"&gt;https://www.mentebinaria.com.br/forums/topic/54-conversão-de-base-no-shell/&lt;/a&gt;. Acesso em: 24 dez. 2020.&lt;/p&gt;

&lt;p&gt;ENTENDEU “IBASE” E “OBASE” EM CASO DE CONVERSÕES COM BC?. &lt;strong&gt;QA Stack&lt;/strong&gt;. Disponível em: &lt;a href="https://qastack.com.br/unix/199615/understand-ibase-and-obase-in-case-of-conversions-with-bc"&gt;https://qastack.com.br/unix/199615/understand-ibase-and-obase-in-case-of-conversions-with-bc&lt;/a&gt;. Acesso em: 24 dez. 2020.&lt;/p&gt;

&lt;p&gt;PAPO BINÁRIO. Cálculo No Shell Com O Bc. 8 mar. 2017. &lt;strong&gt;YouTube&lt;/strong&gt;. Disponível em: &lt;a href="https://www.youtube.com/watch?v=vLhABLeb11o"&gt;https://www.youtube.com/watch?v=vLhABLeb11o&lt;/a&gt;. Acesso em: 24 dez. 2020.&lt;/p&gt;

&lt;p&gt;PINHEIRO, Renan. BC: A Sua Calculadora Programvel No Linux [Artigo]. 21 maio 2006. &lt;strong&gt;VIVA O LINUX&lt;/strong&gt;. Disponível em: &lt;a href="https://www.vivaolinux.com.br/artigo/BC-A-sua-calculadora-programavel-no-Linux"&gt;https://www.vivaolinux.com.br/artigo/BC-A-sua-calculadora-programavel-no-Linux&lt;/a&gt;. Acesso em: 24 dez. 2020.&lt;/p&gt;

&lt;p&gt;SLACKJEFF. BC, CALCULADORA DO BASH. 12 set. 2017. &lt;strong&gt;YouTube&lt;/strong&gt;. Disponível em: &lt;a href="https://www.youtube.com/watch?v=5FGmQB-pM2Y"&gt;https://www.youtube.com/watch?v=5FGmQB-pM2Y&lt;/a&gt;. Acesso em: 24 dez. 2020.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>ubuntu</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Tire PrintScreen pelo terminal no Linux</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Tue, 16 Mar 2021 15:38:07 +0000</pubDate>
      <link>https://dev.to/franciscochaves/tire-printscreen-pelo-terminal-no-linux-4594</link>
      <guid>https://dev.to/franciscochaves/tire-printscreen-pelo-terminal-no-linux-4594</guid>
      <description>&lt;p&gt;Olá pessoal, hoje vamos aprender como tirar um &lt;em&gt;Print Screen&lt;/em&gt; pelo linha de comando, um recurso muito útil para quando temos apenas o acesso ao terminal do servidor.&lt;/p&gt;

&lt;p&gt;Realize a instalação do programa &lt;strong&gt;fbcat&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install fbcat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para salvar a captura de tela precisamos redirecionar a saída do comando para um arquivo com a extensão &lt;strong&gt;ppm&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo fbcat &amp;gt; captura01.ppm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora podemos converter o arquivo &lt;strong&gt;ppm&lt;/strong&gt; para &lt;strong&gt;png&lt;/strong&gt; com o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;convert captura01.ppm captura01.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pronto pessoal, agora podemos salvar as capturas de tela pelo terminal do servidor 😎.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;FBCAT 0.5.1 — PACKAGES — GNU GUIX. &lt;strong&gt;GNU Guix&lt;/strong&gt;. Disponível em: &lt;a href="https://guix.gnu.org/packages/fbcat-0.5.1/"&gt;https://guix.gnu.org/packages/fbcat-0.5.1/&lt;/a&gt;. Acesso em: 23 dez. 2020.&lt;/p&gt;

&lt;p&gt;LEWANDOWSKI, Piotr; WILK, Jakub. &lt;strong&gt;Linux Manpages Online - Man.cx Manual Pages&lt;/strong&gt;. Disponível em: &lt;a href="https://man.cx/fbcat(1)"&gt;https://man.cx/fbcat(1)&lt;/a&gt;. Acesso em: 23 dez. 2020.&lt;/p&gt;

&lt;p&gt;SLACKJEFF. Screenshot/Printscreen Via Console Linux. 13 ago. 2017. &lt;strong&gt;YouTube&lt;/strong&gt;. Disponível em: &lt;a href="https://www.youtube.com/watch?v=65D1Vbrq97Q"&gt;https://www.youtube.com/watch?v=65D1Vbrq97Q&lt;/a&gt;. Acesso em: 23 dez. 2020.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>braziliandevs</category>
      <category>bash</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Diagrama de Classe na IDE Eclipse</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Tue, 23 Feb 2021 19:37:54 +0000</pubDate>
      <link>https://dev.to/franciscochaves/diagrama-de-classe-na-ide-eclipse-52bo</link>
      <guid>https://dev.to/franciscochaves/diagrama-de-classe-na-ide-eclipse-52bo</guid>
      <description>&lt;p&gt;Olá pessoal, tudo bem?&lt;/p&gt;

&lt;p&gt;Hoje irei mostrar como instalar uma ferramenta na &lt;strong&gt;IDE Eclipse&lt;/strong&gt;, para visualizar o &lt;strong&gt;diagrama de classe&lt;/strong&gt; do seu projeto.&lt;/p&gt;

&lt;p&gt;Primeiro vamos até o site &lt;a href="http://objectaid.com/"&gt;ObjectAid&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Cv6IcfXy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Cv6IcfXy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid.png" alt="Página principal do ObjectAid" width="620" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clique em "Download".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9odLxwhu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid-download.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9odLxwhu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid-download.png" alt="Página principal do ObjectAid menu opção download" width="620" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos utilizar o "Name" e "URL", para realizar a instalação no &lt;strong&gt;Eclipse&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hJNRXsxO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/dowload-objectaid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hJNRXsxO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/dowload-objectaid.png" alt="Página Download do ObjectAid" width="620" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inicialize  sua &lt;strong&gt;&lt;a href="https://pt.wikipedia.org/wiki/Ambiente_de_desenvolvimento_integrado"&gt;IDE&lt;/a&gt;&lt;/strong&gt; Eclipse, selecione a guia &lt;em&gt;Help &amp;gt; Install New Software&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--85gnXEoY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/instalar_plugin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--85gnXEoY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/instalar_plugin.png" alt="IDE Eclipse opção para instalar plugin" width="620" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clique em "Add…", insira o "Name" e "URL" nos campos que aparece, clique em "OK".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pyLfhDKY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/instalar_plugin_inserir_info.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pyLfhDKY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/instalar_plugin_inserir_info.png" alt="IDE Eclipse informação para instalar plugin" width="620" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Selecione "ObjectAid Class Diagram", e clique em "Next" após clique em "Finish" para finalizar a instalação da ferramenta.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qKCH7nat--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/finalizando_instalacao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qKCH7nat--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/finalizando_instalacao.png" alt="IDE Eclipse finalizando instalação do plugin" width="620" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos criar um projeto &lt;strong&gt;Java&lt;/strong&gt;, para observar como a ferramenta funciona, dentro do projeto iremos criar três classe Java com relação de herança.&lt;/p&gt;

&lt;p&gt;1 – Classe Animal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;falar&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2 – Classe Gato&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Gato&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;@Override&lt;/span&gt;
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;falar&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Miau, miau, miau ..."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3 – Classe Cachorro&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Cachorro&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;@Override&lt;/span&gt;
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;falar&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Au, au, au ..."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No projeto pressione as teclas Ctrl+N , e procure por "Object UML Diagram", selecione "Class Diagram" e clique em "Next", atribua um nome e clique em "Finish"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R21YKvGI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid_selecionado.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R21YKvGI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid_selecionado.png" alt="IDE Eclipse arquivo para diagrama" width="620" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No projeto selecione as classes e arraste para o arquivo criado, com isso o  seu diagrama de classe já será exibido.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EJJxe4-C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid_selecionado_criado.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EJJxe4-C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid_selecionado_criado.png" alt="IDE Eclipse criando diagrama" width="620" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A ferramenta possui a opção de salvar o &lt;strong&gt;diagrama&lt;/strong&gt; em imagem, clique com o botão direito do mouse e selecione "Save As Image.."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qzj3MdTw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid_salvando_diagrama_imagem.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qzj3MdTw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/maio/objectaid_salvando_diagrama_imagem.png" alt="IDE Eclipse salvando diagrama" width="620" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Valeu pessoal e boa codificação :)&lt;/p&gt;

</description>
      <category>java</category>
      <category>tutorial</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Instale o Git no Xubuntu</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Mon, 22 Feb 2021 17:32:14 +0000</pubDate>
      <link>https://dev.to/franciscochaves/instale-o-git-no-xubuntu-43eo</link>
      <guid>https://dev.to/franciscochaves/instale-o-git-no-xubuntu-43eo</guid>
      <description>&lt;p&gt;Olá pessoal, hoje iremos instalar o &lt;a href="https://git-scm.com/"&gt;Git&lt;/a&gt;, que é um sistema utilizado para permitir o versionamento de código distribuído, foi criado por &lt;a href="https://pt.wikipedia.org/wiki/Linus_Torvalds"&gt;Linus Torvald&lt;/a&gt; para auxiliar no desenvolvimento do &lt;a href="https://www.kernel.org/"&gt;Kernel Linux&lt;/a&gt;. Neste tutorial, estarei utilizando o sistema operacional &lt;strong&gt;Xubuntu 18.04&lt;/strong&gt; , mas os procedimentos funcionará em qualquer distribuição baseada no &lt;strong&gt;Ubuntu&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Para instalar a versão estável, utilize o comando a seguir:&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-get &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para instalar a versão mais recente utilize os três comandos abaixo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Adicione o repositório PPA do Git:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;add-apt-repository ppa:git-core/ppa
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Atualize a lista de programas que podem ser instalados:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instale a versão mais recente do Git:&lt;br&gt;
&lt;/p&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;git
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para verificar se a instalação foi realizada com sucesso, verifique a versão do Git:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hoje aprendemos como instalar o &lt;strong&gt;Git&lt;/strong&gt;, valeu pessoal 😎✌!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>git</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Informações do repositório Git com Onefetch</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Sun, 21 Feb 2021 21:06:41 +0000</pubDate>
      <link>https://dev.to/franciscochaves/informacoes-do-repositorio-git-com-onefetch-12ln</link>
      <guid>https://dev.to/franciscochaves/informacoes-do-repositorio-git-com-onefetch-12ln</guid>
      <description>&lt;p&gt;Olá pessoal, hoje iremos aprender sobre o programa &lt;strong&gt;onefetch&lt;/strong&gt;, que mostra um resumo do seu repositório &lt;strong&gt;GIT&lt;/strong&gt;, trazendo muitas informações e estatísticas de código. Neste tutorial estarei utilizando o sistema operacional &lt;strong&gt;Xubuntu 18.04&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Vamos realizar a instalação do &lt;strong&gt;onefetch&lt;/strong&gt; utilizando o &lt;strong&gt;Snap&lt;/strong&gt; , caso não tenha o &lt;strong&gt;Snap&lt;/strong&gt; instalado acesse este &lt;a href="https://franciscochaves.com.br/blog/instale-o-snap-no-xubuntu"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Instale o programa &lt;strong&gt;onefetch&lt;/strong&gt; com comando a seguir:&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;snap &lt;span class="nb"&gt;install &lt;/span&gt;onefetch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verifique se a instalação foi realizada com sucesso, observando o resultado da versão instalada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;onefetch &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora vamos testar o programa, para isso realizar o &lt;em&gt;download&lt;/em&gt; de algum repositório, no caso deste tutorial será utilizado o repositório do &lt;strong&gt;onefetch&lt;/strong&gt; , se não houver o &lt;strong&gt;Git&lt;/strong&gt; instalado em sua máquina acesse este &lt;a href="https://franciscochaves.com.br/blog/instale-o-git-no-xubuntu"&gt;link&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/o2sh/onefetch.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Acesse o diretório:&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;cd &lt;/span&gt;onefetch/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute o comando abaixo:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r_jGd83X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2021/jan/info-repo-onefetch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r_jGd83X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2021/jan/info-repo-onefetch.png" alt="Informações do repositório onefetch" width="773" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Valeu pessoal 😎✌!&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;INSTALL ONEFETCH FOR LINUX USING THE SNAP STORE | SNAPCRAFT. &lt;strong&gt;Snapcraft&lt;/strong&gt;. Disponível em: &lt;a href="https://snapcraft.io/onefetch"&gt;https://snapcraft.io/onefetch&lt;/a&gt;. Acesso em: 14 jan. 2021.&lt;/p&gt;

&lt;p&gt;O2SH/ONEFETCH. &lt;strong&gt;GitHub&lt;/strong&gt;. Disponível em: &lt;a href="https://github.com/o2sh/onefetch/"&gt;https://github.com/o2sh/onefetch/&lt;/a&gt;. Acesso em: 14 jan. 2021.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>git</category>
      <category>github</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Interfaces em Java</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Fri, 19 Feb 2021 13:22:47 +0000</pubDate>
      <link>https://dev.to/franciscochaves/interfaces-em-java-ap</link>
      <guid>https://dev.to/franciscochaves/interfaces-em-java-ap</guid>
      <description>&lt;p&gt;As interfaces em &lt;strong&gt;Java&lt;/strong&gt; é uma forma de contrato, que a classe ao assinar, tem a responsabilidade de implementar os seus métodos.&lt;/p&gt;

&lt;p&gt;Exemplos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;CarroTurbo&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;ligarTurbo&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;desligarTurbo&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Essa é a nossa &lt;strong&gt;interface&lt;/strong&gt;, a &lt;strong&gt;classe&lt;/strong&gt; que implementa-lá também será um "CarroTurbo" , já que obrigatoriamente deverá implementar seus métodos.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CarroPasseio&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;CarroTurbo&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;velocidade&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;marca&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

  &lt;span class="nd"&gt;@Override&lt;/span&gt;
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;ligarTurbo&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;//aumentar a velocidade&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="nd"&gt;@Override&lt;/span&gt;
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;desligarTurbo&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//diminuir a velocidade&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A classe "CarroPasseio" implementar "CarroTurbo".&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CarroDeCorrida&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;CarroTurbo&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;velocidade&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;marca&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

  &lt;span class="nd"&gt;@Override&lt;/span&gt;
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;ligarTurbo&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;//aumentar a velocidade&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="nd"&gt;@Override&lt;/span&gt;
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;desligarTurbo&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;//diminuir a velocidade&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A classe "CarroDeCorrida" implementar "CarroTurbo".&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Corrida&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;poderCorrer&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;CarroTurbo&lt;/span&gt; &lt;span class="n"&gt;carroTurbo&lt;/span&gt;&lt;span class="o"&gt;){&lt;/span&gt;
    &lt;span class="n"&gt;carroTurbo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ligarTurbo&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;carroTurbo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;desligarTurbo&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A classe "Corrida" possui o método "poderCorrer" que aceita um "CarroTurbo" , assim qualquer classe que implementar "CarroTurbo", poderá ser utilizado no método, tendo a garantia que o "contrato foi efetuado" e possui os métodos para "ligarTurbo" e "desligarTurbo".&lt;/p&gt;

&lt;p&gt;Diagrama de classe:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ewy869Lq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0w48353ccps5y31nv1t8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ewy869Lq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0w48353ccps5y31nv1t8.png" alt="Diagrama" width="550" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Código fonte no GitHub:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/franciscojsc"&gt;
        franciscojsc
      &lt;/a&gt; / &lt;a href="https://github.com/franciscojsc/interface-em-java"&gt;
        interface-em-java
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      As interfaces em Java é uma forma de contrato, que a classe ao assinar, tem a responsabilidade de  implementar os seus métodos.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>tutorial</category>
      <category>braziliandevs</category>
      <category>java</category>
    </item>
    <item>
      <title>XML com Java</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Thu, 28 Jan 2021 19:31:51 +0000</pubDate>
      <link>https://dev.to/franciscochaves/xml-com-java-2n34</link>
      <guid>https://dev.to/franciscochaves/xml-com-java-2n34</guid>
      <description>&lt;p&gt;Olá pessoal, hoje irei explicar um pouco sobre como gerar um &lt;strong&gt;XML&lt;/strong&gt; através de uma classe Java, com a biblioteca &lt;a href="https://x-stream.github.io/download.html"&gt;XStream&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Vamos criar um projeto chamado &lt;strong&gt;XML_Java&lt;/strong&gt;, e dentro do projeto criar uma pasta com o nome &lt;strong&gt;lib&lt;/strong&gt;, onde será armazenado o nosso &lt;strong&gt;jar&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Será necessário baixar o jar do &lt;strong&gt;XStream&lt;/strong&gt; no site: &lt;a href="http://x-stream.github.io/download.html"&gt;https://x-stream.github.io/download.html&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--37icpY9s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/xstream.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--37icpY9s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/xstream.gif" alt="xstream" width="446" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após o &lt;em&gt;download&lt;/em&gt;, salve o arquivo &lt;strong&gt;jar&lt;/strong&gt; na pasta &lt;strong&gt;lib&lt;/strong&gt; dentro do projeto criado anteriormente, e adicione o jar ao &lt;em&gt;build path&lt;/em&gt;, com estes procedimentos efetuados, o projeto reconhece o XStream.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VA8Q5HpV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/workspace-lib-add.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VA8Q5HpV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/workspace-lib-add.gif" alt="Adicione biblioteca XStream" width="306" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora vamos codificar um pouco, utilizaremos duas classes, uma  classe cliente que vamos usar seus atributos para criação do &lt;strong&gt;XML&lt;/strong&gt;, e outra classe para roda a aplicação.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Cliente&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

  &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;sobrenome&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;idade&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;identificador&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;getNome&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setNome&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;nome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;getSobrenome&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;sobrenome&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setSobrenome&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;sobrenome&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sobrenome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sobrenome&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;getIdade&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;idade&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setIdade&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;idade&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;idade&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;getIdentificador&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;identificador&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setIdentificador&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;identificador&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;identificador&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;identificador&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Classe responsável por inicializar a aplicação.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.thoughtworks.xstream.XStream&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.thoughtworks.xstream.io.xml.DomDriver&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Main&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;Cliente&lt;/span&gt; &lt;span class="n"&gt;cliente&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Cliente&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;cliente&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setNome&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Francisco"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;cliente&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setSobrenome&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Chaves"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;cliente&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setIdade&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;cliente&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setIdentificador&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

    &lt;span class="nc"&gt;XStream&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;XStream&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DomDriver&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;

    &lt;span class="c1"&gt;//remoneando o nome do pacote&lt;/span&gt;
    &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;alias&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"cliente"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Cliente&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;//criando o xml&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toXML&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cliente&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;O resultado impresso no console após a execução:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;cliente&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;nome&amp;gt;&lt;/span&gt;Francisco&lt;span class="nt"&gt;&amp;lt;/nome&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;sobrenome&amp;gt;&lt;/span&gt;Chaves&lt;span class="nt"&gt;&amp;lt;/sobrenome&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;idade&amp;gt;&lt;/span&gt;24&lt;span class="nt"&gt;&amp;lt;/idade&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;identificador&amp;gt;&lt;/span&gt;1&lt;span class="nt"&gt;&amp;lt;/identificador&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/cliente&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Código do projeto no GitHub: &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/franciscojsc"&gt;
        franciscojsc
      &lt;/a&gt; / &lt;a href="https://github.com/franciscojsc/xml-com-java"&gt;
        xml-com-java
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      XML com Java, utilizando a biblioteca XStream.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
🎉 XML com Java 🎉&lt;/h1&gt;
&lt;p&gt;XML com Java, utilizando a biblioteca &lt;a href="https://x-stream.github.io" rel="nofollow"&gt;XStream&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/franciscojsc/xml-com-javaxstream.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V0dDpa0Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://github.com/franciscojsc/xml-com-javaxstream.gif" alt="XStream"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
📝 Licença&lt;/h2&gt;
&lt;p&gt;Esse projeto está sob a licença MIT. Veja o arquivo &lt;a href="https://github.com/franciscojsc/xml-com-javaLICENSE"&gt;LICENSE&lt;/a&gt; para mais detalhes.&lt;/p&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/franciscojsc/xml-com-java"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>braziliandevs</category>
      <category>java</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Alterando o tema do NetBeans</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Thu, 21 Jan 2021 21:10:36 +0000</pubDate>
      <link>https://dev.to/franciscochaves/alterando-o-tema-do-netbeans-5ce0</link>
      <guid>https://dev.to/franciscochaves/alterando-o-tema-do-netbeans-5ce0</guid>
      <description>&lt;p&gt;Olá pessoal, hoje vou passar uma dica rápida para quem pretender trocar o tema da IDE &lt;strong&gt;NetBeans&lt;/strong&gt;, então vamos lá.&lt;/p&gt;

&lt;p&gt;Com seu navegador aberto, acesse o &lt;em&gt;site&lt;/em&gt; &lt;a href="http://netbeansthemes.com"&gt;http://netbeansthemes.com&lt;/a&gt;, e será exibido uma página com várias opções de temas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oy5wdQtY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/pagina-tema-netbeans.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oy5wdQtY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/pagina-tema-netbeans.png" alt="Site de tema para NetBeans" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos selecionar um tema para &lt;em&gt;donwload&lt;/em&gt;, neste post irei escolher o tema &lt;strong&gt;Monster v2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n_BDVk_p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/temas-netbeans.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n_BDVk_p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/temas-netbeans.png" alt="Temas Netbeans" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora clique em &lt;em&gt;Download&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ukp0JZDc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/moster-v2-tema1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ukp0JZDc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/moster-v2-tema1.png" alt="Tema Moster v2" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após ter baixado o nosso tema, vamos instalá-lo, abra o &lt;strong&gt;NetBeans&lt;/strong&gt; e selecione a &lt;em&gt;guia Ferramentas &amp;gt; Opções&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GpqCj-g_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/guiaferramentas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GpqCj-g_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/guiaferramentas.png" alt="Guia ferramentas" width="462" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clique em &lt;em&gt;Importar &amp;gt; Procurar&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TwWRbxV7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/importa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TwWRbxV7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/importa.png" alt="Importa tema" width="763" height="669"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Encontre a sua pasta onde o tema  foi baixado, selecione e &lt;em&gt;OK&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E5DtY3K---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/importa-ok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E5DtY3K---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/importa-ok.png" alt="Importação OK" width="426" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Logo após será preciso reiniciar a &lt;strong&gt;IDE,&lt;/strong&gt; e uma nova aparência no editor da IDE estará instalada.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BuoikpcG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/ide-presonalizada.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BuoikpcG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://franciscochaves.com.br/assets/img/blog/2017/fev/ide-presonalizada.png" alt="IDE personalizada" width="601" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>tutorial</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Fatorial em Java</title>
      <dc:creator>Francisco Chaves</dc:creator>
      <pubDate>Thu, 14 Jan 2021 16:01:05 +0000</pubDate>
      <link>https://dev.to/franciscochaves/fatorial-em-java-242p</link>
      <guid>https://dev.to/franciscochaves/fatorial-em-java-242p</guid>
      <description>&lt;p&gt;Olá pessoal, irei mostrar algumas formas de realizar o fatorial em Java.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fatorial interativo
&lt;/h2&gt;

&lt;p&gt;Vamos calcular o fatorial do número 5 de forma interativa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;fatorialInterativo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;numero&lt;/span&gt;&lt;span class="o"&gt;){&lt;/span&gt;
  &lt;span class="c1"&gt;//variável para armazenar o valor a ser calculado&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;fatorial&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="c1"&gt;//laço de repetição&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;numero&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;fatorial&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fatorial&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;fatorial&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Fatorial recursivo
&lt;/h2&gt;

&lt;p&gt;Queremos saber o fatorial do número 5 de forma recursiva:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;fatorialRecursivo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;fatRec&lt;/span&gt;&lt;span class="o"&gt;){&lt;/span&gt;
  &lt;span class="c1"&gt;//condição de parada&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fatRec&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;){&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;;&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
  &lt;span class="c1"&gt;//5!&lt;/span&gt;
  &lt;span class="c1"&gt;//5 * 4! = 120&lt;/span&gt;
  &lt;span class="c1"&gt;//4 * 3! = 24&lt;/span&gt;
  &lt;span class="c1"&gt;//3 * 2! = 6&lt;/span&gt;
  &lt;span class="c1"&gt;//2 * 1! = 2&lt;/span&gt;
  &lt;span class="c1"&gt;// 1! = 1&lt;/span&gt;
  &lt;span class="c1"&gt;// se o valor for igual a um, para a recursão e retorna calculando os valores&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fatRec&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt; &lt;span class="n"&gt;fatorialRecursivo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fatRec&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Para realizar o fatorial de forma recursiva teremos que criar um método para retornar o valor calculado.&lt;br&gt;
Então criaremos um método que retorne um inteiro e receba como parâmetro um valor para ser calculado, lembrando que qualquer método que não seja &lt;strong&gt;void&lt;/strong&gt; retorna algum valor ou objeto, no método especificamos a condição de parada, ou seja, quando esta condição for verdadeira a recursão para, se a condição de parada for falsa retorna o mesmo método com outro parâmetro até encontrar a condição verdadeira, deve-se tomar cuidado para esta condição não se tornar uma recursão infinita, se a condição nunca for verdadeira o método irá consumir muita memória da máquina e ocorrerá um erro conhecido por &lt;strong&gt;StackOverflowError&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Código fonte no Github:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/franciscojsc"&gt;
        franciscojsc
      &lt;/a&gt; / &lt;a href="https://github.com/franciscojsc/fatorial-em-java"&gt;
        fatorial-em-java
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Fatorial em Java, recursivo e  não recursivo.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
🎉 Fatorial em Java 🎉&lt;/h1&gt;
&lt;p&gt;Obtenha o fatorial em Java de forma recursiva e não recursiva.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/franciscojsc/fatorial-em-javafatorial.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HXcXkXYu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/franciscojsc/fatorial-em-javafatorial.png" alt="Fatorial"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
📝 Licença&lt;/h2&gt;
&lt;p&gt;Esse projeto está sob a licença MIT. Veja o arquivo &lt;a href="https://github.com/franciscojsc/fatorial-em-javaLICENSE"&gt;LICENSE&lt;/a&gt; para mais detalhes.&lt;/p&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/franciscojsc/fatorial-em-java"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>beginners</category>
      <category>braziliandevs</category>
      <category>java</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
