<?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: Altencir Junior</title>
    <description>The latest articles on DEV Community by Altencir Junior (@altencirsilvajr).</description>
    <link>https://dev.to/altencirsilvajr</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%2F1001268%2Ff7cfcbe1-9d1a-4d27-803c-37e7387434f9.jpeg</url>
      <title>DEV Community: Altencir Junior</title>
      <link>https://dev.to/altencirsilvajr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/altencirsilvajr"/>
    <language>en</language>
    <item>
      <title>Transformando AppImage "em um app instalado"</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Wed, 04 Dec 2024 23:33:44 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/transformando-appimage-em-um-app-instalado-3lg0</link>
      <guid>https://dev.to/altencirsilvajr/transformando-appimage-em-um-app-instalado-3lg0</guid>
      <description>&lt;p&gt;Depois de tanto tempo sem postar nehum artigo aqui no Dev.to, finalmente consegui retornar para compartilhar.&lt;/p&gt;

&lt;p&gt;Para fazer uma aplicação &lt;em&gt;.AppImage&lt;/em&gt; aparecer como uma aplicação instalada no Linux(Testado no Ubuntu, distros próximas devem funcionar), você deve seguir os seguintes passos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Mover o arquivo &lt;em&gt;.AppImage&lt;/em&gt; para um local escolhido:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para facilitar o gerenciamento, mova o arquivo &lt;em&gt;.AppImage&lt;/em&gt;, (irei utilizar a nova IDE integrada com Inteligência Artificial: CURSOR.) para uma pasta, como ~/Applications (ou outra de sua preferência) você deve utilizar o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~ mkdir -p ~/Applications
~ mv ~/Downloads/cursor-0.43.5x86_64.AppImage ~/Applications/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Tornar o arquivo executável&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Utilize o comando:&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 ~/Applications/cursor-0.43.5x86_64.AppImage`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Criar um arquivo .desktop&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Crie um arquivo &lt;em&gt;.desktop&lt;/em&gt; para que a aplicação apareça no menu. Use uma IDE ou editor de texto, para criar o arquivo (por exemplo, cursor.desktop) em ~/.local/share/applications/:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`nano ~/.local/share/applications/cursor.desktop`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Configure:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`
Name=Cursor
Exec=/home/seuUsuario/Applications/cursor-0.43.5x86_64.AppImage
Icon=/home/seuUsuario/Applications/icon.png # Substitua pelo caminho de um ícone, se disponível.
Type=Application
Categories=Development;IDE;
Terminal=false
`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Atualize o &lt;em&gt;.desktop&lt;/em&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`update-desktop-database ~/.local/share/applications/`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim que pesquisar o nome do seu aplicativo, ele irá aparecer na central de aplicações de sua máquina.&lt;/p&gt;

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

&lt;p&gt;Espero que tenha gostado, até a próxima&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Passando parâmetros por rotas em React Native</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Wed, 24 May 2023 20:23:46 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/passando-parametros-por-rotas-em-react-native-3oog</link>
      <guid>https://dev.to/altencirsilvajr/passando-parametros-por-rotas-em-react-native-3oog</guid>
      <description>&lt;p&gt;Criando uma nova aplicação, tive a necessidade de passar um determinado parâmetro que estava em um &lt;code&gt;input&lt;/code&gt;, de modo que em uma tela seguinte o título seria o que foi digitado nele. Utilizei um método aprendido recentemente que pode auxiliar os que desejam saber como fazer isso, neste artigo explicarei como executei a resolução.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O Problema -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Como explicado antes, eu quero passar um parâmetro dinâmico escrito em um input e substituir por um título em outra página. Mas como fazer isso? Meu código estava do seguinte modo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
(...)

export function NewGroup(){

    const navigation = useNavigation();

    function handleNew(){
        navigation.navigate('players',{"teste"});
    }


    return(
        &amp;lt;Container&amp;gt;
            &amp;lt;Header showBackButton/&amp;gt;

            &amp;lt;ContentTwo&amp;gt;
                &amp;lt;Icon/&amp;gt;

                &amp;lt;Highlight
                    title="Nova Turma"
                    subtitle="Crie turmas e adicione pessoas"
                /&amp;gt;

                &amp;lt;Input
                    placeholder="Nome da turma..."
                    placeholderTextColor= "#7C7C8A"
                /&amp;gt;  
            &amp;lt;/ContentTwo&amp;gt;

            &amp;lt;Button
                title="Criar"
                onPress={handleNew}
            /&amp;gt;  
        &amp;lt;/Container&amp;gt;
    );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste código, temos a base de um componente que tem um &lt;code&gt;input&lt;/code&gt; e &lt;code&gt;button&lt;/code&gt;. Neste botão,temos uma função chamada &lt;code&gt;handleNew&lt;/code&gt; que quando clicada executa a navegação para outra tela com nome &lt;code&gt;player&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Solução -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para que no clique do botão eu não só passe para a próxima página, como também buscar o valor descrito dentro do &lt;code&gt;input&lt;/code&gt;, é necessário fazer uma manipulação de estado. Com isso, utilizo o hook&lt;code&gt;useState&lt;/code&gt; e crio uma constante que irá pegar o parâmetro escrito. O código ficará do seguinte modo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export function NewGroup(){

    const [group, setGroup] = useState('');

    const navigation = useNavigation();

    function handleNew(){
        navigation.navigate('players',{ group });
    }


    return(
        &amp;lt;Container&amp;gt;
            &amp;lt;Header showBackButton/&amp;gt;

            &amp;lt;ContentTwo&amp;gt;
                &amp;lt;Icon/&amp;gt;

                &amp;lt;Highlight
                    title="Nova Turma"
                    subtitle="Crie turmas e adicione pessoas"
                /&amp;gt;

                &amp;lt;Input
                    placeholder="Nome da turma..."
                    placeholderTextColor= "#7C7C8A"
                    onChangeText={setGroup}
                /&amp;gt;  
            &amp;lt;/ContentTwo&amp;gt;

            &amp;lt;Button
                title="Criar"
                onPress={handleNew}
            /&amp;gt;  
        &amp;lt;/Container&amp;gt;
    );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste código, criamos uma const que guardará &lt;code&gt;group&lt;/code&gt;e &lt;code&gt;setGroup&lt;/code&gt;. Ao adicionar no &lt;code&gt;input&lt;/code&gt; o &lt;code&gt;setGroup&lt;/code&gt; receberá tudo que foi escrito no &lt;code&gt;group&lt;/code&gt;. E adicionamos na navegação da página o &lt;code&gt;group&lt;/code&gt;que irá ser carregado para a tela seguinte.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recebendo o parâmetro de outra tela -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para receber o que foi escrito no input da tela anterior, fazemos o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;type RouteParams = {
    group: string;
}



export function Players (){

    const [team, setTeam] = useState('Time A');
    const [players, setPlayers] = useState([]);

    const route = useRoute();
    const { group } = route.params as RouteParams;

return(
        &amp;lt;Container&amp;gt;
            &amp;lt;Header showBackButton/&amp;gt;

            &amp;lt;ContentOne&amp;gt;
                &amp;lt;Highlight 
                title={group}
                subtitle="Adicione e separe os times"
                /&amp;gt; 
            &amp;lt;/ContentOne&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Importamos o useRoute que é um hook que acessa propriedades de outras telas, e nela criamos um hook com nome &lt;code&gt;route&lt;/code&gt; que irá receber esse hook. Após isso, nós desestruturamos dentro de uma const o parâmetro da tela anterior, e nele será recebido: &lt;code&gt;route.params as RouteParams;&lt;/code&gt; esse caminho se deve a tipagem necessária para que o typescript pudesse reconhecer que parâmetros ele recebe, que é uma string. Logo após isso, escolhemos onde será trazido o parâmetro que escolhi ser o título da página.&lt;/p&gt;

&lt;p&gt;Vejamos o resultado:&lt;/p&gt;

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

&lt;p&gt;Ao passar o parâmetro digitado, o título da tela seguinte irá mudar do seguinte modo:&lt;/p&gt;

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

&lt;p&gt;Esse foi o método que utilizei para resolver esse problema, espero que esse artigo tenha o ajudado. Obrigado por ler até aqui!!!&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>programming</category>
      <category>android</category>
    </item>
    <item>
      <title>Resolvendo problemas no hackerRank: Contando CamelCases</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Tue, 09 May 2023 00:35:16 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-contando-camelcases-4nl</link>
      <guid>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-contando-camelcases-4nl</guid>
      <description>&lt;p&gt;Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, iremos percorrer todos os valores de uma função declarada e analisar se estes tem camelCase, caso sim, iremos contá-los. Vejamos mais informações com a explicação e sua resolução.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CamelCase -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Há uma sequência de palavras no CamelCase como uma sequência de letras,&lt;code&gt;s&lt;/code&gt;, tendo as seguintes propriedades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;É uma concatenação de uma ou mais palavras que consistem em letras inglesas.&lt;/li&gt;
&lt;li&gt;Todas as letras da primeira palavra são minúsculas .&lt;/li&gt;
&lt;li&gt;Para cada uma das palavras subsequentes, a primeira letra é maiúscula e as demais letras são minúsculas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vamos determinar o número de valores de &lt;code&gt;s&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Vejamos um exemplo:&lt;/p&gt;

&lt;p&gt;s = oneTwoTree, tem 3 palavras em inglês logo nosso contador irá percorrer &lt;code&gt;s&lt;/code&gt; e retornar 3 como a quantidade exata de CamelCases. Agora vejamos como resolver isso em Javascript em nosso algoritmo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function camelcase(s) {
    // Write your code here
  let count = 1;

  for ( let letters of s){
    if(letters == letters.toUpperCase()){
      count++
    }
  }
  return count
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste código, nós declaramos um contador &lt;code&gt;count&lt;/code&gt;,com início 1. E criamos um laço de repetição &lt;code&gt;for&lt;/code&gt;que irá percorrer o parâmetro da função &lt;code&gt;camelcas&lt;/code&gt;. Onde declaramos uma variável letters que recebe &lt;code&gt;s&lt;/code&gt;, se essa variável for igual a UpperCase, ou seja se dentro desse parâmetro tiver alguma letra em camelCase, iremos adicionar +1. Depois retornaremos a variável &lt;code&gt;count&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;O resultado será:&lt;br&gt;
&lt;/p&gt;

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

input: 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim, concluímos mais um &lt;em&gt;Resolvendo problemas no HackerRank:&lt;/em&gt; até a próxima.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Utilizando Phosphor Icons em React Native</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Thu, 04 May 2023 20:37:38 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/utilizando-phosphor-icons-em-react-native-4ihg</link>
      <guid>https://dev.to/altencirsilvajr/utilizando-phosphor-icons-em-react-native-4ihg</guid>
      <description>&lt;p&gt;Os Phosphor Icons são uma coleção de ícones desenvolvida pelo designer Steven Roberts. Esses ícones são minimalistas, nítidos e com estilo moderno, adequados para uma ampla variedade de aplicativos. A biblioteca Phosphor Icons oferece mais de 800 ícones distintos, abrangendo várias categorias, como ações, mídia, dispositivos, emojis, entre outras. Neste artigo, vamos explorar como integrar e utilizar os Phosphor Icons em um aplicativo React Native.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instalação dos Phosphor Icons em um projeto React Native -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para começar a usar os Phosphor Icons em um projeto React Native. Execute o seguinte comando para instalar a biblioteca react-native-phosphor-icons usando o npm ou o yarn:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install react-native-phosphor-icons
yarn add react-native-phosphor-icons
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após a instalação, execute o seguinte comando para linkar a biblioteca ao seu projeto React Native:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx react-native link react-native-phosphor-icons
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aguarde até que o processo de linkagem seja concluído. Isso fará com que os arquivos de ícones sejam corretamente vinculados ao seu projeto.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phosphor Icons em um componente React Native -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Após a instalação e linkagem dos Phosphor Icons, você pode começar a usá-los em qualquer componente React Native. Siga as etapas abaixo para exibir um ícone em um componente:&lt;/p&gt;

&lt;p&gt;Importe o ícone específico que deseja usar em seu componente React Native. Por exemplo, se você deseja exibir um ícone de uma estrela, você pode fazer o seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { PhosphorIcons } from 'react-native-phosphor-icons';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No seu componente, você pode usar o ícone como um componente de imagem ou um componente de texto, por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import { View, Text, Image } from 'react-native';
import { PhosphorIcons } from 'react-native-phosphor-icons';

const MyComponent = () =&amp;gt; {
  return (
    &amp;lt;View&amp;gt;
      &amp;lt;Text&amp;gt;Este é um ícone usando um componente de imagem:&amp;lt;/Text&amp;gt;
      &amp;lt;Image source={PhosphorIcons.Star} /&amp;gt;

      &amp;lt;Text&amp;gt;Este é um ícone usando um componente de texto:&amp;lt;/Text&amp;gt;
      &amp;lt;Text&amp;gt;
        &amp;lt;PhosphorIcons.Star size={24} color="blue" /&amp;gt;
      &amp;lt;/Text&amp;gt;
    &amp;lt;/View&amp;gt;
  );
};

export default MyComponent;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No código acima, adicionamos uma função de handleIconPress que será chamada quando o usuário pressionar o ícone. Nesse exemplo, apenas exibimos uma mensagem no console quando o ícone é pressionado, mas você pode adicionar a lógica desejada para lidar com a interação do usuário.&lt;/p&gt;

&lt;p&gt;Também adicionamos uma linha de ícones adicionais exibidos em uma linha usando um componente View com flexDirection: 'row'. Esses ícones demonstram como você pode adicionar vários ícones e ajustar o tamanho e a cor de cada um deles.&lt;/p&gt;

&lt;p&gt;Essas são apenas algumas das funcionalidades e possibilidades que os Phosphor Icons oferecem. Você pode explorar a biblioteca para encontrar mais ícones e personalizar ainda mais os estilos deles.&lt;/p&gt;

&lt;p&gt;Os Phosphor Icons são uma excelente opção para adicionar ícones atraentes e modernos em seus aplicativos React Native. Com a biblioteca react-native-phosphor-icons, você pode integrar facilmente esses ícones em seu projeto e personalizá-los de acordo com suas necessidades. Agora você pode criar interfaces de usuário atraentes e intuitivas com uma ampla seleção de ícones Phosphor disponíveis.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>mobile</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Resolvendo problemas no hackerRank: Redução de Strings</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Thu, 04 May 2023 12:58:47 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-reducao-de-strings-337n</link>
      <guid>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-reducao-de-strings-337n</guid>
      <description>&lt;p&gt;Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, reduzir os valores que se encontram dentro de um parâmetro. Vejamos mais informações com a explicação e sua resolução.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Super Reduced String -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reduza uma sequência de caracteres minúsculos no intervalo ascii[‘a’..’z’]executando uma série de operações. Em cada operação, selecione um par de letras adjacentes que correspondam e exclua-as.&lt;/p&gt;

&lt;p&gt;Exclua o máximo de caracteres possível usando este método e retorne a string resultante. Se a string final estiver vazia, retorne Empty String. Vejamos um exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;aaabccdddd&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;abd&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A execução do código a seguir nos mostra:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function superReducedString(s) {
    // Write your code here
  let arr = s.split("");

    for (let i = 0; i &amp;lt; arr.length; i++) {

        if (arr.length === 0) return ('Empty String')
        if (arr[i] === arr[i + 1]) {
            arr.splice(i, 2)
            i = i - 2
        }
    }
    return arr.join('')
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A linha let arr = s.split(""); converte a string s em um array de caracteres, onde cada caractere da string se torna um elemento do array. Isso é feito usando o método split(""), que divide a string em cada caractere vazio.&lt;/p&gt;

&lt;p&gt;Em seguida, um loop for é usado para iterar sobre o array de caracteres. A variável de controle i representa o índice atual no array.&lt;/p&gt;

&lt;p&gt;Dentro do loop, há uma verificação condicional if (arr.length === 0) return ('Empty String'). Se o tamanho do array se tornar zero, isso significa que todos os caracteres idênticos foram removidos e a string resultante é vazia. Nesse caso, a função retorna a string 'Empty String' para indicar que a string original foi completamente reduzida.&lt;/p&gt;

&lt;p&gt;A próxima verificação condicional if (arr[i] === arr[i + 1]) verifica se o caractere atual é igual ao próximo caractere no array. Se eles forem idênticos, isso significa que encontramos uma sequência de caracteres repetidos.&lt;/p&gt;

&lt;p&gt;Dentro do bloco if, a linha arr.splice(i, 2) remove os caracteres repetidos do array. O método splice modifica o array original, removendo dois elementos a partir da posição i, ou seja, o caractere atual e o próximo caractere.&lt;/p&gt;

&lt;p&gt;Após a remoção dos caracteres repetidos, a linha i = i - 2 é executada para atualizar o valor da variável de controle i. Isso é necessário para garantir que o próximo loop do for verifique novamente o caractere atual e seu novo próximo caractere, já que os índices do array foram modificados pela remoção.&lt;/p&gt;

&lt;p&gt;O loop continua até que todos os caracteres repetidos tenham sido removidos do array.&lt;/p&gt;

&lt;p&gt;Finalmente, fora do loop, a função retorna a string resultante usando o método join(''). Isso une todos os elementos do array em uma única string sem espaços entre eles.&lt;/p&gt;

&lt;p&gt;O resultado será:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aaabccddd
Expected Output
abd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Iconify em React Native</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Wed, 03 May 2023 14:50:41 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/iconify-em-react-native-28fp</link>
      <guid>https://dev.to/altencirsilvajr/iconify-em-react-native-28fp</guid>
      <description>&lt;p&gt;O Iconify é uma biblioteca popular de ícones para a web e aplicativos móveis, incluindo o React Native. Ele fornece um conjunto abrangente de ícones que podem ser facilmente integrados em seus projetos. Neste artigo iremos fazer sua instalação e aprender um pouco sobre seu uso:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instalando o Iconify -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Certifique-se de ter o Node.js e o npm (gerenciador de pacotes do Node.js) instalados em seu sistema. Em seguida, abra o terminal e execute o seguinte comando para instalar a biblioteca Iconify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @iconify/react-native
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Utilizando o Iconify -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Depois de instalar a biblioteca, você pode importar os componentes necessários no seu arquivo de componente React Native. Geralmente, você importará o componente Icon, que é usado para exibir um ícone específico. Você também pode importar ícones específicos do pacote de ícones que deseja usar. Aqui está um exemplo de importação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Icon from '@iconify/react-native';
import homeIcon from '@iconify-icons/mdi/home';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora você pode usar o componente Icon para exibir um ícone em seu aplicativo. O componente Icon requer duas propriedades principais: icon e size. A propriedade icon define qual ícone será exibido e a propriedade size define o tamanho do ícone. Aqui está um exemplo de uso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Icon icon={homeIcon} size={24} /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo, estamos exibindo o ícone "home" com tamanho 24. Você também pode usar outras propriedades para personalizar a aparência do ícone, como color para definir a cor do ícone e style para adicionar estilos CSS adicionais ao ícone.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Icon icon={homeIcon} size={24} color="#ff0000" style={{ marginLeft: 10 }} /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este é um exemplo básico de como utilizar o Iconify em um projeto React Native. Lembre-se de que você pode explorar a documentação oficial do Iconify para obter mais informações sobre os recursos e opções disponíveis.(&lt;a href="https://github.com/oktaysenkan/react-native-iconify/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;https://github.com/oktaysenkan/react-native-iconify/blob/main/CONTRIBUTING.md&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Obrigado por ler até aqui.&lt;/p&gt;

</description>
      <category>reactnative</category>
    </item>
    <item>
      <title>Resolvendo problemas no HackerRank: Joaninhas Felizes</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Wed, 03 May 2023 13:12:47 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-joaninhas-felizes-5gc</link>
      <guid>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-joaninhas-felizes-5gc</guid>
      <description>&lt;p&gt;Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, iremos jogar um jogo de tabuleiro de joaninhas . Vejamos mais informações com a explicação e sua resolução.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Ladybugs -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Happy Ladybugs é um jogo de tabuleiro com as seguintes propriedades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O tabuleiro é representado por uma string, b, de comprimento n. O ith caractere da string, b[i], denota a ith célula do quadro.&lt;/li&gt;
&lt;li&gt;Se b[i] for um sublinhado (ou seja, _), significa que a i-ésima célula do quadro está vazia.&lt;/li&gt;
&lt;li&gt;Se b[i] for uma letra maiúscula do alfabeto inglês (ascii[AZ]), significa que a ¿ésima célula contém uma joaninha da cor b[i].&lt;/li&gt;
&lt;li&gt;A string b não conterá nenhum outro caractere.&lt;/li&gt;
&lt;li&gt;Uma joaninha fica feliz apenas quando sua célula adjacente esquerda ou direita (ou seja, b[i+1]) é ocupada por outra joaninha da mesma cor.&lt;/li&gt;
&lt;li&gt;Em um único movimento, você pode mover uma joaninha de sua posição atual para qualquer célula vazia.&lt;/li&gt;
&lt;li&gt;Dados os valores de n e b para g jogos de Happy Joaninhas, determine se é possível fazer todas as joaninhas felizes. Para cada jogo, retorne SIM se todas as joaninhas puderem ficar felizes por meio de alguns movimentos. Caso contrário, retorne NÃO.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exemplo:&lt;/p&gt;

&lt;p&gt;b = [YYR_B_BR]&lt;br&gt;
Você pode mover o B e R mais à direita para fazer b = [YYRRBB_] e todas as joaninhas ficarão felizes. Retorno SIM.&lt;/p&gt;

&lt;p&gt;Vejamos o código a seguir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const ladybugs = b.split("");
    const ladybugsSet = [...new Set(ladybugs)];

    if (!ladybugsSet.includes("_")) {
      for (let i = 0; i &amp;lt; ladybugs.length; i++) {
        if (ladybugs[i - 1] !== ladybugs[i] &amp;amp;&amp;amp; ladybugs[i] !== ladybugs[i + 1]) return "NO";
      }
      return "YES";
    } else {
      for (const ladybug of ladybugsSet) {
        if (ladybug !== "_") {
          if (ladybugs.filter((color) =&amp;gt; color === ladybug).length === 1) return "NO";
        }
      }
      return "YES";
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse código verifica se é possível rearranjar as joaninhas representadas pela string b de forma que cada joaninha tenha pelo menos uma joaninha vizinha da mesma cor, ou se é possível colocar "_" em alguns espaços vazios para atender a essa condição. Se for possível, a função retorna "YES"; caso contrário, retorna "NO".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;4
7
RBY_YBR
6
X_Y__X
2
__
6
B_RRBR


input:
YES
NO
YES
YES
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Barra de navegações com animações, em React Native</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Tue, 02 May 2023 17:44:15 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/barra-de-navegacoes-com-animacoes-em-react-native-1cp8</link>
      <guid>https://dev.to/altencirsilvajr/barra-de-navegacoes-com-animacoes-em-react-native-1cp8</guid>
      <description>&lt;p&gt;Criando um projeto pessoal, me deparei com a necessidade de fazer uma barra de navegação para meu app, com isso me veio a idéia de pesquisar uma forma de adicionar isso na minha aplicação e deixá-la muito mais profissional. Mostrarei a você neste tutorial como criar essa barra de navegação inferior personalizada e animada usando o React Navigation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Criando o projeto -&lt;/strong&gt;&lt;br&gt;
Assim como no título deste artigo informa,antes de começarmos, é necessário ter o ambiente de desenvolvimento do React Native configurado em sua máquina. Em seguida, você pode criar um novo projeto React Native executando o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-expo-app --template
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A opção acima irá fornecer escolhas como aplicação por padrão Blank, Blank com Typescript e outros, selecione a padrão. O nome ficará a seu critério. Chamarei meu projeto de TabSlide.&lt;/p&gt;

&lt;p&gt;Devemos também instalar as seguintes dependências:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @react-navigation/native

npm install @react-navigation/bottom-tabs

expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Feito isso, podemos começar a criar a barra de menu criando o seguinte componente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react";
import { View } from "react-native";
import { blue, grey } from "../../styles";
import { AntDesign } from "@expo/vector-icons";
type Props = {
  iconName: string;
  isCurrent?: boolean;
};
export const BottomMenuItem = ({ iconName, isCurrent }: Props) =&amp;gt; {
  return (
    &amp;lt;View
      style={{
        height: "100%",
        justifyContent: "center",
        alignItems: "center",
      }}
    &amp;gt;
      &amp;lt;AntDesign
        name={iconName}
        size={32}
        style={{ color: isCurrent ? blue : grey }}
      /&amp;gt;
    &amp;lt;/View&amp;gt;
  );
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você pode ajustar este componente como quiser. Utilizamos um &lt;code&gt;iconName&lt;/code&gt; para exibir o ícone correto e uma propriedade &lt;code&gt;isCurrent&lt;/code&gt; que altera a cor do ícone se estiver selecionado no momento. Para indicar se em que parte aba da barra de navegação estaremos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customizando o componente TabBar -&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;import React, { useState } from "react";
import {
  View,
  TouchableOpacity,
  Dimensions,
  StyleSheet,
} from "react-native";
import { BottomTabBarProps } from "@react-navigation/bottom-tabs";
import { BottomMenuItem } from "./BottomMenuItem";
import { blue } from "../../styles";
export const TabBar = ({
  state,
  descriptors,
  navigation,
}: BottomTabBarProps) =&amp;gt; {
  const totalWidth = Dimensions.get("window").width;
  const tabWidth = totalWidth / state.routes.length;
  return (
    &amp;lt;View style={[style.tabContainer, { width: totalWidth }]}&amp;gt;
      &amp;lt;View style={{ flexDirection: "row" }}&amp;gt;
        &amp;lt;View style={style.slider}/&amp;gt;
{state.routes.map((route, index) =&amp;gt; {
          const { options } = descriptors[route.key];
          const label =
            options.tabBarLabel !== undefined
              ? options.tabBarLabel
              : options.title !== undefined
              ? options.title
              : route.name;
const isFocused = state.index === index;
const onPress = () =&amp;gt; {
            const event = navigation.emit({
              type: "tabPress",
              target: route.key,
              canPreventDefault: true,
            });
if (!isFocused &amp;amp;&amp;amp; !event.defaultPrevented) {
              navigation.navigate(route.name);
            }
const onLongPress = () =&amp;gt; {
            navigation.emit({
              type: "tabLongPress",
              target: route.key,
            });
          };
return (
            &amp;lt;TouchableOpacity
              accessibilityRole="button"
              accessibilityStates={isFocused ? ["selected"] : []}
              accessibilityLabel={options.tabBarAccessibilityLabel}
              testID={options.tabBarTestID}
              onPress={onPress}
              onLongPress={onLongPress}
              style={{ flex: 1 }}
              key={index}
            &amp;gt;
              &amp;lt;BottomMenuItem
                iconName={label.toString()}
                isCurrent={isFocused}
              /&amp;gt;
            &amp;lt;/TouchableOpacity&amp;gt;
          );
        })}
      &amp;lt;/View&amp;gt;
    &amp;lt;/View&amp;gt;
  );
};
const style = StyleSheet.create({
  tabContainer: {
    height: 60,
    shadowOffset: {
      width: 0,
      height: -1,
    },
    shadowOpacity: 0.1,
    shadowRadius: 4.0,
    backgroundColor: "white",
    borderTopRightRadius: 20,
    borderTopLeftRadius: 20,
    elevation: 10,
    position: "absolute",
    bottom: 0,
  },
  slider: {
    height: 5,
    position: "absolute",
    top: 0,
    left: 10,
    backgroundColor: blue,
    borderRadius: 10,
    width: 50
},
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fizemos a importação do componente de criação da barra, e adicionamos uma customização a ele no caso acima.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conectando o TabBar personalizado ao sistema de navegação -&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;import React from "react";
import {
  createBottomTabNavigator,
  BottomTabBarProps,
} from "@react-navigation/bottom-tabs";
import { TabBar } from "./TabBar";
import { AppsScreen } from "../../screens/AppsScreen";
import { DashboardScreen } from "../../screens/DashboardScreen";
import { GroupScreen } from "../../screens/GroupScreen";
import { ProfileScreen } from "../../screens/ProfileScreen";
import { useSafeArea } from "react-native-safe-area-context";
import { View } from "react-native";
export const BottomMenu = () =&amp;gt; {
  const Tab = createBottomTabNavigator();
  return (
    &amp;lt;View style={{ flex: 1, position: "relative"}}&amp;gt;
      &amp;lt;Tab.Navigator
        tabBar={(props: BottomTabBarProps) =&amp;gt; &amp;lt;TabBar {...props} /&amp;gt;}
      &amp;gt;
        &amp;lt;Tab.Screen name="search1" component={AppsScreen} /&amp;gt;
        &amp;lt;Tab.Screen name="dashboard" component={DashboardScreen} /&amp;gt;
        &amp;lt;Tab.Screen name="profile" component={GroupScreen} /&amp;gt;
        &amp;lt;Tab.Screen name="user" component={ProfileScreen} /&amp;gt;
      &amp;lt;/Tab.Navigator&amp;gt;
      {useSafeArea().bottom &amp;gt; 0 &amp;amp;&amp;amp; (
        &amp;lt;View
          style={{
            height: useSafeArea().bottom - 5,
            backgroundColor: "white",
          }}
        /&amp;gt;
      )}
    &amp;lt;/View&amp;gt;
  );
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Acima foi feita  conexão entre as abas onde cada aba será uma nova navegação clicável.&lt;/p&gt;

&lt;p&gt;Nossa aplicação ficará parecida com isso:&lt;/p&gt;

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

&lt;p&gt;Neste artigo você aprendeu como criar barras de navegação animadas, espero que ele tenha o ajudado. O restante de criação ficará por sua criatividade. Obrigado por ler.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>mobile</category>
      <category>android</category>
      <category>programming</category>
    </item>
    <item>
      <title>Resolvendo problemas no HackerRank: Contador estranho</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Tue, 02 May 2023 11:39:36 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-contador-estranho-1208</link>
      <guid>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-contador-estranho-1208</guid>
      <description>&lt;p&gt;Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, vamos encontrar o valor T individual de um contador que tem um padrão de contagem diferente do normal. Vejamos mais informações com a explicação e sua resolução.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strange Counter -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Temos uma tabela com um contador fora do comum. A cada segmento, o número exibido por decrementa em 1 até chegar 1. Partindo para um segundo segmento o contador terá como redefinição 2x o valor inicial do segmento anterior. Podemos ver isso na imagem a seguir:&lt;/p&gt;

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

&lt;p&gt;Com base nisso, queremos encontrar o valor de cada segmento duplicado. Vejamos o algoritmo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function strangeCounter(t) {
    // Write your code here
  let end = 3
  let size = 3

    while (end&amp;lt;t) {
      size=2*size
      end+=size
    }  
    return end-t+1
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Temos o parâmetro &lt;code&gt;t&lt;/code&gt; representa a parte de tempo de cada segmento. Criamos variáveis &lt;code&gt;end&lt;/code&gt;e &lt;code&gt;size&lt;/code&gt;onde &lt;code&gt;end&lt;/code&gt;será o valor final de cada segmento &lt;code&gt;t&lt;/code&gt;e &lt;code&gt;size&lt;/code&gt;o seu multiplicador.&lt;/p&gt;

&lt;p&gt;Enquanto &lt;code&gt;end&lt;/code&gt;for menor que &lt;code&gt;t&lt;/code&gt;, iremos multiplicar o valor do valor do segmento em 2, e adicionar dentro de &lt;code&gt;end. Sendo assim,ao final retornamos a expressão&lt;/code&gt;end-t+1`que irá trazer o valor duplicado correto de cada segmento sendo multiplicado por 2.&lt;/p&gt;

