Golang

VPS×Docker Compose×Docker Machine×Golang×Nginx×Let's Encryptでの本番運用

ポエム

概要GolangのアプリケーションをVPSでDocker-Composeを使って本番運用してみたかったので、トライしてみた。 環境実際に自分がトライした環境をまとめておく。 VPS(Conoha) お名前ドットコム(ドメイン管理) Docker Compose(本番とローカルの構成を別ファイルで構築) Docker Machine(デプロイで使う) Let's Encrypt(TLS/S...

Docker Docker Compose Golang Let's Encrypt Nginx Docker Machine VPS

GolangでgoblinというURLルーターを自作した

アプリケーション

概要GolangでURLルーターを自作したので実装するまでの過程をメモしておく。 準備URLルーターを実装する際に行った下準備をまとめる。 データ構造とアルゴリズムURLをどのようにマッチングさせるか、というロジックについて検討する。 多くのライブラリでは、データ構造として木構造がよく扱われているので、どんな種類の木構造を採用するかを考えてみた。 文字列探索に特化した木の中で、時間的・メモリ的計算...

Golang URLルーティング

Golangでトライ木を実装する

アルゴリズムとデータ構造

概要トライ木のアルゴリズムと実装についてかく。 bmf-san/road-to-algorithm-master  トライ木とはトライ木(プレフィックス木ともいう。英語はそれぞれ、trie、prefix tree)は文字列の集合を扱う木構造の一種。 各ノードは単一または複数の文字列あるいは数値を持ち(ノードは必ずしも値を持つ必要はない)、根ノードから葉に向かって探索して値をつなげていくことで単語を...

Golang 基数木 トライ木

Golangでクリーンアーキテクチャに入門する

アプリケーション

概要GolangでClean Architectureの実装に挑戦したみたので整理しておく。 内容は概ねスライドの内容を踏襲している。 理解しきれていないところがあったり、自分の解釈、考えを記述しているので、正しくない部分もあるかもしれない。 スライドLTをする機会があったのでスライドを貼っておく。 Dive to clean architecture with golang ソースソースはこれ。...

Clean Architecture Golang DIP

Goでmysqldumpツールをつくる

アプリケーション

概要このブログのDBバックアップを原始人のごとく手動でやっていたのでコマンド一発でバックアップをリモートからローカルにバックアップを取れるツールをgoでつくってみた。 パッケージ "net" ネットワークI/O、TCP/IP、UDP、ドメイン名前解決、Unixドメインソケットなどのインターフェースを提供してくれるやつ "time" 時間の計算や表示のため...

Golang MySQL ssh mysqldump

Golangのインターフェース概要

アプリケーション

概要Golangのインターフェースについてまとめる。 Golangのインターフェースとは 特定のメソッドの型だけを列挙した型 インターフェースFooで宣言したメソッドが全て実装されている構造体は、型Fooとして扱うことができる。 インタフェースを使うとポリモーフィズムを実現することができる インターフェースの定義type <型名> interface { <メソッド名(&l...

Golang

Golangのポインタ概要

アプリケーション

概要Golangのポインタの基本では参照渡しと値渡しの違いの観点からポインタについて書いたが、それ以前にポインタを扱っているうちに混乱してきたため、ポインタの概要をまとめる。 ポインタ型とは メモリー上のアドレスを記憶する変数の型のこと ポインタ型の定義 *を使って定義する var s *string // 変数sはstring型のポインタ。型は*string アドレス演算子と間接参照演算子ア...

Golang

Golangでの変数定義・宣言のパターンまとめ

アプリケーション

概要Golangでの変数定義・宣言のパターンをまとめる 変数の定義・宣言における注意 1文字目が大文字の場合は、他のパッケージからも見える変数 1文字目が小文字の場合は、そのパッケージでしか見えない変数 変数の定義・宣言Variable declarationsvar i int fmt.Printf("%T", i) // int var a, b, c string fmt.Printf(...

Golang