handlename's blog

コード片など

ブログ移転しました

実はもう1年以上経っているのだけど、ブログをはてなブログから自前ホスティングのものに移転した。 http://blog.handlena.me/ 移転先の関連エントリ: ブログを移転しました はてなブログに書いた過去の記事をhugoの記事としてインポート ブログのホスティン…

Macbook Pro Early 2015をセットアップするときにやったこと

mac

メインマシンがMacBook Air 2011から MacBook Pro (Retina, 13-inch、Early 2015)に変わったので セットアップ時にやったことをメモしておく。 MacBook Airの時のメモはこちら MacBookAirを買ってからやったこと Airの時は結構細かく書いているが、 今回は設…

emacsで使い捨てディレクトリをさくっと作る

emacs 24.5.1 open-junk-fileを使うと 使い捨てファイルをさくっと作ることができる。 使い捨てディレクトリも同じようにさくっと作りたい。 ということでopen-junk-fileを真似してopen-junk-dirというコマンドを作った。 https://github.com/handlename/dot…

highlight-symbolとhydraを組み合わせると捗る

GNU Emacs 24.4.50.1 highlight-symbol 1.2 hydra 0.10.0 Awesome Emacsという 便利packageリンク集があるのを知って眺めていたら、 表題のhighlight-symbolとhydraを組み合わせてみたら捗るんじゃないかと 思って組み合わせてみたらやっぱり捗りそうな感じ…

tmuxのcopy-pipeとsplit-windowを組み合わせると捗る

tmux 1.8 以前こういうエントリを書いた。 tmuxのコピーモードの選択範囲を外部のコマンドにわたす - handlename's blog ローカルで使っているtmux.confに以下のような設定を書いて、 選択範囲をnopasteに投げられるようにしていた。 bind-key -temacs-copy …

flycheck用のgo-vetコマンドを再定義する

go 1.3.1 darwin/amd64 emacs GNU Emacs 24.4.50.1 わけあってgoamzのコードをemacs上で読んでいたら、 こことかで flycheck経由のgo-vetが次のようなワーニングを出していた。 composite literal uses unkeyed fields AttributeDefinitionsはsliceだから、…

#isucon 4決勝にfujiwara組として参加した感想

順位はこちら。 ISUCON4 本選結果 : ISUCON公式Blog 表題の通り感想がメインです。 結果 (2位以上に大差を付けられての)3位だった 推測できたはずのスコアアップポイントに気付けなかった 今年の問題 動画広告配信サービスをいい感じにスピードアップする 動…

emacsにマルチバイト文字を入力した時のエラー表示をどうにかする

