<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Go on perri.to</title>
    <link>https://perri.to/es/tags/go/</link>
    <description>Recent content in Go on perri.to</description>
    <generator>Hugo</generator>
    <language>es-AR</language>
    <lastBuildDate>Sun, 19 Jul 2026 16:55:30 +0200</lastBuildDate>
    <atom:link href="https://perri.to/es/tags/go/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Eligiendo la próxima herramienta</title>
      <link>https://perri.to/es/2026/03/eligiendo-la-proxima-herramienta/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://perri.to/es/2026/03/eligiendo-la-proxima-herramienta/</guid>
      <description>&lt;p&gt;Profesionalmente, si tuviera que resumirlo en una sola frase, diría esto:&lt;/p&gt;&#xA;&lt;p&gt;Siempre elegí las herramientas que alguien estaba dispuesto a pagarme más para usar.&lt;/p&gt;&#xA;&lt;h3 id=&#34;todo-empezó-con-visual-basic-6&#34;&gt;Todo empezó con Visual Basic 6.&lt;/h3&gt;&#xA;&lt;p&gt;En ese momento, al menos en mi país, era el lenguaje dominante para las aplicaciones de negocios. Estudios contables, empresas medianas, sistemas de gestión internos: &lt;strong&gt;todo&lt;/strong&gt; corría sobre VB6. Me volví muy eficiente con él. No solo productivo: aprendí cómo funcionaba por debajo, sus límites, sus rarezas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generando tipos de go a partir de json</title>
      <link>https://perri.to/es/2020/11/generando-tipos-de-go-a-partir-de-json/</link>
      <pubDate>Fri, 13 Nov 2020 00:21:26 +0000</pubDate>
      <guid>https://perri.to/es/2020/11/generando-tipos-de-go-a-partir-de-json/</guid>
      <description>&lt;p&gt;Uno de los obstáculos más comunes al programar software con exposición a internet en Go es el parseo de JSON. Como lenguaje tipado, Go requiere un receptor debidamente definido para el JSON deserializado. Un workaround común es un árbol anidado infinito de &lt;code&gt;map[string]interface{}&lt;/code&gt; y un montón de type assertions recursivas.&lt;/p&gt;&#xA;&lt;p&gt;Mientras desarrollaba &lt;a href=&#34;https://github.com/ShiftLeftSecurity/atlassian-connect-go&#34;&gt;atlassian-connect-go&lt;/a&gt; me choqué con la misma pared: muchos de los tipos de Atlassian estaban definidos únicamente como JSON. Terminé arreglándolo creando &lt;a href=&#34;https://github.com/perrito666/LAC&#34;&gt;LazyApiCoder&lt;/a&gt;, que puede crear un conjunto completo de tipos de go a partir de un esquema swagger 3 o de un conjunto de ejemplos JSON.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cómo crear plugins de JIRA cloud (atlassian connect) en Go</title>
      <link>https://perri.to/es/2020/11/como-crear-plugins-de-jira-cloud-atlassian-connect-en-go/</link>
      <pubDate>Mon, 09 Nov 2020 17:27:06 +0000</pubDate>
      <guid>https://perri.to/es/2020/11/como-crear-plugins-de-jira-cloud-atlassian-connect-en-go/</guid>
      <description>&lt;h2 id=&#34;qué-es-un-plug-in-para-jira-cloud&#34;&gt;Qué es un plug-in para JIRA cloud&lt;/h2&gt;&#xA;&lt;p&gt;Atlassian acepta plugins para Cloud en forma de aplicaciones del framework Atlassian Connect,&#xA;que consisten en una serie de endpoints que sirven varios iframes que se muestran en su interfaz, junto con&#xA;algunos webhooks. Todas las capacidades de un plug-in se declaran en un archivo JSON que JIRA u&#xA;otras de sus apps usan para &amp;ldquo;instalar&amp;rdquo; el plugin.&lt;/p&gt;&#xA;&lt;p&gt;Como básicamente se trata de servir contenido, si nuestra infraestructura ya está compuesta por servicios en Go,&#xA;naturalmente vamos a querer sumar el plug-in a esa misma infraestructura existente.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Plugins de Go y entrega de contenido</title>
      <link>https://perri.to/es/2017/03/plugins-de-go-y-entrega-de-contenido/</link>
      <pubDate>Mon, 13 Mar 2017 08:28:14 -0300</pubDate>
      <guid>https://perri.to/es/2017/03/plugins-de-go-y-entrega-de-contenido/</guid>
      <description>&lt;h4 id=&#34;nueva-funcionalidad&#34;&gt;Nueva funcionalidad&lt;/h4&gt;&#xA;&lt;p&gt;La última versión de go (&lt;a href=&#34;https://golang.org/doc/go1.8&#34;&gt;1.8&lt;/a&gt;) trae una funcionalidad que&#xA;estuve esperando durante muchísimo tiempo, los &lt;a href=&#34;https://golang.org/pkg/plugin/#Plugin.Lookup&#34;&gt;plugins&lt;/a&gt;.&#xA;Ahora bien, por ahora esta funcionalidad tiene algunas limitaciones, que figuran en la documentación:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Solo funciona en Linux (lo cual a mí me viene bárbaro, dado lo que quiero hacer)&lt;/li&gt;&#xA;&lt;li&gt;Un plugin se inicializa una sola vez y no se puede cerrar.&lt;/li&gt;&#xA;&lt;li&gt;Tiene que ser un paquete main.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Y además descubrí un par de detalles molestos por mi cuenta:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testeo en go, con go check</title>
      <link>https://perri.to/es/2015/08/testeo-en-go-con-go-check/</link>
      <pubDate>Fri, 28 Aug 2015 00:00:00 +0000</pubDate>
      <guid>https://perri.to/es/2015/08/testeo-en-go-con-go-check/</guid>
      <description>&lt;h2 id=&#34;aclaración-esto-está-pensado-principalmente-para-funcionar-como-mi-propia-autodocumentación&#34;&gt;Aclaración: esto está pensado principalmente para funcionar como mi propia autodocumentación.&lt;/h2&gt;&#xA;&lt;p&gt;Testear en go es bastante simple, como podés ver en &lt;a href=&#34;http://golang.org/pkg/testing/&#34;&gt;la documentación&lt;/a&gt;&#xA;Una estructura básica, un paquete simple:&lt;/p&gt;&#xA;&lt;p&gt;Un archivo llamado &lt;strong&gt;sample.go&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sample&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;sampleFunction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sampleSlice&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sampleSlice&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sampleSlice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;called&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;p&gt;En lo que a go respecta, esto es un paquete y si hacés &lt;strong&gt;go build&lt;/strong&gt; de eso, va a compilar.&#xA;Agregar testeo a ese paquete es tan simple como agregar un archivo que termine en &lt;strong&gt;_test.go&lt;/strong&gt;&#xA;Cualquier cosa con el nombre mencionado será interpretada como un archivo de test y, por lo tanto,&#xA;solo compilada al momento de testear.&#xA;A todos los efectos prácticos, durante el testeo, tu archivo será considerado parte del&#xA;paquete cuyo nombre se declara en la sección &lt;strong&gt;package&lt;/strong&gt; del &lt;strong&gt;_test.go&lt;/strong&gt;.&#xA;Lamentablemente, hasta acá llega la ayuda que nos da go para hacer tests; si leés la documentación, vas a&#xA;encontrar que no hay un conjunto de herramientas incorporado para cosas como aserciones y suites.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
