<?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: Paulo Roberto Elias</title>
    <description>The latest articles on DEV Community by Paulo Roberto Elias (@prelias).</description>
    <link>https://dev.to/prelias</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%2F92409%2Ff93652be-f307-4e10-91e3-68f5d25a5875.png</url>
      <title>DEV Community: Paulo Roberto Elias</title>
      <link>https://dev.to/prelias</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prelias"/>
    <language>en</language>
    <item>
      <title>Azure - Configurando Webjobs</title>
      <dc:creator>Paulo Roberto Elias</dc:creator>
      <pubDate>Fri, 01 Mar 2019 03:00:00 +0000</pubDate>
      <link>https://dev.to/prelias/azure---configurando-webjobs-2727</link>
      <guid>https://dev.to/prelias/azure---configurando-webjobs-2727</guid>
      <description>&lt;p&gt;Praticamente todo sistema possui a necessidade de criação de JOBs, ou tarefas repetitivas, como envio de e-mails, geração de cálculos, entre outros. Sejam eles intermitentes ou contínuos. São processos que normalmente são iniciados de forma automática ou mesmo executados o tempo todo. Se a aplicação estiver hospedada no Azure, a...&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Business Analysis Content Repository</title>
      <dc:creator>Paulo Roberto Elias</dc:creator>
      <pubDate>Mon, 28 Jan 2019 14:02:53 +0000</pubDate>
      <link>https://dev.to/prelias/business-analysis-content-repository-5d2d</link>
      <guid>https://dev.to/prelias/business-analysis-content-repository-5d2d</guid>
      <description>&lt;p&gt;&lt;a href="https://prelias.github.io/businessanalysis/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uCZk3g21--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://blog.paulorobertoelias.com.br/wp-content/uploads/2019/01/ba-1-1024x575.png" alt=""&gt;&lt;/a&gt;Layout inicial e atual do site&lt;/p&gt;

&lt;p&gt;Gostaria de compartilhar aqui uma ideia que tive em meio a um curso de BPM, que tive o prazer de participar, na empresa em que eu trabalho.&lt;/p&gt;

&lt;p&gt;No curso, tive acesso a diversos conteúdos interessantes e eu já possuía também alguns outros salvos em sistemas como o Pocket, mas senti falta de um espaço onde eu pudesse ter acesso a eles de forma realmente simplificada, utilizando-se inclusive, de alguns conceitos pregados pelos próprios conteúdos: catalogue, armazene, distribua, torne o acesso fácil e rápido. E foi assim que surgiu o “Business Analysis Content Repository”.&lt;/p&gt;

&lt;p&gt;Para acessar, basta clicar na imagem do post ou neste link: &lt;a href="https://prelias.github.io/businessanalysis/"&gt;https://prelias.github.io/businessanalysis/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como eu cito na introdução do próprio site, a ideia é também, que ele venha a ser um espaço colaborativo, por isso ele foi construído como um repositório do GitHub. Sendo assim, sinta-se à vontade para fazer um fork do projeto ou entrar em contato comigo caso queira participar.&lt;/p&gt;

&lt;p&gt;Um abraço.&lt;/p&gt;

</description>
      <category>uncategorized</category>
    </item>
    <item>
      <title>A arte de levantar e definir requisitos de software</title>
      <dc:creator>Paulo Roberto Elias</dc:creator>
      <pubDate>Tue, 25 Sep 2018 12:56:53 +0000</pubDate>
      <link>https://dev.to/prelias/a-arte-de-levantar-e-definir-requisitos-de-software-4676</link>
      <guid>https://dev.to/prelias/a-arte-de-levantar-e-definir-requisitos-de-software-4676</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gVmH95Ud--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://2.bp.blogspot.com/_jppV2Yd1MPk/Sw8J4BZYfmI/AAAAAAAABcw/N-oK0uihIFY/s1600/project_sw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gVmH95Ud--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://2.bp.blogspot.com/_jppV2Yd1MPk/Sw8J4BZYfmI/AAAAAAAABcw/N-oK0uihIFY/s1600/project_sw.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sou analista funcional, analista de requisitos ou &lt;em&gt;product owner&lt;/em&gt; já há um bom tempo. Apesar de todos esses nomes, mesmo quando eu era analista de produto há ainda mais anos atrás, grande parte do meu papel já era esse: levantar e analisar requisitos e principalmente, propor soluções.&lt;/p&gt;

