<?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: Morganna</title>
    <description>The latest articles on DEV Community by Morganna (@morgannadev).</description>
    <link>https://dev.to/morgannadev</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%2F320326%2Fe73842b2-1464-476e-a68e-33ad1f455d73.JPG</url>
      <title>DEV Community: Morganna</title>
      <link>https://dev.to/morgannadev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/morgannadev"/>
    <language>en</language>
    <item>
      <title>Quem é o destaque da comunidade?</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Sat, 25 Apr 2026 11:40:19 +0000</pubDate>
      <link>https://dev.to/morgannadev/quem-e-o-destaque-da-comunidade-53c5</link>
      <guid>https://dev.to/morgannadev/quem-e-o-destaque-da-comunidade-53c5</guid>
      <description>&lt;p&gt;Muitas pessoas podem pensar que quando somos Developer Advocate ou Developer Relations, nós nos tornamos o destaque do produto. Mas não é bem essa a verdade.&lt;/p&gt;

&lt;p&gt;Claro que, ao começar a representar um produto, nós começamos a ter algum destaque, pois estamos lá, fazendo os conteúdos sobre ele, ensinando como utilizá-lo das melhores formas e como ele pode resolver diversos dos seus problemas. Podemos até acabar nos tornando referências. Mas eu acredito muito que ser Developer Advocate é também dar voz e destaque para a comunidade.&lt;/p&gt;

&lt;p&gt;A partir da posição que tomamos em nosso papel, trazemos a comunidade para cima. Ela é quem fala, quem usa o produto, quem tem o que falar sobre ele, sobre suas experiências e dificuldades que precisam ser atendidas. E é extremamente importante levar essa voz da comunidade para o time de produto, de tecnologia, de marketing e todas as demais áreas envolvidas.&lt;/p&gt;

&lt;p&gt;Costumo brincar que somos os olhos, ouvidos, boca e o corpo inteiro, se precisar, da comunidade. E seja uma comunidade interna ou externa, para ela, somos a ponte até a empresa, ou até as áreas de desenvolvimento daquele produto. Somos representantes dessa comunidade. E precisamos fazer com que ela seja ouvida e atendida.&lt;/p&gt;

&lt;p&gt;Isso leva a valorização e reconhecimento para a comunidade. ✨&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>devrel</category>
    </item>
    <item>
      <title>Você sabe o quanto você evolui quando ajuda outra pessoa?</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Sat, 25 Apr 2026 11:37:14 +0000</pubDate>
      <link>https://dev.to/morgannadev/voce-sabe-o-quanto-voce-evolui-quando-ajuda-outra-pessoa-43lm</link>
      <guid>https://dev.to/morgannadev/voce-sabe-o-quanto-voce-evolui-quando-ajuda-outra-pessoa-43lm</guid>
      <description>&lt;p&gt;Independente da nossa senioridade na carreira, uma coisa é certa: é normal ter dúvidas e precisar de ajuda. Outra certeza é de que além de nós, outras pessoas também poderão contar com nosso apoio. A área de tecnologia, além de outras coisas, também é conhecida pela força que a comunidade tem e de como, na maioria das vezes, encontramos disponibilidade e gentileza para nos ajudarmos no cotidiano.&lt;/p&gt;

&lt;p&gt;E essa semana me deparei com essa reflexão. Por que alguém negaria ajuda para outra pessoa? Não faz nem sentido. O mundo da tecnologia é bem pequeno e, com toda certeza, chegará a hora que essa pessoa também precisará de ajuda. E aposto que ela não quer encontrar um "não" como resposta.&lt;/p&gt;

&lt;p&gt;Então, você sabe o quanto ganha quando ajuda outra pessoa? Você vê outra linha de pensamento, outra forma de enxergar um problema e uma, ou mais, possível solução. Você pode testar ideias diferentes para resolver a dúvida e esses testes vão te mostrar resultados diferentes que também se tornarão aprendizados. Você também reforça um conhecimento que você já tem, exercitando formas diferentes de explicar sobre aquilo, tendo que encontrar outros meios e analogias para garantir que a outra pessoa entendeu.&lt;/p&gt;

&lt;p&gt;E são tantos outros aprendizados que poderíamos ficar por aqui enumerando-os, com toda certeza. Espero que possamos ser mais gentis e que possamos apoiar mais as pessoas ao redor. E assim, nós podemos crescer cada vez mais, sendo quem aprende ou sendo quem ensina.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>career</category>
      <category>devrel</category>
    </item>
    <item>
      <title>Como ajudar as pessoas a contribuirem com seu projeto Open Source</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Wed, 29 Oct 2025 18:16:25 +0000</pubDate>
      <link>https://dev.to/morgannadev/como-ajudar-as-pessoas-a-contribuirem-com-seu-projeto-open-source-4cjm</link>
      <guid>https://dev.to/morgannadev/como-ajudar-as-pessoas-a-contribuirem-com-seu-projeto-open-source-4cjm</guid>
      <description>&lt;p&gt;&lt;em&gt;Essa é uma submissão para o &lt;a href="https://dev.to/challenges/hacktoberfest"&gt;Desafio de escrita do Hacktoberfest 2025&lt;/a&gt;: Reflexões sobre Open Source.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tenha um &lt;code&gt;README.md&lt;/code&gt; legal
&lt;/h2&gt;

&lt;p&gt;Esse arquivo é basicamente a vitrine do seu projeto. Então faz sentido que você dedique um tempo nele, deixando-o completo, contando com descrição do projeto, como executá-lo (caso seja código), versionamento, como usá-lo etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Crie o &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Esse será um dos arquivos principais. É nele que você vai adicionar as orientações de como as pessoas podem contribuir com o seu projeto. E quanto mais completo, melhor será. Você pode incluir que a pessoa precisa, por exemplo, fazer um fork do projeto, criar uma branch para contribuição, colocar as regras de como nomear a branch, os commits, as pull requests, adicionar exemplos de contribuição, entre outras coisas que ajudam a padronizar e deixar o projeto mais organizado e recebendo contribuições relevantes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adicione issues
&lt;/h2&gt;

&lt;p&gt;Se você já tem uma ideia de quais funcionalidades ou correções poderiam ser feitas no projeto, essa é uma boa forma de documentá-las. A comunidade pode escolher entre as issues disponíveis para desenvolvê-las. E, claro, as pessoas também podem criar novas issues para discussão da relevância da contribuição que a pessoa quer fazer. Assim, antes da pessoa ter todo o trabalho de fazer a alteração, vocês chegam num acordo se aquela alteração faz sentido ou não.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disponibilize o &lt;code&gt;CODE_OF_CONDUCT.md&lt;/code&gt; do projeto
&lt;/h2&gt;

&lt;p&gt;Pode ser legal ter um arquivo com o código de conduta, assim as pessoas sabem como contribuir da melhor forma para aquele projeto, entendendo quais são as regras. Basicamente, adicionando as orientações de se manter o respeito nas contribuições e nas discussões dessas contribuições, entre outras.&lt;/p&gt;

