<?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: maru44</title>
    <description>The latest articles on DEV Community by maru44 (@maru44).</description>
    <link>https://dev.to/maru44</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%2F718924%2F6d8124b2-5bae-434c-b0be-ffe367d02d68.jpg</url>
      <title>DEV Community: maru44</title>
      <link>https://dev.to/maru44</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maru44"/>
    <language>en</language>
    <item>
      <title>A Tool to Visualize Definition of Tables in RDB</title>
      <dc:creator>maru44</dc:creator>
      <pubDate>Sat, 05 Mar 2022 00:09:52 +0000</pubDate>
      <link>https://dev.to/maru44/a-tool-to-visualize-definition-of-tables-in-rdb-3el6</link>
      <guid>https://dev.to/maru44/a-tool-to-visualize-definition-of-tables-in-rdb-3el6</guid>
      <description>&lt;p&gt;Link:&lt;br&gt;
&lt;a href="https://github.com/maru44/scheman" rel="noopener noreferrer"&gt;https://github.com/maru44/scheman&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Scheman&lt;/code&gt; is a tool to visualize definition of tables in RDB.&lt;/p&gt;

&lt;p&gt;Main purpose of this is accelerating working collaboration between engineers and non-engineers.&lt;/p&gt;

&lt;p&gt;You can generate drawing of tables schema and ERD with one command and just a few settings by using this. &lt;/p&gt;

&lt;p&gt;You can choose output destination from &lt;code&gt;Notion&lt;/code&gt;, &lt;code&gt;File&lt;/code&gt; or both of them.&lt;/p&gt;
&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;I will show you usage.&lt;/p&gt;
&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;go install github.com/maru44/scheman@v1.3.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want not to install you can use by&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run github.com/maru44/scheman@v1.3.0 ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I will proceed on the premise of &lt;code&gt;scheman&lt;/code&gt; installed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup config
&lt;/h3&gt;

&lt;p&gt;Create &lt;code&gt;scheman.toml(.yaml)&lt;/code&gt; and write database settings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[psql]
  dbname  = "scheman"
  host    = "localhost"
  port    = 5432
  user    = "root"
  pass    = "password"
  sslmode = "disable"
  schema  = "public"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Command
&lt;/h3&gt;

&lt;p&gt;I will show some examples.&lt;/p&gt;

&lt;h4&gt;
  
  
  Notion
&lt;/h4&gt;

&lt;p&gt;First I will show you the command to write tables schema and ERD in &lt;code&gt;notion&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/volatiletech/sqlboiler/v4/drivers/sqlboiler-psql@v4.8.6 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; scheman psql &lt;span class="nt"&gt;--services&lt;/span&gt; notion &lt;span class="nt"&gt;--erd-outputs&lt;/span&gt; notion &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--notion-token&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;NOTION_TOKEN&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; &lt;span class="nt"&gt;--notion-page-id&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PSQL_NOTION_PAGE_ID&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flag &lt;code&gt;services&lt;/code&gt; indicates the output destinations of schema-definition.&lt;br&gt;
Flag &lt;code&gt;erd-outputs&lt;/code&gt; indicates the output destinations of ERD. &lt;/p&gt;

&lt;p&gt;The value of table-index is output like the following picture if the command succeeded.&lt;br&gt;
If you want to overwrite schema definition and ERD in &lt;code&gt;notion&lt;/code&gt; from next time, please set &lt;code&gt;notion-page-index&lt;/code&gt; the value outputted in command line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F46714011%2F156856299-67bed77d-d744-458f-9967-61d50983eade.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F46714011%2F156856299-67bed77d-d744-458f-9967-61d50983eade.png" alt="result outputted in command line"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;Free Entry&lt;/code&gt; attribute is the attribute you can write freely. This value is inherited even if you execute &lt;code&gt;scheman&lt;/code&gt; command next time.&lt;/p&gt;

