<?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: Emerson Stark</title>
    <description>The latest articles on DEV Community by Emerson Stark (@starkdev).</description>
    <link>https://dev.to/starkdev</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%2F168723%2F1f70e6af-4f50-4bad-a4b1-33a7b729e1fb.jpeg</url>
      <title>DEV Community: Emerson Stark</title>
      <link>https://dev.to/starkdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/starkdev"/>
    <language>en</language>
    <item>
      <title>Como começar com programação e conquistar seu primeiro trabalho</title>
      <dc:creator>Emerson Stark</dc:creator>
      <pubDate>Sun, 25 Jun 2023 21:40:50 +0000</pubDate>
      <link>https://dev.to/starkdev/como-comecar-com-programacao-e-conquistar-seu-primeiro-trabalho-off</link>
      <guid>https://dev.to/starkdev/como-comecar-com-programacao-e-conquistar-seu-primeiro-trabalho-off</guid>
      <description>&lt;p&gt;A programação é uma habilidade valiosa e versátil que pode abrir diversas oportunidades profissionais. Se você está interessado em iniciar sua jornada como programador(a) e conquistar seu primeiro trabalho na área, este artigo irá fornecer um guia prático para começar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 1: Escolha uma linguagem de programação&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Existem várias linguagens de programação disponíveis, cada uma com seus pontos fortes e casos de uso específicos. Comece pesquisando sobre as linguagens mais populares, como Python, JavaScript, Java ou C#. Considere seus interesses pessoais e os tipos de projetos que gostaria de trabalhar no futuro. Uma vez que tenha escolhido uma linguagem, foque em aprender seus conceitos básicos, sintaxe e estruturas de controle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 2: Aprenda os fundamentos da programação&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Independentemente da linguagem escolhida, é fundamental entender os conceitos fundamentais da programação. Estude estruturas de controle, como loops e condicionais, tipos de dados, funções e algoritmos. Há uma abundância de recursos gratuitos disponíveis online, como tutoriais em vídeo, cursos interativos e documentação oficial, que podem ajudá-lo(a) a dominar esses conceitos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 3: Desenvolva projetos práticos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A teoria é importante, mas a prática é fundamental para se tornar um programador(a) competente. Comece a desenvolver projetos pequenos e práticos para aplicar o que aprendeu. Construa um website simples, um aplicativo de lista de tarefas ou um jogo básico. A medida que ganhar confiança, desafie-se a criar projetos mais complexos. Essa prática constante irá aprimorar suas habilidades de resolução de problemas e permitir que você crie um portfólio de projetos para compartilhar com potenciais empregadores.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 4: Contribua para projetos de código aberto&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Participar de projetos de código aberto é uma ótima maneira de ganhar experiência prática e colaborar com outros desenvolvedores. Explore plataformas como o GitHub e encontre projetos alinhados aos seus interesses. Contribua com código, resolva problemas ou ofereça assistência nos fóruns de discussão. Além de adquirir experiência valiosa, você também estará construindo uma rede profissional e demonstrando seu compromisso com a comunidade de desenvolvimento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 5: Construa um portfólio e compartilhe seus projetos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Um portfólio de projetos é essencial para destacar suas habilidades e conquistar seu primeiro trabalho como programador(a). Organize seus projetos em um repositório no GitHub ou crie um website pessoal para mostrar suas criações. Certifique-se de que seu portfólio esteja bem documentado e inclua descrições claras de cada projeto. Compartilhe o link do seu portfólio em plataformas profissionais, como o LinkedIn, e mencione-o em seu currículo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passo 6: Participe de comunidades e redes profissionais&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A programação é uma área colaborativa e em constante evolução. Participe de comunidades online, como o Dev.to.&lt;/p&gt;

&lt;p&gt;Uma rede de contatos bem desenvolvida pode ser uma fonte valiosa de oportunidades de carreira e emprego. Muitas vezes, as vagas não são anunciadas publicamente e são preenchidas através de indicações ou recomendações internas. Conhecer pessoas influentes no seu campo de atuação aumenta suas chances de ficar ciente dessas oportunidades antes de outras pessoas e de ter seu nome recomendado para vagas relevantes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IMPORTANTE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Talvez você tenha estudado sobre programação e pensado: "Ahh, mas isso não é para mim. Eu não entendo de matemática e nem de formas geométricas." No entanto, é importante destacar que a área de tecnologia vai além da programação. O &lt;a href="https://dev.to/devs-jequie/desenvolvimento-talvez-nao-seja-pra-voce-5dnk"&gt;Túlio Calil&lt;/a&gt; tem um post bem interessante sobre a área de TI, no qual você pode obter mais informações e esclarecer suas dúvidas sobre qual área você se identifica mais.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Detectando Root e Jail Broken no seu aplicativo React Native</title>
      <dc:creator>Emerson Stark</dc:creator>
      <pubDate>Wed, 29 Dec 2021 17:36:28 +0000</pubDate>
      <link>https://dev.to/starkdev/detectando-root-e-jail-broken-no-seu-aplicativo-react-native-4ang</link>
      <guid>https://dev.to/starkdev/detectando-root-e-jail-broken-no-seu-aplicativo-react-native-4ang</guid>
      <description>&lt;h1&gt;
  
  
  O que é root e jail-broken?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  root