&lt;p&gt;E você, tem mais dicas de como deixar o projeto o mais amigável possível para as pessoas saberem como contribuir com ele? Deixe nos comentários a sua contribuição!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Educação, Developer Relations e Inteligência Artificial</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Thu, 22 May 2025 11:54:04 +0000</pubDate>
      <link>https://dev.to/morgannadev/educacao-developer-relations-e-inteligencia-artificial-1hi</link>
      <guid>https://dev.to/morgannadev/educacao-developer-relations-e-inteligencia-artificial-1hi</guid>
      <description>&lt;p&gt;Eu acredito muito no poder da educação. Principalmente em situações como a que estamos vivenciando agora, com a explosão de novidades sobre Inteligência Artificial e os medos que surgem com tudo o que tem sido falado por aí.&lt;/p&gt;

&lt;p&gt;Na minha opinião, as ferramentas de IA são muito poderosas para serem colocadas na mão das pessoas sem quaisquer orientações. O uso equivocado, as crenças ao redor disso, o fato de acreditar ou não nas informações geradas sem o senso crítico de quando há alienação e quando há, de fato, respostas válidas, o medo de perder o emprego por conta dessa tecnologia e muitos outros fatores, podem ser muito complicados sem educação.&lt;/p&gt;

&lt;p&gt;A área de Developer Relations pode ser uma forte aliada nesse processo de educação nas empresas. Como Developer Advocate de uma plataforma de IA, vejo o impacto do meu trabalho acontecendo diariamente, levando o conhecimento de forma leve e prática, mostrando como as coisas funcionam de uma maneira mais profunda, dando na mão das pessoas de diversas áreas, e não apenas tecnologia, ferramentas que serão um apoio para seus desafios, tirando o peso do que as assusta e incluindo a leveza de resolver seus problemas diários.&lt;/p&gt;

&lt;p&gt;Investir na área de Developer Relations pode ser fundamental por diversos motivos. E educação é uma das chaves que pode abrir várias portas de soluções dentro das empresas. Quem investe em educação, investe no capital intelectual. E quem investe no capital intelectual, investe em inovação.&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>ai</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Como maximizar o uso da Inteligência Artificial com a engenharia de prompt</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Fri, 16 May 2025 19:00:45 +0000</pubDate>
      <link>https://dev.to/feministech/como-maximizar-o-uso-da-inteligencia-artificial-com-a-engenharia-de-prompt-30od</link>
      <guid>https://dev.to/feministech/como-maximizar-o-uso-da-inteligencia-artificial-com-a-engenharia-de-prompt-30od</guid>
      <description>&lt;p&gt;A inteligência artificial tem se tornado uma aliada valiosa em diversas áreas dentro das empresas. Um dos fatores que pode determinar a eficácia dessa tecnologia é a qualidade dos prompts utilizados para interagir com ela. Neste artigo, discutiremos a importância de construir prompts bem elaborados e forneceremos dicas práticas para garantir que você obtenha as melhores respostas das LLMs.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é Engenharia de Prompt
&lt;/h2&gt;

&lt;p&gt;A engenharia de prompt surgiu como uma nova habilidade e ela é tão recente que ainda estamos aprendendo como usá-la. Essa habilidade nos permite criar inputs otimizados para os modelos de linguagem da inteligência artificial nos retornarem respostas que sejam relevantes. É importante ressaltar que a qualidade do prompt pode influenciar significativamente a acurácia da resposta recebida.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como estruturar um prompt
&lt;/h2&gt;

&lt;p&gt;Considere as seguintes etapas para criar seu prompt:&lt;br&gt;
&lt;strong&gt;1. Ações&lt;/strong&gt;&lt;br&gt;
Comece o prompt com verbos de ações, como “escreva", “analise”, “crie”, entre outros. Deve ser uma pergunta ou solicitação bem definida, tomando o cuidado de evitar ambiguidades.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Dê contexto&lt;/strong&gt;&lt;br&gt;
Esse é um dos pontos mais importantes. Isso inclui informações sobre a situação atual, objetivos, informações sobre o projeto que está trabalhando ou quaisquer limitações que você possa ter para a sua solicitação.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Formatação&lt;/strong&gt;&lt;br&gt;
Forneça orientações sobre como você deseja que a resposta seja formatada. Você espera uma lista? Um e-mail? Um código? Um texto em formato markdown? Esse processo pode facilitar muito o entendimento do retorno da IA.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Exemplificação&lt;/strong&gt;&lt;br&gt;
Dependendo do tipo de solicitação que você está fazendo, pode fazer sentido dar exemplo para IA sobre o que está pedindo. Se está pedindo um e-mail, você pode dar outro e-mail como exemplo do que se espera de resultado. Se está desenvolvendo um código, você pode apontar os arquivos que já estão com o código pronto e que representam o que você espera como retorno.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Persona&lt;/strong&gt;&lt;br&gt;
Outro ponto que pode melhorar o seu prompt seria dizer qual é a persona. Se você está desenvolvendo um código, você pode dizer que a persona da IA é uma pessoa desenvolvedora. Se você está criando histórias a partir de um épico, você pode dizer que a persona da IA é uma pessoa product manager e assim por diante.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Entonação&lt;/strong&gt;&lt;br&gt;
Dependendo da sua solicitação, pode fazer sentido pedir uma entonação específica no seu prompt. Essa entonação pode ser, por exemplo: ou tom de voz casual, ou um tom de voz mais formal, ou entusiasmo, entre outros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vamos continuar construindo prompts
&lt;/h2&gt;

&lt;p&gt;A criação de prompts eficazes é uma habilidade importante que pode maximizar o potencial da IA. Ao focar em clareza, contexto e especificidade, qualquer pessoa, independente da função ou área, pode aprimorar suas interações com a IA e, assim, alcançar melhores resultados. Invista tempo na elaboração de seus prompts e observe como isso pode transformar suas experiências com a tecnologia.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>promptengineering</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Trilha de estudos para ser uma pessoa desenvolvedora Python RPA</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Fri, 29 Mar 2024 21:23:00 +0000</pubDate>
      <link>https://dev.to/botcitydev/trilha-de-estudos-para-ser-uma-pessoa-desenvolvedora-python-rpa-3o85</link>
      <guid>https://dev.to/botcitydev/trilha-de-estudos-para-ser-uma-pessoa-desenvolvedora-python-rpa-3o85</guid>
      <description>&lt;p&gt;Python tem ganhado cada vez mais força no mundo da automação RPA e é importante, como profissionais, estudarmos também essa tecnologia para atender as demandas da melhor maneira possível.&lt;/p&gt;

&lt;p&gt;Mas quais são os passos para aprender Python RPA?&lt;/p&gt;

&lt;p&gt;Que tal seguir essas dicas de uma trilha para o seu desenvolvimento e ainda ter certificados para compartilhar suas novas skills técnicas?&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Comece pela linguagem de programação Python
&lt;/h3&gt;