emacs 24.4.50.1 emacsの設定を一からやり直してからか、 マルチバイト文字を入力した時に、 以下のようなエラーが表示されるようになってしまっていた。 These default coding systems were tried to encode text in the buffer `AppVideoSuggestHint.pm': …

goでJSONを比較したい場合

JSONでデータをやりとりするパッケージで、 得られるJSONが期待するものかどうかをテストするときにどうすればいいのか、という話。 ググってもこれといったものが見つけられなかったので interface{}な変数にjson.Unmarshalしてからreflect.DeepEqualしてみ…

#isucon 4にfujiwara組として参加しました

ISUCON4の予選にfujiwara組として参加したのでその感想です。 ISUCON公式Blog fujiwaraさん(ISUCON1,2優勝/ISUCON3出題) acidlemonさん(ISUCON3出題) handlename(ISUCON3予選敗退) というメンバーでした。(アレッ一人浮いてる!) まとめ 長いのでまとめを最…

atom から emacs に戻ったはなし

emacs 24.4.50.1 atom 0.124.0 .emacs.d が事故で消えてからはや半年、 そのあいだ atom を使っていたのだけど物足りない感じがしてきたので 一から emacs の設定をしたはなし。 リポジトリはこちら。 いちいちリポジトリ毎作りなおすのが面倒だったので、 …

emacs でシェルの環境変数を全部読み込む

emacs 24.4.50.1 zsh 5.0.2 perl 5.18.1 emacs で普段使っているシェルの環境変数を引き継ぎたい。 exec-path-from-shell を使うのがいいらしいが、 使いたい環境変数が増えるたびに el ファイルに追加していくのはめんどくさい。 ちょっと古いやり方かもし…

mimic っていう http mock サーバーを書いた

go 1.3.1 引き続き go 勉強中。 mux というものを知ったので これを使ってなにか書いてみた結果。 https://github.com/handlename/mimic ユースケース フロントエンドの人と平行して作業をするときに、 「このAPIまだ出来てないの?」 「とりあえず持っくで…

get-git-ignore というツールを書いた

go 1.3.1 なにか書き始めるとき、小さいものでもとりあえず git で管理するようにしている。 で、ちょっと大きくなると .gitignore ファイルを置く必要が出てくる。 このときいつも github/gitignore から 該当言語を探して raw の URL をたどってダウンロー…

go-opts というパッケージを書いた

go 1.3.1 go 言語でコマンドライン引数を受け取る場合、 flag というモジュールを使う。 http://golang.org/pkg/flag/ こんなコードを書くと --xxx / -xxx 形式でコマンドライン引数を受け取ることができる。 package main import ( "flag" "fmt" ) func mai…

zshrcにwidget定義して2ストロークでghq list -> pecoで絞り込み する

pecoとghqを組み合わせると便利やで〜 というはなしを聞いてはいたものの、まだ手を出していなかったので。 zshでzawを使っていて、gitのbranch切り替えとかは bindkey '^xb' zaw-git-branches みたいな感じでやっていたので、それに合わせてghqで管理してい…

GitHubのatomをちょろっと触ってみた感想

atom: 0.60.0 http://atom.io/ 運良くinvitationをゲットしたので軽く触ってみた感想。 atomで書きました! 見た目はSublimeTextにそっくり HTMLでできてるっぽい 「Toggle Dev Tools」するとChromeのインスペクタみたいなのが出てくる GUIの設定画面がある…

mykie.elが便利

mykie.el が便利だったのでいくつか設定してみた。 (require 'mykie) (setq mykie:use-major-mode-key-override t) (mykie:initialize) (mykie:global-set-key "C-w" :default '(kill-region (line-beginning-position) (line-end-position)) :region 'kill-…

ST2のマーク機能を有効活用する

st2

Sublite Text 2.0.2 emacsから乗り換えたので、マークをもっと活用したい欲がある。 run_multiple_command 的なものを定義して、 マーク+(何かしら操作)を簡単にできるようにした。 マークからキャッレットまでをコピー マークからキャッレットまでをカット …

scalaでirc botを書く場合

Javaのライブラリを使うのがらくちんみたいだ。 PircBotを使う場合はこんな感じ。 package com.example.IRCBot import org.jibble.pircbot._ class Bot() extends PircBot { override def onMessage( channel: String, sender: String, login: String, host:…

#ISUCON 3 本戦に(スタッフとして)参加してきました

今回の成果↓ (参加してきましたエントリにちょこちょこ登場しててうれしい) 予選でなすすべなく敗退したので、本戦では問題アプリの言語移植と、テスト回答、当日運営のお手伝いをしていました。 移植 @fujiwaraさんが作ったperlのリファレンスアプリをnodej…

emacsからST2に乗り換えたメモ

4年ほど使ったemacsからST2に乗り換えてみたメモ。 ST2の使用期間は1週間くらい。 emacsの設定は ここ。 ST2の設定につてはまだ固まってないので割愛。 きっかけ Marvericksをクリーンインストールして、 .emacsのバックアップをそのまま置いたら動かなかっ…

AWS Simple IconsをPNGに変換する

ImageMagick 6.8.7-0 http://aws.amazon.com/jp/architecture/icons/ PNG形式で欲しかったので、ImageMagickでSVG形式のファイルを変換した。 mkdir png find . -name *.svg | perl -ne '$f = $_; chomp $f; (undef, $d) = split("/([^/]+)\$", $f); `conver…

#ISUCON 2013に参加しました

ISUCON2013 に参加したやったこととか感想とか。 @w650、@nobu_ohtaとチームを組んでの参戦。 横浜会場の様子です #isucon pic.twitter.com/M7F9yac21o— NAGATA Hiroaki (@handlename) 2013, 10月 5 DS置いてあるけど狩りに行ってたわけじゃないです。 あ、…

tmuxのコピーモードの選択範囲を外部のコマンドにわたす

tmux 1.8 tmuxのコピーモードで、選択中のテキストを外部のコマンドに渡せたら捗るのになー と思ってman引いたらそのまんまな例が載ってた。 One command accepts an argument, copy-pipe, which copies the selection and pipes it to a command. For examp…