&lt;p&gt;Apesar do enorme crescimento da profissão, em grande parte devido a ser um cargo considerado menos técnico (visão que particularmente abomino), vejo ela cada vez mais desvalorizada, até pela confusão em torno do papel e maior atenção de &lt;em&gt;stakeholders&lt;/em&gt; e &lt;em&gt;sponsors&lt;/em&gt; (os verdadeiros donos e investidores do projeto) à detalhes antes exclusivos do analista. É comum ver gerentes e diretores, altos cargos de organizações, discutindo requisitos e usabilidade e tirando autonomia do analista.&lt;/p&gt;

&lt;p&gt;Apesar de, como eu disse, não concordar com a visão de que o papel é menos técnico (programar não é a única atividade técnica em um projeto) concordo que há um certo ar quase artístico e de percepção nas funções do analista funcional.&lt;/p&gt;

&lt;p&gt;Só essa frase já arrepiaria os cabelos de puristas envolvidos no mercado de T.I. e amantes da sua completa lógica e até previsibilidade, mas a verdade é que há grandes fatores humanos e espaço para “&lt;em&gt;feelings&lt;/em&gt;“.&lt;/p&gt;

&lt;p&gt;Lógico que todo &lt;em&gt;feeling&lt;/em&gt; também acaba por se originar de experiência, dados estatísticos e tudo o mais que envolve as diversas questões que se colocam, mas defino dessa maneira pois são fatores as vezes difíceis de se corroborar com dados ou mesmo propor testes e análises específicas, ainda mais na velocidade em que são exigidos.&lt;/p&gt;

&lt;p&gt;Pois bem, talvez com alguns exemplos, ou mesmo com apenas uma situação hipotética, eu consiga demonstrar o que estou querendo dizer, assim como muitas vezes fazemos ao transmitir qualquer informação…&lt;/p&gt;

&lt;p&gt;Devido a todo esse cenário, é comum hoje em dia, você receber informações do tipo: “o requisito é este, fazer esta tela dessa exata maneira”. Isto ocorre justamente pois o diretor possivelmente desenhou uma tela, e ele é muito reticente a quaisquer mudanças e a deturpação do requisitos começa…&lt;/p&gt;

&lt;p&gt;A “arte” da definição de requisitos consiste em identificar os reais requisitos por trás de uma informação como essa, por mais difícil que ela seja, até mesmo politicamente. Nesse caso, os requisitos podem ser os mais diversos: fazer toda a operação numa tela só, usar um recurso visual específico, usar uma regra de negócio de bloqueio e validação, entre outros.&lt;/p&gt;

&lt;p&gt;A falha em identificar o requisito real, leva a retrabalhos ou mesmo a situações onde toda a equipe se encontra presa à definições que não fazem mais sentido e onde a tão procurada criatividade murcha, quando não some por completo.&lt;/p&gt;

&lt;p&gt;A cartilha diz que devemos fazer as decomposições e sínteses necessárias a fim de buscar essas informações, mas na prática, com prazos surreais e &lt;em&gt;stakeholders&lt;/em&gt; que praticam uma ditadura (não que ela não tenha sua parcela de importância), cada vez mais a análise vai passando de um processo para uma simples “tomada de pedidos” e é um dos aspectos mais desmotivantes da rotina de um analista.&lt;/p&gt;

&lt;p&gt;Quantas vezes vimos casos onde todo o processo foi completamente seguido à risca e o resultado final é um desastre? Onde o prazo era completamente irreal, quiça desnecessariamente e deixou a qualidade em segundo plano?&lt;/p&gt;

&lt;p&gt;Sempre que me pego pensando nisso, me lembro do filme &lt;a href="https://www.imdb.com/title/tt1375666/"&gt;A Origem&lt;/a&gt;. Ele possui algumas citações muito interessantes e que cabem bem nessa questão da “ideia original”.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What is the most resilient parasite? Bacteria? A virus? An intestinal worm? An idea. Resilient… highly contagious. Once an idea has taken hold of the brain it’s almost impossible to eradicate. An idea that is fully formed – fully understood – that sticks; right in there somewhere.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Uma ideia, completamente formada e entendida “gruda” e é assim que as informações devem procurar ser moldadas, devemos procurar os detalhes que importam, o que realmente a define.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The subject’s mind can always trace the genesis of the idea. True inspiration is impossible to fake.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Igualmente a inspiração é original e impossível de ser fingida, sempre enxergo que se o real requisito não for repassado, ele nunca terá a força necessária para espalhar para toda a equipe e para que ela possa dar tudo que tenha de melhor para fazer aquela ideia se tornar real da forma que ela merecia.&lt;/p&gt;