&lt;p&gt;Este curso totalmente prático vai te guiar de forma clara e objetiva através das principais funcionalidades do Python.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://developers.botcity.dev/academy/devpro_python" rel="noopener noreferrer"&gt;Python Basics - Introdução e Mão na Massa&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Para mais conteúdos para você aprender Python, siga as dicas do artigo "&lt;a href="https://dev.to/feministech/como-iniciar-meus-estudos-em-python-2aii"&gt;Como iniciar meus estudos em Python&lt;/a&gt;".&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Desenvolva sua primeira automação Python
&lt;/h3&gt;

&lt;p&gt;Este curso ministrado durante a Python Brasil de 2022 vai te ensinar a criar automações com visão computacional para qualquer sistema.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://developers.botcity.dev/academy/pybr2022" rel="noopener noreferrer"&gt;Criando automações com visão computacional&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Segurança com Python RPA
&lt;/h3&gt;

&lt;p&gt;Este curso vai te guiar de forma clara e objetiva através dos principais conceitos de segurança da informação e como aplicar esses conceitos em projetos Python com um foco especial em projetos de RPA.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://developers.botcity.dev/academy/seguranca_rpa_python" rel="noopener noreferrer"&gt;Segurança com Python RPA&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Aprenda como fazer orquestração da sua automação Python
&lt;/h3&gt;

&lt;p&gt;Aprenda na prática de forma clara e objetiva as principais funcionalidades do orquestrador. Veja os benefícios e vantagens de usar cada recurso nos seus processos de automação.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://developers.botcity.dev/academy/orchestration" rel="noopener noreferrer"&gt;Orquestração de Python RPA&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Desenvolva uma automação com um importante sistema do mercado
&lt;/h3&gt;

&lt;p&gt;Explore a automação SAP com Python e BotCity neste curso prático. Aprenda técnicas essenciais para agilizar os processos SAP de forma eficiente e eficaz.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://developers.botcity.dev/academy/sap_automation_pt" rel="noopener noreferrer"&gt;Automação de SAP com Python&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Pratique bastante e compartilhe sua evolução e seus aprendizados com a comunidade
&lt;/h3&gt;

&lt;p&gt;Conheça o repositório de bots da comunidade, para aprender com o desenvolvimento de outras pessoas e compartilhar os seus projetos open source.&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://repository.botcity.dev/" rel="noopener noreferrer"&gt;Repositório de bots da comunidade&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;O que achou dessas dicas? Bora começar esses estudos e sermos profissionais cada vez melhores!&lt;/p&gt;

&lt;p&gt;E se tiver mais dicas, deixe nos comentários para complementar o conteúdo!&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>rpa</category>
      <category>beginners</category>
      <category>automation</category>
    </item>
    <item>
      <title>O papel da pessoa desenvolvedora muito além do código</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Fri, 29 Mar 2024 18:25:59 +0000</pubDate>
      <link>https://dev.to/botcitydev/o-papel-da-pessoa-desenvolvedora-muito-alem-do-codigo-149h</link>
      <guid>https://dev.to/botcitydev/o-papel-da-pessoa-desenvolvedora-muito-alem-do-codigo-149h</guid>
      <description>&lt;p&gt;Estava acompanhando uma postagem no LinkedIn sobre como os times e as empresas precisam entender a importância do gerenciamento de projetos de automação. Você pode acompanhar a &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7179064607423029248/" rel="noopener noreferrer"&gt;postagem neste link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Entendo que é crucial que essa discussão ocorra entre as pessoas dos times de negócio e gestão. Mas essa preocupação deveria ser também considerada para pessoas desenvolvedoras e também outros papéis de pessoas tecnologistas.&lt;/p&gt;

&lt;p&gt;Quando nos tornamos pessoas desenvolvedoras (independente do tipo de projeto que vamos desenvolver), colocamos na cabeça que &lt;em&gt;somos pessoas que fazemos apenas código&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Mas na verdade, &lt;em&gt;somos pessoas resolvedoras de problemas&lt;/em&gt;. Precisamos lembrar de exercitar esse papel, levando para os times que trabalhamos soluções que fazem mais sentido de acordo com os requisitos e projetos que temos que atender.&lt;/p&gt;

&lt;p&gt;Além disso, resolver problemas não significa que vamos apenas desenvolver um código e acabou. Devemos encontrar soluções no mercado que nos ajudem, afinal de contas, nosso objetivo também é levar valor aos projetos que atuamos. Por isso é tão importante quando fazemos POCs (Proof of Concept, ou Prova de Conceito em português) das ferramentas que pesquisamos.&lt;/p&gt;

&lt;p&gt;É nesse momento que testamos, avaliamos as funcionalidades e tentamos considerar quais serão os ganhos com aquela ferramenta. E isso vai muito além do que queremos. Por isso temos que entender o que as demais áreas precisam e o que de fato terá valor em nossa automação.&lt;/p&gt;

&lt;p&gt;Um projeto de automação também é um projeto de software. E tal como um projeto de software, precisa de gerenciamento. Não basta entregar um executável para as pessoas usuárias. O que elas querem, no final do dia, é ter uma forma de orquestrar o que será executado.&lt;/p&gt;

&lt;p&gt;Repare nas perguntas que as pessoas usuárias fazem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Como eu sei se deu certo?&lt;/li&gt;
&lt;li&gt;Como faço para agendar a execução?&lt;/li&gt;
&lt;li&gt;E se der erro?&lt;/li&gt;
&lt;li&gt;E se não executar?&lt;/li&gt;
&lt;li&gt;Como eu levo uma comunicação eficaz para o time sobre o que está acontecendo com as automações?&lt;/li&gt;
&lt;li&gt;Mas eu tenho uma planilha enorme de dados para consumir, e se falhar no meio do caminho?&lt;/li&gt;
&lt;li&gt;Quem pode acessar as informações?&lt;/li&gt;
&lt;li&gt;Onde eu coloco as senhas para autenticação nos sistemas?&lt;/li&gt;
&lt;li&gt;Eu posso executar mais de uma automação por vez?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Entre tantas outras. E unir código com uma solução que te permita proporcionar todo esse gerenciamento é de extrema importância, principalmente porque a operação de automações pode ser facilmente escalada. E como vamos gerenciar isso?&lt;/p&gt;

