【GO】外部パッケージのレシーバ定義

golangではtypeによる型定義とレシーバと呼ばれるメソッド定義ができます。

複数の外部パッケージを同時使用するときなどにレシーバ追加をしたいときがあるんですが、言語規則のためそのままだと追加できません。

基本的なことからおさらいしつつ対策を考えます。

続きを読む 【GO】外部パッケージのレシーバ定義

【GO】WordPress(Apache)とginを同時に動かす

bitnamiのwordpressが動いているサーバーにgolangのWEBサービスを追加します。

アプリ自体は8080ポートで実行してサブディレクトリにマップする形です。

Apacheで他WEBサーバーを動かす場合も同様のやり方で行けると思います。

続きを読む 【GO】WordPress(Apache)とginを同時に動かす

【GO】ginで作ったWEBサービスを利用可能にする

LinuxサーバーでWEBアプリを公開する際のメモ。

単体で公開したり、ポートを分けて公開したり、サブディレクトリで公開したり。

続きを読む 【GO】ginで作ったWEBサービスを利用可能にする

【GO】タイムアウトや定期実行処理

golangで定期処理などを書きたくなったのでどうやって書くか考えます。

とりあえずtimeパッケージかcontextパッケージあたりを使うと良さそうなので2つとも使ってみます。

続きを読む 【GO】タイムアウトや定期実行処理

【GO】fmt.Printf関数で配列の中身をフォーマットする

配列の中身つ1つに対してPrintf系のフォーマットにかけることを考えます。

さらにそれを利用して独自のSprintf関数を作ったりしてみる。

続きを読む 【GO】fmt.Printf関数で配列の中身をフォーマットする

【GO】桁数の分からない数値を文字列にする

桁数を指定せずに大きな数値や精度の高い数値をそのまま文字列にしようとすると、途中で切れたり指数表記になったりする。

float64の数値をそのまま(非指数表記)でstringに変換したい。

簡単そうで意外にできなかったので方法を覚書きしておく。

続きを読む 【GO】桁数の分からない数値を文字列にする

【GO】html/templateにタグ入り文字列を渡す

template/htmlを使ってHTML表示を行う時、テンプレートの一部の表示方法を変えたいときがあります。

変えたい部分だけ変えたテンプレートを複数用意する方法もありますが、面倒というか煩雑になるのでパース部分に直接HTMLタグを書いて変更させたい。

そのままやるとタグ部分が文字列になったのでその対策方法メモ。

Execute部分などはgin-gonic/ginを使っているので省略。

続きを読む 【GO】html/templateにタグ入り文字列を渡す

【GO】gin + statikのシングルバイナリファイルサーバ

ginでシングルバイナリからファイルサーブすることを考えた。

用途を考えるとシングルバイナリ化する利点はあまりないこともあり、標準メソッドだけではできなかったので実装メモです。

以前に書いた記事も参考にした。

statikの使い方

statikパッケージを使うとフォルダをZIP化(バイナリ化)してhttp.FileSystemとして扱えるようになる。

ginのstaticFS

ファイルシステムの静的ファイルをサーブできるメソッド。

これが一番簡単だけどルートアクセスに設定できません。

static middleware(github

ミドルウェアを使うことでルートに設定可能です。

これをstatikで使えるようにします。

Serveの第2引数はServeFileSystemなのでインターフェースを満たす必要がある。

 

Existsメソッドが必要そうなのでミドルウェアの実装から必要なものを抜き出して実装してみます。

これでルートからでもファイルサーブできるようになった。

【GO】gin+Reactのルーティング

Golang製Web Framework「gin」とjavascriptライブラリ「React」を合わせてウェブサービスを作ることを考えます。

ルーティング部分でちょっと詰まったので覚書き。

続きを読む 【GO】gin+Reactのルーティング

【GO】ginのシングルバイナリにtemplateを含める

前にginを使ったWEBアプリをシングルバイナリ化をする場合、テンプレートを含めるなら別途実装が必要になると書いた。

現在はgolangでフロント部分を書かない方針だけど、そのうち必要になるかもしれないのでフォルダ内のテンプレートを一括で読むくらいの処理を書いてみました。

具体的にはginのLoadHTMLGlobの置き換えです。

続きを読む 【GO】ginのシングルバイナリにtemplateを含める