YAPC::Asia Tokyo 2013に参加してきた

参加するのは今回で4回め。 今回はスピーカーとしての参加だった トークのページ 40分枠なのに30分ではなす内容は終わってしまったけど、質問をたくさんもらえたので命拾いした 自分が所属しているプロジェクトのこと(=自分が直接関わった物以外も含まれる)…

buffer-moves導入してみた

emacs 24.2.1 bufferの移動には buffer-moveがいい感じ - Life is very short 便利そうだったので導入してみた。 el-get のレシピに最初から入っているので、 M-x el-get-install<RET>buffer-moves でインストールできる。 カーソルキーが空いていたので、キーバ</ret>…

ログイン時にencfsをマウントする

encfs 1.7.4 zsh 5.0.2 .zshrc に次のように書いておく。 if [ ! -d "$HOME/crypt" -o -z "$(ls -A $HOME/crypt)" ]; then encfs ~/.crypt ~/crypt fi ログイン時には必ずターミナルを立ち上げるので、これで充分。

直前の発言を置換する IRC bot

タイポして投稿した時に handlename: 毛根な時間 handlename: s/毛根/もうこん/ みたいな感じで発言を訂正することがある。 Skype だと実際に自分の発言が修正されるので、IRC でもやってみた。 過去の発言を修正することはできないので、修正版の発言を再投…

IRC に issue 番号に反応する bot がいると捗る

IRC bot のはなし。 #123 みたいな文字列に反応して、 github の issue のタイトル github の issue の URL を返してくれる bot をつくったら思いの外便利だった。 #!/usr/bin/env perl use strict; use warnings; use utf8; use AnyEvent::IRC::Client; use…

emacs から git diff を開く

emacs 24.2.1 git 1.8.2 tmux 1.7 iTerm 1.0.0.20130319 emacs から tig blame を開く - handlename's blog の派生。 diff も見れたら便利なんじゃないかということで追加してみた。 ついでにリファクタリング。 tmux にコマンド送るのは他にも色々応用でき…

emacs から tig blame を開く

emacs 24.2.1 tmux 1.7 iTerm 1.0.0.20130319 tig blame が便利らしいということで、emacs からさくっと開けるようにしてみた。 git-project-p はこちらから拝借。関数名は変えてある。 http://shibayu36.hatenablog.com/entry/2013/01/18/211428 べんり〜

マージ済みのブランチをまとめて削除する便利スクリプト書いた

git 1.8.1.1 perl 5.16.2 マージ済みのブランチを消したい。 リモートリポジトリにあるのもいっしょに消したい。 というのを叶えるために簡単なスクリプトを書いた。perl。 https://github.com/handlename/bin/blob/master/delete-merged-branches ドライラ…

tmux で直前の window に戻りたいとき

tmux 1.7 last-window にキーバインドを設定しておくと捗る。 むしろなんで今まで設定しておかなかったのか…。 bind-key C-t last-window 自分の場合プレフィックスキーを C-t にしてあるので、 C-t C-t とすれば直前の window に切り替えられる。 大量に wi…

大量のJSONをデコードする場合

全てつなげて一つのJSONにしたほうが速くなるんじゃないかと思ったんだけどそんなことなかった。 #!/usr/bin/env perl use strict; use warnings; use Benchmark qw/timethese cmpthese/; use JSON::XS; my @jsons = map { encode_json({ hoge => 'huga' }) …

Warn::Colorful というモジュールを書いた

printf デバッグをするとき、perl の場合 warn を多用する。 warn はメッセージといっしょに呼び出し元のファイル名/行番号も表示してくれるので 出力元の特定が簡単、なんだけど、 ファイル名/行番号表示に埋もれて肝心の値が見にくいことがあるので、 値 …

時間がかかったら通知する設定を2段階にした

zsh

以前書いた、 時間がかかるコマンドを実行した後に通知する をちょっと改良。 notify_threshold 以上の時間がかかったら notify_notify を実行 notify_threshold2 以上の時間がかかったら notify_notify2 を実行 となるようにした。 次のように書いて、 時間…

helm の C-h を delete-backward-char にする

