<?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: Luks Borges</title>
    <description>The latest articles on DEV Community by Luks Borges (@luks_borges).</description>
    <link>https://dev.to/luks_borges</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%2F1221945%2F8ca73568-52fe-4dc6-ac30-3786fbb51d90.jpeg</url>
      <title>DEV Community: Luks Borges</title>
      <link>https://dev.to/luks_borges</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/luks_borges"/>
    <language>en</language>
    <item>
      <title>Modificando o $stdout com o uso de um método</title>
      <dc:creator>Luks Borges</dc:creator>
      <pubDate>Wed, 06 Dec 2023 01:00:09 +0000</pubDate>
      <link>https://dev.to/luks_borges/modificando-o-stdout-com-o-uso-de-um-metodo-2p0g</link>
      <guid>https://dev.to/luks_borges/modificando-o-stdout-com-o-uso-de-um-metodo-2p0g</guid>
      <description>&lt;p&gt;Antes de iniciarmos com o método, devemos lembrar dos 3 caminhos de redirecionamento de dados que o nosso terminal pode nos oferecer.&lt;br&gt;
&lt;strong&gt;Entre eles temos:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;stdin&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Que fornece o padrão de dados que o nosso terminal vai &lt;strong&gt;receber&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;stdout&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Que fornece o padrão de dados que o nosso terminal vai &lt;strong&gt;enviar&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;stderr&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Que fornece o padrão de redirecionamento de &lt;strong&gt;erros&lt;/strong&gt; que o nosso terminal vai nos levar&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Vale lembrar que esta lógica de redirecionamento é um padrão para todos os tipos de terminais.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;Dito isso, iremos direto ao ponto do método. Utilizado em um arquivo helper de uma spec, o método nessa situação tinha o objetivo de modificar a saída de um método de classe para que o terminal interpretasse como uma string, em outras palavras, sempre que o método fosse utilizado em um valor, o terminal extrairia esse valor e "transformaria" em uma string.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O método utilizado:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def capture_stdout
   original_stdout = $stdout
   $stdout = StringIO.new
YIELD
   $stdout.string