&lt;p&gt;Aproveitando a discussão, quero compartilhar com vocês uma trilha de estudos que pode te ajudar a entender melhor como seguir essas práticas e o nosso papel: &lt;a href="https://dev.to/botcitydev/trilha-de-estudos-para-ser-uma-pessoa-desenvolvedora-python-rpa-3o85"&gt;trilha de estudos para Python RPA&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;E o que você acha isso? Compartilhe suas experiências com a comunidade nos comentários e vamos trocar uma ideia.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>discuss</category>
      <category>rpa</category>
    </item>
    <item>
      <title>As mulheres que mudaram o rumo da tecnologia</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Sun, 24 Mar 2024 14:45:38 +0000</pubDate>
      <link>https://dev.to/feministech/as-mulheres-que-mudaram-o-rumo-da-tecnologia-4b6d</link>
      <guid>https://dev.to/feministech/as-mulheres-que-mudaram-o-rumo-da-tecnologia-4b6d</guid>
      <description>&lt;p&gt;Quando eu comecei a fazer lives sobre tecnologia pelo &lt;a href="https://www.twitch.tv/team/livecodergirls" rel="noopener noreferrer"&gt;time da Feministech na Twitch&lt;/a&gt;, eu pensei em falar sobre mulheres na tecnologia. O objetivo era falar de uma mulher a cada live. E como eu queria ter o registro disso de alguma forma, para que ninguém perdesse a história da mulher que falamos, caso a pessoa tivesse perdido a live, criei um projeto dentro do GitHub.&lt;/p&gt;

&lt;p&gt;Isso foi bem importante para mim, a cada live que eu pensava em fazer, pesquisava sobre mulheres na tecnologia e acabava descobrindo histórias incríveis e que ninguém conta abertamente. E lá ia eu, ficar encantada com cada uma dessas histórias e já estava achando pouco falar sobre apenas uma mulher na tecnologia por live.&lt;/p&gt;

&lt;p&gt;O projeto foi crescendo e tomando forma. Claro que já tive um milhão de ideias para ele, assim como já recebi também diversas sugestões. Já pensei até em transformar em um livro. (Quem sabe um dia, né?).&lt;/p&gt;

&lt;p&gt;E quero aproveitar o &lt;a href="https://dev.to/t/wecoded"&gt;#wecoded&lt;/a&gt; para mostrar também para mais pessoas sobre esse projeto. Ainda são pouquíssimas mulheres nele. Tem mulheres que já se foram, mulheres que ainda estão transformando a área de tecnologia com seus estudos, pesquisas e trabalho.&lt;/p&gt;

&lt;p&gt;E além disso, quero aproveitar para falar mais uma coisa:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Você, que está aí em algum lugar, estudando sobre tecnologia, enfrentando diversos preconceitos, tentando lidar com mil coisas ao mesmo tempo: casa, trabalho, estudos, ou buscando sua primeira oportunidade, saúde, família, ou tendo que cuidar de tudo isso sozinha, entre tantas outras coisas... &lt;strong&gt;Eu quero dizer que você também está transformando o mundo da tecnologia.&lt;/strong&gt; Seja você uma mulher que está pensando em dar seus primeiros passos na área, uma mulher que já está atuando como tecnologista, uma mulher com anos e anos de experiência, uma mulher em transição de carreira, não importa. A cada passo que você dá, é um passo que damos todas juntas para mudar o mundo. &lt;strong&gt;E você está transformando a área de tecnologia.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Vou pegar emprestada algumas palavras aqui do Emicida: "faz essa por nós, te vejo no pódio", onde estaremos juntas, combinado?&lt;/p&gt;

&lt;p&gt;Se você quiser se inspirar em outras mulheres diversas ou quiser compartilhar a história de mulheres na tecnologia, aqui está o projeto. Espero que goste!&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/morgannadev" rel="noopener noreferrer"&gt;
        morgannadev
      &lt;/a&gt; / &lt;a href="https://github.com/morgannadev/mulherestecnologia" rel="noopener noreferrer"&gt;
        mulherestecnologia
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A ideia deste repositório é compartilhar sobre mulheres na tecnologia, mostrando que há muitas delas que transformaram e ainda transformam a área.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Mulheres no mundo da tecnologia 💻&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/809fb27bfe58ed558c114bb79c322afb88fbfd567c1d29b063693232df4ed80a/68747470733a2f2f692e696d6775722e636f6d2f33535a70764a6e2e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/809fb27bfe58ed558c114bb79c322afb88fbfd567c1d29b063693232df4ed80a/68747470733a2f2f692e696d6775722e636f6d2f33535a70764a6e2e706e67" alt="Imagem com diversos desenhos de mulheres diversas e diferentes."&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Olá, mundo
Eu sou a Morganna, sou desenvolvedora backend, developer relations e tech writer e estou fazendo lives na &lt;a href="https://www.twitch.tv/morgannadev" rel="nofollow noopener noreferrer"&gt;twitch&lt;/a&gt; sobre programação e outras coisas. Faço parte da equipe &lt;a href="https://www.twitch.tv/team/livecodergirls" rel="nofollow noopener noreferrer"&gt;Feministech&lt;/a&gt;
Em cada uma das nossas lives, iremos conhecer uma mulher do mundo da tecnologia. E, também, vamos registrar um resumo de suas histórias aqui.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;[0] Ada Lovelace&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Nascida como Augusta Ada Byron King. Viveu entre 1815 e 1852. Foi a primeira pessoa (e não apenas a primeira mulher) a desenvolver um algoritmo que poderia ser implementado em um computador. Foi matemática, primeira pessoa programadora, poetisa, cientista da computação, inventora, tradutora, escritora e engenheira. Também é reconhecida pela comunidade de pessoas da área de qualidade como a primeira pessoa a identificar bugs em um algoritmo.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;[1] Grace Hopper&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Grace Murray Hopper, viveu entre 1906 e 1992. Foi a criadora da linguagem de programação de…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/morgannadev/mulherestecnologia" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Inclusive, nesse mesmo repositório, tem um arquivo com iniciativas e comunidades para mulheres no mundo todo. Conheça e compartilhe!&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>womenintech</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Dicas sobre desenvolvimento de automação com visão computacional</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Sun, 17 Mar 2024 19:50:16 +0000</pubDate>
      <link>https://dev.to/botcitydev/dicas-sobre-desenvolvimento-de-automacao-com-visao-computacional-1132</link>
      <guid>https://dev.to/botcitydev/dicas-sobre-desenvolvimento-de-automacao-com-visao-computacional-1132</guid>
      <description>&lt;p&gt;Existem diversos casos de uso em que o desenvolvimento das automações RPA podem ter um melhor resultado utilizando o apoio da linguagem de programação Python e a tecnologia &lt;a href="https://blog.botcity.dev/pt-br/2023/11/28/visao-computacional/" rel="noopener noreferrer"&gt;visão computacional&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é visão computacional
&lt;/h2&gt;

&lt;p&gt;A visão computacional é uma tecnologia que utiliza-se da Inteligência Artificial, Aprendizado de Máquina (ou Machine Learning) e reconhecimento óptico de caracteres (também conhecido como OCR) para desenvolver sistemas que possam interpretar e classificar imagens.&lt;/p&gt;

&lt;p&gt;Por trás dessa tecnologia, existem algoritmos capazes de entender padrões apenas visualizando imagens e vídeos. E isso pode ser um grande poder para nos ajudar a automatizar tarefas e processos que precisam acessar sistemas que nem sempre nos permitem acessar o backend da aplicação desktop ou ainda a DOM (Document Object Model de uma página HTML) de uma página Web e temos que partir para a visão computacional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como usar a visão computacional para desenvolver automações
&lt;/h2&gt;