&lt;p&gt;Para mim, o grande prazer do papel do analista é a investigação e o uso da criatividade em encontrar soluções para problemas reais. Quaisquer atitudes e procedimentos que fomentem isso irão agregar muita qualidade a todo processo de engenharia de software e aos produtos e à equipe como um todo.&lt;/p&gt;

&lt;p&gt;Fonte das citações: &lt;a href="https://www.goodreads.com/work/quotes/13433807-inception-the-shooting-script"&gt;GoodReads&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automatização de intalações</title>
      <dc:creator>Paulo Roberto Elias</dc:creator>
      <pubDate>Wed, 08 Aug 2018 17:37:23 +0000</pubDate>
      <link>https://dev.to/prelias/automatizao-de-intalaes-b2f</link>
      <guid>https://dev.to/prelias/automatizao-de-intalaes-b2f</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PKSTTxC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.especializati.com.br/wp-content/uploads/2017/05/chocolatey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PKSTTxC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.especializati.com.br/wp-content/uploads/2017/05/chocolatey.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com o Windows migrando para um formato loja para seus apps, talvez não seja interessante mais para todo tipo de usuário e softwares, a dica que darei hoje. Contudo, muitos aplicativos ainda não são distribuídos por ela, ou talvez jamais cheguem a ser.&lt;/p&gt;

&lt;p&gt;E um software que ajuda muito nessa tarefa é o &lt;a href="https://chocolatey.org/"&gt;Chocolatey&lt;/a&gt;. Trata-se de uma aplicação, conectada a um repositório, onde os usuários criam scripts relacionados aos diretórios de download de diversas ferramentas. Os próprios usuários mantém esses scripts, mas eles passam por uma moderação para tentar evitar arquivos e códigos maliciosos, sendo assim, é possível dizer que instalar aplicações por ele é tão seguro quanto pelo download comum.&lt;/p&gt;

&lt;p&gt;Isto posto, desenvolvi um script &lt;a href="https://docs.microsoft.com/pt-br/powershell/scripting/getting-started/getting-started-with-windows-powershell?view=powershell-6"&gt;Powershell&lt;/a&gt;, que baixa o próprio Chocolatey e o utiliza para instalar silenciosamente, todas as aplicações que uso regularmente:&lt;/p&gt;

&lt;p&gt;O script acima utiliza o comando upgrade do choco, pois ele instala quando não encontra, ou faz a atualização caso o mesmo já se encontre instalado, ou seja, você pode usar o mesmo script para atualizações futuras.&lt;/p&gt;

&lt;p&gt;Se você desejar, pode verificar os softwares disponíveis como pacotes choco, em seu diretório, clicando &lt;a href="https://chocolatey.org/packages"&gt;aqui&lt;/a&gt; e customizar meu script como lhe convenha. Neste link você pode também, verificar os detalhes de cada script de instalação, caso queira saber exatamente de onde são baixados os arquivos e todos os comandos.&lt;/p&gt;

&lt;p&gt;Basta fazer o download do arquivo (clicando no nome do arquivo na parte de baixo da janela dele no post), ou copiar o seu conteúdo e salvar com a extensão ps1, usada pelo Powershell (você pode clicar no botão “view raw” para ver somente seu conteúdo na tela).&lt;/p&gt;

&lt;p&gt;Outra dica relacionada à essa, é o uso de um arquivo para modificação do registro. Com ele, fica disponível no menu de contexto do Windows (botão direito do mouse), a opção para executar um script Powershell diretamente como administrador.&lt;/p&gt;

&lt;p&gt;Basta executar o arquivo (da mesma forma que sugerido para o primeiro arquivo do post) e aceitar a modificação do registro.&lt;/p&gt;

&lt;p&gt;Abs.&lt;/p&gt;