&lt;/h2&gt;

&lt;p&gt;Fazer o root no seu aparelho significa se tornar um superusuário, ou administrador do sistema. Isso implica ter acesso a partes do Android que antes ficavam inacessíveis para um usuário comum. Sim, a grande vantagem é ganhar controle total do seu celular e do seu sistema operacional&lt;/p&gt;

&lt;h2&gt;
  
  
  jail-broken
&lt;/h2&gt;

&lt;p&gt;O jailbreak é uma alteração, um hack, no sistema que permite ao usuário adentrar a raiz do equipamento, tendo acesso a todos os arquivos do iOS. Em termos práticos, isso significa poder personalizar e instalar apps livremente, sem depender da loja oficial da Apple.&lt;/p&gt;

&lt;h1&gt;
  
  
  Porque devo me preocupar com isso?
&lt;/h1&gt;

&lt;p&gt;Uma aplicação sendo executada em um dispositivo com os privilégios do usuário root ou jail broken acessíveis pode ter seu fluxo de execução modificado por outro processo sendo executado no mesmo dispositivo.&lt;/p&gt;

&lt;p&gt;Um usuário malicioso pode monitorar as suas requisições, extrair dados salvos no storage do dispositivo, entre outras ações.&lt;/p&gt;

&lt;p&gt;Mas bora resolver isso!&lt;br&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%2Ffd3sc4gutyz8u2xjyt5x.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%2Ffd3sc4gutyz8u2xjyt5x.jpeg" alt="Image description" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  O que faz o &lt;a href="https://github.com/GantMan/jail-monkey/" rel="noopener noreferrer"&gt;jail-monkey&lt;/a&gt;?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Identifica se o telefone tem acesso a root ou jail-broken.&lt;/li&gt;
&lt;li&gt;Detecta se o dispositivo possui localização mockada ( Eu sei que você usou isso no jogo Pokemon GO 😏).&lt;/li&gt;
&lt;li&gt;Detecta se o aplicativo está rodando em um SD Card.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chega de blá blá blá e bora colocar a mão no código.&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%2Fp4opmon5o8mq4qomyca3.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%2Fp4opmon5o8mq4qomyca3.jpeg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vamos iniciar um projeto utilizando o React Native CLI.&lt;/strong&gt;&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; react-native init myApp
 ou
 npx react-native init myApp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Vamos rodar nossa aplicação em um emulador&lt;/strong&gt;&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;// para executar em um dispositivo android
yarn android

// para ios
yarn ios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Se deu tudo certo no processo de build, você verá algo como:&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%2Fsqpgr6gd1pxghzuuap0g.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%2Fsqpgr6gd1pxghzuuap0g.png" alt="Image description" width="600" height="780"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Até agora, nós criamos nosso app e conseguimos rodar ele no nosso dispositivo/ emulador.&lt;/p&gt;

&lt;p&gt;Se você fechar o aplicativo e clicar no ícone na tela inicial do dispositivo, você verá que o projeto vai startar normalmente.&lt;/p&gt;

&lt;p&gt;Agora vamos adicionar a biblioteca do Jail-monkey no projeto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;// para instalar usando npm
npm i jail-monkey &lt;span class="nt"&gt;--save&lt;/span&gt;

// usando yarn
yarn add jail-monkey
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Feito isso, vamos linkar a biblioteca no nosso projeto.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;OBS: Você só precisa rodar este comando caso esteja utilizando uma versão do react native &amp;lt; 0.60.0&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;react-native &lt;span class="nb"&gt;link&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em seguida, faça um novo build do seu projeto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn android
ou
yarn ios 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Beleza, agora nós temos tudo instalado no projeto.&lt;/p&gt;