&lt;p&gt;The outputs will be like these pictures.&lt;br&gt;
I'm sorry for these pictures are very rough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;schema-definition&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://user-images.githubusercontent.com/46714011/155822065-f0f9f785-b2b1-4abd-b98b-052496dff169.png" rel="noopener noreferrer"&gt;https://user-images.githubusercontent.com/46714011/155822065-f0f9f785-b2b1-4abd-b98b-052496dff169.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;ERD&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://user-images.githubusercontent.com/46714011/155862202-77e81b99-681a-44fb-bf1c-669dae7f1f5a.png" rel="noopener noreferrer"&gt;https://user-images.githubusercontent.com/46714011/155862202-77e81b99-681a-44fb-bf1c-669dae7f1f5a.png&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  File
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/volatiletech/sqlboiler/v4/drivers/sqlboiler-psql@v4.8.6 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; scheman psql &lt;span class="nt"&gt;--def-file&lt;/span&gt; ./def.csv &lt;span class="nt"&gt;--erd-file&lt;/span&gt; ./erd.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flag &lt;code&gt;def-file&lt;/code&gt; indicates the output destination file of schema-definition.&lt;br&gt;
Flag &lt;code&gt;erd-file&lt;/code&gt; indicates the output destination file of ERD.&lt;/p&gt;

&lt;p&gt;The outputs will be like these.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;schema-definition&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/maru44/scheman/blob/master/testdata/postgres/def.csv" rel="noopener noreferrer"&gt;https://github.com/maru44/scheman/blob/master/testdata/postgres/def.csv&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;ERD&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/maru44/scheman/blob/master/testdata/postgres/erd.md" rel="noopener noreferrer"&gt;https://github.com/maru44/scheman/blob/master/testdata/postgres/erd.md&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Options
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;config

&lt;ul&gt;
&lt;li&gt;the file written configurations&lt;/li&gt;
&lt;li&gt;default is &lt;code&gt;scheman&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;you can use &lt;code&gt;sqlboiler.toml&lt;/code&gt; if you set this &lt;code&gt;sqlboiler.toml&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;services

&lt;ul&gt;
&lt;li&gt;indicates the output destinations of schema-definition&lt;/li&gt;
&lt;li&gt;default is &lt;code&gt;[ ]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;option is only notion yet&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;erd-outputs

&lt;ul&gt;
&lt;li&gt;indicates the output destinations of ERD&lt;/li&gt;
&lt;li&gt;default is &lt;code&gt;[ ]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;option is only notion yet&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;disable-views

&lt;ul&gt;
&lt;li&gt;if true, &lt;code&gt;scheman&lt;/code&gt; ignore views&lt;/li&gt;
&lt;li&gt;default is false&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;attr-ignore

&lt;ul&gt;
&lt;li&gt;which attributes ignore&lt;/li&gt;
&lt;li&gt;default is &lt;code&gt;[ ]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;options are &lt;code&gt;Data Type&lt;/code&gt;, &lt;code&gt;PK&lt;/code&gt;, &lt;code&gt;Auto Generate&lt;/code&gt;, &lt;code&gt;Unique&lt;/code&gt;, &lt;code&gt;Null&lt;/code&gt;, &lt;code&gt;Default&lt;/code&gt;, &lt;code&gt;Comment&lt;/code&gt;, &lt;code&gt;Free Entry&lt;/code&gt;, &lt;code&gt;Enum&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thanks
&lt;/h2&gt;

&lt;p&gt;Using &lt;code&gt;sqlboiler&lt;/code&gt; to parse connected database.&lt;br&gt;
&lt;a href="https://github.com/volatiletech/sqlboiler" rel="noopener noreferrer"&gt;https://github.com/volatiletech/sqlboiler&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;go-notion&lt;/code&gt; as notion client.&lt;br&gt;
&lt;a href="https://github.com/dstotijn/go-notion" rel="noopener noreferrer"&gt;https://github.com/dstotijn/go-notion&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>mysql</category>
      <category>postgres</category>
      <category>notion</category>
    </item>
    <item>
      <title>Minimum Library to Handle Error for Go</title>
      <dc:creator>maru44</dc:creator>
      <pubDate>Sun, 24 Oct 2021 10:49:22 +0000</pubDate>
      <link>https://dev.to/maru44/minimum-library-to-handle-error-for-go-h80</link>
      <guid>https://dev.to/maru44/minimum-library-to-handle-error-for-go-h80</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;I made an error library named &lt;code&gt;perr&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Perr gives error persona and enrich error.&lt;br&gt;
