生涯未熟

プログラミングをちょこちょこと。

.zsh_historyにおける非ASCII文字の扱いについて

この3連休、夢中でコーディングしてあるツールを作っている最中、.zsh_historyの特異な挙動を発見しましたので書き残しておきます。 一体何が起こったのか? Goでツールを作っていたのですが、.zsh_historyを読み込んでファイル内容を出力したところ以下の…

優秀なプログラマになるには

コード書け!!!!!!!!!!!!!!!!!!!!!!

fsnotifyは何故Vimで動かないのか?

という掲題ですが、まさにハマったことなのでメモ代わりに記事として書いておきます。 一体何が? Goでファイル監視をしようと思いライブラリを探した結果、fsnotifyというライブラリを発見しました。 github.com 「Star数も多いし、こりゃいいや。使っちゃ…

OSS builderという話をしました

ltlovers.connpass.com というイベントで「OSS builder」という話をしてきました。 Oss builder from Shota Inoue どういう内容か 大体の骨子はスライドに書いてある通りなのですが、OSS活動する中で学んだことを文字に起こしてみました。 特に以下の3つは…

wikipediaの寄付のお願いを非表示にするchrome拡張

作りました👌 chrome.google.com 実装はめっちゃ簡単でdisplay: noneで非表示にしてるだけ、以上。 5分くらいで実装できたので楽ちんでした。

Elasticsearchのbulk APIのMaxファイルサイズを探る

elastic searchと書くとElasticsearchに怒られることを知った今日此の頃。 今回はElasticsearchのbulk APIにどのくらいのサイズのファイルを突っ込めるのか探っていきます。 bulk APIに関する公式ドキュメントはここ www.elastic.co 一言で言うとbulk import…

Golang Weekly #174

GitHub - awalterschulze/goderive: Next generation code generator for go Goでよく使う関数をgenerateしてくれるジェネレーターツール。 例えば、 と書いて、goderive ./... することで、同パッケージ内に以下のようなコードが吐かれます。 このような感…

fluent-plugin-kafkaを使ってkafka streamsでアレコレするのはまだ出来ないよという話

最近、Apache財団に囲まれながらアレコレやってる私です。 今回はfluentdのkafkaプラグインであるfluent-plugin-kafkaを使って、kafka streamsが出来なかったお話をば。 何をしたかったのか fluentdでログを監視しつつ、変更があればfluent-plugin-kafkaを使…

Golang Weekly #173

How I landed my first contribution to Go GoへのContributeを初めてやってみた話。 筆者の方はこちらの動画を見て「やってみよう!」となった様子。 動画を見てみると、物凄く丁寧にGoのContributeの方法を説明してありました。 この方のように、Goのライ…

Golang Weekly #172

Typed nils in Go 2 | Dave Cheney Goのnilについてハマったことは誰にでもあるはず。 そんなnilについての記事です。 この記事中のコードをもし自分が書いた場合、サクッと比較対象のnilを (*T)(nil) としてしまうのだが、どうするのがベストプラクティスな…

関数の自己参照とオプションデザイン

この記事はRob Pike氏の commandcenter.blogspot.jp を翻訳したものになります。 ※Rob Pike氏より翻訳の許可は頂いております。氏に多大な感謝を。 私は自分が書いているGoのパッケージのオプション設定に対して良い方法を度々試してきました。 オプションを…

Golang Weekly #171

A Million WebSockets and Go – freeCodeCamp ロシアの電子メールサービスを扱っている巨大企業、Mail.RuでのWebSockets ✕ Golangの話。 約300万のオンライン接続があるようなサービスで、メールのポーリングには1秒間に約50,000件のHTTPリクエストが含まれ…

Go1.9に追加されるtype aliasを使って遊んでみる

Go1.9で追加されるtype aliasに無限の可能性を感じたので、ちょっと遊んでみます。 type aliasとは? types aliasは型のエイリアスです。 ちょっとそれだけでは雑な説明なので、コードを見てみましょう。 基本的なシンタックスはこんな感じです。 named type…

Golang Weekly #170

Go 1.9 Release Candidate 1 is released Go1.9のrelease candidateがリリースされました! インストール方法はこちらから godoc.org Go1.9には大きな言語仕様の変更として、型エイリアスとFMA(融合積和演算)が実装されます。 型エイリアス 型エイリアスに…

Golang Weekly #169

Toward Go 2 - The Go Blog 来ましたGo2! 1年後にリリース予定のGo 1.12から徐々に後方互換性のある機能をリリースしていき、1.20から後方互換性のない機能をGo2.0に入れ、1.20から2.0に移行しやすくしたいという流れになるみたいです。 他にもGoの開発プロ…

sirupsen/logrusのユーザー名変更問題について

皆さんはGoでプログラミングする際にloggerは何を使ってるでしょうか? 様々なloggerがありますが、その中でも sirupsen/logrus を使っている方は多いと思います。 ただ、このlogrusに大きな問題が起こりました。 それはsirupsen氏がGithubのユーザー名をSir…