ENSURE
   $stdout = original_stdout
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;$stdout&lt;/code&gt; é uma variável global que vem junto com o console do ruby, o console do ruby traz outras variáveis globais sempre que ele é executado, assim como as palavras-chave &lt;code&gt;YIELD&lt;/code&gt; e &lt;code&gt;ENSURE&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Explicando passo a passo de como o método capture_stdout funciona&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Para não modificar outras funcionalidades que estão dentro do nosso projeto, salvaremos a saída original do nosso console na variável original_stdout, que será usada mais tarde pelo nosso método.&lt;/li&gt;
&lt;li&gt;Em seguida definimos que a saída (&lt;code&gt;$stdout&lt;/code&gt;) será capturada e modificada para uma string, ao utilizarmos a instância de classe &lt;code&gt;StringIO.new&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;O que á a classe StringIO&lt;/strong&gt;&lt;br&gt;
Primeiramente IO se refere a input e output, Esta classe pode ser utilizada para capturar a saída de um valor, e modificar ele para que tenha o comportamento de um arquivo, segue um exemplo de como podemos utiliza-lo:&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minha_string = StringIO.new(“Esta é a minha string”)
minha_string.puts “ E esse é meu put”
puts.io.string
=&amp;gt; “Esta é a minha string /nE esse é meu put/n”
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;Minha string poderá ser manipulada com métodos get, put .. pois agora ela tem o comportamento de um "arquivo"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Retomando aos passos do nosso método&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Bloco YIELD&lt;/code&gt;&lt;br&gt;
Por aqui definimos a saída do nosso método &lt;code&gt;capture_stdout&lt;/code&gt;, neste bloco queremos que todo &lt;code&gt;$stdout&lt;/code&gt; (Saída padrão do console) nos devolva seu valor em formato de string com a utilização do método &lt;code&gt;.string&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Bloco ENSURE&lt;/code&gt;&lt;br&gt;
Por final uma das partes mais importantes do nosso método inteiro, vamos reutilizar a variável definida no começo, para que toda vez que utilizamos o nosso método, sua saída seja exatamente a mesma antes de entrar no método &lt;code&gt;capture_stdout&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Lembrando que:&lt;/strong&gt;&lt;br&gt;
Tanto o &lt;code&gt;YIELD&lt;/code&gt; quanto o &lt;code&gt;ENSURE&lt;/code&gt;, são palavras-passe já pré definidas no ruby, que resumindo se comportam da seguinte forma:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;YIELD:&lt;/code&gt; Executa determinado bloco de código, para reproduzir algum valor esperado que será retornado pelo método.&lt;br&gt;
&lt;code&gt;ENSURE:&lt;/code&gt; Sempre executará um bloco do código quando o método for finalizado, muito utilizado para fazer um certo &lt;strong&gt;“backup”&lt;/strong&gt; do que foi modificado pelo método.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Considerações finais&lt;/strong&gt;&lt;br&gt;
Cada situação vai precisar que o método seja modificado, o método em questão só precisava modificar a saída para uma string, para que ao final de tudo um arquivo de testes comparasse essa saída com um expect que também era uma string.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>rails</category>
      <category>programming</category>
    </item>
    <item>
      <title>O que é o método .split( ) e como podemos manipular nossas strings utilizando ele</title>
      <dc:creator>Luks Borges</dc:creator>
      <pubDate>Mon, 04 Dec 2023 18:10:59 +0000</pubDate>
      <link>https://dev.to/luks_borges/o-que-e-o-metodo-split-e-como-podemos-manipular-nossas-strings-utilizando-ele-57bj</link>
      <guid>https://dev.to/luks_borges/o-que-e-o-metodo-split-e-como-podemos-manipular-nossas-strings-utilizando-ele-57bj</guid>
      <description>&lt;p&gt;Em ruby, o método split( ) é um método muito útil para manipularmos respostas com base na string que nos foi oferecida.&lt;br&gt;
O método .split( ) basicamente pode ser utilizado da seguinte forma:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;array = string.split(padrão, limite)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Segue alguns exemplos de situações em que podemos utilizar o método .split( ):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como eu posso contar a quantidade de itens dentro de uma string?&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;array = "As estrelas cintilavam no céu noturno, iluminando a tranquila paisagem silenciosa.".split&lt;br&gt;
puts array.length&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; 11&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como eu posso utilizar o método split sem parâmetros?&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;array = "Esta é a 1º string".split&lt;br&gt;
array2 = "Esta é a 2º string".split&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como eu posso recuperar valores de uma string?&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;puts "#{array[2..4]}"&lt;br&gt;
puts "#{array2[2]} #{array2[3]}"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; ["a", "1º", "string"]&lt;/code&gt;&lt;br&gt;
&lt;code&gt;=&amp;gt; a 2º&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como eu posso excluir valores de uma string?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;array = "Esta é a 1º string".split("1º ")&lt;br&gt;
puts array.join&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; Esta é a string&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O método .join( ) pode ser usado neste caso para juntar nossas substrings, se tornando assim em uma única string. Ele também pode ser utilizado para trazermos um espaço para cada substring adicionada com o comando .join(' ').&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Como eu posso somar 1º com 2º para retornar 3º?&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;x = array[3].to_i&lt;br&gt;
y = array2[3].to_i&lt;br&gt;
result = x + y&lt;br&gt;
puts "#{result}º"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; 3º&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como eu posso realizar uma conta com os valores da minha string?&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;array = "3.7 38 93 700 333".split&lt;br&gt;
a = array[0].to_f&lt;br&gt;
b = array[1].to_i&lt;br&gt;
c = array[2].to_i&lt;br&gt;
d = array[3].to_i&lt;br&gt;
e = array[4].to_i&lt;br&gt;
valor = (a + b) * (c / (e - d))&lt;br&gt;
puts valor&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; -41.7&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;Quanto mais aumentarmos a complexidade dos nossos parâmetros passados no método .split( ), mais funcionalidades conseguiremos trazer para o nosso código.&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>programming</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Alguns conceitos básicos do que é um algoritmo e a sua importância para as IA's</title>
      <dc:creator>Luks Borges</dc:creator>
      <pubDate>Thu, 30 Nov 2023 07:07:29 +0000</pubDate>
      <link>https://dev.to/luks_borges/alguns-conceitos-basicos-do-que-e-um-algoritmo-e-a-sua-importancia-para-as-ias-5fp9</link>
      <guid>https://dev.to/luks_borges/alguns-conceitos-basicos-do-que-e-um-algoritmo-e-a-sua-importancia-para-as-ias-5fp9</guid>
      <description>&lt;p&gt;&lt;u&gt;&lt;strong&gt;Introdução&lt;/strong&gt;&lt;br&gt;
