タグ

ブックマーク / masutaka.net (6)

  • Emacs Lisp で buffer-local function を使う方法

    stackoverflow を見ていたら、面白いネタがあった のでメモしておきます。 このコードは buffer-local variable のように動作します。 通常のバッファでは “this is a default message.” をミニバッファに出 力します。use-my-foo が定義されたバッファ((set ..) の行を評価する) では “this is a special message.” を出力します。 用途はちょっと思いつきませんが、こんなことも出来るのですね。

  • golang の並列処理を Ruby と比較しながら学ぶ

    一ヶ月ほど前に社内のインフラ共有会でタイトルの話をしました。記録の ために記事を書いておきます。 Gist に置いてある ので、コードは git clone で取得可能です。 $ git clone https://gist.github.com/c0a4234a5264c89655c40adcf7c27cb2.git Ruby# 例えば Ruby で 30 個の処理をするコードがあったとします。こんな素朴 なコードです。それぞれ 3 秒かかる処理が 30 あるので、とても遅いです。 Thread を使って 5 並列にしました。明らかに速くなりました。 ついでにそれぞれの結果(というほどのものではありませんが)を results に代入し、最後にまとめて表示しました。 results は共有リソースになるので、Thread::Mutex#synchronize でロッ クをかけて安全に書き

  • Emacs講座 -第6回- load-path

    などといったエラーが発生します。 Emacs では例えば ~/.emacs に以下のようなコードを書くと load-path が参照されます。 load-path は Emacs Lisp の変数です。どんな値が入っているのかは第3回 の方法で調べられます。 load-path には複数のディレクトリが登録されているはずです。 まず先頭のディレクトリについて、以下の順で検査が行われます。第2回 の .emacs と同じですね。 hoge.elc が存在するか? hoge.el が存在するか? hoge が存在するか? 1, 2, 3 のどれにも当てはまらなければ、次のディレクトリが検査されます。 全てのディレクトリで当てはまらなければ、以下のエラーが発生します。 load-path を構成するディレクトリ# デフォルトの設定では、以下の順番に構成されているはずです。 <PREFIX>/sh

  • Emacs で URL encode するやつ

    (require 'url-util) (url-hexify-string "http://masutaka.net/") => "http%3A%2F%2Fmasutaka.net%2F" (url-unhex-string "http%3A%2F%2Fmasutaka.net%2F") => "http://masutaka.net/"

  • helm-ghq.elを作ってGO WAYに乗った

    先日percolをインストールしたばかりですが[2014-06-20-1] 、peco も気に なっていたのでインストールしました。 後発なだけあって動作が速い!Ctrl-rで検索条件を IgnoreCase/CaseSensitive/Regexpと変えられるのもお手軽でよいです。 ちなみにデフォルトのキーバインドはkeymap.go#L464 付近を見ると分かる と思います。 あんちぽさんの記事によると、ghq も良さそうなのでこちらもインストール。 ghqを使ったローカルリポジトリの統一的・効率的な管理について - delirious thoughts pecoとghqを設定してたら、GO WAYに迷い込んでしまった。。ガチでやってしまおうか。 — マスタカ (@masutaka) June 22, 2014 結局私もあんちぽさんと同じ設定にしました..。 ~/.zshenvにexp

  • Emacsデフォルトの機能で改行やタブ、スペースを色づけできるようになってた

    今回も、弊社で毎日行われている、ミニミニ Emacs 勉強会で @tomoyaton から教えてもらいました。 Emacs23 からは M-x global-whitespace-mode すると、改行やタブ、スペースを色づけできるようになってます。常に表示させるには ~/.emacs に以下を書けば OK です。 ;; スペースの定義は全角スペースとする。 (setq whitespace-space-regexp "\x3000+") ;; 改行の色を変更 (set-face-foreground 'whitespace-newline "gray40") ;; 半角スペースと改行を除外 (dolist (d '((space-mark ?\ ) (newline-mark ?\n))) (setq whitespace-display-mappings (delete-if '(la

  • 1