</description>
      <category>coisasquetodomund</category>
      <category>dicastech</category>
      <category>automatização</category>
      <category>chocolatey</category>
    </item>
    <item>
      <title>WhatsApp: usando 2 contas no mesmo aparelho</title>
      <dc:creator>Paulo Roberto Elias</dc:creator>
      <pubDate>Fri, 20 Jul 2018 17:04:13 +0000</pubDate>
      <link>https://dev.to/prelias/whatsapp-usando-2-contas-no-mesmo-aparelho-3cc0</link>
      <guid>https://dev.to/prelias/whatsapp-usando-2-contas-no-mesmo-aparelho-3cc0</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DA_jtiSP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://blog.dentalgutierre.com.br/wp-content/uploads/2018/02/whatsapp-business-dental-gutierre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DA_jtiSP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://blog.dentalgutierre.com.br/wp-content/uploads/2018/02/whatsapp-business-dental-gutierre.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Todo mundo que possui aparelhos com dois chips, caso um deles seja profissional, já se deparou com esse problema. Como usar o app do WhatsApp nos dois?&lt;/p&gt;

&lt;p&gt;No início do ano, a empresa lançou uma versão “Business” do app, voltada para o uso empresarial. Ela contém inclusive alguns recursos específicos, como TAGs que o usuário pode usar para marcar grupos e mensagens (exemplo: “Pedido concluído”), facilitando a usabilidade também como um controle de demandas.&lt;/p&gt;

&lt;p&gt;Contudo, um outro uso muito interessante foi proporcionado por esse lançamento: o fato de finalmente podermos acessar duas contas diferentes (uma para cada chip), no mesmo aparelho e de forma oficial.&lt;/p&gt;

&lt;p&gt;Já existiam outra maneiras mais nebulosas de se atingir isso, usando apps de terceiros, usando o mecanismo de usuários do Android (que nem todos os fabricantes implementam e ainda por cima, não permite o login em dois usuários simultâneos), entre outras.&lt;/p&gt;

&lt;p&gt;Contudo nenhuma delas é tão prática quanto essa e sem a segurança que um método oficial oferece. Embora eu ainda queira pesquisar um pouco mais, pois o modo que a empresa valida as contas é um pouco obscuro (recebi ligações com códigos de confirmações assim como SMS), até agora não tive problemas e mesmo com um certo receio de algum bloqueio na conta, venho usando com sucesso e feliz por aposentar meu segundo aparelho.&lt;/p&gt;

&lt;p&gt;Abs.&lt;/p&gt;

</description>
      <category>coisasquetodomund</category>
      <category>dicastech</category>
      <category>2chips</category>
      <category>whatsapp</category>
    </item>
    <item>
      <title>Emulationstation: configuração simples para Windows</title>
      <dc:creator>Paulo Roberto Elias</dc:creator>
      <pubDate>Wed, 04 Jul 2018 16:31:01 +0000</pubDate>
      <link>https://dev.to/prelias/emulationstation-configurao-simples-para-windows-aio</link>
      <guid>https://dev.to/prelias/emulationstation-configurao-simples-para-windows-aio</guid>
      <description>&lt;p&gt;&lt;a href="https://media.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%2Ffml4pzj4dp95xw67f1c3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Ffml4pzj4dp95xw67f1c3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O cenário da emulação mudou bastante nos últimos anos, com o surgimento das versões para os mini computadores Raspberry Pi, que viraram simplesmente uma febre.&lt;/p&gt;

&lt;p&gt;Eu já brinco com emuladores há muitos anos. Era tão apaixonado que já tentava iniciativas que promovessem eles desde jovem. Cheguei certa vez a compilar um DVD, usando um software que montava uma espécie de instalador, copiando os arquivos e criando atalhos no menu Iniciar do Windows e na área de trabalho. Cheguei a fazer até uma capa.&lt;/p&gt;

&lt;p&gt;Pela data dos arquivos que estão no disco, isso foi em abril de 2006. Que saudades…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fblog.paulorobertoelias.com.br%2Fwp-content%2Fuploads%2F2018%2F07%2Fdvd_emuladores-768x1024.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fblog.paulorobertoelias.com.br%2Fwp-content%2Fuploads%2F2018%2F07%2Fdvd_emuladores-768x1024.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Caso você queira pular toda essa minha história e explicação sobre os emuladores, pode ir direto pro &lt;a href="https://github.com/PRElias/win10_emulation_station/tree/choco-auto-install" rel="noopener noreferrer"&gt;repositório do projeto&lt;/a&gt;. Lá contém uma explicação de como proceder para instalar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Voltando a falar do cenário atual e do &lt;a href="https://pt.wikipedia.org/wiki/Raspberry_Pi" rel="noopener noreferrer"&gt;Raspberry&lt;/a&gt; (eu mesmo tenho o meu, lógico), trata-se de um minicomputador, com poder suficiente pra emular os consoles antigos.  Para um apaixonado pela nostalgia dos games do passado, é simplesmente maravilhoso. Eles viraram uma febre, embora nem todo mundo conheça por esse nome, pois muitas pessoas comercializam um pacote já pronto contendo o computador, jogos, etiquetas e até cabines ou controles.&lt;/p&gt;