&lt;/u&gt;&lt;br&gt;
Algoritmos são fundamentais para começar a entender conceitos simples de lógica de programação. A origem do termo se originou na Idade Média com o nome de um astrônomo chamado al-Khwarizmi, basicamente ao pé da letra o uso de algoritmo está presente em qualquer coisa que necessita de passos para se chegar em um determinado objetivo.&lt;/p&gt;

&lt;p&gt;Embora muito usado para se referir a tecnologia e códigos, um algoritmo é usado em outros conceitos como matemática, manual de instruções e até mesmo na culinária.&lt;br&gt;
Por exemplo, podemos pensar que na culinária temos o momento de colocar nossos ingredientes (início), momento em que estamos preparando (execução / meio) e ao final servimos o alimento (fim).&lt;/p&gt;

&lt;p&gt;Conforme implementamos mais conceitos e possibilidades para nosso programa, ele vai tender a ficar mais potente com um custo alto de ficar mais complexo. Quando recebemos um erro, por exemplo, significa que nosso computador está processando algum determinado valor que ele não foi programado para processar, ou seja, todos os cenários presentes não foram considerados.&lt;br&gt;
&lt;u&gt;&lt;br&gt;
&lt;strong&gt;Como os algoritmos e o chat gpt estão relacionados?&lt;/strong&gt;&lt;br&gt;
&lt;/u&gt;&lt;br&gt;
As inteligências artificiais no geral tem a sua base totalmente dependente dos algoritmos, uma IA basicamente processa uma quantidade enorme de dados que no final é convertido para oferecer a melhor resposta possível, comparando o que ela tem de informação no banco de dados com o que o usuário está entregando como resposta.&lt;/p&gt;

&lt;p&gt;Um termo bastante interessante é a chamada rede neural, um algoritmo que foi projetado para ser o mais semelhante possível a um cérebro humano, é utilizando um algoritmo de rede neural que a inteligência artificial consegue compreender e processar imagens como vemos nos modelos mais recentes como o bing image creator.&lt;/p&gt;

&lt;p&gt;Com a inteligência artificial evoluindo em uma velocidade enorme e em um tempo extremamente curto, as possibilidades em que a IA e a tecnologia em geral podem afetar todos os setores, tanto de maneira negativa quanto positiva, são enormes.&lt;br&gt;
Podemos observar o tamanho do progresso quando comparamos os primeiros carros autônomos com os que temos hoje em dia.&lt;/p&gt;

&lt;p&gt;Com as empresas investindo cada vez mais, o futuro das IA’s é incerto no momento presente, suas possibilidades são praticamente ilimitadas e a forma como ela pode afetar nossa sociedade pode ser um assunto sensível, sua evolução pode estar tão rápida que questões éticas, morais e sociais estão sendo esquecidas de serem debatidas antes mesmo de ser entregue o produto final para o usuário.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>algorithms</category>
      <category>chatgpt</category>
    </item>
  </channel>
</rss>
