<?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>Forem: Ochi Daiki</title>
    <description>The latest articles on Forem by Ochi Daiki (@ddddddo).</description>
    <link>https://forem.com/ddddddo</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%2F732469%2Fadd243a0-bacf-49ce-bfe0-c2e9512f7bd3.png</url>
      <title>Forem: Ochi Daiki</title>
      <link>https://forem.com/ddddddo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ddddddo"/>
    <language>en</language>
    <item>
      <title>TUI tool for generating packets of arbitrary input and monitoring packets!</title>
      <dc:creator>Ochi Daiki</dc:creator>
      <pubDate>Fri, 09 May 2025 00:31:58 +0000</pubDate>
      <link>https://forem.com/ddddddo/tui-tool-for-generating-packets-of-arbitrary-input-and-monitoring-packets-fj8</link>
      <guid>https://forem.com/ddddddo/tui-tool-for-generating-packets-of-arbitrary-input-and-monitoring-packets-fj8</guid>
      <description>&lt;p&gt;Hi! Today, I have a tool that I really want to introduce to you all.&lt;/p&gt;

&lt;p&gt;It is a TUI tool that I am currently developing, and it has two functions.&lt;br&gt;
The repository for the tool is &lt;a href="https://github.com/ddddddO/packemon" rel="noopener noreferrer"&gt;https://github.com/ddddddO/packemon&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first is the ability to generate and send packets!
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Send generated packets to any network interfaces.

&lt;ul&gt;
&lt;li&gt;You can specify the network interface with &lt;code&gt;--interface&lt;/code&gt; flag. Default is &lt;code&gt;eth0&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Packets of various protocols are supported.

&lt;ul&gt;
&lt;li&gt;You can configure and generate arbitrary packets at each layer of the TCP/IP model.&lt;/li&gt;
&lt;li&gt;Details are in the README of the repository.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Second, you can monitor packets sent and received!
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Monitor any network interfaces.

&lt;ul&gt;
&lt;li&gt;You can specify network interface with &lt;code&gt;--interface&lt;/code&gt; flag.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Can filter packets to be displayed.

&lt;ul&gt;
&lt;li&gt;You can filter the values for each item (e.g. &lt;code&gt;Dst&lt;/code&gt;, &lt;code&gt;Proto&lt;/code&gt;, &lt;code&gt;SrcIP&lt;/code&gt;.... . etc.) displayed in the listed packets.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Specified packets can be saved to pcapng file.&lt;/li&gt;

&lt;li&gt;Packets of various protocols are supported.&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Finally
&lt;/h2&gt;

&lt;p&gt;This tool is a full scratch implementation of the protocol stack. When I tried to establish a connection with my own implementation of TCP 3-way-handshake with this tool, the kernel was sending TCP RST packets. So I have included a process to drop the RST packets sent using eBPF. Also, this is only supported on Linux.&lt;/p&gt;

&lt;p&gt;Please see the README for more information! The README also includes instructions on how to use and install it.&lt;/p&gt;

&lt;p&gt;If you use it I will be happy!&lt;/p&gt;

</description>
      <category>network</category>
      <category>go</category>
      <category>security</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Want to output a tree in Go?</title>
      <dc:creator>Ochi Daiki</dc:creator>
      <pubDate>Sat, 21 Oct 2023 08:15:43 +0000</pubDate>
      <link>https://forem.com/ddddddo/want-to-output-a-tree-in-go-5h9l</link>
      <guid>https://forem.com/ddddddo/want-to-output-a-tree-in-go-5h9l</guid>
      <description>&lt;p&gt;I am sure that you have often used the tree command to output a tree of directories.&lt;br&gt;
&lt;strong&gt;But have you ever wanted to output a tree of something other than your local directory?&lt;/strong&gt;&lt;br&gt;
There is a Go package that you should know about, and that is &lt;a href="https://github.com/ddddddO/gtree"&gt;https://github.com/ddddddO/gtree&lt;/a&gt;. This is the perfect library to easily output a tree.&lt;/p&gt;

&lt;p&gt;Here is a simple Go program that outputs a tree from the find command.&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;"bufio"&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;
    &lt;span class="s"&gt;"os"&lt;/span&gt;
    &lt;span class="s"&gt;"strings"&lt;/span&gt;

    &lt;span class="s"&gt;"github.com/ddddddO/gtree"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;// Example:&lt;/span&gt;