&lt;p&gt;Porém, muita gente ainda usa o próprio PC para emulação de jogos e é possível aproveitar alguns dos desenvolvimentos que fizeram para ele, também no Windows, ficando com um sistema praticamente idêntico ao conseguido no mini PC.&lt;/p&gt;

&lt;p&gt;Uma das principais evoluções foi o advento do &lt;a href="https://www.libretro.com/" rel="noopener noreferrer"&gt;Libretro&lt;/a&gt; e do &lt;a href="http://www.retroarch.com/" rel="noopener noreferrer"&gt;Retroarch&lt;/a&gt;. Trata-se de aplicações ou projetos, que converteram os antigos emuladores em DLLs, fazendo eles trabalharem por debaixo dos panos, através de uma interface única, o que permitiu que você trocasse de console sem sequer sair do aplicativo.&lt;/p&gt;

&lt;p&gt;Em cima desses sistemas, surgiram mais diversos projetos de customização da interface e um deles, que é muito famoso e funciona no Windows, é o &lt;a href="https://emulationstation.org/" rel="noopener noreferrer"&gt;Emulation Station&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  O projeto
&lt;/h3&gt;

&lt;p&gt;Procurando na internet, encontrei um projeto no GitHub que fazia quase exatamente o que eu esperava. Ele conecta nos endereços corretos, baixa e configura tudo automaticamente, de forma bem fácil.&lt;/p&gt;

&lt;p&gt;Realizei um &lt;em&gt;fork&lt;/em&gt; do repositório e inclusive inclui minhas próprias contribuições (conto um pouco mais sobre esse processo em um futuro post). Sendo assim, você pode usar os links desse post para a minha versão do projeto ou acessar o original &lt;a href="https://github.com/Francommit/win10_emulation_station" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Eu inclui os dois links para que, caso alguma modificação minha não seja aceita pelo dono do projeto original, seja possível ter as duas opções, e também, claro, para dar o devido crédito.&lt;/p&gt;

&lt;p&gt;O arquivo de instruções está em inglês, mas possui um link para a tradução em português que eu escrevi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Instalando
&lt;/h3&gt;

&lt;p&gt;Você pode navegar até o site e baixar o pacote do Emulation Station por si mesmo, mas algumas configurações são um pouco mais complexas de serem feitas e é aí que entra o projeto “win10_emulation_station”.  Se preferir, você pode baixá-lo nesse link: &lt;a href="https://github.com/PRElias/win10_emulation_station/tree/choco-auto-install" rel="noopener noreferrer"&gt;download&lt;/a&gt;. Mas repito, recomendo que você utilize o instalador do &lt;a href="https://github.com/PRElias/win10_emulation_station/tree/choco-auto-install" rel="noopener noreferrer"&gt;projeto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;O arquivo LEIAME no repositório (possui um link para a tradução em Português que, inclusive foi escrita por mim) já explica muito bem como proceder, mas ainda complementarei com mais algumas informações abaixo.&lt;/p&gt;

&lt;p&gt;Faça o download ou clone o repositório &lt;em&gt;git&lt;/em&gt; e siga as instruções para a instalação.&lt;/p&gt;

&lt;p&gt;Infelizmente, mesmo o pacote do projeto, não contém todos os arquivos necessários para se divertir, já que um dos obstáculos encontrados no compartilhamento e difusão dos arquivos é que muitos deles, principalmente as ROMs (que são os jogos) não serem de domínio público, o que caracteriza pirataria. Mas os emuladores em si não e podem ser compartilhados sem problema.&lt;/p&gt;

&lt;h4&gt;
  
  
  Terminando as configurações
&lt;/h4&gt;

