タグ

ブックマーク / www.kaoriya.net (8)

  • Golangでログを吐くコツ — KaoriYa

    この記事は Go Advent Calendar 2018 の16日目の記事です。 Golangでプログラムを書く時にログを吐くの、どうしてますか? 記事ではログを吐く際のコツというか気にして欲しい事項と、 なぜそうなるのかを解説していきます。 一概に「ログを吐く」と言っても、 ライブラリからログを吐く場合とアプリケーションから吐く場合では 相当に事情が異なります。 TL;DR ライブラリ(パッケージ)を書く時は… まずログを吐かないことを検討しましょう。 error で返してライブラリのユーザーにログへ吐かせるかどうかを選ばせましょう。 *log.Logger を使いましょう。 デフォルトは log.Printf に対して吐き(またはそれと同等のログを吐く)、 ライブラリユーザーの設定で任意の *log.Logger に切り替えられるようにしましょう。 自前の Logger インターフ

  • golang は ゆるふわに JSON を扱えまぁす! — KaoriYa

    以下のツイートにもある通り、一見 golang は struct を定義しないと JSON を扱えないように見えます。他にも似たようなツイートをチラホラと見かけましたが、それらは全部誤解です。そこでこの記事では、golang でゆるふわ (structを定義せず) に JSON を扱う方法を紹介します。 golangrubyのようにゆるふわにJSONは扱えない? https://t.co/olsryDHc5G — bamchoh (@bamchoh) 2016年6月24日 この記事では入力の json.Unmarshal() を取り扱いますが、出力の json.Marshal() にも応用できます。 TL;DR json.Unmarshal() には *interface{} を渡せます interface{} は dproxy を使うと、値のアクセスで楽ができます json.Unmar

    kitokitoki
    kitokitoki 2016/06/26
    json
  • golang でループを手っ取り早く並列化する方法 — KaoriYa

    func execLoop(list []Item) { for _, item := range list { do_something(item) } } list に格納された各 item に対して do_something() を適用する、よくあるタイプのループ処理です。 goroutine で並列化、その副作用 golang ではこの do_something() の適用を超お手軽に並列化できます。あ、もちろん do_something() はリエントラントである前提ですね。

    kitokitoki
    kitokitoki 2015/10/08
    「execLoop() の修正だけで並列化ができていることがこの記事におけるポイントです」
  • iBusがクソになった理由 — KaoriYa

    Xubuntu を 13.10 へアップデートしたら日本語入力(iBus)がクソになったのでその理由を調べてみました。 Xubuntu を 13.10 へアップデートしたら日本語入力(iBus)がクソ(1.5)になりました。どんなにクソかは iBus 1.5がクソすぎる に譲るとして、私はどうしてそうなったのか (あわよくばどうすれば直るのか) を真夜中に調べてましたのでその成果を記しておこうと思います。 私の場合 Vim でIMEを制御 できないことで問題が根深いことを知りました。調べてみると InputContext というクラスから is_enabled(), enable(), disable() の3つのメソッドが消えていました。これらのメソッドは端的に言うと日語の状態を取得、有効化、無効化するものです。うんもうIME制御なんてできません。ちなみに その修正が行われたのは約2年

  • Vim昔語/翻訳編 — KaoriYa

    ソフトウェアの翻訳は単に英語に堪能なだけでは足りないかも、という思い出話。 Vimの魅力の一つに充実した有用なドキュメントがある。ここまでドキュメントが充実ししかも有用なオープンソースソフトウェアは実はかなり珍しい。しかしそれが英語であっては、日人にとって無いも同然というのもまた事実だ。個人的には苦手ではあるものの読むだけならば辞書片手に頑張ればいいじゃんと思うのだが、なかなかそうもいかないらしい。 ある日、いつものようにmattnさんが「訳したんだけど」とtutorの翻訳を送ってきた。tutorというのはVimのチュートリアルドキュメントで、書かれているとおりに1時間未満の訓練をすることで基的なVim操作を覚えられる、というなかなか価値の高いドキュメントだ。それをmattnさんが訳したのでレビューして欲しいとのこと。さっそく幾つか気になるところを直しつつ、mattnさんが意図的に訳さ

  • Vim昔語/激闘編 — KaoriYa

    思えばあの頃は常に何かと戦っていた、そんな思い出話。 Vimスクリプトの暗黒時代。この頃はあの手この手を使って機能を実現してた。この頃に得たテクニックは今でも使ってるしいろんなスクリプトの断片に散らばってるはず。 / Vim昔語/スクリプト編 — KaoriYa http://htn.to/9RqdsS — mattnさん (@mattn_jp) 2011年8月11日 Vimスクリプトで大きなアプリケーションを書くことで、スクリプトのみならずVim全体の弱点が見えてきていた。なんでもスクリプトで書いてやろうとしたがなんでもは書けるわけもなく、Vim体に手を入れてでもスクリプトでいろいろできるようにしたりもした。mattnさんのボツになったパッチのうちソケットやプロセス操作などのほとんどがこの文脈にあったと記憶している。そんなmattnさんの玉砕を時に加担したりやっぱりねと横目に見たりしつ

  • Vim昔語/スクリプト編 — KaoriYa

    前のエントリがどうやら好評なので、調子にのって続編としてVimスクリプトにまつわる愉快な思い出話など。 チャットでmattnさんとやりとりをする中で、Vimスクリプトが話題になったキッカケはよく覚えてない。たぶん最初はcalendar.vimあたりを見せられたんだとおもう。今に比べればまだまだ単純だったcalendar.vimはそれでも良くできており「おおっ」と感心しながらも、ちょっとしたプログラマ特有の嫉妬をこめて「皇紀での表示はできないのか?」みたいなボケをかましたのだが、場のボケ返しはそれを上回っておりすぐに皇紀に対応した版ができあがって舌を巻いたりしていた。大体はこんな感じでmattnさんが小物スクリプトを作り、私が添削したり改良したり一般化して返す、という感じで幾つかのスクリプトが生まれていった。特に新聞サイトの見出し表示(当時RSSは普及してなかったのでHTMLパースが一般的

  • Vim昔語/遭遇編 — KaoriYa

    mattnさんのエントリを読んでいたら懐かしくなったので思い出話でも。 当時私は大学生で、自宅、研究室、バイト先の3箇所で開発をしていた。Visual C(Studioの前身)、ViVi、jvimなんかを使ってプログラムを書いていたと記憶している。jvimのサイトにはgvim(version 5)のバイナリがあったので試してみたが、ろくに設定もされていなかったもんだから「ああjvimで良いな」と思ったものだった。 ところがふとしたことから家のVimのマニュアルを読み、添付されているサンプルの設定(vimrc_example, gvimrc_example)を利用したとき、私に衝撃が走る。それまで書いていたC、PerlTeXのコードがカラフルに色づけされていた。圧倒的に読みやすい。今では珍しくないシンタックスハイライトも当時はキーワードハイライトが出始めた頃でまだ珍しかった。しかもvim

  • 1