&lt;p&gt;Vou deixar aqui como sugestão, um conteúdo bem interessante em formato de curso rápido com o passo a passo de como desenvolver a sua automação com visão computacional: &lt;a href="https://developers.botcity.dev/academy/pybr2022/" rel="noopener noreferrer"&gt;Criando automações com visão computacional&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;E como dica extra, vou deixar aqui também disponível acesso para a &lt;a href="https://documentation.botcity.dev/pt/studio/vscode/" rel="noopener noreferrer"&gt;documentação&lt;/a&gt; de maneira gratuita de uma extensão que está em pré-release que você pode utilizar no Visual Studio Code para desenvolver suas automações com o apoio dessa tecnologia, visão computacional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dicas sobre como resolver problemas ao desenvolver com visão computacional
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Elemento não encontrado
&lt;/h3&gt;

&lt;p&gt;Algo que pode ajudar na investigação de elementos não encontrados pela visão computacional, é utilizar o seguinte comando logo após chamar a função find() e antes de executar operações como o click():&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save_screenshot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;debug_find.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso pode te ajudar a analisar como estava a tela e talvez te dar um direcionamento de qual é o motivo do elemento não estar sendo encontrado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resolução da tela
&lt;/h3&gt;

&lt;p&gt;Outra questão muito importante dentro do desenvolvimento com visão computacional é a resolução da tela. Caso esteja desenvolvendo uma automação que utiliza máquina virtual &lt;a href="https://blog.botcity.dev/pt-br/2024/03/01/como-construir-uma-automacao-desktop-em-python-para-acessar-vms-por-conexao-rdp/" rel="noopener noreferrer"&gt;acessando via RDP&lt;/a&gt;, você pode seguir algumas dicas do artigo linkado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sugestões para avaliar problemas
&lt;/h3&gt;

&lt;p&gt;Você pode analisar os pontos a seguir para descobrir o que pode estar acontecendo nas falhas do seu robô:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Talvez o período configurado no parâmetro &lt;code&gt;waiting_time&lt;/code&gt; da função &lt;code&gt;find()&lt;/code&gt; esteja muito curto e isso pode acontecer caso ainda não tenha dado tempo de carregar a tela, então você poderia ajustar esse item;&lt;/li&gt;
&lt;li&gt;Talvez o sistema sendo automatizado possua algum bloqueio contra captura de telas (esse tipo de problema pode ser bastante comum em telas que envolvam Bancos, por exemplo);&lt;/li&gt;
&lt;li&gt;Talvez algum outro elemento esteja na frente do elemento buscado, então a sugestão de tirar um print da tela citada acima, pode ajudar a entender se isso está acontecendo;&lt;/li&gt;
&lt;li&gt;Pode ser que o recorte foi feito com outra resolução que não a do sistema atual. Lembre-se de tentar desenvolver num ambiente igual ou ao menos o mais parecido possível, principalmente ao que se refere às configurações de resolução;&lt;/li&gt;
&lt;li&gt;Verifique se você está fazendo os recortes necessários em um ambiente com tema dark, por exemplo, porque isso pode fazer diferença se em outro momento, o ambiente estiver com o tema light;&lt;/li&gt;
&lt;li&gt;E outra dica seria verificar a acurácia do algoritmo de visão computacional. Na função &lt;code&gt;find()&lt;/code&gt;, ajuste, se necessário, o parâmetro &lt;code&gt;matching&lt;/code&gt;. Ele costuma estar com o valor máximo 0.97. Esse valor poderia ser ajustado a, no mínimo, 0.90. Isso pode ajudar nas questões levantadas neste tópico. Mas cuidado para não diminuir muito mais que isso, a ponto do algoritmo perder a sua eficiência para encontrar o elemento que precisa ser identificado.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Já fez alguma automação com visão computacional?
&lt;/h2&gt;

&lt;p&gt;Compartilhe suas experiências com essa forma de desenvolvimento e, caso tenha passado por algum problema ou erro, compartilhe também como solucionou ocorrido. Sempre bom aprender com experiências diferentes.&lt;/p&gt;

&lt;p&gt;E não deixe de participar da &lt;a href="https://documentation.botcity.dev/pt/community/" rel="noopener noreferrer"&gt;comunidade&lt;/a&gt; para mais trocas e conteúdos.&lt;/p&gt;

</description>
      <category>rpa</category>
      <category>braziliandevs</category>
      <category>automation</category>
      <category>visaocomputacional</category>
    </item>
    <item>
      <title>Como identificar problemas de ambiente ao tentar instalar BotCity Studio SDK</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Tue, 12 Mar 2024 17:14:57 +0000</pubDate>
      <link>https://dev.to/botcitydev/como-identificar-problemas-de-ambiente-ao-tentar-instalar-botcity-studio-sdk-17k8</link>
      <guid>https://dev.to/botcitydev/como-identificar-problemas-de-ambiente-ao-tentar-instalar-botcity-studio-sdk-17k8</guid>
      <description>&lt;p&gt;Para utilizar qualquer tecnologia e/ou linguagem de programação, você deve preparar o ambiente para que seu código funcione adequadamente conforme você o desenvolve. E as orientações sobre como fazer isso, normalmente constam nas primeiras etapas da documentação dessa tecnologia.&lt;/p&gt;

&lt;p&gt;No caso do desenvolvimento de automações RPA com as ferramentas da BotCity também funciona dessa maneira. As orientações estão na &lt;a href="https://documentation.botcity.dev/getting-started/prerequisites/" rel="noopener noreferrer"&gt;documentação com os pré-requisitos&lt;/a&gt;. Mas dependendo do computador que estamos utilizando, pode ser que tenhamos algumas dificuldades para instalar algo.&lt;/p&gt;

&lt;p&gt;Isso pode acontecer por alguns motivos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;algumas tecnologias podem ter pré-requisitos para funcionar;&lt;/li&gt;
&lt;li&gt;alguns computadores podem ter bloqueios para instalar algo, caso você não seja a pessoa administradora da máquina.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essas questões ressaltam quando estamos lidando com computadores que são da empresa na qual trabalhamos que, por segurança, adiciona bloqueios nesses equipamentos.&lt;/p&gt;

&lt;p&gt;Caso você esteja tentando preparar o ambiente para desenvolvimento de suas automações utilizando as ferramentas da BotCity e enfrente alguma dificuldade, é importante que você conheça também a &lt;a href="https://documentation.botcity.dev/getting-started/botcity-studio-sdk/#diagnostic-tool" rel="noopener noreferrer"&gt;ferramenta Diagnostic&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Essa ferramenta acompanha o mesmo pacote que você realiza o &lt;a href="https://documentation.botcity.dev/getting-started/botcity-studio-sdk/#download" rel="noopener noreferrer"&gt;download do Wizard para instalação do BotCity Studio SDK&lt;/a&gt;. Seu objetivo é validar se o ambiente atende os pré-requisitos para que você utilize esse SDK sem problemas e se é possível a instalação das ferramentas em seu computador, além de confirmar se será possível estabelecer uma conexão de sucesso com o BotCity Orquestrador.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como executar o diagnóstico
&lt;/h2&gt;

