タグ

ブックマーク / blog.monochromegane.com (4)

  • CSVテキストをMarkdown形式のテーブルに変換するツールをつくった

    Markdown形式のテーブル記法をいつまでたってもうろ覚えで、毎回検索したり、変換サイトにアクセスするのが面倒だったのでツールをつくりました。嘘です。Go書きたかっただけです。 使い方 CSVテキストを標準入力から受け取って整形済みのMarkdown形式テーブルを出力します。 $ mdt < hoge.csv | headerA | headerB | | ------- | ---------------------- | | short | very very long content | 連携 コマンドラインツールなので、pbpasteやAutomatorと組み合わせて好きなように使えます。 以下は、Automatorのサービスとして登録したmdtをGitHubのIssue作成時に呼び出している様子です。 便利っぽい。 機能 CSV/TSVに対応 タブ区切りにも対応しているのでエク

    CSVテキストをMarkdown形式のテーブルに変換するツールをつくった
  • Go言語でActiveRecordライクなORMをつくった

    Goで DataMapperじゃなく、ActiveRecordライクにDB操作したいと思ってつくってみました。 go/parserとgo/astでソースを解析、個々の構造体ごとにARなコードを生成します。 argen ActiveRecord** Gen**eratorでargenです。 クイックスタート テーブルを表す構造体に+ARアノテーションをマークします。

    Go言語でActiveRecordライクなORMをつくった
  • Go言語での構造体実装パターン

    Go言語での構造体実装は、埋込や独自コンセプトのインターフェースといったGo言語独自の機能を理解して行う必要があります。 今年からGo言語を始めましたが理解が曖昧なままだと実装に迷うことが何度かありました。今回よい機会なので、Go言語での構造体実装パターンとしてまとめてみることにしました。 構造体実装パターン 実装パターンの洗い出しとして、GoFデザインパターンをGo言語で実装する手法をとりました。 その中で繰り返し現れる実装をGo言語での構造体実装パターンとしてまとめてみました。 コンストラクタ関数 エクスポートによるアクセス許可 インターフェースによるポリモフィズム 構造体によるポリモフィズム 構造体によるサブクラス・レスポンシビリティ 構造体による移譲 関数による移譲 以下、それぞれのパターンを解説していきます。 コンストラクタ関数 Go言語には構造体のコンストラクタがないため、構造

    Go言語での構造体実装パターン
  • Go言語でコマンドラインオプション使うなら。便利パッケージgo-flags。

    Go言語でコマンドラインオプションを使うときは標準のflagsパッケージを使うことが多いと思いますが、go-flagsを使うとオプションの仕様を定義するだけでうまいことやってくれるので便利です。 go-flags go-flagsはコマンドラインオプションのパーサーです。オプションの仕様を定義した構造体に、コマンドライン引数をバインドしたり、定義した仕様からヘルプを整形・表示してくれます。 標準のflagsパッケージに比べて、オプション指定方法が柔軟であること、指定されたオプションを構造体としてプログラム内で利用できること、値のバインドやヘルプの生成などの定型的な実装を行わないでよくなること、といいコトずくめなので使わない理由はないでしょう。 インストール

    Go言語でコマンドラインオプション使うなら。便利パッケージgo-flags。
  • 1