2016年を振り返って

あけましておめでとうございます。 2016年を振り返ってみます。 アジェンダ 仕事:自分で立ち上げたプロダクトをローンチできた 英語:海外出張がたて続き、英語能力の不足を痛感した OSS:GoとCassandraにぼちぼちパッチを送っている 抱負 仕事 取り組んで…

GoとgRPCでKVS的なものを作ってみた

Go

正月で時間があったので、以前から触ってみたかったgRPCをGo言語から使い、キー・バリュー・ストアのようなものを作ってみた。 KVSといっても、GoのmapへのGet/Put/Delete/ScanをgRPC経由で叩けるようにしただけのもの。それだけだとあまり面白く無いので、g…

2015年を振り返って

あけましておめでとうこざいます。 なんかみんな振り返っているので、少し出遅れましたが2015年を振り返りたいと思います。 アジェンダ 英会話教室に通い始めた Goにコントリビュートをした 仕事で作っているプロダクトがリリースできなかった 英会話教室に…

RFC的に、HTTPヘッダってどんな値を使えるんでしたっけ?のメモ

Web APIを開発していると、HTTPのヘッダについてRFCにおける規約を確認しなきゃいけない場面がたまにあるので、今回調べたことをまとめた。 HTTP/1.1のRFC HTTP/1.1のRFCといえば、長らくRFC2616であったが、2014年にRFC7230〜7239が発行され、2616は廃止さ…

Goのflagでダブルダッシュ(--hoge)なフラグを許可する

Go

goのflag、”-hoge”だけじゃなくて”--hoge”を許してくれるだけで悩みの95%くらい解決するのになー…— Daisuke Maki (@lestrrat) 2014, 10月 21 これのためだけに別ライブラリをgo getするの若干抵抗ある— Daisuke Maki (@lestrrat) 2014, 10月 21 それヘルパー…

GoのHTTPサーバーを80番や443番ポートでListenする方法を調べた

1024以下の番号のポートでサーバーをListenするには、rootで実行する必要がある。それはもちろん嫌なので、GoのWebサーバーを80番ポートでサービスするためにどういう方法があるのか調べた。 root権限で起動してListenしてからSetuidで権限降格 最初はroot権…

Golangで関数をグローバル変数に代入してテスト時にスタブする

Go

こんにちは、小野マトペです。タイトル全部です。 昨日、現在時刻によって条件分岐するロジックを含むGoプログラムを書いていて、どうテストするか困ったのですが、うまい(と思う)やり方を思いついたのでここに書いておきます。 書いていたのはまあだいた…

Go Concurrency Patterns: Context[翻訳]

7月29日付けのgolang.orgブログエントリーで context というパッケージが紹介されました。 Go Concurrency Patterns: Context - The Go Blog 参考: Go言語のcontextパッケージについてのやりとり - ワザノバ | wazanova 今現在、業務でGo言語を使ったWebサー…

Patterns of Enterprise Application Architecture読書メモ(データソース編)

Martin FowlerのPatterns of Enterprise Application ArchitectureすなわちPoEAA、何年か前に原著をKindleで買って読もうとして序盤で挫折していた。最近またデータソースアーキテクチャについて翻訳版と原著を合わせて読んでいるので、整理のためメモを残し…

Golangでの文字列・数値変換

Go

覚えられなくて使うたびにググってしまうので、以後楽をするためにスニペットを記す。 パッケージ strconvパッケージを使う。 文字列 → 数値変換(パース) func Atoi(s string) (i int, err error) 文字列を10進数のint型にパースする。ParseInt(s, 10, 0)…

Go言語のコマンドライン引数の使い方(サブコマンド等)

go言語でのコマンドライン引数の使い方でやや混乱したのでまとめる。 まとめること flagの仕様 flagでgit push -fのようにオプション引数より前に非オプションの引数を置く方法・サブコマンドの例 go-flagパッケージのサブコマンドを試す flagの仕様 Golang…

tus - Resumable File Uploads

Resumable File Uploads tusというHTTP/1.1上で再開可能なファイルアップロードの規格を策定するプロジェクトを見つけた。2013年4月に始まった取り組みで、リファレンス実装が多い。提案されているプロトコルでのアップロードの流れをメモする(v0.2.1準拠) …

(翻訳) Trelloは何が違うのか by Joel Spolsky

最近、rebuild.fm で紹介されていたタスク管理ツールのTrelloを試しに使ってみたんですが、個人的にかなりヒットでした。このTrello、Joel on Softwareで有名なJoel Spolsky氏のサービスだと知って驚いたんですが、氏のTrelloに関するブログエントリーが興味…

#pyfes 2013.11に遊びに行ってきました。

pyfes/201311.rst at develop · pyspa/pyfes Python Developers Festa 2013.11 - connpass Pyfesに行ってきました。土日に昼まで寝ている自分としては9時45分の開場期限に間に合っただけで快挙でしたが、Go, HTTP2.0, ストレージ, 構成管理と、今個人的に興…

gemのslideshowでMarkdownからスライドショーを作る

gemのslideshowを使ってMarkdownファイルをスライドhtmlに変換する slideshowは、Markdownファイルを様々なJavaScriptスライドライブラリを使ったhtmlファイルにコンバートするgem。 インストールとサンプル $ gem install slideshow $ slideshow help #オプ…

Blenderでボーンをミラーするメモ

Blender 2.67使用 こういう鳥の翼を作りたいとする。ただしメッシュはポーズ作業以降もX軸ミラーModifierを維持し、ポーズも左右反転コピーを使っていきたいものとする。 左半分のメッシュとボーンを作り、ウェイトをペイントして調整する。 ウェイトペイン…

FireWire800外付け2.5インチHDDケースを買ってSSDを入れた。

(このエントリーは1年くらい前に書きました) HD画質の動画をコンポジットするにあたり、USB 2.0の外付けHDDの低速さに耐えられず、2.5インチのFireWire800のポータブルHDDケースを買ってきて中にSSDを突っ込み、作業用ドライブとした。本当はUSB 3.0がよか…

Scientific Linux 6.1にrbenvでbundlerなRuby 1.9アプリケーションをインストールする手順

やりたいこと。 表題どおり。やるごとに手順をネットで調べてるのでまとめた。 検証環境はScientific Linux 6.1だけどCentOSでもいける。 Rubyバージョンはrbenvで管理されたruby1.9.3 アプリケーションはBundlerで構成管理されたSinatraアプリケーション 作…

MySQLのスレーブを再起動しても勝手にレプリケーションが再開しないようにする

MySQLで、マスタ系を動かしたまま、スレーブの更新を一時的に止めたいという状況はよくあります。スレーブ群の中から一台だけサービスアウトし、STOP SLAVE;してテーブル変更やリペアテーブルしてからSTART SLAVE;するというやつです。 このSTOP SLAVE;です…

Dynamoの論文を訳した

Dynamo: Amazonの高可用性Key-value Store[和訳] — Gist DynamoDBとかも出てきた事だし、MySQL以外のデータベースに興味が出て来たのでNoSQL的な流れの源流っぽいDynamoの論文を読んでみることにしました。十日くらい掛けて一通り読んだものの、時間がかかり…

VirtualBoxのディスクストレージ設定とIO性能

こんにちは、小野マトペです。 自宅サーバーをVirtualBox on Mac miniに移行してサービスする事が出来れば、面積、静音性、可搬性、サービス独立性の面で有利だと思って、いろいろやってる。VirtualBoxを選んだのは、無料だしライセンス的な面倒がなさそうだ…