Golang Weekly #168

GitHub - d4l3k/go-pry: An interactive REPL for Go that allows you to drop into your code at any point. Goでのpry実装。 Rubyを書いていた時にbinding.pryを多用していたので、こちらも使っていきたい。 Benchmarking Go programs, part 2 - Tit Petri…

3連休を使ってしょうもないものを作ってしまった

素敵な3連休、皆様どうお過ごしでしょうか? 意識の高いエンジニア各位におかれましては、きっとエンジニアリングを磨き上げることに腐心なさっていることでしょう。 さて、そんな中「3連休中にアホなもの作りたい」という欲求を抑えきれずにアホなものを…

depでの "is not within a known GOPATH" エラー in gvm

betaのgo1.9をちょこっと弄るためにgvmを導入したのですが、$GOPATHの扱いが $HOME/.gvm/pkgsets/go1.9beta2/global といった独自のものになります。 で、これの何が問題かというと、例えば普段設定している$GOPATHが $HOME/go だった場合には $HOME/go/src …

sqoopでhbaseへのimport時に好きな文字列をRowKeyにする

sqoopを使ってhbaseへimportする際にRowKeyを指定するには --hbase-row-key を使いますが、 通常はcolumnを一つ指定するか、カンマ区切りのリストで複数のcolumnを指定する形になります。 しかし、好きな文字列とcolumnの値を結合してをRowKeyにしたい場合は…

go1.9で追加されるpprofのLabel機能を見てみる

Golang Weekly #167 - 生涯未熟 でも紹介しましたが、go1.9からプロファイリングツールのpprofでLabel機能が使えるらしいのでサラッと見てみます。 前置き このlabel機能は以下のissueでのproposalが採択され、 github.com 提案者のmatloob氏がPRを投げ、go1…

Golang Weekly #167

Profiler labels in Go · Go, the unwritten parts Go 1.9の新機能としてProfiler Labelsが追加されます。 CPUプロファイラの収集データにラベルを追加することが出来るようになり、 例えば一般的なWebサーバにgoroutineでハンドラが分割された /user と /to…

Golang Weekly #166

Golang Weeklyを読むのが最近の楽しみなしょっさんです。 Golang Weeklyは一週間ごとにメールでGo関連のブログ記事をまとめて送ってくれるサービスになります。 Golang Weekly で、自分のメモがてらにオッと思った記事とかを毎週まとめていこうと思います。 …

リモートサーバーのhbaseをクライアントから叩けるようにする

日本語での情報が無かったのでメモ代わりに書く。 リモートサーバーで構築したhbaseに対して、JavaなりGoなり何らかで作ったクライアントからテーブル操作等々できるようにする。 やることは至って簡単で、 hbase-site.xml にPropertyを追加するだけ。 <property> <name>hbas</name></property>…

Golangで雑にメモリ状況を見る

pprof使うほどでもないよなってなったので、こんな感じで雑に。 var mem runtime.MemStats runtime.ReadMemStats(&mem) fmt.Printf("Alloc [%v] \t HeapAlloc [%v] \n", mem.Alloc, mem.HeapAlloc)

UnmarshalJSONを使ってJSONをシュッと変換する

渡ってきたJSONをUnmarshalしようと、こんな感じのコードを書きました。 package main import ( json "encoding/json" "fmt" ) type User struct { Name []byte `json:name` } func main() { var j = `{ "name": "Ken" }` var u User json.Unmarshal([]byte(…

GraphQLを勉強したのでGolangで書いてみた

ここ最近とてもGraphQLが盛り上がってますね! イベントも続々と開催されていたりするので、勢いを感じています。 そんなGraphQLを遅まきながら勉強してみました。 GraphQLとは? 既に様々な記事で論じられている内容なので割愛します。 この記事が個人的に…

僕の心と他人の心

本日付で勤めていた会社を退職致しました。 会社を含めた周りは悪くなく、全ては自分が原因です。 2ヶ月ほど休職していたのですが、その間に「僕という人間は何がダメで今後どのように向き合えば良いのか?」ということを連々と考えたりしましたので、心の…

goroutine使ってゴニョゴニョするCLIツールを作った時の備忘録

備忘録として自分用に書きます。 cobra良いよ 以前までurfave/cli使ってたんですが、「dockerのcliとかcobra使ってたよな〜」とよくcobra見かけるようになったので使ってみた。 $ cobra initでアプリケーションの土台作ってくれるので、煩わしいこと考えずに…

vim-goの入力補完が動かなくなった

.vimrcの整理整頓作業をしていたところ、突然vim-goの入力補完が下記のようになった。 「いやいや、こっちがPanicだよ」と思いつつ、色々と対策を探しました。 対策 そもそも、vim-goの補完にはgocodeが使われており、そちらのISSUEを探したところありました…