第2の人生の構築ログ

自分の好きなことをやりつつ、インカムもしっかりと。FIRA60 (Financial Independence, Retire Around 60) の実現を目指します。SE を生業としていますが、自分でプログラミングしながら自分が欲しいと思うアプリケーションを作ることが楽しみです。旅行と温泉、音楽と読書は欠かすことができません。

Golang

【Go言語】IntelliJ IDEA を使っている時に(f *os.File) Close()、os.Interrupt などが認識されない

Go のバージョンを 1.9 に上げた以降、(f *os.File) Close()、os.Interrupt が急に IntelliJ IDEA で認識されなくなってしまいました・・・ [ 何も悪いことはしておらず、何も問題ないはずなのですが・・・はて?何を怒られているのでしょうか・・・ 結構同…

【Go言語】チャネル (channel) のクローズ (close) 〜 チャネルのバッファ内の値を確実に全て取り出す

チャネルの状態には、オープンとクローズ(closed)の状態があり、make することで生成された チャネル はオープンな状態となり、close(チャネル) で明示的に閉じることができます。 チャネル が close されたことを複数のゴルーチン (goroutine) へ一斉に伝え…

【Go言語】html/template で、意外と分かり難い"Uncaught SyntaxError: Unexpected token '<'" エラーの原因

久しぶりに Go 言語のテンプレート(html/template)を使用し、テンプレートの HTML から外部ファイルを読み込もうとしていました。そこで遭遇した以下のエラー。 原因がわかってしまえば、そりゃそうでしょう、となるのですが、以下のエラーだけ見ると、何が…

【Go言語】Go 言語で WebSocket を使ってみる

Webにおいて双方向通信を行うためのプロトコルの一つである WebSocket 使う必要があったので、まずはどのようなものか、Go 言語でシンプルに実装してみます。 実装するライブラリにはいろいろありそうですが、ここでは、golang.org/x で提供される準標準パッ…

【Go言語】Bitbucket / Github の private リポジトリを Go Get する〜その2 ("410 Gone エラー")

Bitbucket / Github の private リポジトリを Go Get する方法を以前書いていたのですが、これだけでは現状失敗することに先日気付きました。 www.morelife.work 上記の設定を行っていたとしても、現状以下のような 410 Gone エラーに遭遇します。 以下は bi…

【GCP】App Engine (GAE)で独自(カスタム)ドメインの利用と常時HTTPS化を行う

以前、GAE を使って Web アプリ/静的 Web コンテンツを公開するメモを書いていました。 www.morelife.work 前回の場合、確かにコンテンツの公開は行えていますが、そのアクセス用の FQDN (URL) が GAE が用意するデフォルトのホスト名となっていました(通常 <project id></project>…

【Go言語】channel(チャネル)をキューとして使う / 固定数のgoroutine(ゴルーチン)を起動して処理を分散させて平行処理する

Go言語には平行処理を行うために goroutine (ゴルーチン) というものが用意されており、非常に便利です。この goroutine とセットで使うことになる channel は goroutine 間の値の受け渡しに使われます。非同期で実行される goroutine 間でデータの受け渡し…

【Go言語】株価データを無料でダウンロードする (「株式投資メモ」編)

始値、高値、安値、終値、出来高といった株価データを生データでスクリプトや何かのプログラムで処理したいときがあります。 有償であれば生データを提供するサービスがいろいろありますが、無料となると限定的になってきます。 米国/日本の yahoo finance …

Go 言語の html/template で独自関数を使う

Ruby であれば erb、Java であれば jsp といったように各言語にHTML(/text) へのコードの埋め込みが可能なテンプレートエンジンが用意されています。Go にもテンプレートエンジンがあり、HTML には html/template が使えます。 まぁ、View であるテンプレー…

Go 言語での Web アプリの実装基礎 / これがわからないと混乱する「ハンドラの正体」編

最近自身初の Go 言語での Web アプリを書いており、Go ネタ続きます。 Go は標準ライブラリだけで十分な Web サーバ/アプリの実装が行えると言われています。外部/3rd パーティーのライブラリを使ってその依存性などに悩む必要もないと。確かに触っていると…

Google App Engine (GAE) を使って Go Web アプリ/静的 Web コンテンツを公開する (その2)

前回は簡単な Go Web アプリケーションを GAE の環境に配置(deploy)するところまで記載しました。 www.morelife.work 今回は、続けて Go アプリ以外の静的コンテンツの公開と Go のテンプレートの利用を行っていきます。 GAE で静的ファイルを公開する GAE …

Google App Engine (GAE) を使って Go Web アプリ/静的 Web コンテンツを公開する (その1)

Google Cloud Platform (GCP) が提供するアプリケーションの実行環境 Google App Engine (GAE)。最近はあまり言われなくなってきましたが、所謂 PaaS (Platform as a Service) と言われる環境です。今では実行環境の運用を考慮する必要のない「サーバーレス…

インラインで(テキストで)画像をHTMLに埋め込む (Go,Javaで画像データをBase64に)

通常 HTML に画像を埋め込む場合には、画像ファイルがあって、その画像ファイルを img タグの src 属性で参照することになります。 <img src="example.png" alt="サンプル画像"> 画像ファイルを表示させるには、この方法だけではなく、Data URI スキームと言われる仕様があり、インラインで(テキストで)…

Bitbucket / Github の private リポジトリを Go Get する

go get というのは、go 言語のパッケージマネージャのようなものです。外部ライブラリを導入したい時には go get を使って Github、Bitbucket といったリポジトリからライブラリをローカル環境にダウンロードしてきてくれます。 通常、go get で指定されるリ…

はてなブログの記事をローカル(PC/Mac)で管理、編集する

サーバにだけ情報をおいている状況で、ネットワーク環境がない時に、必要な情報が見られずに困った経験を過去何度かしています。また、ちょっと前までは、ブラウザを使った文書の編集は億劫で、ローカルにファイルを持ってきて使い慣れているエディタで編集…