&lt;p&gt;Ao fazer o dowload do BotCity Studio SDK, você terá uma pasta compactada chamada Wizard. Ao descompactá-la, um dos arquivos disponíveis será o &lt;code&gt;diagnostic.jar&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;⚠️ Para executar o Diagnostic no Linux ou no MacOS, é necessário ter o Java instalado. Se você for executar no ambiente Windows, pode executar sem essa preocupação.&lt;/p&gt;

&lt;p&gt;A janela do Diagnostic se abrirá e você deverá adicionar o seu login da conta criada para utilizar o SDK e o Orquestrador. No campo "Email" preencha o seu e-mail cadastrado e no campo "Password" adicione a sua senha. Após isso clique no botão localizado do lado direito da janela, chamado “Run”.&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%2F8e37cvcqao2o23jfwr3u.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%2F8e37cvcqao2o23jfwr3u.png" alt="Print da tela do Diagnostic ao ser aberto" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso você não preencha e-mail e senha, o Diagnostic não fará os testes de login com o Orquestrador, deixando essa informação como resultado do teste: "E-mail ou senha não informados. Essa etapa foi pulada".&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%2Ftbw1df9bvf4qzsyadnhc.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%2Ftbw1df9bvf4qzsyadnhc.png" alt="Print do Diagnostic após execução sem o e-mail e sem a senha, com destaque na linha do teste " width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após clicar em "Run", o Diagnostic começará os testes do ambiente. Se terminar com tudo funcionando corretamente, uma janela de confirmação aparecerá em cima informando que o diagnóstico finalizou e que o sistema está pronto para o desenvolvimento.&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%2Fy9riab307rudvtl4pag1.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%2Fy9riab307rudvtl4pag1.png" alt="Print do Diagnostic após execução, quando mostra uma nova janela de confirmação de que os testes terminaram e que o sistema está pronto para desenvolvimento." width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Status dos resultados do diagnóstico
&lt;/h2&gt;

&lt;p&gt;Pode ser que você perceba três diferentes status após a execução. São eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PASS:&lt;/strong&gt; significa que o teste passou;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FAIL:&lt;/strong&gt; significa que o teste falhou e será necessário averiguar o problema;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SKIP:&lt;/strong&gt; significa que o teste anterior com o SSL (certificado) habilitado, funcionou, então o Diagnostic não precisou executar um novo teste com o SSL desabilitado.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Caso receba o resultado FAIL em algum teste de conexão, possivelmente há algum bloqueio no ambiente que você está utilizando. E, neste caso, é necessário solicitar ao time responsável da empresa onde você trabalha, as liberações descritas na &lt;a href="https://documentation.botcity.dev/pt/getting-started/prerequisites/#problemas-com-bloqueios-do-ambiente" rel="noopener noreferrer"&gt;documentação de problemas com bloqueios de ambiente&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como exportar o resultado dos testes
&lt;/h2&gt;

&lt;p&gt;Se for necessário, você pode exportar o resultado dos testes em formato .csv. Para fazer isso, clique no botão "Export" localizado na parte debaixo da janela, do lado direito. Feito isso, uma nova janela se abrirá para você ter acesso ao arquivo.&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%2Frt6utiwbht1xk57245cz.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%2Frt6utiwbht1xk57245cz.png" alt="Print do Diagnostic com a janela em cima para acesso ao arquivo csv criado a partir dos testes executados." width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ficou alguma dúvida?
&lt;/h2&gt;

&lt;p&gt;Você pode acessar o nosso &lt;a href="https://documentation.botcity.dev/pt/faq/" rel="noopener noreferrer"&gt;FAQ&lt;/a&gt; para dúvidas frequentes, ou ainda entrar em contato com a comunidade global no &lt;a href="https://join.slack.com/t/communitybotcitydev/shared_invite/zt-1yvjzlce9-esRSoWfAIXPse4L21bzjAQ" rel="noopener noreferrer"&gt;Slack&lt;/a&gt;. Caso prefira, também temos o &lt;a href="https://community.botcity.dev/" rel="noopener noreferrer"&gt;fórum&lt;/a&gt; disponível para dúvidas.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>botcity</category>
      <category>automation</category>
      <category>rpa</category>
    </item>
    <item>
      <title>Para quem é a sua homenagem para mulheres na tecnologia?</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Fri, 08 Mar 2024 18:21:57 +0000</pubDate>
      <link>https://dev.to/feministech/para-quem-e-a-sua-homenagem-para-mulheres-na-tecnologia-1aoo</link>
      <guid>https://dev.to/feministech/para-quem-e-a-sua-homenagem-para-mulheres-na-tecnologia-1aoo</guid>
      <description>&lt;p&gt;Vamos refletir um pouco sobre essa questão. Quando você pensa em mulher na tecnologia, o que vem a sua mente? E essa pergunta é importante para todes.&lt;/p&gt;

&lt;p&gt;O seu pensamento de diversidade está incluindo quais mulheres? As brancas? As negras? As indígenas? As pardas? As amarelas? As mulheres dos mais diversos tipos de corpos?&lt;/p&gt;

&lt;p&gt;Você só considera as mulheres cis? E as mulheres trans? Você lembra das mulheres com deficiência? Tem considerado as mulheres mais velhas e não apenas as mais jovens? E as mulheres que são mães? Ou que querem ser mães? Ou que não querem ser?&lt;/p&gt;

&lt;p&gt;E aquelas que querem começar uma nova carreira na área, que tipo de suporte e oportunidade elas tem recebido da sociedade, das comunidades e do mercado?&lt;/p&gt;

&lt;p&gt;Já parou para pensar se a sua homenagem ao dia das mulheres e às mulheres da tecnologia inclui aquelas que são do norte ou nordeste do país? Ou de quaisquer outras regiões do Brasil e do mundo?&lt;/p&gt;

&lt;p&gt;Você homenageia também, com as suas palavras e emoções, as mulheres que creem em religiões diferentes das suas? Culturas e verdades diferentes das suas? Você se lembra de todas as raças? Todas as cores? Todas as histórias e experiências diferentes das suas?&lt;/p&gt;

&lt;p&gt;E as mulheres LGBTQIAP+? Também fazem parte de toda a compaixão que você demonstra todo dia 8 de março ou elas estão apenas nas suas piadas sexistas com aquele seu grupinho racista, machista e misógino?&lt;/p&gt;

&lt;p&gt;Quando foi que você se lembrou, de verdade, das mulheres de baixa renda? As que sofrem com a miséria das mais diversas formas? As que sofrem constantes violências? E as mulheres que você chama de loucas só porque elas lutam para conquistarem algo que já deveria ser delas?&lt;/p&gt;