&lt;p&gt;Feito o download conforme descrito no repositório com sucesso, você terá os arquivos espalhados em 3 pastas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A pasta onde você baixou os arquivos do repositório: essa pode ser apagada ao final.&lt;/li&gt;
&lt;li&gt;A pasta do Emulation Station em “Arquivos de Programas”: nessa pasta ficam os executáveis, em teoria, o que você não precisaria de nenhum backup. O instalador deve ter criado atalhos na área de trabalho também, mas caso não o tenha feito, pode procurar por Emulation Station na pesquisa da Cortana que ela encontrará para você.&lt;/li&gt;
&lt;li&gt;A pasta de DLLs e ROMs que ficará em &lt;code&gt;%UserProfile%\.emulationstation&lt;/code&gt; (você pode digitar esse caminho na barra de endereços do Windows Explorer, na janela executar, ou, se o atalho tiver sido criado com sucesso, usá-lo).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesse terceiro local é onde você deverá copiar as suas ROMs, colocando especificamente cada console em seu diretório próprio.&lt;/p&gt;

&lt;p&gt;Para configurar os emuladores de PS1 e PS2, que não estão usando DLLs do Libretro, você terá que abrir o emulador mesmo e fazer a configuração diretamente nele ao invés de fazer pelo Emulation Station. Navegue até as pastas &lt;code&gt;systems/epsxe&lt;/code&gt; e &lt;code&gt;systems/pcsx2&lt;/code&gt; e inicie os executáveis. Você não deverá ter problemas em entender como eles funcionam, mas procure pela configuração de controles e também de BIOS, para se certificar que estão apontando para os diretórios corretos.&lt;/p&gt;

&lt;p&gt;Aliás, para esses consoles, será necessário também baixar os arquivos de BIOS e copiá-los, pois não são inclusos no pacote também por motivos de copyrigth.&lt;/p&gt;

&lt;p&gt;Feito isto, você já deverá ter tudo funcionando. O repositório contém até mesmo algumas ROMs “homebrew”, ou seja, que foram feitas por terceiros de forma open-source, não sendo jogos oficiais e por isso são distribuídas livremente e você pode testar os emuladores com elas.&lt;/p&gt;

&lt;p&gt;Espero que você se divirta muito com esse setup e caso tenha alguma dificuldade, pode comentar e eu tentarei te ajudar a resolver qualquer problema.&lt;/p&gt;

&lt;p&gt;Abraço a todos&lt;/p&gt;

</description>
      <category>coisasquetodomund</category>
      <category>games</category>
      <category>emulação</category>
      <category>emulation</category>
    </item>
    <item>
      <title>Controlando versões com PHP, SVN e Gulp</title>
      <dc:creator>Paulo Roberto Elias</dc:creator>
      <pubDate>Wed, 13 Jun 2018 11:51:39 +0000</pubDate>
      <link>https://dev.to/prelias/controlando-verses-com-php-svn-e-gulp-1in0</link>
      <guid>https://dev.to/prelias/controlando-verses-com-php-svn-e-gulp-1in0</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1tlCNSWy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://highmoon-miyabi.com/blog/images/article_thumb/gulp_php.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1tlCNSWy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://highmoon-miyabi.com/blog/images/article_thumb/gulp_php.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com o crescente uso do Git para controle de repositórios, talvez essa dica não seja mais tão útil, contudo, como aqui na empresa que trabalho ainda usamos Tortoise SVN, pode haver outras empresas e pessoas mundo afora, interessadas no post de hoje.&lt;/p&gt;

&lt;p&gt;Ela também funciona muito melhor em projetos &lt;em&gt;.Net&lt;/em&gt;, devido ao fato dele ser compilado, mas as informações aqui providas podem ser facilmente adaptadas pra ele (vou fazer uma nota também demonstrando uma diferença básica) quando for o momento).&lt;/p&gt;

&lt;p&gt;Pois bem, o foco do post está em demonstrar o uso de um executável do SVN, de nome &lt;strong&gt;SubWCRev.exe&lt;/strong&gt; , que serve para ler informações do repositório, como número da última revisão ou data e realizar a troca de variáveis em um arquivo template, pelos valores retornados.&lt;/p&gt;

&lt;p&gt;Contudo, devido ao PHP não ser uma linguagem compilada, você precisará estar utilizando gerenciadores de pacotes, no caso o &lt;a href="https://gulpjs.com/"&gt;&lt;strong&gt;Gulp&lt;/strong&gt;&lt;/a&gt;, se quiser implantar esse “controle de versão” aos seus projetos. Embora também seja possível executar o comando diretamente no console do sistema operacional, porém, grande parte da automatização se perderia.&lt;/p&gt;