You can handle error properly, safely and easily with perr.&lt;/p&gt;

&lt;p&gt;Link:&lt;br&gt;
&lt;a href="https://github.com/maru44/perr"&gt;https://github.com/maru44/perr&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;image ref:&lt;br&gt;
&lt;a href="https://pixabay.com/ja/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2661641"&gt;https://pixabay.com/ja/?utm_source=link-attribution&amp;amp;amp;utm_medium=referral&amp;amp;amp;utm_campaign=image&amp;amp;amp;utm_content=2661641&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Purpose
&lt;/h1&gt;

&lt;p&gt;Why I made this.&lt;/p&gt;
&lt;h3&gt;
  
  
  main purpose
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I think errors must possess their persona.

&lt;ul&gt;
&lt;li&gt;For client(which means client side and user using your service)&lt;/li&gt;
&lt;li&gt;For developer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, &lt;code&gt;dial tcp 127.0.0.1:3306: connect: connection refused&lt;/code&gt; must not be shown for client. At the same time, &lt;code&gt;Internal Server Error&lt;/code&gt; is not enough for developer.&lt;/p&gt;
&lt;h3&gt;
  
  
  sub purpose
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Map()&lt;/code&gt; and &lt;code&gt;Json()&lt;/code&gt; method make it easy to store and analyze error for you.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Is()&lt;/code&gt; and &lt;code&gt;Level()&lt;/code&gt; method make it easy to handle error.&lt;/li&gt;
&lt;li&gt;You can trace error with &lt;code&gt;Traces()&lt;/code&gt; method.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Sample
&lt;/h1&gt;
&lt;h3&gt;
  
  
  wrapping error
&lt;/h3&gt;

&lt;p&gt;You can wrap an error has existed already.&lt;br&gt;
You can wrap an error as many times as you like.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;
    &lt;span class="s"&gt;"strconv"&lt;/span&gt;

    &lt;span class="s"&gt;"github.com/maru44/perr"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;strconv&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Wrap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BadRequest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;p2&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Wrap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BadRequest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;p3&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Wrap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;InternalServerError&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"developer:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"client:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Output&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Traces&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* output */&lt;/span&gt;
&lt;span class="c"&gt;// developer: strconv.Atoi: parsing "a": invalid syntax&lt;/span&gt;
&lt;span class="c"&gt;// client: Bad Request&lt;/span&gt;

&lt;span class="c"&gt;// /tmp/sandbox2199832404/prog.go:13 ===&amp;gt; main&lt;/span&gt;
&lt;span class="c"&gt;//  /tmp/sandbox2199832404/prog.go:14 ===&amp;gt; main&lt;/span&gt;
&lt;span class="c"&gt;//      /tmp/sandbox2199832404/prog.go:15 ===&amp;gt; main&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  new error
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;

    &lt;span class="s"&gt;"github.com/maru44/perr"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;New&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Someone pour coffee"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IAmATeaPot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"developer: "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"client: "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Output&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

    &lt;span class="n"&gt;p2&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;New&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;perr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IAmATeaPot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;developer: "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"client: "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Output&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* output */&lt;/span&gt;
&lt;span class="c"&gt;// developer:  Someone pour coffee&lt;/span&gt;
&lt;span class="c"&gt;// client:  I'm a teapot&lt;/span&gt;

&lt;span class="c"&gt;// developer:  I'm a teapot&lt;/span&gt;
&lt;span class="c"&gt;// client:  I'm a teapot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>go</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