&lt;p&gt;Muitas pessoas por aí perguntam o que fazer para solucionar "o problema da falta de diversidade nas empresas" e em tantos outros lugares na sociedade. Como mudar a diversidade se raramente conseguimos encontrar lugares nos quais realmente nos sentimos pertencentes? Como mudar a diversidade se nem mesmo a nossa vida é respeitada? Como mudar a diversidade se não fazemos o exercício de perceber quem está ao nosso lado?&lt;/p&gt;

&lt;p&gt;Ainda temos raízes muito profundas para quebrar. E apenas um "feliz dia da mulher" não alimenta a diversidade. Apenas uma "vaga para mulheres na empresa" não é uma oportunidade saudável. Precisamos ir muito além como sociedade para que deixemos de ser vistas como nos veem hoje: ou somos um nada, ou somos alguém para servir de token para o seu falso papo de diversidade, ou somos alvo de todo tipo de violência.&lt;/p&gt;

&lt;p&gt;Como já disse, ainda temos raízes muito profundas para quebrar. &lt;strong&gt;Que continuemos sendo todas loucas o suficiente para quebrarmos cada uma dessas raízes.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>braziliandevs</category>
      <category>diversity</category>
      <category>community</category>
    </item>
    <item>
      <title>Como identificar se a automação está executando localmente ou no BotCity Orquestrador?</title>
      <dc:creator>Morganna</dc:creator>
      <pubDate>Wed, 06 Mar 2024 20:31:41 +0000</pubDate>
      <link>https://dev.to/botcitydev/como-identificar-se-a-automacao-esta-executando-localmente-ou-no-botcity-orquestrador-3kh8</link>
      <guid>https://dev.to/botcitydev/como-identificar-se-a-automacao-esta-executando-localmente-ou-no-botcity-orquestrador-3kh8</guid>
      <description>&lt;h2&gt;
  
  
  A dúvida surgiu
&lt;/h2&gt;

&lt;p&gt;Enquanto estávamos em nossa &lt;a href="https://www.youtube.com/live/VCOYDfLRhoY?si=ZA1kITat9XfnnAJm" rel="noopener noreferrer"&gt;live coding&lt;/a&gt; desenvolvendo uma automação com Python e fazendo integração com e-mail e Google Sheets, surgiu uma dúvida:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Como identificar se a automação está executando localmente ou no BotCity Orquestrador?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Essa dúvida surgiu por causa da seguinte situação: quando estamos executando nossa automação localmente, ou seja, em nosso computador ou máquina virtual, e queremos conectá-la com o &lt;a href="https://developers.botcity.dev/" rel="noopener noreferrer"&gt;BotCity Orquestrador&lt;/a&gt;, precisamos utilizar o BotCity Maestro SDK para fazer login na plataforma. Mas quando fazemos deploy no Orquestrador, esse trecho de código para o login não precisa existir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exemplo prático
&lt;/h2&gt;

&lt;p&gt;Criei um robô seguindo a &lt;a href="https://documentation.botcity.dev/pt/tutorials/python-automations/web/" rel="noopener noreferrer"&gt;documentação do framework web&lt;/a&gt; para exemplo. Abaixo temos o código principal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Import for the Web Bot
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;botcity.web&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;WebBot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Browser&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;By&lt;/span&gt;

&lt;span class="c1"&gt;# Import for integration with BotCity Maestro SDK
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;botcity.maestro&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;

&lt;span class="c1"&gt;# Disable errors if we are not connected to Maestro
&lt;/span&gt;&lt;span class="n"&gt;BotMaestroSDK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RAISE_NOT_CONNECTED&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# Runner passes the server url, the id of the task being executed,
&lt;/span&gt;    &lt;span class="c1"&gt;# the access token and the parameters that this task receives (when applicable).
&lt;/span&gt;    &lt;span class="n"&gt;maestro&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BotMaestroSDK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_sys_args&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="c1"&gt;## Fetch the BotExecution with details from the task, including parameters
&lt;/span&gt;    &lt;span class="n"&gt;execution&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;maestro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_execution&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Task ID is: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;execution&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;task_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Task Parameters are: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;execution&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parameters&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;bot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;WebBot&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="c1"&gt;# Configure whether or not to run on headless mode
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headless&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;

    &lt;span class="c1"&gt;# Uncomment to change the default Browser to Firefox
&lt;/span&gt;    &lt;span class="c1"&gt;# bot.browser = Browser.FIREFOX
&lt;/span&gt;
    &lt;span class="c1"&gt;# Uncomment to set the WebDriver path
&lt;/span&gt;    &lt;span class="c1"&gt;# bot.driver_path = "&amp;lt;path to your WebDriver binary&amp;gt;"
&lt;/span&gt;
    &lt;span class="c1"&gt;# Opens the BotCity website.
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;browse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.botcity.dev&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Implement here your logic...
&lt;/span&gt;    &lt;span class="bp"&gt;...&lt;/span&gt;

    &lt;span class="c1"&gt;# Wait 3 seconds before closing
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;wait&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Finish and clean up the Web Browser
&lt;/span&gt;    &lt;span class="c1"&gt;# You MUST invoke the stop_browser to avoid
&lt;/span&gt;    &lt;span class="c1"&gt;# leaving instances of the webdriver open
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stop_browser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="c1"&gt;# Uncomment to mark this task as finished on BotMaestro
&lt;/span&gt;    &lt;span class="c1"&gt;# maestro.finish_task(
&lt;/span&gt;    &lt;span class="c1"&gt;#     task_id=execution.task_id,
&lt;/span&gt;    &lt;span class="c1"&gt;#     status=AutomationTaskFinishStatus.SUCCESS,
&lt;/span&gt;    &lt;span class="c1"&gt;#     message="Task Finished OK."
&lt;/span&gt;    &lt;span class="c1"&gt;# )
&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;not_found&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Element not found: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E assim fica o código do &lt;code&gt;requirements.txt&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;botcity-framework-web&amp;gt;=0.8.0,&amp;lt;1.0
botcity-maestro-sdk&amp;gt;=0.3.3,&amp;lt;1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O que eu fiz para poder executar esse código, foi descomentar a linha:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;browser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FIREFOX&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E adicionar o &lt;a href="https://github.com/mozilla/geckodriver/releases" rel="noopener noreferrer"&gt;geckodriver&lt;/a&gt; na configuração do WebDriver, deixando-o na pasta &lt;code&gt;resources&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;driver_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;resources\geckodriver.exe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse bot é apenas um exemplo e o que ele faz ao ser executado é abrir o navegador Firefox (poderia ter sido o Chrome, Edge, entre outros) com o site da &lt;a href="https://www.botcity.dev/" rel="noopener noreferrer"&gt;BotCity&lt;/a&gt; e, depois de três segundos, fecha o navegador.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conexão com BotCity Orquestrador
&lt;/h2&gt;