helm で文字入力中に C-h で delete-backward-char したい。 現時点ではデフォルトの C-h C-d helm-debug-output (helm.el) C-h C-b helm-send-bug-report-from-helm (helm-files.el) を定義しないフラグは用意されていないようなので、無理やり上書きする。…

Chromeウェブストアに拡張を公開してみた

初回費用として$5払えばストアに公開(ただし20個まで)できるとのことなので、 せっかくなのでお布施して公開してみた。 tab anything PostIt スクショとか説明とか、ちゃんと用意したほうがいいかも。 21個以上公開したい場合はどうするんだろう?

emacsでwhitespace-cleanupした時のスタイル

emacs24.2.1 余計な行末のスペースを一括削除するときは、 whitespace-cleanup を使うと便利。 whitespace-style にもとづいて空白文字の整形をしてくれる。 先日拡張 elisp の管理をすべて el-get に移行したら どの部分が原因かはわからないけど whitespac…

package + auto-install から el-get に移行する

auto-install だったり github から個別に clone していたものを el-get に一本化。 https://github.com/handlename/dot-emacs パッケージをリストアップ require や auto-load している部分を grep して抽出。 こんな感じのインストール処理を用意。 (defva…

時間がかかるコマンドを実行した後に通知する

zsh

テストとか、ファイルのアップロードとか、 時間のかかるコマンドが終わったら通知してほしい。 rsync heavy.tar.gz remote:/path/to/dist && <終わったら実行する処理> みたいにしてもいいけど、やっぱり自動で通知してほしい。 zshにはhookというものがあ…

homebrew ディレクトリを home ディレクトリ以下に移動したメモ

追記 こんなエントリを書いておいてなんですが、 結局 /usr/local 以下にインストールし直しました。 libディレクトリの位置が変わったりして、 正常にインストール出来ないパッケージがあるようなので。 brew doctor したときも、デフォルトの位置から移動…

ZNCってひとつのアカウントで複数サーバーに接続できるよね?

znc 1.0 IPv6: yes, SSL: yes, DNS: threads irssi 0.8.15 (20100403 1617) 「複数のサーバーに繋ぐときにはアカウントを同じ数作ろう」っていう エントリをいくつか見かけたけど、 わざわざそんなことする必要ないような。 単に Network タグを並べればOK。 <User handlename></user>…

最近のzshまわり

zsh

色々変更加えたので今どんな感じなのかメモっておく。 zaw https://github.com/zsh-users/zaw zsh で使える anything ライクなインターフェイス。 自分で絞り込み対象を追加できるみたいだけど、 いまのところデフォルトのもので事足りてる。 source ~/dev/c…

Emacs Advent Calenderの12日目書きました

Emacs Advent Calendar 2012 - Qiita 今年はQiitaでやっているということで、そちらに記事を投稿しました。 動画で見るemacs #Emacs - Qiita あいかわらずelisp書いてない系の記事。多少は書けるようになったんですけどね。 過去の記事はこちら。 2010年: or…

ディレクトリの履歴からcanythingで絞り込んで移動する

こういうエイリアスを設定してみた。 alias cda='cd `pushd | tr " " "\n" | sed -e "s/~/\/Users\/handle/" | canything`' ディレクトリの履歴を対象に、canythingで絞り込んで移動先を選ぶ。 ディレクトリを飛び回るときは cd -[TAB] するよりも便利。 以…

xslate-modeとtt-mode

練習でText::XslateとTemplate::Toolkitのテンプレート用マイナーモードを書いてみた。 https://github.com/handlename/xslate-mode https://github.com/handlename/tt-mode とりあえずタグの挿入とハイライトだけ。 名前が違うだけで同じ事しか書いていない…

YAPC::Asia 2012のLT-THONでdvorakのはなししてきた

メインのLTではなくて並行して開催されていたLT-THONの方。 事前に登録はしてなかった(というか存在も当日知った)けど、飛び入りできたのではなしてきました。 キーボードをいじろう! @YAPC::Asia 2012 LT-THON from handlename 実は内容は先日のshibuya.el…

mecab0.994でmecab-dic-overdriveを使う

使おうと思ったらすんなり動かなかったので。 環境 Mac OS X 10.8 mecab 0.994 from homebrew Text::MeCab from github https://github.com/lestrrat/Text-MeCab 89f60c38457f100f3c98b24efae75cdcf239c468 mecab-dic-overdrive from github https://github.…