タグ

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

  • golang でループを手っ取り早く並列化する方法 — KaoriYa

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

  • Vimとgolangの相性の良さを、お見せしますよ。 — KaoriYa

    この記事は Vim Advent Calendar 2015 の 11日目の穴埋め記事(2015/12/22執筆)です。 まずは以下のデモ画像(別ウィンドウ)を見てください。 2015年のアドベントカレンダーを熱心に追っていた賢明な技術者諸君には、もう説明は不要でしょう。 ソースコードは koron/vim-gopher に置いてありますので、チェックアウトして gvim -S game.vim することで試せます。ただし動作確認・保証は Windows版の +kaoriya な gvim でしかしておりません。また解像度も画面幅1920ドット無いとおかしなことになるので、異なる環境の場合は各自で調整してPRなどしてください。 参考資料: Vim scriptによるゲームの新アーキテクチャの考察 物の golang を… 物の Gopher を、お見せしますよ。 GIMP 2を使って、

  • fmt (Fprintf/Sprintf) の速度向上実験 — KaoriYa

    golang の fmt.Fprintf/Sprintf には、 フォーマット文字列の解釈を最適化することで、 速くする余地があると推測されます。 その推測が正しいか、お手軽な実験を行ってみました。 この記事は Go Advent Calendar 2014 の6日目の記事です。 fmt.Fprintf および Sprint は、実行時にフォーマット文字列を毎回解析するという性質上、パフォーマンスに余計なオーバーヘッドが発生すると言えます。よって、その解析処理をコンパイル時に行えば、大幅にパフォーマンスが改善することは、C言語において kazuho さん(h2oプロジェクト)の h2o/qprintf が証明しています。 今回は qprintf にインスパイアされて、同様のことを golang で行ったらどの程度速くできるのかを、簡単な実験(koron/qfmt)で確認してみました。 方式

  • brunch 面白そう — KaoriYa

    シングルページアプリ って知ってますか? 簡単に言うとHTMLページは1つで、あとはCSSとJSで頑張って画面遷移やら何やらWebアプリ作っちゃおうぜっていうものです。私は今から5年ほど前に qooxdoo を使ってバックエンドの管理用UIなシングルページアプリを作ったのですが、当時はそんな概念も浸透しておらず、なかなかに面白いことやっていたなと今になって思うのです。 で、最近「シングルページアプリ作りてぇ」欲が突然高まりまして、なんか良いツール無いかなと探していたところ brunch を見つけました。というのも qooxdoo は重量級過ぎまして決まり事が多い上にページビルドの動作が重く、ちょっと今時ではないのかなと。まぁ昔のことなんでqooxdooの今はわからないですが。それに対して brunch はライブラリ選択の自由度が高くてコンパクトで、いかにもいまどきな感じがします。普通なら

  • Vim scriptを取り巻く問題など存在しない (領土問題風に) — KaoriYa

    Vim scriptを取り巻く問題について というエントリへの反論というか返答というか補足です。このエントリは極端に書くとこう言っています。 Luaトランスレータなんてできっこねーんだから無駄なことやめろよバーカバーカ キャッチーに要約してますがコレ一行で済むでしょう。 ただ正直なにもわかっちゃいないで書かれたようなので、足りてないところを書いておきます。 Vim scriptの高速化方法の比較 Vim script を高速化する方法は、現時点で2つ提案されています。 バイトコード化 (=パース処理のキャッシュ) 別言語(Lua)へのJust In Timeな トランスレータ あのエントリでは前者は実現可能であるが後者は不可能であると述べていますが、私の見かたは違っていて「どちらも実現可能である」です。ただしそこに至るステップ、歩幅の大きさと予想される最大効果がぜんぜん違います。 歩幅の大

  • スパルタンVim 2.0のPDF公開 — KaoriYa

    C82 において頒布しました スパルタンVim 2.0 のPDFを公開します。 http://files.kaoriya.net/goto/c82pdf 周囲の期待をクルッと回って3回転半ほど裏切った衝撃作、ご堪能いただければ幸いです。夏の終わり、最後の週末の暇つぶしにピッタリかもしれません。

  • Vimスクリプトを書いてみよう — KaoriYa

    目的 機能を持ったVimスクリプト(プラグイン)を徐々に作る様子を見て、書き方を学習してみよう 作るのはよくあるタイプのプラグイン Javaの単体テスト用クラスファイルを開く(作る)コマンドを作るよ 「ね、簡単でしょう(by ボブ)」と言ってみたい まずは雛形 ひな形としてこんなスクリプトを作ります。 command! -nargs=0 UtestAppend call <SID>UtestAppend() function! s:UtestAppend() echo 'HERE' endfunction " s:UtestAppend() UtestAppendというコマンドを追加 UtestAppendコマンドいが実行されたら ‘HERE’ と表示する ほら、すごく簡単ですね。 Javaだけに作用させる 以下はdiff形式で変更点だけ。 @@ -1,5 +1,17 @@ c

  • 1