&lt;p&gt;Seu resultado será:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
4&lt;br&gt;
input: 6&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&gt;
Assim, concluímos mais um &lt;em&gt;Resolvendo problemas no HackerRank:&lt;/em&gt; até a próxima.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Desenvolvendo um Aplicativo de Alarme em React Native</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Fri, 28 Apr 2023 18:25:11 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/desenvolvendo-um-aplicativo-de-alarme-em-react-native-a4e</link>
      <guid>https://dev.to/altencirsilvajr/desenvolvendo-um-aplicativo-de-alarme-em-react-native-a4e</guid>
      <description>&lt;p&gt;O React Native é um framework de desenvolvimento de aplicativos móveis que permite criar aplicativos nativos para iOS e Android usando JavaScript. Neste artigo, vamos explorar como criar um aplicativo de alarme simples usando o React Native.&lt;/p&gt;

&lt;p&gt;Antes de começar, certifique-se de ter o ambiente de desenvolvimento React Native configurado em seu sistema. Você pode seguir as instruções de instalação na documentação oficial do React Native.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Iniciando o projeto -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para criar um novo projeto React Native usando o seguinte comando no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-expo-app --template
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A opção acima irá fornecer escolhas como aplicação por padrão Blank, Blank com Typescript e outros, selecione a padrão. Abrindo o projeto no VScode iremos instalar a biblioteca React Native &lt;code&gt;DateTimePicker&lt;/code&gt;, que usaremos para permitir que os usuários definam a hora do alarme. Execute o seguinte comando no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @react-native-community/datetimepicker --save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Codificando a aplicação em React Native -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Abra o arquivo App.js e adicione o seguinte código para importar o &lt;code&gt;DateTimePicker&lt;/code&gt; e definir o estado inicial do aplicativo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, {useState} from 'react';
import {
  View,
  Text,
  StyleSheet,
  TouchableOpacity,
  Platform,
} from 'react-native';
import DateTimePicker from '@react-native-community/datetimepicker';