&lt;p&gt;Vamos configurar a biblioteca agora no nosso aplicativo, para isso, vá até o seu arquivo principal do seu projeto ( no nosso caso é o App.js da raiz do projeto ) e adicione o seguinte código.&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%2Fkn0scmg2m3hi66okww63.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%2Fkn0scmg2m3hi66okww63.png" alt="Image description" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos ver o que fizermos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;importamos o BackHandler do próprio React Native para usarmos a função ExitApp.&lt;/li&gt;
&lt;li&gt;importamos a biblioteca do jail-monkey&lt;/li&gt;
&lt;li&gt;criamos uma condição utilizando uma função que retorna se o dispositivo possui root/ jail-broken e fechamos a aplicação.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ps: No passo 3, você poderia simplesmente criar um modal bonitinho explicando que o usuário não possui a segurança necessária para utilizar a nossa aplicação, fica com uma usabilidade bem melhor ☺️.&lt;/p&gt;

&lt;p&gt;Depois de tudo isso, se você salvar o código, fechar o app e tentar abrir em um emulador android, automaticamente a sua aplicação fechará, isto é por conta do emulador android possuir root nativamente, mas se você testar em um dispositivo fisico, a sua aplicação irá funcionar normalmente.&lt;/p&gt;

&lt;p&gt;Além do exemplo que criamos acima, você pode explorar um pouco dos recursos do jail-monkey e adicionar de acordo com a sua necessidade.&lt;/p&gt;

&lt;h1&gt;
  
  
  Alguns metodos da API do Jail-monkey
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Returns&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;isJailBroken&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;is this device jail-broken/rooted.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;canMockLocation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Can this device fake its GPS location.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;trustFall&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks if the device violates either &lt;code&gt;isJailBroken&lt;/code&gt; or &lt;code&gt;canMockLocation&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;isDebuggedMode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Promise&amp;lt;boolean&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Is the application is running in debug mode. Note that this method returns a Promise.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Bom, por hoje é isso, espero que ajude vocês a melhorar a segurança dos aplicativos em React Native. &lt;/p&gt;

&lt;p&gt;Valeu&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Capturando erros no React Native utilizando o Sentry.io</title>
      <dc:creator>Emerson Stark</dc:creator>
      <pubDate>Mon, 27 Dec 2021 20:39:27 +0000</pubDate>
      <link>https://dev.to/starkdev/capturando-erros-no-react-native-utilizando-o-sentryio-5bd5</link>
      <guid>https://dev.to/starkdev/capturando-erros-no-react-native-utilizando-o-sentryio-5bd5</guid>
      <description>&lt;p&gt;&lt;strong&gt;O Que é o Sentry?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Basicamente, o &lt;a href="//sentry.io"&gt;sentry&lt;/a&gt; é uma ferramenta que nos auxilia na captura de erros que acontecem nas nossas aplicações em modo debug e também em produção.&lt;/p&gt;

&lt;p&gt;é só isso mesmo!!!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bora ver como isso funciona?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faled0dzq820v0s716d1i.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%2Faled0dzq820v0s716d1i.jpeg" alt="Image description" width="612" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Crie uma conta no &lt;a href="//sentry.io"&gt;sentry&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vai em &lt;em&gt;Criar um projeto&lt;/em&gt; e selecione a plataforma ( no nosso caso, REACT NATIVE ) e clica em Criar projeto.&lt;br&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%2F9bdugtpk5o85tlqt9ic6.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%2F9bdugtpk5o85tlqt9ic6.png" alt="Image description" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Agora no nosso projeto React Native
&lt;/h2&gt;

&lt;p&gt;1 - Instalar a biblioteca de integração do Sentry com o 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;npm install --save @sentry/react-native
# or
yarn add @sentry/react-native
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2 - Adicionar o Sentry no nosso aplicativo&lt;/p&gt;

&lt;p&gt;Você pode adicionar a chamada do sentry no seu app.js ou app.ts da seguinte maneira:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as Sentry from "@sentry/react-native";

Sentry.init({
  dsn: SUA_DSN_AQUI
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Sua DSN aparece logo após você criar o seu projeto React Native na plataforma do Sentry&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;3 - Faça o build da sua aplicação novamente&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; yarn android 
 ou
 yarn ios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E pronto, sua aplicação agora está sendo monitorada pelo sentry, e qualquer erro ele vai te mostrar em uma dashboard da plataforma.&lt;/p&gt;

&lt;p&gt;Você também consegue ver algumas métricas do dispositivo do usuário, como:&lt;/p&gt;

&lt;p&gt;Nível de bateria, network que estava sendo utilizada no momento do crash, IP e etc...&lt;/p&gt;

&lt;p&gt;É isso galera, qualquer dúvida deixe nos comentários :D&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