&lt;p&gt;Se você precisar se conectar com a plataforma para orquestração, você precisará adicionar o seguinte código para fazer &lt;a href="https://documentation.botcity.dev/pt/maestro/maestro-sdk/setup/#estabelecendo-uma-conexao-com-o-maestro" rel="noopener noreferrer"&gt;login no BotCity Orquestrador&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;maestro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MAESTRO_SERVER&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MAESTRO_LOGIN&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MAESTRO_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por serem dados sensíveis, uma saída para ocultar os dados é utilizando &lt;code&gt;dotenv&lt;/code&gt; do Python e o OS. Para isso, basta importar da seguinte forma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dotenv&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;load_dotenv&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="bp"&gt;...&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;load_dotenv&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="bp"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E no arquivo &lt;code&gt;requirements.txt&lt;/code&gt; precisa adicionar a biblioteca dotenv:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;botcity-framework-web&amp;gt;=0.8.0,&amp;lt;1.0
botcity-maestro-sdk&amp;gt;=0.3.3,&amp;lt;1.0

python-dotenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Além disso também é necessário termos um arquivo chamado &lt;code&gt;.env&lt;/code&gt;, pois é de lá que o código buscará as informações. E esse arquivo ficará da seguinte forma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MAESTRO_SERVER = "coloque o server aqui"
MAESTRO_LOGIN = "coloque o login aqui"
MAESTRO_KEY = "coloque a key aqui"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essas informações ficam disponíveis em &lt;a href="https://documentation.botcity.dev/pt/maestro/features/dev-environment/" rel="noopener noreferrer"&gt;Dev. Environment&lt;/a&gt;, no BotCity Orquestrador.&lt;/p&gt;

&lt;p&gt;OBS: É importante lembrar de não disponibilizar o &lt;code&gt;.env&lt;/code&gt; ao versionar em plataformas como o GitHub, Gitlab, entre outras. Para facilitar, adicione &lt;code&gt;.env&lt;/code&gt; ao arquivo &lt;code&gt;.gitignore&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qual a diferença entre o ambiente local e o orquestrador
&lt;/h2&gt;

&lt;p&gt;Quando executamos nossa automação dentro do Orquestrador, uma tarefa é criada, atrelada a automação que fizemos o deploy, então por ele nós temos o ID da tarefa (ou task_id). Já no ambiente local, não temos essa informação.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como validar em qual ambiente está sendo executado
&lt;/h2&gt;

&lt;p&gt;Então podemos, por exemplo, fazer a seguinte validação: se task_id for igual a 0, estamos executando localmente e precisamos fazer o processo de login com o Orquestrador. Caso contrário, o task_id existe e, então, não precisamos fazer o login.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="bp"&gt;...&lt;/span&gt;
    &lt;span class="n"&gt;maestro&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BotMaestroSDK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_sys_args&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="c1"&gt;## Fetch the BotExecution with details from the task, including parameters
&lt;/span&gt;    &lt;span class="n"&gt;execution&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;maestro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_execution&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="nf"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;execution&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;task_id&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Running locally so we need to login to BotCity Orchestrator.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;maestro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MAESTRO_SERVER&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; 
            &lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MAESTRO_LOGIN&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; 
            &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MAESTRO_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Running with BotCity Orchestrator.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="bp"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Execução local
&lt;/h2&gt;

&lt;p&gt;Ao testar a execução do robô localmente, percebemos que retorna a mensagem correta no terminal:&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%2F8tf95sjajig9fygf2vvl.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%2F8tf95sjajig9fygf2vvl.png" alt="print do terminal do Visual Studio Code com foco na mensagem " width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Execução no Orquestrador
&lt;/h2&gt;

&lt;p&gt;Ao testar a execução do robô no Orquestrador, percebemos que retorna a mensagem correta no terminal:&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%2Fqjbaic64yhy0pkix4sj7.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%2Fqjbaic64yhy0pkix4sj7.png" alt="print do log do Runner com foco na mensagem " width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Código completo
&lt;/h2&gt;

&lt;p&gt;Caso queira validar como ficou o código principal completo, segue abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Import for the Web Bot
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;botcity.web&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;WebBot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Browser&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;By&lt;/span&gt;

&lt;span class="c1"&gt;# Import for integration with BotCity Maestro SDK
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;botcity.maestro&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dotenv&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;load_dotenv&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="c1"&gt;# Disable errors if we are not connected to Maestro
&lt;/span&gt;&lt;span class="n"&gt;BotMaestroSDK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RAISE_NOT_CONNECTED&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;load_dotenv&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="c1"&gt;# Runner passes the server url, the id of the task being executed,
&lt;/span&gt;    &lt;span class="c1"&gt;# the access token and the parameters that this task receives (when applicable).
&lt;/span&gt;    &lt;span class="n"&gt;maestro&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BotMaestroSDK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_sys_args&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="c1"&gt;## Fetch the BotExecution with details from the task, including parameters
&lt;/span&gt;    &lt;span class="n"&gt;execution&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;maestro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_execution&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="nf"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;execution&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;task_id&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Running locally so we need to login to BotCity Orchestrator.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;maestro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MAESTRO_SERVER&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; 
            &lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MAESTRO_LOGIN&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; 
            &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MAESTRO_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Running with BotCity Orchestrator.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;bot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;WebBot&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="c1"&gt;# Configure whether or not to run on headless mode
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headless&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;

    &lt;span class="c1"&gt;# Uncomment to change the default Browser to Firefox
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;browser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FIREFOX&lt;/span&gt;

    &lt;span class="c1"&gt;# Uncomment to set the WebDriver path
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;driver_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;resources\geckodriver.exe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="c1"&gt;# Opens the BotCity website.
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;browse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.botcity.dev&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Implement here your logic...
&lt;/span&gt;    &lt;span class="bp"&gt;...&lt;/span&gt;

    &lt;span class="c1"&gt;# Wait 3 seconds before closing
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;wait&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Finish and clean up the Web Browser
&lt;/span&gt;    &lt;span class="c1"&gt;# You MUST invoke the stop_browser to avoid
&lt;/span&gt;    &lt;span class="c1"&gt;# leaving instances of the webdriver open
&lt;/span&gt;    &lt;span class="n"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stop_browser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="c1"&gt;# Uncomment to mark this task as finished on BotMaestro
&lt;/span&gt;    &lt;span class="n"&gt;maestro&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;finish_task&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;task_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;execution&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;task_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;AutomationTaskFinishStatus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SUCCESS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Task Finished OK.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;not_found&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Element not found: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  O que achou?
&lt;/h2&gt;

&lt;p&gt;Espero que tenha curtido a dica e possa adaptá-la de acordo com a necessidade da sua execução. Qualquer dúvida, basta entrar em contato pela nossa &lt;a href="https://documentation.botcity.dev/pt/community/" rel="noopener noreferrer"&gt;comunidade&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>rpa</category>
      <category>automation</category>
      <category>python</category>
      <category>braziliandevs</category>
    </item>
  </channel>
</rss>
