技術ネタ中心にその他雑多なことを
Goでコマンドライン引数と環境変数の両方からflagを設定したい - Qiita Goで実装したプログラムでオプションをコマンドライン引数から取るには標準の `flag` パッケージを使いますが、値を環境変数からも読みたいことがあります。(特に Docker で動かす場合) htt... http://qiita.com/sfujiwara/items/f177d85e9c10f4c34fb6 実は結構簡単に出来ます。github.com/namsral/flag に依存したくない場合や github.com/namsral/flag が実は flag 互換で無かった、なんて問題が見付かった場合に使えるハックです。 オリジナルのコード package main import ( "flag" "fmt" ) func main() { var age int flag.IntVar(&ag
github.com Gorとはlog replayを自動化するためのツールです。go製。 log replayとは、log(httpのトラフィック)をreplay(再生)することで、よりリアルなデータ(プロダクションのトラフィック)をうまいこと使い、より効果時なテスト・確認をしようという考えからなるものです。ざっくりと。 たとえば、プロダクションのトラフィックをステージング環境に転送することでステージング環境にデプロイした実装のテストをしたり、転送するトラフィックの割合を制限しつつ負荷テストをしたり、あるいはtcpdumpのようにトラフィックをファイルに書き出し、tcpreplayのようにそれを再生したりと。 テストがないコードで、テストの回数が制限されているようなiscon5予選のときに使えたのではとgorが気になってたので試してみたメモです。(gorの作者の方がfluetndのアーキ
Go でアプリケーションを作ると、そのまま他になにもなくとも実行できるバイナリが出来あがります。この特性によりデプロイが大変楽です。 このような特性があるので、 Go を使う場合 Docker のようなオーケストレーションツールを使わなくても多くのサーバーにアプリをデプロイしていくことも可能かと思われますが、そこはまあ Docker という巨人に乗っておくと楽なことが多いです。具体的には swarm と docker-compose が便利なので Docker 上で実行したい。 ここで問題となってくるのが何も考えずに Docker イメージを作るとイメージサイズが膨れあがってしまってシングルバイナリによる手軽さなどが損なわれてしまうという点です。 たとえば golang:alpine のような比較的小さいイメージを使ってもファイルサイズはバイナリサイズ + 300MB ほどにもなってしまい
GitHub - kohkimakimoto/cofu: Minimum configuration management tool written in Go.github.com CofuというサーバプロビジョニングツールをGoで実装しました。Itamaeを参考に作りました。実装言語の違い(ItamaeはRubyによる実装)はありますが、外部仕様、内部実装、共にかなり似せて作ってあるので、ItamaeまたはItamaeが参考にしているchefを使ったことがあると、理解は簡単かと思います。特徴をざっくり説明すると、 ローカルでのプロビジョニングのみ対応。SSHなどでのリモートサーバのプロビジョニングはサポートしない Goなので実行ファイル一個で動く。導入が簡単 レシピはLuaのDSLで記述する 今のところ動作プラットフォームはRedHat(CentOS)のみをサポート あたりでしょうか。
同僚がGoを始める上で、案外まとまった資料が無さそうだったので書いてみることにしました。 Macでhomebrewが入っていることが前提です。事前に brew update をおこない formula を最新のものにしておくと躓くことが少ないでしょう。 Goのインストール % brew install go エントリ執筆時点では、1.6.2 が入ります。Goはメジャーバージョンが同じ場合は、後方互換が保たれているので、基本的に新しいやつを入れて問題ありません。 環境変数の設定 $GOPATH だけを決めればOKです。$GOPATH はどこでも良いのですが、ここでは $HOME/dev を $GOPATH に設定します。また、 $GOPATH/bin に $PATH も通しておきます。 export GOPATH=$HOME/dev export PATH=$GOPATH/bin:$PATH
(This article was originally a talk at QCon London 2016. Video and slides here.) In 2014, I gave a talk at the inaugural GopherCon titled Best Practices in Production Environments. We were early adopters at SoundCloud, and by that point had been writing, running, and maintaining Go in production in one form or another for nearly 2 years. We had learned a few things, and I tried to distill and conv
少し前にStarletにGraceful Restartが時たま上手く動かない問題を修正するpullreqを投げました。 原因は割り込みハンドラ内でexitを呼んでいたからでした。 「割り込みハンドラ内ではフラグを建てるだけ」 「メインのプログラム内でそのフラグを見て分岐する」という原則があるのですが、それを守るのは難しいということですね。 (しかし新たな問題を産んでしまいrevertされてしまいましたが・・・ まあ修正後のコードも考え方は一緒です。割り込みホント難しい・・・) このpullreqを取り込んでもらうときに再現実験をやってみたのですが、 Goでもちゃんと動くのかな?と気になったので Go言語でGraceful Restartをするで紹介した プログラムに同じテストをやってみました。 2017-01-22追記: Go1.8以降でGraceful Shutdownがbuild-i
by @mixiappwchr おしゃべりマルチとは 今回UUUM株式会社様からアプリ開発の受託をうけ おしゃべりマルチ という音声チャットをやりながら、マインクラフトPE など、ゲームのマルチプレイができるというアプリをリリースさせていただきました。 マインクラフトだけではなく、モンストや、白猫プロジェクト、その他マルチゲームで使ってもらえると楽しいアプリとなっています。 主な設計 今回 複数のサーバーをくみあわせて、音声チャットマルチプレイを実現しています。 3つのサーバーとアプリが連携 APIサーバー 音声サーバー マイクラプロキシ兼リアルタイムイベントサーバー の3つが協調して動きアプリにサービスを提供します。 本来マイクラマルチは同一内WiFIだと気軽にできるのですが、インターネット越しとなると、ルーターのポートを解放したり、なんだかんだ面倒な点が多いのですが、このアプリをいれる
Ask questions and post articles about the Go programming language and related tools, events etc.
月曜からいきなりとほほな話ですが。Kuradoを全ホストに突っ込み監視体制ができた。 で、それの使い方等を説明して修行を終えたので、先日からHDE incでお世話になっております。修行期間は3ヶ月、プー期間は5日でした!自慢できませんね! とりあえず「あ〜あ」は本人が一番思っていますので、とほほなブクマはいりません。もしあれでしたら砂でも送ってく… いや、やめて。あたたかい言葉かビールの一杯をよろしくお願いいたします。しかしまぁ、このブログを公開しようと思った瞬間に土下座して復職みたいなエントリが炎上しててタイミング悪いったらありゃしないですね。まぁ僕はいつでも自分のこの手の決断について後悔したことはありません。 ともあれ、自分の今後していくことは前のエントリで書いたのとほぼ一緒です。がんがん朝早く出勤してすごい早く帰宅して子育てしてるし、がんがんコード書くし(最近明らかにGoが業務コード
PC間でのファイル受け渡しのときにファイルサーバを使うことがたまにありますが、OSによってファイルパスやその書式が違ったり、受け渡し用のディレクトリをつくるとか、ファイル渡したいだけなのに、なんだか小さなひっかかりがあってスマートじゃないなあといつも感じてました。 なので、もっと直感的に「ほい、これ」って渡せるツールをつくってみました。 Hoi Hoiはファイルの受け渡しを簡単に行うためのコマンドラインツールです。Go言語で書かれており、HTTPファイルサーバを利用して機能を提供します。 monochromegane/hoi (An easy file transfer tool using http file server.) ファイルを渡す 使い方は簡単でローカルのファイルパスをhoiコマンドの引数に渡すだけです。 そうすると以下のような、ダウンロード用のURLが出力されます。 htt
Pure Go で辞書同梱な形態素解析器 kagome を公開してみました - Qiita という記事を見て、「Goで形態素解析できれば @zenra_bot もGoで作れる!」と思い、とりあえず全裸にするやつ作ってみた。 https://github.com/sugyan/go-zenra やってることは 全裸で形態素解析をするスクリプト - すぎゃーんメモ と同じで。 Kagome が MeCab と同様に形態素解析してくれる(同じ辞書を使っているらしい)ので、基本的にはそれを使って動詞の前に「全裸で」を挟み込むだけ。 $ go get github.com/sugyan/go-zenra/cmd/zenrize $ echo 'Goを書いてます' | zenrize Goを全裸で書いてます $ cat input.txt そうだ!嬉しいんだ生きる喜び たとえ胸の傷が痛んでも 何の為に
5月31日にGoConference 2014 springというイベントで pt & Goroutine というタイトルの発表をさせてもらいました。 今年に入ってから Go言語をさわるようになって、pt(The Platinum Seacher)というGoでつくったagライクな高速検索ツールを公開しており、そこからのつながりで今回の発表となりました。 内容的には、以下のスライドのとおり、同ツールの高速化の経緯をたどりながらGo言語の並行処理を実現する機構であるGoroutineの使い方を知ってもらうという構成でした。 TLの反応などを見ると、需要はあり一定の満足はもらえたんじゃないかなとほっとしています。 200名ぐらいの参加者がいて、海外からのスピーカー来ているという今回のカンファレンスは、福岡から参加した自分にとってはなかなか本格的なもので、たくさん刺激を受けたし、こういうところで話
All slide content and descriptions are owned by their creators.
進行中のGitHubプロジェクトが増えてくると、そのプロジェクトページをブラウザ上で即座に開くことができず、手間取ることが増えてきた。 hub とか、 gh というようなコマンドラインツールを使うと、手元のチェックアウトしたパスで、 $ gh browse とかすれば対応するGitHubのページを開くことができる。 最初はこれを使ってがんばろうと思ったのだけど、やっぱりカレントディレクトリの情報をベースに開くものだから、他の場所にいるといちいちcdしないといけないのが面倒。 また、シェル履歴との相性も悪い。 $ gh-open ~/path/to/repo みたいにしてcloneしたディレクトリを指定してあげるだけで動くものがあれば、どこにいても動くし、履歴も上手に使える。 というわけで作った: typester/gh-open ちょろっと作ったものだけど、やはりこちらのほうが使いやすい。
tl;dr: 別にPerl捨ててないです。Perl大好き。俺はLLはPerlでいい。でも別ドメインの事もやってもいいよね! Rebuild.fmに限らず、公の場でYAPC/Perl以外の話をする事があるとは正直思っていなかったが、このたびRebuild.fm ep 42に置いて1時間Goについてしゃべりまくってきた。1時間ぶっつけ本番でしゃべりたい事はだいたいしゃべってきたのだけど、その後のフィードバック等もふまえてまとめておきたいと思ったのでこのエントリでまとめてみます Go事始め そもそもなんでここまでGoをガリガリ書き出したのか。 正直親父ギャグとvimで有名なあの人が「Goいいよ!」と言い出したときにはGoに対してはうさんくさい印象しかなくて特に注意すらしてなかったんだけど、そろそろ違う言語とドメインに向いてみるかーと思って探していた時に「あ、俺もうLL系の言語別にいらないな」とふ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く