&lt;p&gt;Comece pela criação de um arquivo template, onde você incluirá as variáveis que deseja trabalhar (é possível encontrar a lista completa delas na &lt;a href="https://tortoisesvn.net/docs/release/TortoiseSVN_pt/tsvn-subwcrev.html"&gt;documentação do SVN&lt;/a&gt;). No meu exemplo, eu chamei o arquivo de &lt;em&gt;version-template.php&lt;/em&gt; e ele possui o seguinte conteúdo:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;?php return array( 'version' =&amp;gt; '1.0.0.$WCREV$ data: $WCDATE$'&amp;gt;);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Repare que ele contém um array em PHP que inclui as variáveis WCREV e WCDATE, que serão trocadas pelo executável assim que for chamado.&lt;/p&gt;

&lt;p&gt;No nosso arquivo &lt;em&gt;gulpfile&lt;/em&gt; precisamos incluir um &lt;em&gt;require&lt;/em&gt;, caso já não exista. Dessa forma:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;var exec = require('child_process').exec;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Feito isso, poderemos criar a nossa task que realizará a chamada do executável:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gulp.task('version-number', function (cb) {&lt;br&gt;
exec('"C:/Program Files/TortoiseSVN/bin/SubWCRev.exe" "." "C:/Source/Projeto/branches/branch1/version-&lt;br&gt;
template.php" "C:/Source/Projeto/branches/branch1/version.php"', function (err, stdout, stderr) {&lt;br&gt;
console.log(stdout);&lt;br&gt;
console.log(stderr);&lt;br&gt;
cb(err);&lt;br&gt;
});&lt;br&gt;
})&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Vamos a uma breve explicação do script acima. A task recebeu o nome de &lt;em&gt;version-number&lt;/em&gt; para ser referenciada mais abaixo no arquivo gulp (junto à sequência de &lt;em&gt;build&lt;/em&gt;). Ela utiliza o &lt;em&gt;exec&lt;/em&gt; para chamar o comando, que é composto da seguinte forma:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[diretório do exe][diretório da solution][arquivo template][arquivo final]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Apresenta também instruções para logar as informações na janela do console e os erros, caso ocorram.&lt;/p&gt;

&lt;p&gt;Você precisará adaptar o comando para os seus diretórios e tomar um cuidado especial caso sua &lt;em&gt;build&lt;/em&gt; seja remota, em um servidor &lt;a href="https://jenkins.io/"&gt;&lt;strong&gt;Jenkins&lt;/strong&gt;&lt;/a&gt; por exemplo, mas basicamente, ao incluir essa &lt;em&gt;task&lt;/em&gt; em seu &lt;em&gt;build&lt;/em&gt; e executá-la, você terá gerado um arquivo com o conteúdo parecido com o exemplo abaixo:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;'version' =&amp;gt; '1.0.0.93528 data: 2018/06/07 09:36:50'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Esse arquivo, que no meu exemplo levou o nome de &lt;em&gt;version.php&lt;/em&gt;, é recomendável que esteja na lista de ignore do SVN, evitando que o mesmo seja comitado toda hora.&lt;/p&gt;

&lt;p&gt;Caso você esteja em um projeto .Net, você poderá executar um comando semelhante como um evento de pré-build, usando em conjunto as variáveis do Visual Studio, e deverá utilizar o arquivo &lt;em&gt;AssemblyInfo.cs&lt;/em&gt; para salvar as informações. Ficando mais ou menos assim.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"C:\Program Files\TortoiseSVN\bin\SubWCRev.exe" $(ProjectDir). $(ProjectDir)Properties\AssemblyInfo_template.cs $(ProjectDir)Properties\AssemblyInfo.cs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Com tudo pronto, você poderá colocar na sua aplicação, algo que leia esse arquivo e exiba, ou não, a versão do mesmo para o usuário. Claro que, devido a questão de não ser de fato uma compilação, o processo acaba sendo menos interessante, pois é mais fácil manipular algum arquivo e não executar o &lt;em&gt;gulpfile&lt;/em&gt;. Porém, se você for fiel ao seu &lt;em&gt;workflow&lt;/em&gt;, e utilizar sempre o Gulp para geração dos builds, pode conseguir um grande aliado na organização do seu projeto e na avaliação de versões utilizadas.&lt;/p&gt;

&lt;p&gt;Abraço a todos e até o próximo post&lt;/p&gt;

</description>
      <category>coisasquetodomund</category>
      <category>controledeversão</category>
      <category>gulp</category>
      <category>laravel</category>
    </item>
  </channel>
</rss>