const App = () =&amp;gt; {
  const [date, setDate] = useState(new Date());
  const [mode, setMode] = useState('time');
  const [show, setShow] = useState(false);

  const onChange = (event, selectedDate) =&amp;gt; {
    const currentDate = selectedDate || date;
    setShow(Platform.OS === 'ios');
    setDate(currentDate);
  };

  const showMode = (currentMode) =&amp;gt; {
    setShow(true);
    setMode(currentMode);
  };

  const showTimepicker = () =&amp;gt; {
    showMode('time');
  };

  return (
    &amp;lt;View style={styles.container}&amp;gt;
      &amp;lt;TouchableOpacity onPress={showTimepicker} style={styles.button}&amp;gt;
        &amp;lt;Text style={styles.buttonText}&amp;gt;Definir alarme&amp;lt;/Text&amp;gt;
      &amp;lt;/TouchableOpacity&amp;gt;
      {show &amp;amp;&amp;amp; (
        &amp;lt;DateTimePicker
          testID="dateTimePicker"
          value={date}
          mode={mode}
          is24Hour={true}
          display="default"
          onChange={onChange}
        /&amp;gt;
      )}
    &amp;lt;/View&amp;gt;
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  button: {
    backgroundColor: 'green',
    padding: 10,
    borderRadius: 5,
  },
  buttonText: {
    color: 'white',
    fontWeight: 'bold',
  },
});

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste código, estamos importando o DateTimePicker e usando o estado para rastrear a data e hora do alarme selecionado, o modo do seletor de data/hora e se o seletor deve ser exibido.&lt;/p&gt;