&lt;span class="c"&gt;// $ cd github.com/ddddddO/gtree&lt;/span&gt;
&lt;span class="c"&gt;// $ find . -type d -name .git -prune -o -type f -print&lt;/span&gt;
&lt;span class="c"&gt;// ./config.go&lt;/span&gt;
&lt;span class="c"&gt;// ./node_generator_test.go&lt;/span&gt;
&lt;span class="c"&gt;// ./example/like_cli/adapter/indentation.go&lt;/span&gt;
&lt;span class="c"&gt;// ./example/like_cli/adapter/executor.go&lt;/span&gt;
&lt;span class="c"&gt;// ./example/like_cli/main.go&lt;/span&gt;
&lt;span class="c"&gt;// ./example/find_pipe_programmable-gtree/main.go&lt;/span&gt;
&lt;span class="c"&gt;// ...&lt;/span&gt;
&lt;span class="c"&gt;// $ find . -type d -name .git -prune -o -type f -print | go run example/find_pipe_programmable-gtree/main.go&lt;/span&gt;
&lt;span class="c"&gt;// &amp;lt;&amp;lt; See "Output:" below. &amp;gt;&amp;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="k"&gt;var&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;gtree&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Node&lt;/span&gt;
        &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;gtree&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Node&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;scanner&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;bufio&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewScanner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Stdin&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;scanner&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Scan&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;scanner&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;              &lt;span class="c"&gt;// e.g.) "./example/find_pipe_programmable-gtree/main.go"&lt;/span&gt;
        &lt;span class="n"&gt;splited&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;strings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&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="c"&gt;// e.g.) [. example find_pipe_programmable-gtree main.go]&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="k"&gt;range&lt;/span&gt; &lt;span class="n"&gt;splited&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;root&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gtree&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewRoot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;// s := "."&lt;/span&gt;
                &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;
                &lt;span class="k"&gt;continue&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;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;continue&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;

            &lt;span class="n"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tmp&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;root&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;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;gtree&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OutputProgrammably&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Stdout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;root&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="no"&gt;nil&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;Fprintln&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Stderr&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;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&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;// .&lt;/span&gt;
    &lt;span class="c"&gt;// ├── config.go&lt;/span&gt;
    &lt;span class="c"&gt;// ├── node_generator_test.go&lt;/span&gt;
    &lt;span class="c"&gt;// ├── example&lt;/span&gt;
    &lt;span class="c"&gt;// │   ├── like_cli&lt;/span&gt;
    &lt;span class="c"&gt;// │   │   ├── adapter&lt;/span&gt;
    &lt;span class="c"&gt;// │   │   │   ├── indentation.go&lt;/span&gt;
    &lt;span class="c"&gt;// │   │   │   └── executor.go&lt;/span&gt;
    &lt;span class="c"&gt;// │   │   └── main.go&lt;/span&gt;
    &lt;span class="c"&gt;// │   ├── find_pipe_programmable-gtree&lt;/span&gt;
    &lt;span class="c"&gt;// │   │   └── main.go&lt;/span&gt;
    &lt;span class="c"&gt;// │   ├── go-list_pipe_programmable-gtree&lt;/span&gt;
    &lt;span class="c"&gt;// │   │   └── main.go&lt;/span&gt;
    &lt;span class="c"&gt;// │   └── programmable&lt;/span&gt;
    &lt;span class="c"&gt;// │       └── main.go&lt;/span&gt;
    &lt;span class="c"&gt;// ├── file_considerer.go&lt;/span&gt;
    &lt;span class="c"&gt;// ├── node.go&lt;/span&gt;
    &lt;span class="c"&gt;// ├── node_generator.go&lt;/span&gt;
    &lt;span class="c"&gt;// ├── .gitignore&lt;/span&gt;
    &lt;span class="c"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I was able to output a tree with the above program.&lt;br&gt;
The program I introduced here was just a utility to display a tree of directories on the local PC after all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;However, do not be discouraged.&lt;/strong&gt;&lt;br&gt;
Developers who are not me have created CLI tools to output a tree of Amazon S3 and GCS buckets! You can find them in the following repositories.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐&lt;strong&gt;&lt;a href="https://github.com/orangekame3/stree"&gt;https://github.com/orangekame3/stree&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;⭐&lt;strong&gt;&lt;a href="https://github.com/owlinux1000/gcstree"&gt;https://github.com/owlinux1000/gcstree&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I had no idea of displaying a tree of cloud storage. Also, the &lt;strong&gt;&lt;em&gt;aws s3&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;gcloud storage&lt;/em&gt;&lt;/strong&gt; commands do not have the functionality to display a tree.&lt;br&gt;
I am sure you will be happy to use these CLI tools.&lt;/p&gt;

&lt;p&gt;I got very good inspiration from these CLI tool developers. I am also very happy that they are using the gtree package!&lt;/p&gt;

&lt;p&gt;If you want to tree output something, you may find &lt;a href="https://github.com/ddddddO/gtree"&gt;https://github.com/ddddddO/gtree&lt;/a&gt; useful.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>go</category>
      <category>programming</category>
      <category>cli</category>
      <category>cloudstorage</category>
    </item>
    <item>
      <title>Tree Maker __ Convert Markdown to tree!</title>
      <dc:creator>Ochi Daiki</dc:creator>
      <pubDate>Fri, 18 Nov 2022 15:24:50 +0000</pubDate>
      <link>https://forem.com/ddddddo/tree-maker-convert-markdown-to-tree-3djo</link>
      <guid>https://forem.com/ddddddo/tree-maker-convert-markdown-to-tree-3djo</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mn8uA3o9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1xasu3ozc75xuetv3zty.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mn8uA3o9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1xasu3ozc75xuetv3zty.gif" alt="Image description" width="880" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The link to this website is &lt;a href="https://ddddddo.github.io/gtree/"&gt;https://ddddddo.github.io/gtree/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Usage is as follows.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The symbols that can be used in Markdown are *, -, +, and #.&lt;/li&gt;
