タグ

2019年2月5日のブックマーク (2件)

  • Big Sky :: Lint ツールを Language Server に対応させるコマンド efm-langserver 作った。

    現在は設定ファイルを読み込む仕様に変更しました。詳細はリポジトリの README.md を参照下さい。 Language Server はとても便利なので最近ではコーディングの時は常に Language Server を有効にしているけど、全く要望が無い訳ではないです。 好みの Lint でコードをチェックしたい 特定言語の Language Server が無い そもそも編集中のファイルがソースコードではない 例えば Vim script には現状、Language Server がありません。これは言語の特性上、パースし辛らかったり、型情報が全くないので補完候補を作り出せない等の理由もあります。でも補完よりもまず Language Server の Diagnostic が欲しいと思う訳です。 そこで、どんな言語であろうとも Lint ツールが grep と同様の形式で結果を出力してく

    Big Sky :: Lint ツールを Language Server に対応させるコマンド efm-langserver 作った。
    mattn
    mattn 2019/02/05
    書いた。
  • zero memory allocation slice filtering

    func FilterFoo(arr []string) []string { b := []string{} for _, e := range arr { if IsFoo(e) { b = append(b, e) } } return b } 簡単なベンチマークを書くとわかるように、この関数は返値となるスライスの長さ+1回のメモリアロケーションを行います。一般に、メモリアロケーションの回数は少ない方がパフォーマンスがよく、可能ならばアロケーション回数0を目指したいものです。 今回の場合、次のように書くとメモリアロケーション回数0回の関数を書くことができます。 追記 b := arr[:0]とすると、基底配列に影響が出るので一概に比較できない、とご指摘を受けました。実際に使用する際は副作用に注意しましょう。 このやりかたって引数に副作用あるので、わかってないで使うと危ないような…ht

    zero memory allocation slice filtering
    mattn
    mattn 2019/02/05
    append は引数を弄ってしまうので動作が異なりますね。