&lt;p&gt;Também adicionamos um botão para permitir que os usuários definam a hora do alarme e um condicional para exibir o DateTimePicker quando o botão é pressionado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adicionando som na aplicação -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Adicione a biblioteca React Native Sound, que usaremos para tocar o som do alarme. Execute o seguinte comando no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install react-native-sound --save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vamos adicionar o código a seguir para importar a biblioteca em nosso código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Sound from 'react-native-sound';

const App = () =&amp;gt; {
  // Código anterior omitido para maior clareza

  const playAlarm = () =&amp;gt; {
    // Carrega o arquivo de som do alarme
    const alarmSound = new Sound('alarm_sound.mp3', Sound.MAIN_BUNDLE, (error) =&amp;gt; {
      if (error) {
        console.log('Erro ao carregar o som do alarme', error);
        return;
      }
      // Reproduz o som do alarme
      alarmSound.play((success) =&amp;gt; {
        if (success) {
          console.log('O som do alarme foi reproduzido com sucesso');
        } else {
          console.log('Falha ao reproduzir o som do alarme');
        }
        // Libera os recursos do som do alarme
        alarmSound.release();
      });
    });
  };

  const onChange = (event, selectedDate) =&amp;gt; {
    // Código anterior omitido para maior clareza

    // Verifica se o alarme está configurado para um horário futuro
    if (currentDate &amp;gt; new Date()) {
      playAlarm();
    }
  };
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste trecho de código, importamos a biblioteca React Native Sound e adicionamos a função playAlarm() que carrega e reproduz o som do alarme quando chamada.&lt;/p&gt;

&lt;p&gt;Dentro da função onChange(), verificamos se o horário selecionado para o alarme é futuro em relação à hora atual. Se for, chamamos a função playAlarm() para reproduzir o som do alarme.&lt;/p&gt;

&lt;p&gt;Certifique-se de ter um arquivo de som chamado alarm_sound.mp3 em seu projeto, localizado na pasta android/app/src/main/res/raw/. Você pode substituir esse arquivo pelo som do alarme de sua escolha.&lt;/p&gt;

&lt;p&gt;Para executar a aplicação use os seguintes comandos variando de dispositivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx expo start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois de construir o aplicativo, você verá um botão "Definir alarme". Ao tocar nesse botão, o seletor de tempo será exibido e você poderá selecionar um horário para o alarme. Se o horário selecionado for futuro, o som do alarme será reproduzido.&lt;/p&gt;

&lt;p&gt;Espero que este artigo tenha lhe ajudado a criar um alarme pessoal. Este é um exemplo básico de um aplicativo de alarme usando React Native. Você pode personalizá-lo e adicionar mais recursos, como repetição de alarme, seleção de dias da semana, configurações de volume etc., de acordo com suas necessidades.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>mobile</category>
      <category>android</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Resolvendo problemas no HackerRank: A grade de pesquisa</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Fri, 28 Apr 2023 16:38:45 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-a-grade-de-pesquisa-dpa</link>
      <guid>https://dev.to/altencirsilvajr/resolvendo-problemas-no-hackerrank-a-grade-de-pesquisa-dpa</guid>
      <description>&lt;p&gt;Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, vamos movimentar uma grade com resultados. Vejamos mais informações com a explicação e sua resolução.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Grid Search -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dada uma matriz de cadeias de dígitos, tente encontrar a ocorrência de um determinado padrão de dígitos. Nas matrizes de grade e padrão, cada string representa uma linha na grade. Por exemplo, considere a seguinte grade:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1234567890  
09 876543 21  
11 111111 11  
11 111111 11  
2222222222  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A matriz padrão é:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;O padrão começa na segunda linha e na terceira coluna da grade e continua nas duas linhas seguintes. Diz-se que o padrão está  presente  na grade. O valor de retorno deve ser  YES ou  NO, dependendo se o padrão for encontrado. Nesse caso, retorne  YES.&lt;/p&gt;

&lt;p&gt;Descrição da função&lt;/p&gt;

&lt;p&gt;Complete a  função gridSearch  no editor abaixo. Ele deve retornar  YES se o padrão existir na grade ou  NO não.&lt;/p&gt;

&lt;p&gt;gridSearch tem o(s) seguinte(s) parâmetro(s):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;string G[R]:  a grade para pesquisar&lt;/li&gt;
&lt;li&gt;string P[r]:  o padrão a ser procurado&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vejamos o código em execução:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function gridSearch(G, P) {
    // Write your code here
  for(let i=0; i&amp;lt;=G.length-P.length; i++){
    for(let j=0; j&amp;lt;=G[0].length-P[0].length; j++){
        var k = 0;
    while ( G[i+k].slice(j,j+P[0].length) == P[k] ){
           k++;
        if(k == P.length) return 'YES';
    }
  }
}
  return 'NO';
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O código usa dois loops for aninhados para percorrer todas as posições possíveis na matriz G onde o padrão P pode ser encontrado. O primeiro loop for itera pelas linhas de G, enquanto o segundo loop for itera pelas colunas de G.&lt;/p&gt;

&lt;p&gt;Dentro dos loops for, uma variável k é definida como zero para acompanhar o progresso na comparação entre G e P.&lt;/p&gt;

&lt;p&gt;Em seguida, um loop while é usado para comparar as partes relevantes de G e P. A condição do loop while verifica se a fatia da matriz G é igual à linha correspondente de P.&lt;/p&gt;

&lt;p&gt;Se o loop while chegar ao final do padrão P, ou seja, se k for igual ao comprimento de P, isso significa que o padrão P foi encontrado em G. Nesse caso, a função retorna a string 'YES'.&lt;/p&gt;

&lt;p&gt;Se o código não encontrar o padrão P em nenhuma posição possível na matriz G, a função retorna a string 'NO' após percorrer todos os elementos.&lt;/p&gt;

&lt;p&gt;O resultado será:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2
10 10
7283455864
6731158619
8988242643
3830589324
2229505813
5633845374
6473530293
7053106601
0834282956
4607924137
3 4
9505
3845
3530
15 15
400453592126560
114213133098692
474386082879648{-truncated-}

Expected Output
- YES
- NO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim, concluímos mais um &lt;em&gt;Resolvendo problemas no HackerRank:&lt;/em&gt; até a próxima.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Criando mensagens Toast em React Native</title>
      <dc:creator>Altencir Junior</dc:creator>
      <pubDate>Thu, 27 Apr 2023 21:53:20 +0000</pubDate>
      <link>https://dev.to/altencirsilvajr/criando-mensagens-toast-em-react-native-36cl</link>
      <guid>https://dev.to/altencirsilvajr/criando-mensagens-toast-em-react-native-36cl</guid>
      <description>&lt;p&gt;Muitas vezes desejamos mostrar uma mensagem de alerta na tela de um usuário e podemos usar diversos meios como um Text ou até um Alert para aviso. Entretanto o React tem a sua disponibilidade os Toast de notificação. Neste artigo iremos criar Toasts. Ele fornece dois tipos de toasts: sucesso e erro, que são personalizáveis ​​por meio do objeto ToastConfig fornecido.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instalação da biblioteca Toast -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para usar este componente, instale-o como um pacote npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save react-native-toast-message
yarn add react-native-toast-message
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Utilizando o Toast-&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Importe o Provider componente do pacote e envolva-o em seu componente principal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Toast from "react-native-toast-message";

const App = () =&amp;gt; {
  return (
    &amp;lt;View&amp;gt;
      {/* Your main component */}
      &amp;lt;Toast.Provider /&amp;gt;
    &amp;lt;/View&amp;gt;
  );
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso cria um provedor toast que pode ser usado para mostrar mensagens toast. Para mostrar uma mensagem toast, basta chamar o método showSuccess ou showError do Toast objeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Toast from "react-native-toast-message";

const ExampleComponent = () =&amp;gt; {
  const handleButtonClick = () =&amp;gt; {
    Toast.showSuccess("Success message");
    Toast.showError("Error message");
  };

  return (
    &amp;lt;View&amp;gt;
      &amp;lt;Button title="Show Toast" onPress={handleButtonClick} /&amp;gt;
    &amp;lt;/View&amp;gt;
  );
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por padrão, o componente será exibido na parte inferior da tela, acima do teclado (se estiver visível). Você pode personalizar a aparência do brinde passando um ToastConfigobjeto para o componente Provider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Toast from "react-native-toast-message";

const config = {
  successStyle: {
    backgroundColor: "#00FF00",
  },
  errorStyle: {
    backgroundColor: "#FF0000",
  },
  textStyle: {
    color: "#FFFFFF",
  },
};

const App = () =&amp;gt; {
  return (
    &amp;lt;View&amp;gt;
      {/* Your main component */}
      &amp;lt;Toast.Provider config={config} /&amp;gt;
    &amp;lt;/View&amp;gt;
  );
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com isso, conseguimos ver o quão fácil é utilizar o Toast. Espero que este artigo tenha o ajudado a criar mensagens de notificação para sua aplicação mobile feita em React Native. Obrigado por ler até aqui.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