&lt;li&gt;Use every two spaces to represent a hierarchy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This website features.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The function to generate tree is written in Go and compiled to WebAssembly.&lt;/li&gt;
&lt;li&gt;It uses ServiceWorker, so you can load it once and then enjoy it offline!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I provide not only website, but also CLI tool and Go package. These also have the ability to generate directories from markdown!&lt;br&gt;
The repository is &lt;a href="https://github.com/ddddddO/gtree"&gt;https://github.com/ddddddO/gtree&lt;/a&gt;&lt;br&gt;
I'd love it if you'd star it!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>webassembly</category>
      <category>go</category>
      <category>githunt</category>
    </item>
    <item>
      <title>Tree Maker</title>
      <dc:creator>Ochi Daiki</dc:creator>
      <pubDate>Sat, 24 Sep 2022 16:52:14 +0000</pubDate>
      <link>https://forem.com/ddddddo/tree-maker-3ooe</link>
      <guid>https://forem.com/ddddddo/tree-maker-3ooe</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lorwqHEI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d9qfffp70uvemhgrdeq3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lorwqHEI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d9qfffp70uvemhgrdeq3.gif" alt="Image description" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ddddddo.github.io/gtree/"&gt;https://ddddddo.github.io/gtree/&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This page calls a function that outputs tree. This function is a Go package compiled as WebAssembly.&lt;/li&gt;
&lt;li&gt;You can change the branches like in the image below.&lt;/li&gt;
&lt;li&gt;Also, once loaded, you can enjoy offline!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webassembly</category>
      <category>tooling</category>
      <category>webdev</category>
      <category>go</category>
    </item>
    <item>
      <title>Output tree🌳 or Make directories(files)📁 from Markdown or Programmatically</title>
      <dc:creator>Ochi Daiki</dc:creator>
      <pubDate>Sat, 22 Jan 2022 13:33:13 +0000</pubDate>
      <link>https://forem.com/ddddddo/output-tree-or-make-directoriesfiles-from-markdown-or-programmatically-4ldh</link>
      <guid>https://forem.com/ddddddo/output-tree-or-make-directoriesfiles-from-markdown-or-programmatically-4ldh</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/ddddddO/gtree#gtree"&gt;repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>tooling</category>
    </item>
    <item>
      <title>You can generate tree without directory, and output is JSON or YAML or TOML or tree command like.</title>
      <dc:creator>Ochi Daiki</dc:creator>
      <pubDate>Sat, 20 Nov 2021 19:36:18 +0000</pubDate>
      <link>https://forem.com/ddddddo/you-can-generate-tree-without-directory-and-output-is-json-or-yaml-or-toml-or-tree-command-like-ll1</link>
      <guid>https://forem.com/ddddddo/you-can-generate-tree-without-directory-and-output-is-json-or-yaml-or-toml-or-tree-command-like-ll1</guid>
      <description>&lt;p&gt;&lt;a href="https://www.reddit.com/r/golang/comments/qxxju1/you_can_generate_tree_without_directory_and/?utm_source=share&amp;amp;utm_medium=mweb"&gt;https://www.reddit.com/r/golang/comments/qxxju1/you_can_generate_tree_without_directory_and/?utm_source=share&amp;amp;utm_medium=mweb&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>programming</category>
      <category>oop</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Can generate a Tree by Golang!</title>
      <dc:creator>Ochi Daiki</dc:creator>
      <pubDate>Thu, 21 Oct 2021 15:00:24 +0000</pubDate>
      <link>https://forem.com/ddddddo/can-generate-a-tree-by-golang-4okc</link>
      <guid>https://forem.com/ddddddo/can-generate-a-tree-by-golang-4okc</guid>
      <description>&lt;p&gt;please go to &lt;a href="https://github.com/ddddddO/gtree"&gt;https://github.com/ddddddO/gtree&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are three ways to generate tree (CLI, Package(1), Package(2)). They are explained below.&lt;/p&gt;

&lt;h1&gt;
  
  
  CLI and Package(1).
&lt;/h1&gt;

&lt;p&gt;Given a Markdown file or format, the result of linux tree command is printed.&lt;/p&gt;

&lt;p&gt;Hierarchy is represented by hyphen and indentation.&lt;/p&gt;

&lt;p&gt;Indentation should be unified by one of the following.&lt;br&gt;
・Tab (default)&lt;br&gt;
・Two spaces (required: &lt;code&gt;-ts&lt;/code&gt;)&lt;br&gt;
・Four spaces (required: &lt;code&gt;-fs&lt;/code&gt;)&lt;/p&gt;

&lt;h1&gt;
  
  
  Package(1)
&lt;/h1&gt;

&lt;p&gt;You can customize branch format.&lt;/p&gt;

&lt;h1&gt;
  
  
  Package(2)
&lt;/h1&gt;

&lt;p&gt;You can also generate a tree programmatically.&lt;br&gt;
Markdown is irrelevant.&lt;br&gt;
You can customize branch format.&lt;/p&gt;

</description>
      <category>go</category>
      <category>linux</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
