<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Golang on tanaike - Google Apps Script, Gemini API, and Developer Tips</title>
    <link>https://tanaikech.github.io/tags/golang/</link>
    <description>Recent content in Golang on tanaike - Google Apps Script, Gemini API, and Developer Tips</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <copyright>&amp;copy; 2026. All rights reserved.</copyright>
    <lastBuildDate>Thu, 28 May 2026 16:00:07 +0900</lastBuildDate>
    <atom:link href="https://tanaikech.github.io/tags/golang/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Updated ggsrun to v500</title>
      <link>https://tanaikech.github.io/2026/05/28/updated-ggsrun-to-v500/</link>
      <pubDate>Thu, 28 May 2026 16:00:07 +0900</pubDate>
      <guid>https://tanaikech.github.io/2026/05/28/updated-ggsrun-to-v500/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;v5.0.0 (May 2026) - The Omnibus Architecture Rewrite&lt;/strong&gt;&#xA;Engine fundamentally rewritten for Go 1.26.3+. Implemented channel-based concurrency (&lt;code&gt;errgroup&lt;/code&gt;), freeze-proof TUI (&lt;code&gt;mpb/v8&lt;/code&gt;), SIMD JSON parsing (&lt;code&gt;goccy/go-json&lt;/code&gt;), native MCP server (&lt;code&gt;ggsrun mcp&lt;/code&gt;), Shared Drives full-support, auto MIME-mapping, isolated fault tolerance, and OAuth2 loopback automation.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v322</title>
      <link>https://tanaikech.github.io/2026/05/27/updated-goodls-to-v322/</link>
      <pubDate>Wed, 27 May 2026 16:23:05 +0900</pubDate>
      <guid>https://tanaikech.github.io/2026/05/27/updated-goodls-to-v322/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;v3.2.2 (May 27, 2026)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Critical Progress Bar Lifecycle Fix&lt;/strong&gt;: Fixed a bug where indeterminate file sizes (such as Google Docs exports returning &lt;code&gt;0&lt;/code&gt; size from the Drive API) caused the progress bar spinners to hang infinitely. Bar completion is now strictly enforced (&lt;code&gt;SetTotal(-1, true)&lt;/code&gt;) upon IO completion.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Resource Leak Patches&lt;/strong&gt;: Hardened HTTP body and local file descriptor management using strictly placed &lt;code&gt;defer&lt;/code&gt; statements, preventing memory leaks during connection errors.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;v3.2.1 (May 27, 2026)&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v205</title>
      <link>https://tanaikech.github.io/2024/03/10/updated-goodls-to-v205/</link>
      <pubDate>Sun, 10 Mar 2024 17:13:38 +0900</pubDate>
      <guid>https://tanaikech.github.io/2024/03/10/updated-goodls-to-v205/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v2.0.5 (March 10, 2023)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;From this version, when the API key is used, the large file is downloaded by the API key. Because the specification for downloading the shared large file is sometimes changed. When the API key is not used, the shared large file is downloaded by the current specification (v2.0.4). If the shared large file cannot be downloaded by the change of the specification on Google&amp;rsquo;s side, please use the API key and test it again. The usage of goodls has not changed.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v204</title>
      <link>https://tanaikech.github.io/2024/03/09/updated-goodls-to-v204/</link>
      <pubDate>Sat, 09 Mar 2024 17:08:21 +0900</pubDate>
      <guid>https://tanaikech.github.io/2024/03/09/updated-goodls-to-v204/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v2.0.4 (March 9, 2023)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;From January 2024, it seems that the specification of the process for downloading a large shared file on Google Drive has been changed. So I updated goodls to reflect this. The usage of goodls has not changed. In the current stage, when a large share file is downloaded, it is required to click the following button.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;form&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;download-form&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;action&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://drive.usercontent.google.com/download&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;method&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;get&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;submit&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;uc-download-link&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;goog-inline-block jfk-button jfk-button-action&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;このままダウンロード&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  /&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hidden&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fileId&amp;#34;&lt;/span&gt; /&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hidden&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;export&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;download&amp;#34;&lt;/span&gt; /&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hidden&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;authuser&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; /&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hidden&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;confirm&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;t&amp;#34;&lt;/span&gt; /&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hidden&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;uuId&amp;#34;&lt;/span&gt; /&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;input&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hidden&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;at&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;some value&amp;#34;&lt;/span&gt; /&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;form&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this version, the URL obtained by this click is created, and the created URL is used for downloading it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Executing Google Apps Script with Service Account</title>
      <link>https://tanaikech.github.io/2023/10/19/executing-google-apps-script-with-service-account/</link>
      <pubDate>Thu, 19 Oct 2023 14:59:31 +0900</pubDate>
      <guid>https://tanaikech.github.io/2023/10/19/executing-google-apps-script-with-service-account/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/304fea821ca36b8e9ccebe9814eaed82&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://tanaikech.github.io/image-storage/20231019a/fig2.png&#34;&#xA;     alt=&#34;Executing Google Apps Script with Service Account&#34;&#xA;     &#xA;     loading=&#34;lazy&#34;&#xA;     decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;One day, you might have a situation where it is required to run Google Apps Script using the service account. Unfortunately, in the current stage, Google Apps Script cannot be directly run with the service account because of the current specification. So, this report introduces a workaround for executing Google Apps Script using the service account.&lt;/p&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;When you want to execute Google Apps Script from outside of Google, as the basic approach, it can be achieved by Google Apps Script API. &lt;a href=&#34;https://developers.google.com/apps-script/api/reference/rest/v1/scripts/run&#34;&gt;Ref&lt;/a&gt; In order to use Google Apps Script, it is required to link the Google Apps Script project with the Google Cloud Platform project. &lt;a href=&#34;https://github.com/tanaikech/Linking-Google-Cloud-Platform-Project-to-Google-Apps-Script-Project-for-New-IDE&#34;&gt;Ref&lt;/a&gt; But, in the current stage, Google Apps Script can be executed by Google Apps Script API with only the access token obtained from OAuth2. Unfortunately, the access token obtained by the service account cannot used for executing Google Apps Script using Google Apps Script API. It seems that this is the current specification on the Google side. However, there might be a case that it is required to execute Google Apps Script using the service account. In this report, I would like to introduce a workaround for executing Google Apps Script using the service account. In this workaround, the Web Apps created by Google Apps Script is used. The Web Apps can be used for executing the preserved functions of &lt;code&gt;doGet&lt;/code&gt; and &lt;code&gt;doPost&lt;/code&gt; from outside of Google. &lt;a href=&#34;https://developers.google.com/apps-script/guides/web&#34;&gt;Ref&lt;/a&gt; In this workaround, this Web Apps is used for executing the various functions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Go Library - go-gettokenbyserviceaccount</title>
      <link>https://tanaikech.github.io/2023/10/12/updated-go-library-go-gettokenbyserviceaccount/</link>
      <pubDate>Thu, 12 Oct 2023 14:59:17 +0900</pubDate>
      <guid>https://tanaikech.github.io/2023/10/12/updated-go-library-go-gettokenbyserviceaccount/</guid>
      <description>&lt;h2 id=&#34;go-gettokenbyserviceaccount-was-updated-to-v101&#34;&gt;go-gettokenbyserviceaccount was updated to v1.0.1&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.1 (October 12, 2023)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Updated README.md and updated the script.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can get this from &lt;a href=&#34;https://github.com/tanaikech/go-gettokenbyserviceaccount&#34;&gt;https://github.com/tanaikech/go-gettokenbyserviceaccount&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v203</title>
      <link>https://tanaikech.github.io/2023/04/05/updated-goodls-to-v203/</link>
      <pubDate>Wed, 05 Apr 2023 10:50:36 +0900</pubDate>
      <guid>https://tanaikech.github.io/2023/04/05/updated-goodls-to-v203/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v2.0.3 (April 5, 2023)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Forgot to update the version number and modified it. And, built the sources with the latest version. &lt;a href=&#34;https://github.com/tanaikech/goodls/releases/tag/v2.0.3&#34;&gt;Ref&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: CLI Tool - goris to v301</title>
      <link>https://tanaikech.github.io/2022/05/02/updated-cli-tool-goris-to-v301/</link>
      <pubDate>Mon, 02 May 2022 17:26:59 +0900</pubDate>
      <guid>https://tanaikech.github.io/2022/05/02/updated-cli-tool-goris-to-v301/</guid>
      <description>&lt;p&gt;goris is a CLI tool to search for images with Google Reverse Image Search.&lt;/p&gt;&#xA;&lt;p&gt;Today, it was updated to v3.0.1. Please check it out. &lt;a href=&#34;https://github.com/tanaikech/goris&#34;&gt;https://github.com/tanaikech/goris&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v3.0.1 (May 2, 2022)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;About the option &lt;code&gt;-w&lt;/code&gt;, a bug was resolved. By this, the URLs of the related Web site are returned. As the default, 10 URLs are returned. If you want to retrieve more, please use the option &lt;code&gt;-n&lt;/code&gt; like &lt;code&gt;-n 20&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Updated: Go Library - getcode to v101</title>
      <link>https://tanaikech.github.io/2022/02/26/updated-go-library-getcode-to-v101/</link>
      <pubDate>Sat, 26 Feb 2022 15:40:36 +0900</pubDate>
      <guid>https://tanaikech.github.io/2022/02/26/updated-go-library-getcode-to-v101/</guid>
      <description>&lt;h2 id=&#34;getcode-was-updated-to-v101&#34;&gt;getcode was updated to v1.0.1&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.1 (February 26, 2022)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Latest libraries are reflected to this library. And, the sample script is shown using the Quickstart for go of Drive API.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can get this from &lt;a href=&#34;https://github.com/tanaikech/getcode&#34;&gt;https://github.com/tanaikech/getcode&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v201</title>
      <link>https://tanaikech.github.io/2022/02/26/updated-goodls-to-v201/</link>
      <pubDate>Sat, 26 Feb 2022 11:39:08 +0900</pubDate>
      <guid>https://tanaikech.github.io/2022/02/26/updated-goodls-to-v201/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v2.0.1 (February 26, 2022)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;A bug for the resumable download was removed.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v200</title>
      <link>https://tanaikech.github.io/2022/02/25/updated-ggsrun-to-v200/</link>
      <pubDate>Fri, 25 Feb 2022 15:43:50 +0900</pubDate>
      <guid>https://tanaikech.github.io/2022/02/25/updated-ggsrun-to-v200/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v2.0.0 (February 25, 2022)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Modified using the latest libraries. The specification of ggsrun is not changed.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v200</title>
      <link>https://tanaikech.github.io/2022/02/25/updated-goodls-to-v200/</link>
      <pubDate>Fri, 25 Feb 2022 15:04:01 +0900</pubDate>
      <guid>https://tanaikech.github.io/2022/02/25/updated-goodls-to-v200/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v2.0.0 (February 25, 2022)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;By changing the specification of methods, &lt;code&gt;drive.New()&lt;/code&gt; and &lt;code&gt;transport.APIKey&lt;/code&gt; were deprecated. By this, I updated &lt;a href=&#34;https://github.com/tanaikech/go-getfilelist&#34;&gt;go-getfilelist&lt;/a&gt;. In this version, I used this updated library to goodls. And also, &lt;code&gt;drive.NewService()&lt;/code&gt; is used instead of &lt;code&gt;drive.New()&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Go Library - go-getfilelist to v200</title>
      <link>https://tanaikech.github.io/2022/02/25/updated-go-library-go-getfilelist-to-v200/</link>
      <pubDate>Fri, 25 Feb 2022 14:30:12 +0900</pubDate>
      <guid>https://tanaikech.github.io/2022/02/25/updated-go-library-go-getfilelist-to-v200/</guid>
      <description>&lt;h2 id=&#34;go-getfilelist-was-updated-to-v200&#34;&gt;go-getfilelist was updated to v2.0.0&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v2.0.0 (February 25, 2022)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;By changing the specification of methods, &lt;code&gt;drive.New()&lt;/code&gt; and &lt;code&gt;transport.APIKey&lt;/code&gt; were deprecated. By this, I updated the specification of this library as the version 2. When you are required to continue to use &lt;code&gt;drive.New()&lt;/code&gt; and &lt;code&gt;transport.APIKey&lt;/code&gt;, you can use them with the version 1. At version 1, &lt;code&gt;*http.Client&lt;/code&gt; is given to this library. From version 2, &lt;code&gt;*drive.Service&lt;/code&gt; is given instead of &lt;code&gt;*http.Client&lt;/code&gt;. Please be careful this. You can see the sample script at the above.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can get this from &lt;a href=&#34;https://github.com/tanaikech/go-getfilelist&#34;&gt;https://github.com/tanaikech/go-getfilelist&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: CLI Tool - goris to v300</title>
      <link>https://tanaikech.github.io/2022/02/23/updated-cli-tool-goris-to-v300/</link>
      <pubDate>Wed, 23 Feb 2022 14:31:28 +0900</pubDate>
      <guid>https://tanaikech.github.io/2022/02/23/updated-cli-tool-goris-to-v300/</guid>
      <description>&lt;p&gt;goris is a CLI tool to search for images with Google Reverse Image Search.&lt;/p&gt;&#xA;&lt;p&gt;Today, it was updated to v3.0.0. Please check it out. &lt;a href=&#34;https://github.com/tanaikech/goris&#34;&gt;https://github.com/tanaikech/goris&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v3.0.0 (February 23, 2022)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The specification for running the reverse image search was changed at Google side. By this, this application was also changed.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v128</title>
      <link>https://tanaikech.github.io/2022/02/17/updated-goodls-to-v128/</link>
      <pubDate>Thu, 17 Feb 2022 15:38:31 +0900</pubDate>
      <guid>https://tanaikech.github.io/2022/02/17/updated-goodls-to-v128/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.2.8 (February 17, 2022)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Recently, it seems that the specification the process for downloading the shared file on Google Drive has been changed. So I updated goodls for reflecting this. The usage of goodls is not changed.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple Method for using ggsrun</title>
      <link>https://tanaikech.github.io/2021/12/28/simple-method-for-using-ggsrun/</link>
      <pubDate>Tue, 28 Dec 2021 11:12:23 +0900</pubDate>
      <guid>https://tanaikech.github.io/2021/12/28/simple-method-for-using-ggsrun/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/695f7016b04e4c4156ad928e9482ead9&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a simple method for using &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;ggsrun&lt;/a&gt;. ggsrun is a CLI tool to execute Google Apps Script (GAS) on a terminal. Also this CLI tool can be used for managing files in Google Drive for OAuth2 and Service Account.&lt;/p&gt;&#xA;&lt;p&gt;When you use ggsrun, it is required to retrieve the client ID and client secret and/or the service account at Cloud Platform Project. But, there is the case that you want to simply test or you want to just upload and download the files for Google Drive. In this post, I would like to introduce how to simply use ggsrun.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: CLI Tool - gislack</title>
      <link>https://tanaikech.github.io/2021/02/27/updated-cli-tool-gislack/</link>
      <pubDate>Sat, 27 Feb 2021 13:53:17 +0900</pubDate>
      <guid>https://tanaikech.github.io/2021/02/27/updated-cli-tool-gislack/</guid>
      <description>&lt;p&gt;gislack is a CLI tool to submit files to both Gist and Slack.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.4 (February 27, 2021)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;I noticed that this application uses the duplicated methods of Slack API. &lt;a href=&#34;https://api.slack.com/methods&#34;&gt;Ref&lt;/a&gt; By this, the duplicated methods were updated to the new methods as follows.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;From &amp;ldquo;channels.list&amp;rdquo; to &amp;ldquo;conversations.list&amp;rdquo;.&lt;/li&gt;&#xA;&lt;li&gt;From &amp;ldquo;channels.history&amp;rdquo; to &amp;ldquo;conversations.history&amp;rdquo;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Please check it out. &lt;a href=&#34;https://github.com/tanaikech/gislack&#34;&gt;https://github.com/tanaikech/gislack&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sample Scripts for Creating New Event with Google Meet Link to Google Calendar using Various Languages</title>
      <link>https://tanaikech.github.io/2020/12/03/sample-scripts-for-creating-new-event-with-google-meet-link-to-google-calendar-using-various-languages/</link>
      <pubDate>Thu, 03 Dec 2020 16:04:18 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/12/03/sample-scripts-for-creating-new-event-with-google-meet-link-to-google-calendar-using-various-languages/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/94791d48823e9659aa376cf7f0161d9b&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is the sample scripts for creating new event with Google Meet link to Google Calendar using various languages. When I saw &lt;a href=&#34;https://developers.google.com/calendar/create-events#conferencing&#34;&gt;the official document&lt;/a&gt; of &amp;ldquo;Add video and phone conferences to events&amp;rdquo;, in the current stage, I can see only the sample script for Javascript. But I saw the several questions related to this for various languages. So I published the sample scripts for creating new event with Google Meet link to Google Calendar using various languages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: GetFileList for golang, Javascript, Node.js and Python</title>
      <link>https://tanaikech.github.io/2020/06/01/updated-getfilelist-for-golang-javascript-node.js-and-python/</link>
      <pubDate>Mon, 01 Jun 2020 14:12:33 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/06/01/updated-getfilelist-for-golang-javascript-node.js-and-python/</guid>
      <description>&lt;p&gt;Updated: GetFileList for golang, Javascript, Node.js and Python&lt;/p&gt;&#xA;&lt;p&gt;This is the libraries to retrieve the file list with the folder tree from the specific folder of own Google Drive and shared Drives.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Golang: &lt;a href=&#34;https://github.com/tanaikech/go-getfilelist&#34;&gt;https://github.com/tanaikech/go-getfilelist&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Updated to v1.0.4.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Javascript: &lt;a href=&#34;https://github.com/tanaikech/GetFileList_js&#34;&gt;https://github.com/tanaikech/GetFileList_js&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Updated to v1.0.3.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Node.js: &lt;a href=&#34;https://github.com/tanaikech/node-getfilelist&#34;&gt;https://github.com/tanaikech/node-getfilelist&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Updated to v1.0.5.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Python: &lt;a href=&#34;https://github.com/tanaikech/getfilelistpy&#34;&gt;https://github.com/tanaikech/getfilelistpy&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Updated to v1.0.6.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Updated: Go Library - go-getfilelist to v103</title>
      <link>https://tanaikech.github.io/2020/05/14/updated-go-library-go-getfilelist-to-v103/</link>
      <pubDate>Thu, 14 May 2020 16:02:49 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/05/14/updated-go-library-go-getfilelist-to-v103/</guid>
      <description>&lt;h2 id=&#34;go-getfilelist-was-updated-to-v103&#34;&gt;go-getfilelist was updated to v1.0.3&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.3 (May 14, 2020)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Shared drive got to be able to be used. The file list can be retrieved from both your Google Drive and the shared drive.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;For example, when the folder ID in the shared Drive is used &lt;code&gt;folderID&lt;/code&gt; of &lt;code&gt;Folder(folderID)&lt;/code&gt;, you can retrieve the file list from the folder in the shared Drive.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can get this from &lt;a href=&#34;https://github.com/tanaikech/go-getfilelist&#34;&gt;https://github.com/tanaikech/go-getfilelist&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: CLI Tool - goris</title>
      <link>https://tanaikech.github.io/2020/04/23/updated-cli-tool-goris/</link>
      <pubDate>Thu, 23 Apr 2020 15:30:39 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/04/23/updated-cli-tool-goris/</guid>
      <description>&lt;p&gt;goris is a CLI tool to search for images with Google Reverse Image Search.&lt;/p&gt;&#xA;&lt;p&gt;Today, it was updated to v2.0.0. Please check it out. &lt;a href=&#34;https://github.com/tanaikech/goris&#34;&gt;https://github.com/tanaikech/goris&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v2.0.0 (April 23, 2020)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The specification for running the reverse image search was changed at Google side. By this, this application was also changed.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v174</title>
      <link>https://tanaikech.github.io/2020/03/11/updated-ggsrun-to-v174/</link>
      <pubDate>Wed, 11 Mar 2020 15:48:05 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/03/11/updated-ggsrun-to-v174/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/UpdateHistory.md#174&#34;&gt;v1.7.4 (March 11, 2020)&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Recently, I noticed that new Google Apps Script project of the standalone script type cannot be created by the create method of Drive API. From now, in order to create the standalone Google Apps Script project, only Google Apps Script API is required to be used. &lt;a href=&#34;https://gist.github.com/tanaikech/0609f2cd989c28d6bd49d211b70b453d&#34;&gt;Ref&lt;/a&gt; By this, I updated ggsrun. So the command for creating new GAS project is not changed.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$ ggsrun u -p ###folderId### -f sample.gs -pn sampleGASProjectName&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v126</title>
      <link>https://tanaikech.github.io/2020/02/23/updated-goodls-to-v126/</link>
      <pubDate>Sun, 23 Feb 2020 16:03:22 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/02/23/updated-goodls-to-v126/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.2.6 (February 23, 2020)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;When the files are downloaded from the shared folder, if an error occurs, the download was stopped. In &lt;a href=&#34;https://github.com/tanaikech/goodls/issues/9&#34;&gt;this thread&lt;/a&gt;, a request for skipping this error was proposed. This request was implemented at v1.2.6. Please try the option of &lt;code&gt;--skiperror&lt;/code&gt; like below.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$ goodls -u https://drive.google.com/drive/folders/###?usp=sharing --skiperror&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v125</title>
      <link>https://tanaikech.github.io/2020/01/29/updated-goodls-to-v125/</link>
      <pubDate>Wed, 29 Jan 2020 14:17:02 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/01/29/updated-goodls-to-v125/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.2.5 (January 29, 2020)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;An option for selecting whether the top directory is created was added.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$ goodls -u [URL] --notcreatetopdirectory&lt;/code&gt; or &lt;code&gt;$ goodls -u [URL] -ntd&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;When this option is NOT used (default situation), when a folder including sub-folders is downloaded, the top folder which is downloaded is created as the top directory under the working directory. When this option is used, the top directory is not created and all files and sub-folders under the top folder are downloaded under the working directory.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/goodls/issues/8&#34;&gt;This feature request&lt;/a&gt; was implemented.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Libraries of gdoctableapp for golang, Node.js and python were updated to v110</title>
      <link>https://tanaikech.github.io/2020/01/22/libraries-of-gdoctableapp-for-golang-node.js-and-python-were-updated-to-v110/</link>
      <pubDate>Wed, 22 Jan 2020 15:22:54 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/01/22/libraries-of-gdoctableapp-for-golang-node.js-and-python-were-updated-to-v110/</guid>
      <description>&lt;h2 id=&#34;libraries-of-gdoctableapp-for-golang-nodejs-and-python-were-updated-to-v110&#34;&gt;Libraries of gdoctableapp for golang, Node.js and python were updated to v1.1.0&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/tanaikech/go-gdoctableapp&#34;&gt;go-gdoctableapp&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.1.0 (January 22, 2020)&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/go-gdoctableapp#replacetexts&#34;&gt;2 new methods were added.&lt;/a&gt; From this version, the texts can be replaced by images. The direct link and local file can be used as the image.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/tanaikech/node-gdoctableapp&#34;&gt;node-gdoctableapp&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.1.0 (January 22, 2020)&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/node-gdoctableapp#replacetexts&#34;&gt;New method was added.&lt;/a&gt; From this version, the texts can be replaced by images. The direct link and local file can be used as the image.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/tanaikech/gdoctableapppy&#34;&gt;gdoctableapppy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Libraries of gdoctableapp for golang, Node.js and python were updated to v105</title>
      <link>https://tanaikech.github.io/2020/01/21/libraries-of-gdoctableapp-for-golang-node.js-and-python-were-updated-to-v105/</link>
      <pubDate>Tue, 21 Jan 2020 15:00:02 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/01/21/libraries-of-gdoctableapp-for-golang-node.js-and-python-were-updated-to-v105/</guid>
      <description>&lt;h2 id=&#34;libraries-of-gdoctableapp-for-golang-nodejs-and-python-were-updated-to-v105&#34;&gt;Libraries of gdoctableapp for golang, Node.js and python were updated to v1.0.5&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/go-gdoctableapp&#34;&gt;go-gdoctableapp&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/node-gdoctableapp&#34;&gt;node-gdoctableapp&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/gdoctableapppy&#34;&gt;gdoctableapppy&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;update-history&#34;&gt;Update History&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.5 (January 21, 2020)&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;When the inline objects and tables are put in the table. An error occurred. This bug was removed by this update.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;I got the pull request at &lt;a href=&#34;https://github.com/tanaikech/gdoctableapppy/pull/3&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Updated Several CLI Tools Created By Golang</title>
      <link>https://tanaikech.github.io/2020/01/03/updated-several-cli-tools-created-by-golang/</link>
      <pubDate>Fri, 03 Jan 2020 12:39:00 +0900</pubDate>
      <guid>https://tanaikech.github.io/2020/01/03/updated-several-cli-tools-created-by-golang/</guid>
      <description>&lt;p&gt;I knew that the specification of &lt;code&gt;github.com/urfave/cli&lt;/code&gt; had been changed by the update of &lt;a href=&#34;https://github.com/urfave/cli&#34;&gt;https://github.com/urfave/cli&lt;/a&gt;. By this, when the CLI created by golang is installed with &lt;code&gt;go get&lt;/code&gt;, an error occurred. So this error was removed.&lt;/p&gt;&#xA;&lt;p&gt;The updated CLI tools are as follows.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;goodls&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;ggsrun&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;ggsrun&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/gistwatcher&#34;&gt;gistwatcher&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/goris&#34;&gt;goris&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/gorearrange&#34;&gt;gorearrange&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/gislack&#34;&gt;gislack&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/gogauth&#34;&gt;gogauth&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v123</title>
      <link>https://tanaikech.github.io/2019/10/31/updated-goodls-to-v123/</link>
      <pubDate>Thu, 31 Oct 2019 08:19:15 +0900</pubDate>
      <guid>https://tanaikech.github.io/2019/10/31/updated-goodls-to-v123/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.2.3 (October 31, 2019)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;An option for inputting the directory to save the downloaded files was added.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$ goodls -u [URL] -d [directory]&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated gonetatmo to v101</title>
      <link>https://tanaikech.github.io/2019/08/02/updated-gonetatmo-to-v101/</link>
      <pubDate>Fri, 02 Aug 2019 16:02:14 +0900</pubDate>
      <guid>https://tanaikech.github.io/2019/08/02/updated-gonetatmo-to-v101/</guid>
      <description>&lt;h2 id=&#34;gonetatmo-was-updated-to-v101&#34;&gt;gonetatmo was updated to v.1.0.1&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.1 (August 2, 2019)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;A bug was removed.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;When the outer module is not active, an error occurred. In this version, this bug was removed.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check gonetatmo at &lt;a href=&#34;https://github.com/tanaikech/gonetatmo&#34;&gt;https://github.com/tanaikech/gonetatmo&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resumable Uploading Files to Google Drive using Golang</title>
      <link>https://tanaikech.github.io/2019/07/23/resumable-uploading-files-to-google-drive-using-golang/</link>
      <pubDate>Tue, 23 Jul 2019 15:11:48 +0900</pubDate>
      <guid>https://tanaikech.github.io/2019/07/23/resumable-uploading-files-to-google-drive-using-golang/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/19655a8130bac1ba510b29c9c44bbd97&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a sample script for the resumable upload of Files to Google Drive using Golang. This script uses the library of &lt;a href=&#34;https://github.com/googleapis/google-api-go-client&#34;&gt;google-api-go-client&lt;/a&gt;. About the installation of google-api-go-client, please check &lt;a href=&#34;https://developers.google.com/docs/api/quickstart/go&#34;&gt;the Quickstart&lt;/a&gt; for golang at the official site.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sample-script&#34;&gt;Sample script:&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xD;&#xA;&#xD;&#xA;import (&#xD;&#xA;&#x9;&amp;#34;context&amp;#34;&#xD;&#xA;&#x9;&amp;#34;encoding/json&amp;#34;&#xD;&#xA;&#x9;&amp;#34;fmt&amp;#34;&#xD;&#xA;&#x9;&amp;#34;io/ioutil&amp;#34;&#xD;&#xA;&#x9;&amp;#34;log&amp;#34;&#xD;&#xA;&#x9;&amp;#34;net/http&amp;#34;&#xD;&#xA;&#x9;&amp;#34;os&amp;#34;&#xD;&#xA;&#xD;&#xA;&#x9;drive &amp;#34;google.golang.org/api/drive/v3&amp;#34;&#xD;&#xA;&#xD;&#xA;&#x9;&amp;#34;golang.org/x/oauth2&amp;#34;&#xD;&#xA;&#x9;&amp;#34;golang.org/x/oauth2/google&amp;#34;&#xD;&#xA;&#x9;&amp;#34;golang.org/x/oauth2/jwt&amp;#34;&#xD;&#xA;)&#xD;&#xA;&#xD;&#xA;// ServiceAccount : Use Service account&#xD;&#xA;func ServiceAccount(credentialFile string) *http.Client {&#xD;&#xA;&#x9;b, err := ioutil.ReadFile(credentialFile)&#xD;&#xA;&#x9;if err != nil {&#xD;&#xA;&#x9;&#x9;log.Fatal(err)&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;var c = struct {&#xD;&#xA;&#x9;&#x9;Email      string `json:&amp;#34;client_email&amp;#34;`&#xD;&#xA;&#x9;&#x9;PrivateKey string `json:&amp;#34;private_key&amp;#34;`&#xD;&#xA;&#x9;}{}&#xD;&#xA;&#x9;json.Unmarshal(b, &amp;amp;c)&#xD;&#xA;&#x9;config := &amp;amp;jwt.Config{&#xD;&#xA;&#x9;&#x9;Email:      c.Email,&#xD;&#xA;&#x9;&#x9;PrivateKey: []byte(c.PrivateKey),&#xD;&#xA;&#x9;&#x9;Scopes: []string{&#xD;&#xA;&#x9;&#x9;&#x9;drive.DriveScope,&#xD;&#xA;&#x9;&#x9;},&#xD;&#xA;&#x9;&#x9;TokenURL: google.JWTTokenURL,&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;client := config.Client(oauth2.NoContext)&#xD;&#xA;&#x9;return client&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;func main() {&#xD;&#xA;&#x9;filename := &amp;#34;sample.txt&amp;#34;     // Filename&#xD;&#xA;&#x9;baseMimeType := &amp;#34;text/plain&amp;#34; // MimeType&#xD;&#xA;&#x9;client := ServiceAccount(&amp;#34;credential.json&amp;#34;) // Please set the json file of Service account.&#xD;&#xA;&#xD;&#xA;&#x9;srv, err := drive.New(client)&#xD;&#xA;&#x9;if err != nil {&#xD;&#xA;&#x9;&#x9;log.Fatalln(err)&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;file, err := os.Open(filename)&#xD;&#xA;&#x9;if err != nil {&#xD;&#xA;&#x9;&#x9;log.Fatalln(err)&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;fileInf, err := file.Stat()&#xD;&#xA;&#x9;if err != nil {&#xD;&#xA;&#x9;&#x9;log.Fatalln(err)&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;defer file.Close()&#xD;&#xA;&#x9;f := &amp;amp;drive.File{Name: filename}&#xD;&#xA;&#x9;res, err := srv.Files.&#xD;&#xA;&#x9;&#x9;Create(f).&#xD;&#xA;&#x9;&#x9;ResumableMedia(context.Background(), file, fileInf.Size(), baseMimeType).&#xD;&#xA;&#x9;&#x9;ProgressUpdater(func(now, size int64) { fmt.Printf(&amp;#34;%d, %d\r&amp;#34;, now, size) }).&#xD;&#xA;&#x9;&#x9;Do()&#xD;&#xA;&#x9;if err != nil {&#xD;&#xA;&#x9;&#x9;log.Fatalln(err)&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;fmt.Printf(&amp;#34;%s\n&amp;#34;, res.Id)&#xD;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;note&#34;&gt;Note:&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;In this sample, the Service account is used. So the file is uploaded to the Service account&amp;rsquo;s Drive. When &lt;code&gt;client&lt;/code&gt; retrieved from OAuth2 is used, the file is uploaded to owner&amp;rsquo;s Drive.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;references&#34;&gt;References:&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/googleapis/google-api-go-client/blob/master/drive/v3/drive-gen.go&#34;&gt;google-api-go-client&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://godoc.org/google.golang.org/api/drive/v3&#34;&gt;package drive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Creating a Table to Google Document by Retrieving Values from Google Spreadsheet for Golang</title>
      <link>https://tanaikech.github.io/2019/07/18/creating-a-table-to-google-document-by-retrieving-values-from-google-spreadsheet-for-golang/</link>
      <pubDate>Thu, 18 Jul 2019 13:49:54 +0900</pubDate>
      <guid>https://tanaikech.github.io/2019/07/18/creating-a-table-to-google-document-by-retrieving-values-from-google-spreadsheet-for-golang/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/0589a673cae9569181def8ccd10793cf&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a sample script for creating a table to Google Document by retrieving values from Google Spreadsheet for Golang.&lt;/p&gt;&#xA;&lt;p&gt;Before you use this script, please install go library of &lt;a href=&#34;https://github.com/tanaikech/go-gdoctableapp&#34;&gt;go-gdoctableapp&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ go get -v -u github.com/tanaikech/go-gdoctableapp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;sample-script&#34;&gt;Sample script:&lt;/h2&gt;&#xA;&lt;p&gt;This sample script uses Service Account.&lt;/p&gt;&#xA;&lt;p&gt;In this sample script, the values are retrieved from &lt;code&gt;Sheet1!A1:C5&lt;/code&gt; of Spreadsheet, and new table is created to the Document using the values.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xD;&#xA;&#xD;&#xA;import (&#xD;&#xA;&#x9;&amp;#34;encoding/json&amp;#34;&#xD;&#xA;&#x9;&amp;#34;fmt&amp;#34;&#xD;&#xA;&#x9;&amp;#34;io/ioutil&amp;#34;&#xD;&#xA;&#x9;&amp;#34;log&amp;#34;&#xD;&#xA;&#x9;&amp;#34;net/http&amp;#34;&#xD;&#xA;&#x9;&amp;#34;os&amp;#34;&#xD;&#xA;&#xD;&#xA;&#x9;gdoctableapp &amp;#34;github.com/tanaikech/go-gdoctableapp&amp;#34;&#xD;&#xA;&#x9;&amp;#34;golang.org/x/oauth2&amp;#34;&#xD;&#xA;&#x9;&amp;#34;golang.org/x/oauth2/google&amp;#34;&#xD;&#xA;&#x9;&amp;#34;golang.org/x/oauth2/jwt&amp;#34;&#xD;&#xA;&#x9;docs &amp;#34;google.golang.org/api/docs/v1&amp;#34;&#xD;&#xA;&#x9;sheets &amp;#34;google.golang.org/api/sheets/v4&amp;#34;&#xD;&#xA;)&#xD;&#xA;&#xD;&#xA;// ServiceAccount : Use Service account&#xD;&#xA;func ServiceAccount(credentialFile string) *http.Client {&#xD;&#xA;&#x9;b, err := ioutil.ReadFile(credentialFile)&#xD;&#xA;&#x9;if err != nil {&#xD;&#xA;&#x9;&#x9;log.Fatal(err)&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;var c = struct {&#xD;&#xA;&#x9;&#x9;Email      string `json:&amp;#34;client_email&amp;#34;`&#xD;&#xA;&#x9;&#x9;PrivateKey string `json:&amp;#34;private_key&amp;#34;`&#xD;&#xA;&#x9;}{}&#xD;&#xA;&#x9;json.Unmarshal(b, &amp;amp;c)&#xD;&#xA;&#x9;config := &amp;amp;jwt.Config{&#xD;&#xA;&#x9;&#x9;Email:      c.Email,&#xD;&#xA;&#x9;&#x9;PrivateKey: []byte(c.PrivateKey),&#xD;&#xA;&#x9;&#x9;Scopes: []string{&#xD;&#xA;&#x9;&#x9;&#x9;docs.DocumentsScope,&#xD;&#xA;&#x9;&#x9;&#x9;sheets.SpreadsheetsScope,&#xD;&#xA;&#x9;&#x9;},&#xD;&#xA;&#x9;&#x9;TokenURL: google.JWTTokenURL,&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;client := config.Client(oauth2.NoContext)&#xD;&#xA;&#x9;return client&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;func main() {&#xD;&#xA;&#x9;spreadsheetID := &amp;#34;###&amp;#34; // Please set here&#xD;&#xA;&#x9;documentID := &amp;#34;###&amp;#34;    // Please set here&#xD;&#xA;&#xD;&#xA;&#x9;client := ServiceAccount(&amp;#34;credential.json&amp;#34;) // Please set the json file of Service account.&#xD;&#xA;&#x9;srv, err := sheets.New(client)&#xD;&#xA;&#x9;if err != nil {&#xD;&#xA;&#x9;&#x9;log.Fatalf(&amp;#34;%v&amp;#34;, err)&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;// Retrieve values from Spreadsheet.&#xD;&#xA;&#x9;sheetValues, err := srv.Spreadsheets.Values.Get(spreadsheetID, &amp;#34;Sheet1!A1:C5&amp;#34;).Do()&#xD;&#xA;&#x9;if err != nil {&#xD;&#xA;&#x9;&#x9;log.Fatalf(&amp;#34;%v&amp;#34;, err)&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;values := sheetValues.Values&#xD;&#xA;&#xD;&#xA;&#x9;// Put the retrieved values to Document.&#xD;&#xA;&#x9;g := gdoctableapp.New()&#xD;&#xA;&#x9;obj := &amp;amp;gdoctableapp.CreateTableRequest{&#xD;&#xA;&#x9;&#x9;Rows:    int64(len(values)),&#xD;&#xA;&#x9;&#x9;Columns: int64(len(values[0])),&#xD;&#xA;&#x9;&#x9;Append:  true,&#xD;&#xA;&#x9;&#x9;Values:  values,&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;res, err := g.Docs(documentID).CreateTable(obj).Do(client)&#xD;&#xA;&#x9;if err != nil {&#xD;&#xA;&#x9;&#x9;log.Fatalf(&amp;#34;%v&amp;#34;, err)&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;fmt.Println(res)&#xD;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;references&#34;&gt;References:&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/go-gdoctableapp&#34;&gt;go-gdoctableapp&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developers.google.com/identity/protocols/OAuth2ServiceAccount&#34;&gt;Service account&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Go Library - go-gdoctableapp</title>
      <link>https://tanaikech.github.io/2019/07/18/go-library-go-gdoctableapp/</link>
      <pubDate>Thu, 18 Jul 2019 11:40:54 +0900</pubDate>
      <guid>https://tanaikech.github.io/2019/07/18/go-library-go-gdoctableapp/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;This is a Golang library for managing tables on Google Document using Google Docs API.&lt;/p&gt;&#xA;&lt;h2 id=&#34;description&#34;&gt;Description&lt;/h2&gt;&#xA;&lt;p&gt;Google Docs API has been released. When I used this API, I found that it is very difficult for me to manage the tables on Google Document using Google Docs API. Although I checked &lt;a href=&#34;https://developers.google.com/docs/api/how-tos/tables&#34;&gt;the official document&lt;/a&gt;, unfortunately, I thought that it&amp;rsquo;s very difficult for me. So in order to easily manage the tables on Google Document, I created this library.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dynamically Retrieving Keys and Values from Struct Property</title>
      <link>https://tanaikech.github.io/2019/06/25/dynamically-retrieving-keys-and-values-from-struct-property/</link>
      <pubDate>Tue, 25 Jun 2019 14:34:02 +0900</pubDate>
      <guid>https://tanaikech.github.io/2019/06/25/dynamically-retrieving-keys-and-values-from-struct-property/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/9dc4718ac9fb2473ef029eb4dbda1b01&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a sample script for dynamically retrieving the keys and values from struct property using golang.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sample-script&#34;&gt;Sample script:&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://play.golang.org/p/VBKfJg1ZBiB&#34;&gt;Go Playground&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xD;&#xA;&#xD;&#xA;import (&#xD;&#xA;&#x9;&amp;#34;fmt&amp;#34;&#xD;&#xA;&#x9;&amp;#34;reflect&amp;#34;&#xD;&#xA;)&#xD;&#xA;&#xD;&#xA;func main() {&#xD;&#xA;&#x9;s := struct {&#xD;&#xA;&#x9;&#x9;key1 string&#xD;&#xA;&#x9;&#x9;key2 string&#xD;&#xA;&#x9;&#x9;key3 string&#xD;&#xA;&#x9;}{&amp;#34;value1&amp;#34;, &amp;#34;value2&amp;#34;, &amp;#34;value3&amp;#34;}&#xD;&#xA;&#xD;&#xA;&#x9;r := reflect.ValueOf(&amp;amp;s).Elem()&#xD;&#xA;&#x9;rt := r.Type()&#xD;&#xA;&#x9;for i := 0; i &amp;lt; rt.NumField(); i++ {&#xD;&#xA;&#x9;&#x9;field := rt.Field(i)&#xD;&#xA;&#x9;&#x9;rv := reflect.ValueOf(&amp;amp;s)&#xD;&#xA;&#x9;&#x9;value := reflect.Indirect(rv).FieldByName(field.Name)&#xD;&#xA;&#x9;&#x9;fmt.Println(field.Name, value.String())&#xD;&#xA;&#x9;}&#xD;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Sorting for Slice using Golang</title>
      <link>https://tanaikech.github.io/2019/06/20/sorting-for-slice-using-golang/</link>
      <pubDate>Thu, 20 Jun 2019 12:19:52 +0900</pubDate>
      <guid>https://tanaikech.github.io/2019/06/20/sorting-for-slice-using-golang/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/4d0075dc21b643245be03d661e8d5f54&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a sample script for sorting a slice using Golang. Recently, I had a situation for sorting the coordinates of cells of Spreadsheet. As a test case, it thinks of the situation that the randomized cells are sorted. I think that this can be also used for a table except for Spreadsheet.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sample-slice&#34;&gt;Sample slice:&lt;/h2&gt;&#xA;&lt;p&gt;The sample slice is as follows.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ar := []struct {&#xD;&#xA;    row   int&#xD;&#xA;    col   int&#xD;&#xA;    value string&#xD;&#xA;}{&#xD;&#xA;    {0, 0, &amp;#34;A1&amp;#34;},&#xD;&#xA;    {0, 1, &amp;#34;B1&amp;#34;},&#xD;&#xA;    {0, 2, &amp;#34;C1&amp;#34;},&#xD;&#xA;    {1, 0, &amp;#34;A2&amp;#34;},&#xD;&#xA;    {1, 1, &amp;#34;B2&amp;#34;},&#xD;&#xA;    {1, 3, &amp;#34;D2&amp;#34;},&#xD;&#xA;    {2, 0, &amp;#34;A3&amp;#34;},&#xD;&#xA;    {2, 2, &amp;#34;C3&amp;#34;},&#xD;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When each element of above slice is put to a Spreadsheet, it becomes as follows.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI Tool - gistwatcher</title>
      <link>https://tanaikech.github.io/2019/05/16/cli-tool-gistwatcher/</link>
      <pubDate>Thu, 16 May 2019 12:04:48 +0900</pubDate>
      <guid>https://tanaikech.github.io/2019/05/16/cli-tool-gistwatcher/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This is a CLI tool for retrieving the number of comments, stars and forks of Gists.&lt;/p&gt;&#xA;&lt;h1 id=&#34;demo&#34;&gt;Demo&lt;/h1&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://github.com/tanaikech/gistwatcher/raw/master/images/demo.gif&#34;&#xA;     alt=&#34;CLI Tool - gistwatcher&#34;&#xA;     &#xA;     loading=&#34;lazy&#34;&#xA;     decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;In this demonstration, a Gist is retrieved by an URL. You can see that the number of comments, stars and forks can be retrieved.&lt;/p&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/gistwatcher&#34;&gt;https://github.com/tanaikech/gistwatcher&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go Library - go-fetchall</title>
      <link>https://tanaikech.github.io/2019/05/01/go-library-go-fetchall/</link>
      <pubDate>Wed, 01 May 2019 21:14:46 +0900</pubDate>
      <guid>https://tanaikech.github.io/2019/05/01/go-library-go-fetchall/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This is a Golang library for running HTTP requests with the asynchronous process. The progress of requests can be also shown.&lt;/p&gt;&#xA;&lt;h1 id=&#34;demo&#34;&gt;Demo&lt;/h1&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://github.com/tanaikech/go-fetchall/raw/master/images/demo.gif&#34;&#xA;     alt=&#34;Go Library - go-fetchall&#34;&#xA;     &#xA;     loading=&#34;lazy&#34;&#xA;     decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;In this demonstration, 5 requests are run by 2 workers. And before each request, the waiting time for 2 seconds is added as a sample. By this, you can easily see the work with 2 workers. Also you can see this script at &lt;a href=&#34;#samplescript&#34;&gt;the following sample script&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v171</title>
      <link>https://tanaikech.github.io/2018/12/30/updated-ggsrun-to-v171/</link>
      <pubDate>Sun, 30 Dec 2018 12:16:31 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/12/30/updated-ggsrun-to-v171/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v171&#34;&gt;ggsrun was updated to v.1.7.1&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.7.1 (December 30, 2018)&#xA;&lt;ol&gt;&#xA;&lt;li&gt;A bug was removed.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;When a project is downloaded and zipped, there was a case that &amp;ldquo;createdTime&amp;rdquo; and &amp;ldquo;modifiedTime&amp;rdquo; of the project cannot be retrieved by Apps Script API. This was modified.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v170</title>
      <link>https://tanaikech.github.io/2018/12/27/updated-ggsrun-to-v170/</link>
      <pubDate>Thu, 27 Dec 2018 11:51:30 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/12/27/updated-ggsrun-to-v170/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v170&#34;&gt;ggsrun was updated to v.1.7.0&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.7.0 (December 27, 2018)&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#managepermissions&#34;&gt;Manage permissions of files.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#getdriveinformation&#34;&gt;Get Drive Information.&lt;/a&gt; By this, you can know the storage quotas.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#useserviceaccount&#34;&gt;&lt;strong&gt;ggsrun got to be able to be used by not only OAuth2, but also Service Account. By this, using ggsrun, Google Drive for Service Account got to be able to be managed.&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Some modifications.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v122</title>
      <link>https://tanaikech.github.io/2018/12/12/updated-goodls-to-v122/</link>
      <pubDate>Wed, 12 Dec 2018 14:56:09 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/12/12/updated-goodls-to-v122/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.2.2 (December 12, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;When files are downloaded from a specific folder, it got to be able to select mimeType. By this, files with the specific mimeType in the specific folder can be retrieved. For this, I updated the go library &lt;a href=&#34;https://github.com/tanaikech/go-getfilelist&#34;&gt;go-getfilelist&lt;/a&gt;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$ goodls -u [URL] -key [APIkey] -m &amp;quot;application/pdf,image/png&amp;quot;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Go Library - go-getfilelist to v102</title>
      <link>https://tanaikech.github.io/2018/12/12/updated-go-library-go-getfilelist-to-v102/</link>
      <pubDate>Wed, 12 Dec 2018 10:02:20 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/12/12/updated-go-library-go-getfilelist-to-v102/</guid>
      <description>&lt;h2 id=&#34;go-getfilelist-was-updated-to-v102&#34;&gt;go-getfilelist was updated to v1.0.2&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.2 (December 12, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;New method for selecting mimeType was added. When this method is used, files with the specific mimeType in the specific folder can be retrieved.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can get this from &lt;a href=&#34;https://github.com/tanaikech/go-getfilelist&#34;&gt;https://github.com/tanaikech/go-getfilelist&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Retrieving Access Token using Service Account by Google&#39;s OAuth2 package for Golang</title>
      <link>https://tanaikech.github.io/2018/12/11/retrieving-access-token-using-service-account-by-googles-oauth2-package-for-golang/</link>
      <pubDate>Tue, 11 Dec 2018 14:47:41 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/12/11/retrieving-access-token-using-service-account-by-googles-oauth2-package-for-golang/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/4b4cb27ece27573b3f4df0e050b52330&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a sample golang script for retrieving access token using &lt;a href=&#34;https://developers.google.com/identity/protocols/OAuth2ServiceAccount&#34;&gt;Service Account of Google&lt;/a&gt; by &lt;a href=&#34;https://github.com/golang/oauth2&#34;&gt;Google&amp;rsquo;s OAuth2 package&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The script without using Google&amp;rsquo;s OAuth2 package is &lt;a href=&#34;https://github.com/tanaikech/go-gettokenbyserviceaccount&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xD;&#xA;&#xD;&#xA;import (&#xD;&#xA;    &amp;#34;encoding/json&amp;#34;&#xD;&#xA;    &amp;#34;fmt&amp;#34;&#xD;&#xA;    &amp;#34;io/ioutil&amp;#34;&#xD;&#xA;    &amp;#34;os&amp;#34;&#xD;&#xA;&#xD;&#xA;    &amp;#34;golang.org/x/oauth2&amp;#34;&#xD;&#xA;    &amp;#34;golang.org/x/oauth2/google&amp;#34;&#xD;&#xA;    &amp;#34;golang.org/x/oauth2/jwt&amp;#34;&#xD;&#xA;)&#xD;&#xA;&#xD;&#xA;func serviceAccount(credentialFile string) (*oauth2.Token, error) {&#xD;&#xA;    b, err := ioutil.ReadFile(credentialFile)&#xD;&#xA;    if err != nil {&#xD;&#xA;        return nil, err&#xD;&#xA;    }&#xD;&#xA;    var c = struct {&#xD;&#xA;        Email      string `json:&amp;#34;client_email&amp;#34;`&#xD;&#xA;        PrivateKey string `json:&amp;#34;private_key&amp;#34;`&#xD;&#xA;    }{}&#xD;&#xA;    json.Unmarshal(b, &amp;amp;c)&#xD;&#xA;    config := &amp;amp;jwt.Config{&#xD;&#xA;        Email:      c.Email,&#xD;&#xA;        PrivateKey: []byte(c.PrivateKey),&#xD;&#xA;        Scopes: []string{&#xD;&#xA;            &amp;#34;https://www.googleapis.com/auth/drive.metadata.readonly&amp;#34;,&#xD;&#xA;        },&#xD;&#xA;        TokenURL: google.JWTTokenURL,&#xD;&#xA;    }&#xD;&#xA;    token, err := config.TokenSource(oauth2.NoContext).Token()&#xD;&#xA;    if err != nil {&#xD;&#xA;        return nil, err&#xD;&#xA;    }&#xD;&#xA;    return token, nil&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;func main() {&#xD;&#xA;    token, err := serviceAccount(&amp;#34;credentials.json&amp;#34;) // Please set here&#xD;&#xA;    if err != nil {&#xD;&#xA;        fmt.Println(err)&#xD;&#xA;        os.Exit(1)&#xD;&#xA;    }&#xD;&#xA;    fmt.Println(res)&#xD;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Go Library - go-gettokenbyserviceaccount</title>
      <link>https://tanaikech.github.io/2018/12/11/go-library-go-gettokenbyserviceaccount/</link>
      <pubDate>Tue, 11 Dec 2018 14:42:52 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/12/11/go-library-go-gettokenbyserviceaccount/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;This is a Golang library to retrieve access token from &lt;a href=&#34;https://developers.google.com/identity/protocols/OAuth2ServiceAccount&#34;&gt;Service Account of Google&lt;/a&gt; without using &lt;a href=&#34;https://github.com/golang/oauth2&#34;&gt;Google&amp;rsquo;s OAuth2 package&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can get this from &lt;a href=&#34;https://github.com/tanaikech/go-gettokenbyserviceaccount&#34;&gt;https://github.com/tanaikech/go-gettokenbyserviceaccount&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v160</title>
      <link>https://tanaikech.github.io/2018/11/30/updated-ggsrun-to-v160/</link>
      <pubDate>Fri, 30 Nov 2018 10:44:54 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/30/updated-ggsrun-to-v160/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v160&#34;&gt;ggsrun was updated to v.1.6.0&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.6.0 (November 30, 2018)&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Although at ggsrun, files can be searched by filename and file ID, searching files using search query and regex couldn&amp;rsquo;t be done. From version 1.6.0, &lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#searchfilesusingregex&#34;&gt;files got to be able to be searched using the search query and regex&lt;/a&gt;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$ ggsrun sf -q &amp;quot;### search query ###&amp;quot; -f &amp;quot;### fields ###&amp;quot; -r &amp;quot;### regex ###&amp;quot;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Some modifications.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v121</title>
      <link>https://tanaikech.github.io/2018/11/25/updated-goodls-to-v121/</link>
      <pubDate>Sun, 25 Nov 2018 11:06:11 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/25/updated-goodls-to-v121/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.2.1 (November 25, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/goodls#v121&#34;&gt;API key got to be able to be used by an environment variable.&lt;/a&gt; When &lt;code&gt;GOODLS_APIKEY&lt;/code&gt; as the environment variable is set API key, goodls uses API key from the environment variable.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v120</title>
      <link>https://tanaikech.github.io/2018/11/24/updated-goodls-to-v120/</link>
      <pubDate>Sat, 24 Nov 2018 14:34:27 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/24/updated-goodls-to-v120/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.2.0 (November 24, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;By using API key, the shared large files can be run &lt;a href=&#34;https://github.com/tanaikech/goodls#resumabledownloadoffile&#34;&gt;&lt;strong&gt;the resumable download&lt;/strong&gt;&lt;/a&gt;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This demonstration can be seen at &lt;a href=&#34;https://github.com/tanaikech/goodls#demo4&#34;&gt;Demo&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using String Values to []googleapi.Field for Golang</title>
      <link>https://tanaikech.github.io/2018/11/19/using-string-values-to-googleapi.field-for-golang/</link>
      <pubDate>Mon, 19 Nov 2018 08:32:25 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/19/using-string-values-to-googleapi.field-for-golang/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/27d27a1ac7fa99503e0737c28db53056&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This sample script is for using the string values to &lt;code&gt;[]googleapi.Field&lt;/code&gt; for Golang. The property of &lt;code&gt;fields&lt;/code&gt; can often be used to the Google APIs. When such APIs are used by the Go library, there are the cases that &lt;code&gt;fields&lt;/code&gt; parameter is required to be used. For example, at &lt;a href=&#34;https://developers.google.com/drive/api/v3/quickstart/go&#34;&gt;the quickstart of Drive API for golang&lt;/a&gt;, the value is directly put to &lt;code&gt;Fields()&lt;/code&gt; like &lt;code&gt;r, err := srv.Files.List().PageSize(10).Fields(&amp;quot;nextPageToken, files(id, name)&amp;quot;).Do()&lt;/code&gt;. For this situation, when the string value is put to &lt;code&gt;Fields()&lt;/code&gt; as follows,&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v111</title>
      <link>https://tanaikech.github.io/2018/11/13/updated-goodls-to-v111/</link>
      <pubDate>Tue, 13 Nov 2018 16:10:48 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/13/updated-goodls-to-v111/</guid>
      <description>&lt;h1 id=&#34;goodls-was-updated-to-v111&#34;&gt;goodls was updated to v.1.1.1&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.1.1 (November 13, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Version of &lt;a href=&#34;https://github.com/tanaikech/go-getfilelist&#34;&gt;go-getfilelist&lt;/a&gt; was updated. Because the structure of &lt;code&gt;drive.File&lt;/code&gt; got to be able to be used, I also updated this application.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Go Library - go-getfilelist to v101</title>
      <link>https://tanaikech.github.io/2018/11/13/updated-go-library-go-getfilelist-to-v101/</link>
      <pubDate>Tue, 13 Nov 2018 16:08:09 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/13/updated-go-library-go-getfilelist-to-v101/</guid>
      <description>&lt;h2 id=&#34;go-getfilelist-was-updated-to-v101&#34;&gt;go-getfilelist was updated to v1.0.1&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.1 (November 13, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;From this version, in order to retrieve files and file information, &amp;ldquo;google.golang.org/api/drive/v3&amp;rdquo; is used.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;By this, when the values are retrieved from this library, users can use the structure of &lt;code&gt;drive.File&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Script using this library can be seen at &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;goodls&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can get this from &lt;a href=&#34;https://github.com/tanaikech/go-getfilelist&#34;&gt;https://github.com/tanaikech/go-getfilelist&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v152</title>
      <link>https://tanaikech.github.io/2018/11/04/updated-ggsrun-to-v152/</link>
      <pubDate>Sun, 04 Nov 2018 13:10:10 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/04/updated-ggsrun-to-v152/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v152&#34;&gt;ggsrun was updated to v.1.5.2&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.5.2 (November 4, 2018)&#xA;&lt;ol&gt;&#xA;&lt;li&gt;About &lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#downloadfilesfromfolder&#34;&gt;downloading folders&lt;/a&gt;, when files are downloaded from a folder, you can download Google Docs files with the mimeType you want. For example, when you download files from the folder, if &lt;code&gt;-e txt&lt;/code&gt; is used, Google Docs are downloaded as the text file. When &lt;code&gt;-e pdf&lt;/code&gt; is used, they are downloaded as the PDF file. Of course, there are mimeType which cannot be converted.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$ ggsrun d -f [folderName] -e txt -j&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;About &lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#uploadfiles&#34;&gt;uploading files&lt;/a&gt;, when files are uploaded from your local PC, the files got to be able to be converted to Google Docs. For this, new option of &lt;code&gt;--convertto&lt;/code&gt;, &lt;code&gt;-c&lt;/code&gt; is added. For example, when a text file is uploaded, if you use &lt;code&gt;-c doc&lt;/code&gt;, the text file is uploaded as Google Document.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$ ggsrun u -f [fileName] -c doc -j&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v110</title>
      <link>https://tanaikech.github.io/2018/11/04/updated-goodls-to-v110/</link>
      <pubDate>Sun, 04 Nov 2018 12:26:52 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/04/updated-goodls-to-v110/</guid>
      <description>&lt;h1 id=&#34;goodls-was-updated-to-v110&#34;&gt;goodls was updated to v.1.1.0&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.1.0 (November 4, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;By using API key, files from &lt;strong&gt;the shared folder&lt;/strong&gt; got to be able to be downloaded while keeping the folder structure.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This demonstration can be seen at &lt;a href=&#34;https://github.com/tanaikech/goodls#demo3&#34;&gt;Demo&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;By using API key, the information of shared file and folder can be also retrieved.&lt;/li&gt;&#xA;&lt;li&gt;About the option of &lt;code&gt;--extension&lt;/code&gt; and &lt;code&gt;-e&lt;/code&gt;, when &lt;code&gt;-e ms&lt;/code&gt; is used, Google Docs (Document, Spreadsheet, Slides) are converted to Microsoft Docs (Word, Excel, Powerpoint), respectively.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v151</title>
      <link>https://tanaikech.github.io/2018/11/02/updated-ggsrun-to-v151/</link>
      <pubDate>Fri, 02 Nov 2018 14:18:56 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/02/updated-ggsrun-to-v151/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v151&#34;&gt;ggsrun was updated to v.1.5.1&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.5.1 (November 2, 2018)&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Removed a bug.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;When a file information was retrieved, createdTime and modifiedTime couldn&amp;rsquo;t be seen and the information was incomplete.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go Library - go-getfilelist</title>
      <link>https://tanaikech.github.io/2018/11/02/go-library-go-getfilelist/</link>
      <pubDate>Fri, 02 Nov 2018 14:01:41 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/11/02/go-library-go-getfilelist/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This is a Golang library to retrieve the file list with the folder tree from the specific folder of Google Drive.&lt;/p&gt;&#xA;&lt;h1 id=&#34;description&#34;&gt;Description&lt;/h1&gt;&#xA;&lt;p&gt;When I create applications for using Google Drive, I often retrieve a file list from a folder in the application. So far, I had created the script for retrieving a file list from a folder for each application. Recently, I thought that if there is the script for retrieving the file list with the folder tree from the folder of Google Drive as a library, it will be useful for me and other users. So I created this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v150</title>
      <link>https://tanaikech.github.io/2018/10/27/updated-ggsrun-to-v150/</link>
      <pubDate>Sat, 27 Oct 2018 16:01:05 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/10/27/updated-ggsrun-to-v150/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v150&#34;&gt;ggsrun was updated to v.1.5.0&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.5.0 (October 27, 2018)&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#downloadfilesfromfolder&#34;&gt;From this version, ggsrun got to be able to download all files and folders in the specific folder in Google Drive.&lt;/a&gt; When all files are downloaded from a folder, the same folder structure of Google Drive is created to the local PC.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$ ggsrun d -f folderName or folderId&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;When the project file is downloaded, it is downloaded as a zip file. All scripts in the project is put in the zip file.&lt;/li&gt;&#xA;&lt;li&gt;Also when you download a single project, you can use an option &lt;code&gt;--zip&lt;/code&gt; or &lt;code&gt;-z&lt;/code&gt;. By this, the downloaded project is saved as a zip file.&lt;/li&gt;&#xA;&lt;li&gt;This new function can be also used for the shared folders. When you want to download the files from the shared folder, please use the folder ID of the shared folder.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;The file list with the folder tree in the specific folder got to be able to be retrieved.&lt;/li&gt;&#xA;&lt;li&gt;When the files are downloaded, the progression got to be able to be seen. When you want to see the progression, please use &lt;code&gt;-j&lt;/code&gt; when you download files and folders.&lt;/li&gt;&#xA;&lt;li&gt;Files with large size got to be able to be used. In order to download files with large size (several gigabytes), files are saved by chunks.&lt;/li&gt;&#xA;&lt;li&gt;Some modifications.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can check ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zip Compression of Downloaded File using Golang</title>
      <link>https://tanaikech.github.io/2018/10/23/zip-compression-of-downloaded-file-using-golang/</link>
      <pubDate>Tue, 23 Oct 2018 16:59:51 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/10/23/zip-compression-of-downloaded-file-using-golang/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/0d91da9888393e6ee737a67c57eeab70&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a sample script for creating a downloaded file as a zip file using Golang. The downloaded file is not created to a file as a temporal file. The zip file is directly created. When you use this, please modify &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;downloadedFileName&lt;/code&gt; and &lt;code&gt;zipFileName&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sample-script&#34;&gt;Sample script:&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;package&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;archive/zip&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bytes&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;io&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;io/ioutil&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;log&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;net/http&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;os&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;time&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;url&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://localhost/sample.png&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;downloadedFileName&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sample.png&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;zipFileName&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sample.zip&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Get&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;url&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Fatal&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;body&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ioutil&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;ReadAll&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Body&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Fprintf&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Stderr&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: %v. &amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Exit&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;defer&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Body&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Close&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;buf&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; new(&lt;span style=&#34;color:#a6e22e&#34;&gt;bytes&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Buffer&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;w&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;zip&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;NewWriter&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;buf&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;fh&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;zip&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;FileHeader&lt;/span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;Name&lt;/span&gt;:     &lt;span style=&#34;color:#a6e22e&#34;&gt;downloadedFileName&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;Modified&lt;/span&gt;: &lt;span style=&#34;color:#a6e22e&#34;&gt;time&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Now&lt;/span&gt;(),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;Method&lt;/span&gt;:   &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;f&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;w&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;CreateHeader&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;fh&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Fatal&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;f&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Write&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;body&lt;/span&gt;); &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Fatal&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; = &lt;span style=&#34;color:#a6e22e&#34;&gt;w&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Close&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Fatal&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Create&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;zipFileName&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Fatal&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; = &lt;span style=&#34;color:#a6e22e&#34;&gt;io&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Copy&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;buf&lt;/span&gt;); &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Fatal&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Close&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Done.&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;note&#34;&gt;Note:&lt;/h2&gt;&#xA;&lt;p&gt;As an important point, when the file is downloaded, os.FileInfo cannot be used. So in this situation, it uses zip.FileHeader. At that time, please remember to set &lt;code&gt;Method&lt;/code&gt;. &lt;code&gt;Method&lt;/code&gt; is 0 as the default. This means no compression. The sample script uses 8 to &lt;code&gt;Method&lt;/code&gt;. This means the DEFLATE method.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v103</title>
      <link>https://tanaikech.github.io/2018/09/04/updated-goodls-to-v103/</link>
      <pubDate>Tue, 04 Sep 2018 11:30:06 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/09/04/updated-goodls-to-v103/</guid>
      <description>&lt;h1 id=&#34;goodls-was-updated-to-v103&#34;&gt;goodls was updated to v.1.0.3&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.3 (September 4, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;When the files are downloaded, the progress of downloading got to be able to be displayed.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This scene can be seen at &lt;a href=&#34;https://github.com/tanaikech/goodls#demo2&#34;&gt;this demonstration video&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;If the new option of &lt;code&gt;--np&lt;/code&gt; is used, the progress is not displayed.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v102</title>
      <link>https://tanaikech.github.io/2018/05/11/updated-goodls-to-v102/</link>
      <pubDate>Fri, 11 May 2018 20:32:46 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/05/11/updated-goodls-to-v102/</guid>
      <description>&lt;h1 id=&#34;goodls-was-updated-to-v102&#34;&gt;goodls was updated to v.1.0.2&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.2 (May 10, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Files with large size has gotten to be able to be used.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;In order to download files with large size (several gigabytes), files are saved by chunks.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI Tool - gonetatmo</title>
      <link>https://tanaikech.github.io/2018/03/01/cli-tool-gonetatmo/</link>
      <pubDate>Thu, 01 Mar 2018 14:44:15 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/03/01/cli-tool-gonetatmo/</guid>
      <description>&lt;p&gt;&lt;a name=&#34;Overview&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This is a CLI tool to retrieve data from a personal weather station of Netatmo.&lt;/p&gt;&#xA;&lt;h1 id=&#34;description&#34;&gt;Description&lt;/h1&gt;&#xA;&lt;p&gt;I have &lt;a href=&#34;https://www.netatmo.com/en-US/product/weather/weatherstation&#34;&gt;a personal weather station of Netatmo&lt;/a&gt;. I check the data of my local environment using it. In most case, I have used my browser to retrieve the data so far. &lt;a href=&#34;https://github.com/tanaikech/cui4netatmo&#34;&gt;About retrieving data using curl, I have created it before.&lt;/a&gt; Recently, I thought that I wanted to create this as a CLI too. So I created this. This tool can retrieve not only the data of own Netatmo, but also the data of specific area using Netatmo APIs. By this, I got to be able to retrieve easily the data of various places. This tool has the following features.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Transposing Slice From (n x m) To (m x n) for golang</title>
      <link>https://tanaikech.github.io/2018/02/22/transposing-slice-from-n-x-m-to-m-x-n-for-golang/</link>
      <pubDate>Thu, 22 Feb 2018 11:25:43 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/02/22/transposing-slice-from-n-x-m-to-m-x-n-for-golang/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/5cb41424ff8be0fdf19e78d375b6adb8&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a sample script for transposing slice from (n x m) to (m x n) for golang.&lt;/p&gt;&#xA;&lt;h2 id=&#34;script-&#34;&gt;Script :&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xD;&#xA;&#xD;&#xA;import &amp;#34;fmt&amp;#34;&#xD;&#xA;&#xD;&#xA;func transpose(slice [][]string) [][]string {&#xD;&#xA;    xl := len(slice[0])&#xD;&#xA;    yl := len(slice)&#xD;&#xA;    result := make([][]string, xl)&#xD;&#xA;    for i := range result {&#xD;&#xA;        result[i] = make([]string, yl)&#xD;&#xA;    }&#xD;&#xA;    for i := 0; i &amp;lt; xl; i++ {&#xD;&#xA;        for j := 0; j &amp;lt; yl; j++ {&#xD;&#xA;            result[i][j] = slice[j][i]&#xD;&#xA;        }&#xD;&#xA;    }&#xD;&#xA;    return result&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;func main() {&#xD;&#xA;    sample := [][]string{&#xD;&#xA;        []string{&amp;#34;a1&amp;#34;, &amp;#34;a2&amp;#34;, &amp;#34;a3&amp;#34;, &amp;#34;a4&amp;#34;, &amp;#34;a5&amp;#34;},&#xD;&#xA;        []string{&amp;#34;b1&amp;#34;, &amp;#34;b2&amp;#34;, &amp;#34;b3&amp;#34;, &amp;#34;b4&amp;#34;, &amp;#34;b5&amp;#34;},&#xD;&#xA;        []string{&amp;#34;c1&amp;#34;, &amp;#34;c2&amp;#34;, &amp;#34;c3&amp;#34;, &amp;#34;c4&amp;#34;, &amp;#34;c5&amp;#34;},&#xD;&#xA;    }&#xD;&#xA;    ar := transpose(sample)&#xD;&#xA;    fmt.Println(ar)&#xD;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;result-&#34;&gt;Result :&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[&#xD;&#xA;    [&amp;#34;a1&amp;#34;, &amp;#34;b1&amp;#34;, &amp;#34;c1&amp;#34;],&#xD;&#xA;    [&amp;#34;a2&amp;#34;, &amp;#34;b2&amp;#34;, &amp;#34;c2&amp;#34;],&#xD;&#xA;    [&amp;#34;a3&amp;#34;, &amp;#34;b3&amp;#34;, &amp;#34;c3&amp;#34;],&#xD;&#xA;    [&amp;#34;a4&amp;#34;, &amp;#34;b4&amp;#34;, &amp;#34;c4&amp;#34;],&#xD;&#xA;    [&amp;#34;a5&amp;#34;, &amp;#34;b5&amp;#34;, &amp;#34;c5&amp;#34;]&#xD;&#xA;]&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;the-go-playground&#34;&gt;The Go Playground&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://play.golang.org/p/XoZy7m65rEG&#34;&gt;https://play.golang.org/p/XoZy7m65rEG&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v141</title>
      <link>https://tanaikech.github.io/2018/02/09/updated-ggsrun-to-v141/</link>
      <pubDate>Fri, 09 Feb 2018 12:37:31 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/02/09/updated-ggsrun-to-v141/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v141&#34;&gt;ggsrun was updated to v.1.4.1&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.4.1 (February 9, 2018)&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#ResumableUpload&#34;&gt;For uploading, the resumable-upload method was added.&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The resumable-upload method is automatically used by the size of file.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&amp;ldquo;multipart/form-data&amp;rdquo; can upload files with the size less than 5 MB.&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;resumable-upload&amp;rdquo; can upload files with the size more than 5 MB.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;The chunk for resumable-upload is 100 MB as the default.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Users can also give this chunk size using an option.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;$ ggsrun u -f filename -chunk 10&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This means that a file with filename is uploaded by each chunk of 10 MB.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can read &amp;ldquo;How to install&amp;rdquo; at &lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/README.md#How_to_Install&#34;&gt;here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Copying Values from JSON to Struct using reflect Package</title>
      <link>https://tanaikech.github.io/2018/02/06/copying-values-from-json-to-struct-using-reflect-package/</link>
      <pubDate>Tue, 06 Feb 2018 10:22:55 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/02/06/copying-values-from-json-to-struct-using-reflect-package/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/ada603db41ef0724a2e3d74cc392d9ed&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a sample script for copying values from JSON to a struct using &lt;a href=&#34;https://golang.org/pkg/reflect/&#34;&gt;reflect&lt;/a&gt; package.&lt;/p&gt;&#xA;&lt;h2 id=&#34;script-&#34;&gt;Script :&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xD;&#xA;&#xD;&#xA;import (&#xD;&#xA;&#x9;&amp;#34;encoding/json&amp;#34;&#xD;&#xA;&#x9;&amp;#34;fmt&amp;#34;&#xD;&#xA;&#x9;&amp;#34;reflect&amp;#34;&#xD;&#xA;)&#xD;&#xA;&#xD;&#xA;type obj struct {&#xD;&#xA;&#x9;Key1 string `json:&amp;#34;k1&amp;#34;`&#xD;&#xA;&#x9;Key2 string `json:&amp;#34;k2&amp;#34;`&#xD;&#xA;&#x9;Key3 int64  `json:&amp;#34;k3&amp;#34;`&#xD;&#xA;&#x9;Key4 int    `json:&amp;#34;k4&amp;#34;`&#xD;&#xA;&#x9;Key5 bool   `json:&amp;#34;k5&amp;#34;`&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;func main() {&#xD;&#xA;&#x9;data := `{&amp;#34;k1&amp;#34;: &amp;#34;v1&amp;#34;, &amp;#34;k2&amp;#34;: &amp;#34;v2&amp;#34;, &amp;#34;k3&amp;#34;: 1234567890, &amp;#34;k4&amp;#34;: 456, &amp;#34;k5&amp;#34;: true}`&#xD;&#xA;&#x9;d := map[string]interface{}{}&#xD;&#xA;&#x9;json.Unmarshal([]byte(data), &amp;amp;d)&#xD;&#xA;&#x9;obj := &amp;amp;obj{}&#xD;&#xA;&#x9;s := reflect.ValueOf(obj).Elem()&#xD;&#xA;&#x9;typeOfT := s.Type()&#xD;&#xA;&#x9;for i := 0; i &amp;lt; s.NumField(); i++ {&#xD;&#xA;&#x9;&#x9;for j, f := range d {&#xD;&#xA;&#x9;&#x9;&#x9;if typeOfT.Field(i).Tag.Get(&amp;#34;json&amp;#34;) == j {&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;fl := s.FieldByName(typeOfT.Field(i).Name)&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;switch fl.Kind() {&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;case reflect.Bool:&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;fl.SetBool(f.(bool))&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;case reflect.Int, reflect.Int64:&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;c, _ := f.(float64)&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;fl.SetInt(int64(c))&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;case reflect.String:&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;fl.SetString(f.(string))&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;fmt.Printf(&amp;#34;%+v\n&amp;#34;, obj) // &amp;amp;{Key1:v1 Key2:v2 Key3:1234567890 Key4:456 Key5:true}&#xD;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;result-&#34;&gt;Result :&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;amp;{Key1:v1 Key2:v2 Key3:1234567890 Key4:456 Key5:true}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;the-go-playground&#34;&gt;The Go Playground&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://play.golang.org/p/Rz-GNbFyDfh&#34;&gt;https://play.golang.org/p/Rz-GNbFyDfh&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing JSON object (keys are number and changing every time)</title>
      <link>https://tanaikech.github.io/2018/02/05/parsing-json-object-keys-are-number-and-changing-every-time/</link>
      <pubDate>Mon, 05 Feb 2018 13:25:03 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/02/05/parsing-json-object-keys-are-number-and-changing-every-time/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/62cb5d89bdf2cc596e97ee604431e35f&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This sample script is for parsing JSON object. In the object, the keys are number and changing every time.&lt;/p&gt;&#xA;&lt;h2 id=&#34;object&#34;&gt;Object:&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;key1&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;key2&amp;#34;&lt;/span&gt;: [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            {&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;: [{&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;key3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value3a&amp;#34;&lt;/span&gt;}, {&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;key3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value3b&amp;#34;&lt;/span&gt;}]},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            {&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;: [{&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;key3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value3c&amp;#34;&lt;/span&gt;}, {&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;key3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value3d&amp;#34;&lt;/span&gt;}]}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;script&#34;&gt;Script:&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;package&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;encoding/json&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;strconv&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;type&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;key1&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;Key1&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;key2&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;`json:&amp;#34;key1&amp;#34;`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;type&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;key2&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;Key2&lt;/span&gt; []&lt;span style=&#34;color:#66d9ef&#34;&gt;interface&lt;/span&gt;{} &lt;span style=&#34;color:#e6db74&#34;&gt;`json:&amp;#34;key2&amp;#34;`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;`{&amp;#34;key1&amp;#34;: {&amp;#34;key2&amp;#34;: [{&amp;#34;0&amp;#34;: [{&amp;#34;key3&amp;#34;: &amp;#34;value3a&amp;#34;}, {&amp;#34;key3&amp;#34;: &amp;#34;value3b&amp;#34;}]},{&amp;#34;1&amp;#34;: [{&amp;#34;key3&amp;#34;: &amp;#34;value3c&amp;#34;}, {&amp;#34;key3&amp;#34;: &amp;#34;value3d&amp;#34;}]}]}}`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;k1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;key1&lt;/span&gt;{}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;json&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Unmarshal&lt;/span&gt;([]byte(&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;), &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;k1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;range&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;k1&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Key1&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Key2&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;key&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;ok&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;e&lt;/span&gt;.(&lt;span style=&#34;color:#66d9ef&#34;&gt;map&lt;/span&gt;[&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;]&lt;span style=&#34;color:#66d9ef&#34;&gt;interface&lt;/span&gt;{})[&lt;span style=&#34;color:#a6e22e&#34;&gt;strconv&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Itoa&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;)].([]&lt;span style=&#34;color:#66d9ef&#34;&gt;interface&lt;/span&gt;{}); &lt;span style=&#34;color:#a6e22e&#34;&gt;ok&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;f&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;range&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;key&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%+v\n&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;f&lt;/span&gt;.(&lt;span style=&#34;color:#66d9ef&#34;&gt;map&lt;/span&gt;[&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;]&lt;span style=&#34;color:#66d9ef&#34;&gt;interface&lt;/span&gt;{})[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;key3&amp;#34;&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;result&#34;&gt;Result:&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;value3a&#xD;&#xA;value3b&#xD;&#xA;value3c&#xD;&#xA;value3d&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;the-go-playground&#34;&gt;The Go Playground&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://play.golang.org/p/xm2KvgOIkKH&#34;&gt;https://play.golang.org/p/xm2KvgOIkKH&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v140</title>
      <link>https://tanaikech.github.io/2018/01/25/updated-ggsrun-to-v140/</link>
      <pubDate>Thu, 25 Jan 2018 08:16:54 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/01/25/updated-ggsrun-to-v140/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v140&#34;&gt;ggsrun was updated to v.1.4.0&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.4.0 (January 25, 2018)&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://developers.google.com/apps-script/api/reference/rest/&#34;&gt;Google Apps Script API&lt;/a&gt; was finally released. From this version, ggsrun uses this API. So ggsrun got to be able to use not only projects of standalone script type, but also projects of container-bound script type. I hope this updated ggsrun will be useful for you.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/README.md#from134to140&#34;&gt;To users which are using ggsrun with v1.3.4 and/or less&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;For retrieving, downloading, creating and updating projects, &lt;a href=&#34;https://developers.google.com/apps-script/api/reference/rest/&#34;&gt;Apps Script API&lt;/a&gt; is used.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;About retrieving information of projects, the information from Drive API is more than that from Apps Script API. So I used Drive API in this situation.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/README.md#BasicSettingFlow&#34;&gt;Please read how to enable APIs.&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;ggsrun got to be able to use both standalone scripts and container-bound scripts by Apps Script API.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#UploadFiles&#34;&gt;Create projects&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#Update_Project&#34;&gt;Update projects&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;There are some issues for creating projects.&#xA;&lt;ol&gt;&#xA;&lt;li&gt;After Manifests was added to GAS, the time zone can be set by it. But when a new project is created by API, I noticed that the time zone is different from own local time zone. When a new project is manually created by browser, the time zone is the same to own local time zone. I think that this may be a bug. So I added an option for setting time zone when a new project is created. And also I reported about this to &lt;a href=&#34;https://issuetracker.google.com/issues/72019223&#34;&gt;Google Issue Tracker&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;If you want to create a bound script in Slide, an error occurs. When a bound script can be created to Spreadsheet, Document and Form using Apps Script API. Furthermore, when the bound script in Slide is updated, it works fine. So I think that this may be also a bug. I reported about this to &lt;a href=&#34;https://issuetracker.google.com/issues/72238499&#34;&gt;Google Issue Tracker&lt;/a&gt;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;About this, when you create a bound script in Slides, if ggsrun returns no errors, it means that this issue was solved.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#rearrangescripts&#34;&gt;Both standalone scripts and container-bound scripts can be rearranged.&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The file of &lt;code&gt;appsscript&lt;/code&gt; for Manifests is always displayed to the top of files on the script editor, while the array of files can be changed. I think that this is the specification.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;For the option &lt;code&gt;exe1&lt;/code&gt; for executing GAS, it can use for both standalone scripts and container-bound scripts.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#DownloadFiles&#34;&gt;Delete files using file ID on Google Drive.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#Update_Project&#34;&gt;Delete files in the project.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#UploadFiles&#34;&gt;ggsrun can create new container-bound script in the new Google Docs.&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;For example, ggsrun creates a new Spreadsheet and uploads the script files to the Spreadsheet as a container-bound script.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#RevisionFile&#34;&gt;Retrieve and create versions of projects.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#QA7&#34;&gt;Unified the order of directories for searching &lt;code&gt;client_secret.json&lt;/code&gt; and &lt;code&gt;ggsrun.cfg&lt;/code&gt;.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Some modifications.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;You can read &amp;ldquo;How to install&amp;rdquo; at &lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/README.md#How_to_Install&#34;&gt;here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated goodls to v101</title>
      <link>https://tanaikech.github.io/2018/01/11/updated-goodls-to-v101/</link>
      <pubDate>Thu, 11 Jan 2018 12:13:41 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/01/11/updated-goodls-to-v101/</guid>
      <description>&lt;h1 id=&#34;goodls-was-updated-to-v101&#34;&gt;goodls was updated to v.1.0.1&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.0.1 (January 11, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;In order to download several files, a datafile including URLs using Standard Input and Pipe have gotten to be able to be inputted.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goodls&#34;&gt;https://github.com/tanaikech/goodls&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI Tool - goodls</title>
      <link>https://tanaikech.github.io/2018/01/10/cli-tool-goodls/</link>
      <pubDate>Wed, 10 Jan 2018 14:37:07 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/01/10/cli-tool-goodls/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This is a CLI tool to download shared files from Google Drive.&lt;/p&gt;&#xA;&lt;h1 id=&#34;description&#34;&gt;Description&lt;/h1&gt;&#xA;&lt;p&gt;We have already known that the shared files on Google Drive can be downloaded without the authorization. But when the size of file becomes large (about 40MB), it requires a little ingenuity to download the file. It requires to access 2 times to Google Drive. At 1st access, it retrieves a cookie and a code for downloading. At 2nd access, the file is downloaded using the cookie and code. I created this process as a CLI tool. This tool has the following features.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v134</title>
      <link>https://tanaikech.github.io/2018/01/02/updated-ggsrun-to-v134/</link>
      <pubDate>Tue, 02 Jan 2018 14:32:03 +0900</pubDate>
      <guid>https://tanaikech.github.io/2018/01/02/updated-ggsrun-to-v134/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v134&#34;&gt;ggsrun was updated to v.1.3.4&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.3.4 (January 2, 2018)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Added new option for downloading &amp;lsquo;bound-scripts&amp;rsquo; of Google Sheets, Docs, or Forms file.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;When the bound-scripts are downloaded, the project name cannot be retrieved because Drive API cannot be used for the bound-scripts. So when the bound-scripts are downloaded, the project ID had been used previously. Such filename is not easily to be seen. By this additional option, users can give the filename when it downloads the bound-scripts.&lt;/li&gt;&#xA;&lt;li&gt;The usage is &lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#DownloadBoundScript&#34;&gt;here&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Removed a bug.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;When a project is downloaded, script ID in the project is added to the top of each downloaded script as a comment. There was a problem at the character using for the comment out. This was modified.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;You can check this and download ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create New Project with Original Manifests</title>
      <link>https://tanaikech.github.io/2017/10/31/create-new-project-with-original-manifests/</link>
      <pubDate>Tue, 31 Oct 2017 16:56:58 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/10/31/create-new-project-with-original-manifests/</guid>
      <description>&lt;p&gt;It was found that you can also create new project with your original Manifests using ggsrun. By using this, for example, when you created new project, the project can have libraries, Advanced Google Services and so on at the initial stage. I think that this can be used as a template for Project.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ggsrun u -pn &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Project name&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; -f appsscript.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#ModifyManifests&#34;&gt;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#ModifyManifests&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://tanaikech.github.io/img/demo_manifests2.gif&#34;&#xA;     alt=&#34;Create New Project with Original Manifests&#34;&#xA;     &#xA;     loading=&#34;lazy&#34;&#xA;     decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;You can check this and download ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v133</title>
      <link>https://tanaikech.github.io/2017/10/30/updated-ggsrun-to-v133/</link>
      <pubDate>Mon, 30 Oct 2017 14:00:19 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/10/30/updated-ggsrun-to-v133/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v133&#34;&gt;ggsrun was updated to v.1.3.3&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.3.3 (October 30, 2017)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developers.google.com/apps-script/&#34;&gt;At October 24, 2017, &amp;ldquo;Manifests&amp;rdquo; which is new function for controlling the properties of Google Apps Script was added (GAS).&lt;/a&gt; You can see the detail of &amp;ldquo;Manifests&amp;rdquo; &lt;a href=&#34;https://developers.google.com/apps-script/concepts/manifests&#34;&gt;here&lt;/a&gt;. &lt;strong&gt;In order to modify the manifests from local PC, I added this new function to ggsrun. By using this, you can edit the manifests and update it from your local PC.&lt;/strong&gt; The usage is &lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#ModifyManifests&#34;&gt;here&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Some modifications.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;awesome-points-of-manifests-&#34;&gt;Awesome points of Manifests :&lt;/h2&gt;&#xA;&lt;p&gt;Awesome points of Manifests that I think are below.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v132</title>
      <link>https://tanaikech.github.io/2017/10/20/updated-ggsrun-to-v132/</link>
      <pubDate>Fri, 20 Oct 2017 16:43:52 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/10/20/updated-ggsrun-to-v132/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v132&#34;&gt;ggsrun was updated to v.1.3.2&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;v1.3.2 (October 20, 2017)&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Updated ggsrun&amp;rsquo;s Install manual (README.md). Since I thought that the manual became too complicated, I separated it to &lt;a href=&#34;https://github.com/tanaikech/ggsrun/&#34;&gt;the simple version&lt;/a&gt; and &lt;a href=&#34;https://github.com/tanaikech/ggsrun/tree/master/help&#34;&gt;the detail version&lt;/a&gt;. And also , recently, since Google&amp;rsquo;s specification was updated, about how to deploy API executable and enable APIs for ggsrun&amp;rsquo;s Install manual were updated.&lt;/li&gt;&#xA;&lt;li&gt;From this version, scripts in a project can be rearranged. The rearrangement can be done by interactively on your terminal and/or a configuration file. The usage is &lt;a href=&#34;https://github.com/tanaikech/ggsrun/blob/master/help/README.md#rearrangescripts&#34;&gt;here&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;For rearranging scripts, there is one important point. &lt;strong&gt;When scripts in a project is rearranged, version history of scripts is reset once. So if you don&amp;rsquo;t want to reset the version history, before rearranging, please copy the project.&lt;/strong&gt; By copying project, the project before rearranging is saved.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://github.com/tanaikech/ggsrun/raw/master/help/images/demo_rearrange.gif&#34;&#xA;     alt=&#34;Updated ggsrun to v132&#34;&#xA;     &#xA;     loading=&#34;lazy&#34;&#xA;     decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated go-rearrange and gorearrange to v102</title>
      <link>https://tanaikech.github.io/2017/10/18/updated-go-rearrange-and-gorearrange-to-v102/</link>
      <pubDate>Wed, 18 Oct 2017 14:45:55 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/10/18/updated-go-rearrange-and-gorearrange-to-v102/</guid>
      <description>&lt;h1 id=&#34;go-rearrange-and-gorearrange-were-updated-to-v102&#34;&gt;go-rearrange and gorearrange were updated to v.1.0.2&lt;/h1&gt;&#xA;&lt;p&gt;From this version, data included multi-bytes characters can be used. At Linux, it works fine. At Windows DOS, rearranging and selecting data can be done. But the displayed data is shifted. Although this may be a bug of termbox-go, I don&amp;rsquo;t know the reason. I&amp;rsquo;m sorry. On the other hand, data with only single-byte characters works fine. About MAC, I don&amp;rsquo;t have it. If someone can confirm and tell me it, I&amp;rsquo;m glad.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated go-rearrange and gorearrange to v101</title>
      <link>https://tanaikech.github.io/2017/10/16/updated-go-rearrange-and-gorearrange-to-v101/</link>
      <pubDate>Mon, 16 Oct 2017 15:37:09 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/10/16/updated-go-rearrange-and-gorearrange-to-v101/</guid>
      <description>&lt;h1 id=&#34;go-rearrange-and-gorearrange-were-updated-to-v101&#34;&gt;go-rearrange and gorearrange were updated to v.1.0.1&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;As one of outputs, &lt;strong&gt;indexmode (bool)&lt;/strong&gt; was added. If this is true, the rearranged result is output as the change of index for the source data. For example, if the source data and rearranged data are &lt;code&gt;[&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;]&lt;/code&gt; and &lt;code&gt;[&amp;quot;c&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;a&amp;quot;]&lt;/code&gt;, respectively. The output will become &lt;code&gt;[2, 1, 0]&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;By this, the specification for creating applications will expand.&lt;/p&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/gorearrange&#34;&gt;https://github.com/tanaikech/gorearrange&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI Tool - gorearrange</title>
      <link>https://tanaikech.github.io/2017/10/15/cli-tool-gorearrange/</link>
      <pubDate>Sun, 15 Oct 2017 16:43:21 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/10/15/cli-tool-gorearrange/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This is a CLI tool to interactively rearrange a text data on a terminal.&lt;/p&gt;&#xA;&lt;h1 id=&#34;description&#34;&gt;Description&lt;/h1&gt;&#xA;&lt;p&gt;Since I couldn&amp;rsquo;t find CLI tools for manually rearranging text data, I created this CLI tool.&lt;/p&gt;&#xA;&lt;p&gt;For this, at first, I created a Golang library &lt;a href=&#34;https://github.com/tanaikech/go-rearrange/&#34;&gt;go-rearrange&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://github.com/tanaikech/gorearrange/raw/master/images/demo_ubuntu.gif&#34;&#xA;     alt=&#34;CLI Tool - gorearrange&#34;&#xA;     &#xA;     loading=&#34;lazy&#34;&#xA;     decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/gorearrange&#34;&gt;https://github.com/tanaikech/gorearrange&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Uploading CSV File as Spreadsheet and Modifying Permissions using Golang</title>
      <link>https://tanaikech.github.io/2017/09/21/uploading-csv-file-as-spreadsheet-and-modifying-permissions-using-golang/</link>
      <pubDate>Thu, 21 Sep 2017 15:43:14 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/09/21/uploading-csv-file-as-spreadsheet-and-modifying-permissions-using-golang/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/7ee103c80759a8297da198a5d1e92fc8&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This sample script is for uploading CSV file as Spreadsheet and modifying permissions using Golang.&lt;/p&gt;&#xA;&lt;p&gt;I think that the detail information of &lt;strong&gt;google-api-go-client&lt;/strong&gt; is a bit little. The sample scripts are so little. It retrieves most information from only &lt;a href=&#34;https://godoc.org/google.golang.org/api/drive/v3&#34;&gt;godoc&lt;/a&gt; and &lt;a href=&#34;https://github.com/google/google-api-go-client/tree/master/drive&#34;&gt;GitHub&lt;/a&gt;. So I publish such sample scripts here. If this is useful for you, I&amp;rsquo;m glad.&lt;/p&gt;&#xA;&lt;h2 id=&#34;important-points-&#34;&gt;Important points :&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Give mimeType of file that it wants to upload to &lt;code&gt;options&lt;/code&gt; of &lt;code&gt;Media(r io.Reader, options ...googleapi.MediaOption)&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;In order to give &lt;code&gt;options&lt;/code&gt;, use &lt;code&gt;googleapi.ContentType()&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Give mimeType of file that it wants to convert, when it uploads it to Google Drive, to &lt;code&gt;file&lt;/code&gt; of &lt;code&gt;Create(file *File)&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;In order to give &lt;code&gt;file&lt;/code&gt;, use &lt;code&gt;&amp;amp;drive.File{}&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;For installing permissions, use &lt;code&gt;&amp;amp;drive.Permission{}&lt;/code&gt;. Each parameter is the same to them for Python.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;This sample script uses &lt;a href=&#34;https://developers.google.com/drive/v3/web/quickstart/go&#34;&gt;Quickstart&lt;/a&gt;. So in order to use this sample script, at first, please do Step 1 and Step 2 of the Quickstart.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>spreadsheets.values.batchUpdate using Golang</title>
      <link>https://tanaikech.github.io/2017/09/15/spreadsheets.values.batchupdate-using-golang/</link>
      <pubDate>Fri, 15 Sep 2017 14:14:50 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/09/15/spreadsheets.values.batchupdate-using-golang/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/0f5b15fec7f409cdb568b0c2904fccb2&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;flow-&#34;&gt;Flow :&lt;/h2&gt;&#xA;&lt;p&gt;In my sample script, the script was made using the Quickstart. The flow to use this sample script is as follows.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;For &lt;a href=&#34;https://developers.google.com/sheets/api/quickstart/go&#34;&gt;Go Quickstart&lt;/a&gt;, please do Step 1 and Step 2.&lt;/li&gt;&#xA;&lt;li&gt;Please put &lt;code&gt;client_secret.json&lt;/code&gt; to the same directory with my sample script.&lt;/li&gt;&#xA;&lt;li&gt;Copy and paste my sample script, and create it as new script file.&lt;/li&gt;&#xA;&lt;li&gt;Run the script.&lt;/li&gt;&#xA;&lt;li&gt;When &lt;code&gt;Go to the following link in your browser then type the authorization code:&lt;/code&gt; is shown on your terminal, please copy the URL and paste to your browser. And then, please authorize and get code.&lt;/li&gt;&#xA;&lt;li&gt;Put the code to the terminal.&lt;/li&gt;&#xA;&lt;li&gt;When &lt;code&gt;Done.&lt;/code&gt; is displayed, it means that the update of spreadsheet is done.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;request-body-&#34;&gt;Request body :&lt;/h2&gt;&#xA;&lt;p&gt;For &lt;code&gt;Spreadsheets.Values.BatchUpdate&lt;/code&gt;, &lt;code&gt;BatchUpdateValuesRequest&lt;/code&gt; is required as one of parameters. In this case, the range, values and so on that you want to update are included in &lt;code&gt;BatchUpdateValuesRequest&lt;/code&gt;. The detail information of this &lt;code&gt;BatchUpdateValuesRequest&lt;/code&gt; can be seen at &lt;a href=&#34;https://godoc.org/google.golang.org/api/sheets/v4#BatchUpdateValuesRequest&#34;&gt;godoc&lt;/a&gt;. When it sees &lt;code&gt;BatchUpdateValuesRequest&lt;/code&gt;, &lt;code&gt;Data []*ValueRange&lt;/code&gt; can be seen. Here, please be carefull that &lt;code&gt;Data&lt;/code&gt; is &lt;code&gt;[]*ValueRange&lt;/code&gt;. Also &lt;code&gt;ValueRange&lt;/code&gt; can be seen at &lt;a href=&#34;https://godoc.org/google.golang.org/api/sheets/v4#ValueRange&#34;&gt;godoc&lt;/a&gt;. You can see &lt;code&gt;MajorDimension&lt;/code&gt;, &lt;code&gt;Range&lt;/code&gt; and &lt;code&gt;Values&lt;/code&gt; in &lt;code&gt;ValueRange&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v131</title>
      <link>https://tanaikech.github.io/2017/09/15/updated-ggsrun-to-v131/</link>
      <pubDate>Fri, 15 Sep 2017 10:12:06 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/09/15/updated-ggsrun-to-v131/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v131&#34;&gt;ggsrun was updated to v.1.3.1&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Recently, when scripts on local PC is uploaded to Google Drive as a new project, the time to create on Google became a bit long. (I think that this is due to Google Update.) Under this situation, when the script is uploaded, the timeout error occurs while the new project is created using the script. So the time until timeout of fetch was modified from 10 seconds to 30 seconds. By this, when the script is uploaded, no error occurs and the information of the created project is shown.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You can create a new project on Google Drive using scripts on local PC. The sample command is &lt;code&gt;ggsrun u -f sample.gs1,sample2.gs,sample3.html -pn newprojectname&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;You can check this and download ggsrun at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v130</title>
      <link>https://tanaikech.github.io/2017/08/30/updated-ggsrun-to-v130/</link>
      <pubDate>Wed, 30 Aug 2017 15:08:35 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/08/30/updated-ggsrun-to-v130/</guid>
      <description>&lt;h3 id=&#34;ggsrun-was-updated-to-v130&#34;&gt;ggsrun was updated to v.1.3.0&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;From this version, &lt;a href=&#34;https://developers.google.com/apps-script/guides/bound&#34;&gt;container-bound scripts&lt;/a&gt; can be downloaded. The container-bound script is the script created at the script editor on Google Sheets, Docs, or Forms file.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;In order to download container-bound scripts, the project ID of container-bound scripts is required. The project ID can be retrieved as follows.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Open the project. And please operate follows using click.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;-&amp;gt; File&lt;/li&gt;&#xA;&lt;li&gt;-&amp;gt; Project properties&lt;/li&gt;&#xA;&lt;li&gt;-&amp;gt; Get Script ID (&lt;strong&gt;This is the project ID.&lt;/strong&gt;)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;When a project is downloaded, the filename of HTML file had become &lt;code&gt;.gs&lt;/code&gt;. This bug was modified.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;The usage is &lt;a href=&#34;https://github.com/tanaikech/ggsrun#DownloadBoundScript&#34;&gt;here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exporting Project on Google Drive using Golang Quickstart</title>
      <link>https://tanaikech.github.io/2017/08/27/exporting-project-on-google-drive-using-golang-quickstart/</link>
      <pubDate>Sun, 27 Aug 2017 12:01:58 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/08/27/exporting-project-on-google-drive-using-golang-quickstart/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gist.github.com/tanaikech/29d2d31cbe6e0d9bd662aedb121384f0&#34;&gt;Gists&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a sample script for exporting a project on Google Drive to local PC using Golang Quickstart. A file with refresh token is saved to the same directory with this script as &lt;code&gt;go-quickstart.json&lt;/code&gt;. Before you run this script, please enable Drive API on your Google API console.&lt;/p&gt;&#xA;&lt;h2 id=&#34;points-for-exporting-project&#34;&gt;Points for exporting project&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;In order to export project, both &lt;code&gt;drive.DriveScriptsScope&lt;/code&gt; and &lt;code&gt;drive.DriveScope&lt;/code&gt; have to be included in the scope.&lt;/li&gt;&#xA;&lt;li&gt;The mimeType for exporting has to be &amp;ldquo;application/vnd.google-apps.script+json&amp;rdquo;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;If you already have the file with refresh token, at first, please delete it and run this script. By this, the scopes of refresh token and access token are updated.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v122</title>
      <link>https://tanaikech.github.io/2017/07/12/updated-ggsrun-to-v122/</link>
      <pubDate>Wed, 12 Jul 2017 14:31:57 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/07/12/updated-ggsrun-to-v122/</guid>
      <description>&lt;h3 id=&#34;ggsrun-was-updated-to-v122&#34;&gt;ggsrun was updated to v.1.2.2&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;For Google Docs (spreadsheet, document, slide and drawing), since I noticed that the revision files would not be able to be retrieved using Drive API v3, I modified this using new workaround.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The new workaround is to use Drive API v2. &lt;code&gt;drive.revisions.get&lt;/code&gt; of Drive API v2 can retrieve not only the revision list, but also the export links. I thought of the use of the export links. This became the new workaround.&lt;/li&gt;&#xA;&lt;li&gt;For the files except for Google Docs, the revision files can be retrieved using Drive API v3.&lt;/li&gt;&#xA;&lt;li&gt;The usage is &lt;a href=&#34;https://github.com/tanaikech/ggsrun#RevisionFile&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t know when this workaround will not be able to be used. But if this could not be used, I would like to investigate of other method.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: CLI Tool - gislack</title>
      <link>https://tanaikech.github.io/2017/06/30/updated-cli-tool-gislack/</link>
      <pubDate>Fri, 30 Jun 2017 11:40:41 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/06/30/updated-cli-tool-gislack/</guid>
      <description>&lt;p&gt;gislack is a CLI tool to submit files to both Gist and Slack.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;v1.0.1 (June 30, 2017)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Some modifications related to error handling.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Please check it out. &lt;a href=&#34;https://github.com/tanaikech/gislack&#34;&gt;https://github.com/tanaikech/gislack&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI Tool - gislack</title>
      <link>https://tanaikech.github.io/2017/06/22/cli-tool-gislack/</link>
      <pubDate>Thu, 22 Jun 2017 12:59:22 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/06/22/cli-tool-gislack/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This is a CLI tool to submit files to both Gist and Slack.&lt;/p&gt;&#xA;&lt;h1 id=&#34;description&#34;&gt;Description&lt;/h1&gt;&#xA;&lt;p&gt;When I discuss about developing scripts, I often use Slack. When I submitted a script to Slack, I had saved the script to Gist as a backup. I had done manually this on my browser. Namely, I wanted to be saving the revision of script while I&amp;rsquo;m discussing about the script at Slack. Recently, I wished this process had been able to be automatically run. So I created this tool.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go Library - getcode</title>
      <link>https://tanaikech.github.io/2017/06/21/go-library-getcode/</link>
      <pubDate>Wed, 21 Jun 2017 14:17:39 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/06/21/go-library-getcode/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;This is a Golang library to automatically get an authorization code for retrieving access token using OAuth2.&lt;/p&gt;&#xA;&lt;h2 id=&#34;description&#34;&gt;Description&lt;/h2&gt;&#xA;&lt;p&gt;When it retrieves an access token and refresh token using OAuth2, the code for retrieving them has to be got by authorization on own browser. In order to retrieve the code, in generally, users have to click the authorization button and copy the code on the browser. This library can be automatically got the code by launching HTML server as a redirected server. At first, I have used this for retrieving the code from Google. But recently I noticed that this can be used for other sites. They are Google, GitHub, Slack and so on. This library can be used for creating such applications.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Benchmark: Retrieving Values from Deep Nested JSON at Golang</title>
      <link>https://tanaikech.github.io/2017/06/17/benchmark-retrieving-values-from-deep-nested-json-at-golang/</link>
      <pubDate>Sat, 17 Jun 2017 10:06:24 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/06/17/benchmark-retrieving-values-from-deep-nested-json-at-golang/</guid>
      <description>&lt;p&gt;This sample script is for retrieving values from a deep nested JSON. There are 2 patterns. So for these, the benchmark were measured.&lt;/p&gt;&#xA;&lt;h2 id=&#34;script-&#34;&gt;Script :&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xA;&#xA;import (&#xA;    &amp;#34;encoding/json&amp;#34;&#xA;    &amp;#34;testing&amp;#34;&#xA;)&#xA;&#xA;const (&#xA;    data = `{&#xA;      &amp;#34;A_key1&amp;#34;: {&#xA;        &amp;#34;B_key1&amp;#34;: {&#xA;          &amp;#34;C_key&amp;#34;: &amp;#34;value&amp;#34;&#xA;        }&#xA;      }&#xA;    }`&#xA;)&#xA;&#xA;func BenchmarkB1(b *testing.B) {&#xA;    b.ResetTimer()&#xA;    for i := 0; i &amp;lt; b.N; i++ {&#xA;        var p map[string]interface{}&#xA;        json.Unmarshal([]byte(data), &amp;amp;p)&#xA;        a1 := p[&amp;#34;A_key1&amp;#34;]&#xA;        a2 := p[&amp;#34;A_key1&amp;#34;].(map[string]interface{})[&amp;#34;B_key1&amp;#34;]&#xA;        a3 := p[&amp;#34;A_key1&amp;#34;].(map[string]interface{})[&amp;#34;B_key1&amp;#34;].(map[string]interface{})[&amp;#34;C_key&amp;#34;]&#xA;        _ = a1 // --&amp;gt; map[B_key1:map[C_key:value]]&#xA;        _ = a2 // --&amp;gt; map[C_key:value]&#xA;        _ = a3 // --&amp;gt; value&#xA;    }&#xA;}&#xA;&#xA;func BenchmarkB2(b *testing.B) {&#xA;    b.ResetTimer()&#xA;    for i := 0; i &amp;lt; b.N; i++ {&#xA;        var p map[string]interface{}&#xA;        json.Unmarshal([]byte(data), &amp;amp;p)&#xA;        b1 := p[&amp;#34;A_key1&amp;#34;]&#xA;        temp, _ := json.Marshal(b1)&#xA;        json.Unmarshal(temp, &amp;amp;p)&#xA;        b2 := p[&amp;#34;B_key1&amp;#34;]&#xA;        temp, _ = json.Marshal(b2)&#xA;        json.Unmarshal(temp, &amp;amp;p)&#xA;        b3 := p[&amp;#34;C_key&amp;#34;]&#xA;        _ = b1 // --&amp;gt; map[B_key1:map[C_key:value]]&#xA;        _ = b2 // --&amp;gt; map[C_key:value]&#xA;        _ = b3 // --&amp;gt; value&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;result-&#34;&gt;Result :&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ go test -bench .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BenchmarkB1-4             &lt;span style=&#34;color:#ae81ff&#34;&gt;300000&lt;/span&gt;              &lt;span style=&#34;color:#ae81ff&#34;&gt;4177&lt;/span&gt; ns/op&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BenchmarkB2-4             &lt;span style=&#34;color:#ae81ff&#34;&gt;100000&lt;/span&gt;             &lt;span style=&#34;color:#ae81ff&#34;&gt;13619&lt;/span&gt; ns/op&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PASS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It was found that the process cost of &lt;code&gt;json.Unmarshal()&lt;/code&gt; was high. &lt;code&gt;json.Unmarshal()&lt;/code&gt; for test 2 is 3 times larger than that for test 1.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: CLI Tool - goris</title>
      <link>https://tanaikech.github.io/2017/06/13/updated-cli-tool-goris/</link>
      <pubDate>Tue, 13 Jun 2017 10:28:25 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/06/13/updated-cli-tool-goris/</guid>
      <description>&lt;p&gt;goris is a CLI tool to search for images with Google Reverse Image Search.&lt;/p&gt;&#xA;&lt;p&gt;Today, it was updated to v1.1.0. Please check it out. &lt;a href=&#34;https://github.com/tanaikech/goris&#34;&gt;https://github.com/tanaikech/goris&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;When images are matched to a searched image, web pages with matching images are retrieved. These are web pages displayed on Google top page. When this is not used, images are retrieved. This was added as a boolean option. (This was added by a request.)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Slice Created by Split at Golang</title>
      <link>https://tanaikech.github.io/2017/06/09/slice-created-by-split-at-golang/</link>
      <pubDate>Fri, 09 Jun 2017 09:16:56 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/06/09/slice-created-by-split-at-golang/</guid>
      <description>&lt;p&gt;When a string without no strings is split by &lt;code&gt;strings.Split()&lt;/code&gt;, the created slice is the same to the slice created by &lt;code&gt;make()&lt;/code&gt;. The length of the slice doesn&amp;rsquo;t become zero.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sample-script-&#34;&gt;Sample script :&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xA;&#xA;import (&#xA;    &amp;#34;fmt&amp;#34;&#xA;    &amp;#34;strings&amp;#34;&#xA;)&#xA;&#xA;func main() {&#xA;    sample1a := strings.Split(&amp;#34;&amp;#34;, &amp;#34; &amp;#34;)&#xA;    fmt.Printf(&amp;#34;%v, %v, &amp;#39;%v&amp;#39;, %v, %+q\n&amp;#34;, sample1a, len(sample1a), sample1a[0], len(sample1a[0]), sample1a[0])&#xA;&#xA;    sample1b := make([]string, 1)&#xA;    fmt.Printf(&amp;#34;%v, %v, &amp;#39;%v&amp;#39;, %v, %+q\n&amp;#34;, sample1b, len(sample1b), sample1b[0], len(sample1b[0]), sample1b[0])&#xA;&#xA;    var sample2a []string&#xA;    fmt.Printf(&amp;#34;%v, %v\n&amp;#34;, sample2a, len(sample2a))&#xA;&#xA;    sample2b := []string{}&#xA;    fmt.Printf(&amp;#34;%v, %v\n&amp;#34;, sample2b, len(sample2b))&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;result-&#34;&gt;Result :&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;strings.Split() : [], 1, &amp;#39;&amp;#39;, 0, &amp;#34;&amp;#34;&#xA;make()          : [], 1, &amp;#39;&amp;#39;, 0, &amp;#34;&amp;#34;&#xA;var                : [], 0&#xA;[]string{}      : [], 0&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Changing from &#39;float64&#39; to &#39;int&#39; for Values did Unmarshal using &#39;map[string]interface{}&#39;</title>
      <link>https://tanaikech.github.io/2017/06/02/changing-from-float64-to-int-for-values-did-unmarshal-using-mapstringinterface/</link>
      <pubDate>Fri, 02 Jun 2017 17:22:13 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/06/02/changing-from-float64-to-int-for-values-did-unmarshal-using-mapstringinterface/</guid>
      <description>&lt;p&gt;This sample is for changing from &amp;ldquo;float64&amp;rdquo; to &amp;ldquo;int&amp;rdquo; for values did unmarshal using &lt;code&gt;map[string]interface{}&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;When it did unmarshal using map[string]interface{}, a number with &amp;ldquo;int&amp;rdquo; was changed to &amp;ldquo;float64&amp;rdquo;. And it shows an error as follows.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Error :&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;panic: interface conversion: interface {} is float64, not int&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Sample Script :&lt;/strong&gt;&#xA;It solves using following script.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xA;&#xA;import (&#xA;    &amp;#34;encoding/json&amp;#34;&#xA;    &amp;#34;fmt&amp;#34;&#xA;    &amp;#34;reflect&amp;#34;&#xA;)&#xA;&#xA;func main() {&#xA;    data := `{&amp;#34;key&amp;#34;: 10}`&#xA;    var i map[string]interface{}&#xA;    json.Unmarshal([]byte(data), &amp;amp;i)&#xA;&#xA;    val1 := i[&amp;#34;key&amp;#34;]&#xA;    fmt.Printf(&amp;#34;%v, %v\n&amp;#34;, val1, reflect.TypeOf(val1)) // 10, float64&#xA;&#xA;    i[&amp;#34;key&amp;#34;] = int(i[&amp;#34;key&amp;#34;].(float64))&#xA;    val2 := i[&amp;#34;key&amp;#34;]&#xA;    fmt.Printf(&amp;#34;%v, %v\n&amp;#34;, val2, reflect.TypeOf(val2)) // 10, int&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;https://play.golang.org/p/kHroZ1rHVQ&#34;&gt;Go Playground&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Replacing JSON Key by Golang</title>
      <link>https://tanaikech.github.io/2017/06/02/replacing-json-key-by-golang/</link>
      <pubDate>Fri, 02 Jun 2017 11:56:30 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/06/02/replacing-json-key-by-golang/</guid>
      <description>&lt;p&gt;This sample is for replacing JSON key by golang.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xA;&#xA;import (&#xA;    &amp;#34;encoding/json&amp;#34;&#xA;    &amp;#34;fmt&amp;#34;&#xA;)&#xA;&#xA;func main() {&#xA;    json1 := `{&amp;#34;key1&amp;#34;: &amp;#34;value1&amp;#34;}`&#xA;&#xA;    obj := map[string]interface{}{}&#xA;    json.Unmarshal([]byte(json1), &amp;amp;obj)&#xA;&#xA;    fmt.Println(obj) // &amp;lt;-- map[key1:value1]&#xA;&#xA;    obj[&amp;#34;key2&amp;#34;] = obj[&amp;#34;key1&amp;#34;]&#xA;    delete(obj, &amp;#34;key1&amp;#34;)&#xA;&#xA;    fmt.Println(obj) // &amp;lt;-- map[key2:value1]&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Benchmark: Splitting Command-Line Arguments by Golang</title>
      <link>https://tanaikech.github.io/2017/06/02/benchmark-splitting-command-line-arguments-by-golang/</link>
      <pubDate>Fri, 02 Jun 2017 10:59:31 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/06/02/benchmark-splitting-command-line-arguments-by-golang/</guid>
      <description>&lt;p&gt;This sample script is for splitting command-line arguments by golang. There are 2 types. One is the regular expression is used. Another is that &lt;code&gt;Split()&lt;/code&gt; and &lt;code&gt;TrimSpace()&lt;/code&gt; are used.&lt;/p&gt;&#xA;&lt;p&gt;Here, each process speed was compared.&lt;/p&gt;&#xA;&lt;h2 id=&#34;script-&#34;&gt;Script :&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;package main&#xA;&#xA;import (&#xA;    &amp;#34;regexp&amp;#34;&#xA;    &amp;#34;strings&amp;#34;&#xA;    &amp;#34;testing&amp;#34;&#xA;)&#xA;&#xA;func BenchmarkB1(b *testing.B) {&#xA;    str := &amp;#34;test1.txt, test2.txt&amp;#34;&#xA;    b.ResetTimer()&#xA;    for i := 0; i &amp;lt; b.N; i++ {&#xA;        ar := regexp.MustCompile(`\s*,\s*`).Split(str, -1)&#xA;        var result []string&#xA;        for _, x := range ar {&#xA;            result = append(result, x) // --&amp;gt; &amp;#39;test.js&amp;#39;, &amp;#39;test2.py&amp;#39;&#xA;        }&#xA;        _ = result&#xA;    }&#xA;}&#xA;&#xA;func BenchmarkB2(b *testing.B) {&#xA;    str := &amp;#34;test1.txt, test2.txt&amp;#34;&#xA;    b.ResetTimer()&#xA;    for i := 0; i &amp;lt; b.N; i++ {&#xA;        ar := strings.Split(str, &amp;#34;,&amp;#34;)&#xA;        var result []string&#xA;        for _, x := range ar {&#xA;            result = append(result, strings.TrimSpace(x)) // --&amp;gt; &amp;#39;test.js&amp;#39;, &amp;#39;test2.py&amp;#39;&#xA;        }&#xA;        _ = result&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;result-&#34;&gt;Result :&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ go test -bench .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BenchmarkB1-4             &lt;span style=&#34;color:#ae81ff&#34;&gt;100000&lt;/span&gt;             &lt;span style=&#34;color:#ae81ff&#34;&gt;13048&lt;/span&gt; ns/op&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BenchmarkB2-4            &lt;span style=&#34;color:#ae81ff&#34;&gt;3000000&lt;/span&gt;               &lt;span style=&#34;color:#ae81ff&#34;&gt;399&lt;/span&gt; ns/op&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PASS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Just as expected, the regular expression was slow. And it&amp;rsquo;s much slower than that of &lt;code&gt;Split()&lt;/code&gt; and &lt;code&gt;TrimSpace()&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v121</title>
      <link>https://tanaikech.github.io/2017/05/28/updated-ggsrun-to-v121/</link>
      <pubDate>Sun, 28 May 2017 14:20:08 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/05/28/updated-ggsrun-to-v121/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v121&#34;&gt;ggsrun was updated to v.1.2.1&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Configuration file (&lt;code&gt;ggsrun.cfg&lt;/code&gt;) became to be able to be read using the environment variable.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;You can check this at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Decoding JSON by Golang</title>
      <link>https://tanaikech.github.io/2017/05/21/decoding-json-by-golang/</link>
      <pubDate>Sun, 21 May 2017 11:55:34 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/05/21/decoding-json-by-golang/</guid>
      <description>&lt;p&gt;Decoding JSON by Golang&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;func main() {&#xA;    data := `{&#xA;      &amp;#34;A_key1&amp;#34;: {&#xA;        &amp;#34;B_key1&amp;#34;: {&#xA;          &amp;#34;C_key&amp;#34;: &amp;#34;value&amp;#34;&#xA;        }&#xA;      },&#xA;      &amp;#34;A_key2&amp;#34;: {&#xA;        &amp;#34;B_key2&amp;#34;: {&#xA;          &amp;#34;C_key&amp;#34;: &amp;#34;value&amp;#34;&#xA;        }&#xA;      },&#xA;      &amp;#34;A_key3&amp;#34;: {&#xA;        &amp;#34;B_key3&amp;#34;: {&#xA;          &amp;#34;C_key&amp;#34;: &amp;#34;value&amp;#34;&#xA;        }&#xA;      },&#xA;      &amp;#34;A_key4&amp;#34;: {&#xA;        &amp;#34;B_key4&amp;#34;: {&#xA;          &amp;#34;C_key&amp;#34;: &amp;#34;value&amp;#34;&#xA;        }&#xA;      },&#xA;      &amp;#34;A_key5&amp;#34;: {&#xA;        &amp;#34;B_key5&amp;#34;: {&#xA;          &amp;#34;C_key&amp;#34;: &amp;#34;value&amp;#34;&#xA;        }&#xA;      }&#xA;    }`&#xA;    var p interface{}&#xA;    json.NewDecoder(strings.NewReader(data)).Decode(&amp;amp;p)&#xA;    fmt.Println(p)&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;https://play.golang.org/p/A86B8YHd5m&#34;&gt;Go Playground&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dynamically Creating JSON by Golang</title>
      <link>https://tanaikech.github.io/2017/05/21/dynamically-creating-json-by-golang/</link>
      <pubDate>Sun, 21 May 2017 10:55:35 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/05/21/dynamically-creating-json-by-golang/</guid>
      <description>&lt;p&gt;Dynamically Creating JSON by Golang&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;obj := map[string]interface{}{}&#xA;obj[&amp;#34;hoge&amp;#34;] = &amp;#34;huga&amp;#34;&#xA;fmt.Println(obj)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;https://play.golang.org/p/7mLXgwddWO&#34;&gt;Go Playground&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Retrieving Response Headers by Golang</title>
      <link>https://tanaikech.github.io/2017/05/21/retrieving-response-headers-by-golang/</link>
      <pubDate>Sun, 21 May 2017 10:43:32 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/05/21/retrieving-response-headers-by-golang/</guid>
      <description>&lt;p&gt;Retrieving Response Headers by Golang&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;res, _ := client.Do(req)&#xA;contentType := res.Header.Get(&amp;#34;Content-Type&amp;#34;)&#xA;contentLength := res.Header.Get(&amp;#34;Content-Length&amp;#34;)&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v120</title>
      <link>https://tanaikech.github.io/2017/05/19/updated-ggsrun-to-v120/</link>
      <pubDate>Fri, 19 May 2017 08:49:06 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/05/19/updated-ggsrun-to-v120/</guid>
      <description>&lt;h1 id=&#34;ggsrun-was-updated-to-v120&#34;&gt;ggsrun was updated to v.1.2.0&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Added a command for retrieving revision files on Google Drive.&lt;/li&gt;&#xA;&lt;li&gt;Some modifications.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;You can check this at &lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: CLI Tool - goris</title>
      <link>https://tanaikech.github.io/2017/05/16/updated-cli-tool-goris/</link>
      <pubDate>Tue, 16 May 2017 12:56:16 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/05/16/updated-cli-tool-goris/</guid>
      <description>&lt;p&gt;goris is a CLI tool to search for images with Google Reverse Image Search.&lt;/p&gt;&#xA;&lt;p&gt;Today, it was updated to v1.0.1. Please check it out. &lt;a href=&#34;https://github.com/tanaikech/goris&#34;&gt;https://github.com/tanaikech/goris&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;When number of retrieved URLs is smaller than number of default output, an error had occurred. This was fixed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dynamical Nested JSON Objects by Golang</title>
      <link>https://tanaikech.github.io/2017/05/09/dynamical-nested-json-objects-by-golang/</link>
      <pubDate>Tue, 09 May 2017 15:58:08 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/05/09/dynamical-nested-json-objects-by-golang/</guid>
      <description>&lt;p&gt;This sample script dynamically creates nested JSON objects.&lt;/p&gt;&#xA;&lt;h3 id=&#34;script&#34;&gt;Script&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;obj := map[string]interface{}{}&#xA;for i := 1; i &amp;lt;= 5; i++ {&#xA;    value := map[string]interface{}{&#xA;        fmt.Sprintf(&amp;#34;B_key%d&amp;#34;, i): map[string]interface{}{&#xA;            &amp;#34;C_key&amp;#34;: &amp;#34;value&amp;#34;,&#xA;        },&#xA;    }&#xA;    obj[fmt.Sprintf(&amp;#34;A_key%d&amp;#34;, i)] = value&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;result&#34;&gt;Result&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;A_key1&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;B_key1&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;C_key&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;A_key2&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;B_key2&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;C_key&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;A_key3&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;B_key3&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;C_key&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;A_key4&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;B_key4&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;C_key&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;A_key5&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;B_key5&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;C_key&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Updated: CLI Tool - gogauth</title>
      <link>https://tanaikech.github.io/2017/05/09/updated-cli-tool-gogauth/</link>
      <pubDate>Tue, 09 May 2017 09:00:04 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/05/09/updated-cli-tool-gogauth/</guid>
      <description>&lt;p&gt;gogauth is a CLI tool to easily retrieve access token for using APIs on Google.&lt;/p&gt;&#xA;&lt;p&gt;I thought that if the access token can easily retrieve, it may be useful for users who can use various convenience Google APIs. So I created this. Also this can be used for testing sample script like the demo. If this will be helpful for you, I&amp;rsquo;m glad.&lt;/p&gt;&#xA;&lt;p&gt;Today, it was updated to v2.0.1. Please check it out. &lt;a href=&#34;https://github.com/tanaikech/gogauth&#34;&gt;https://github.com/tanaikech/gogauth&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated ggsrun to v110</title>
      <link>https://tanaikech.github.io/2017/04/30/updated-ggsrun-to-v110/</link>
      <pubDate>Sun, 30 Apr 2017 11:49:35 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/04/30/updated-ggsrun-to-v110/</guid>
      <description>&lt;h2 id=&#34;updated-ggsrun-to-v110&#34;&gt;Updated ggsrun to v.1.1.0&lt;/h2&gt;&#xA;&lt;p&gt;Added a command for updating existing project on Google Drive. One of scripts in the project can be also updated.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/tanaikech/ggsrun&#34;&gt;https://github.com/tanaikech/ggsrun&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI Tool - goris</title>
      <link>https://tanaikech.github.io/2017/04/26/cli-tool-goris/</link>
      <pubDate>Wed, 26 Apr 2017 16:52:10 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/04/26/cli-tool-goris/</guid>
      <description>&lt;h3 id=&#34;overview&#34;&gt;Overview&lt;/h3&gt;&#xA;&lt;p&gt;This is a CLI tool to search for images with &lt;strong&gt;Go&lt;/strong&gt;ogle &lt;strong&gt;R&lt;/strong&gt;everse &lt;strong&gt;I&lt;/strong&gt;mage &lt;strong&gt;S&lt;/strong&gt;earch.&lt;/p&gt;&#xA;&lt;h3 id=&#34;motivation&#34;&gt;Motivation&lt;/h3&gt;&#xA;&lt;p&gt;Because I had wanted to search for images with an image URL and file on my terminal, I created this. This can download images from searched image URLs.&lt;/p&gt;&#xA;&lt;p&gt;&lt;font color=&#34;#3366CC&#34;&gt;&lt;strong&gt;The detail information and how to get this are &lt;a href=&#34;https://github.com/tanaikech/goris&#34;&gt;https://github.com/tanaikech/goris&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI Tool - ggsrun</title>
      <link>https://tanaikech.github.io/2017/04/24/cli-tool-ggsrun/</link>
      <pubDate>Mon, 24 Apr 2017 15:07:11 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/04/24/cli-tool-ggsrun/</guid>
      <description>&lt;h3 id=&#34;overview&#34;&gt;Overview&lt;/h3&gt;&#xA;&lt;p&gt;This is a CLI tool to execute Google Apps Script (GAS) on a terminal.&lt;/p&gt;&#xA;&lt;h3 id=&#34;motivation&#34;&gt;Motivation&lt;/h3&gt;&#xA;&lt;p&gt;Will you want to develop GAS using CoffeeScript on your local PC? Generally, when we develop GAS, we have to login to Google using own browser and develop it using Javascript on the Script Editor. Recently, I have wanted to have more convenient local-environment for developing GAS. So I created this &amp;ldquo;ggsrun&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://tanaikech.github.io/img/readme_sublimedemo.gif&#34;&#xA;     alt=&#34;CLI Tool - ggsrun&#34;&#xA;     &#xA;     loading=&#34;lazy&#34;&#xA;     decoding=&#34;async&#34;&gt;&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: CLI Tool - gogauth</title>
      <link>https://tanaikech.github.io/2017/04/19/updated-cli-tool-gogauth/</link>
      <pubDate>Wed, 19 Apr 2017 13:34:36 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/04/19/updated-cli-tool-gogauth/</guid>
      <description>&lt;p&gt;gogauth is a CLI tool to retrieve easily access token for using APIs on Google.&lt;/p&gt;&#xA;&lt;p&gt;Today, it was updated with big changes. Please check it out.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/tanaikech/gogauth&#34;&gt;https://github.com/tanaikech/gogauth&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI Tool - gogauth</title>
      <link>https://tanaikech.github.io/2017/02/24/cli-tool-gogauth/</link>
      <pubDate>Fri, 24 Feb 2017 12:29:32 +0900</pubDate>
      <guid>https://tanaikech.github.io/2017/02/24/cli-tool-gogauth/</guid>
      <description>&lt;p&gt;Released a CLI tool for easily retrieving accesstoken from Google OAuth2. The title is &lt;strong&gt;&lt;a href=&#34;https://github.com/tanaikech/gogauth&#34;&gt;gogauth&lt;/a&gt;&lt;/strong&gt;. When I have seen stackoverflow, I knew that it is difficult to retrieve accesstoken from Google OAuth2. So I made this.&lt;/p&gt;&#xA;&lt;p&gt;Features of this CLI tool are as follows.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Retrieves easily accesstoken from Google OAuth2 for using Drive API.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;If you have PhantomeJS, this retrieves &amp;ldquo;code&amp;rdquo; from Google using it. So you don&amp;rsquo;t need to launch your browser for retrieving &amp;ldquo;code&amp;rdquo;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
