ダメ人間オンライン

あまり信用しないほうがいい技術メモとか備忘録とかその他雑記

vim-airline使い始めた

こんにちは、うすっぺら人間です。

powerline 使ってみたいと思ってたけど
・全部の環境でfontにパッチ当てられるわけじゃないので悩ましい。
・そんなことより将棋指そうぜ!
というような感じで腰が重くて結局使ってなかった。

最近powerlineと同じようなやつでvim-airlineっていうのがあることを知って、評判も良さそうだったので使ってみることにした。
bling/vim-airline · GitHub

powerlineとvim-airlineの違いそんなに分かってないけど、vim-airlineは純粋なvim scriptで書かれてるとか(powerlineはpython?)なんか読み込みが速いらしいとかUnite.vimの色付けも良い感じになるとかあるそうです。

でvim-airline入れてみたけど超かっちょいいステータスライン表示になるまで色々あった。

既存の設定とぶつかるとこ

vim-airlineをインストールした直後
f:id:dameninngenn_owata:20130823161824p:plain

自分でstatuslineの設定とか書いてたのでそっちが優先されてる(?)っぽくて特に変化なし。

set statusline+=%=\ %{g:HahHah()}\ %m%r%h%w%y%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}\ %l,%c%V%8P

を消して、あと buftabs っていうバッファで開いてるファイル名をstatuslineに表示するためのpluginも使ってたのでそれも外した。

256色

ここまでで
f:id:dameninngenn_owata:20130823161831p:plain

あれ、色・・・って状態。
色々調べてたらいくつか言及されてた
Themes don't work for me · Issue #26 · bling/vim-airline · GitHub
Set t_Co=256 forcely by mattn · Pull Request #112 · bling/vim-airline · GitHub

で自分の環境のを :set t_Co でみてみると t_Co=8 だったので、ちょうどいいし .vimrc に set t_Co=256 を追加した。colorschemeの設定の前に書かないといけなみたいなのをみたけど逆にその後ろに書かないと自分の環境だとダメだった。よくわかんない。
Vim-users.jp - Hack #64: 256色ターミナルでVimを使用する

set t_Co=256 をしたあと
f:id:dameninngenn_owata:20130823161835p:plain

おー、カラフr・・・あれ?なんか違う?
サンプルにあるようなかっちょいい色使いじゃなくなんか微妙な色。themeが違うんかなと思って全部試してみたけどどれも何か違うあるぇ〜ってなった。

環境としてはscreen + iTerm2使ってて、iTerm2の設定で Profiles->Terminal:Report Terminal Type が xterm-256 じゃなくて xterm になってた。ずっとまえに xterm-256 とかにしたような記憶あったのに xterm のままだった。

そこをxterm-256にすると
f:id:dameninngenn_owata:20130823161847p:plain

おー、これやこれ!
で安心したのも束の間でローカルのmacで同じようにやろうとすると、また微妙な色使いに戻ってしまった。

macで使ってたscreenが256色対応してない感じだったので256色対応するようにしてmakeしたら良い感じになった。

最終的に

buftabsのかわりにvim-bufferlineを使うようにして、ついでにvim-fugitiveも入れた。
f:id:dameninngenn_owata:20130823161852p:plain

fontもちゃんとやればもっとかっちょよくなると思います。

ターミナルでカジュアルに使えるタイマー書いた

皆さんカップ焼きそば好きですよね。僕も大好きです。一平ちゃん最高です。

カップ焼きそばと言えばお湯を入れて3分待つのが一般的だと思います。皆さんはどうやって時間計ってますか?僕はキッチンタイマーとか持ってないし買うつもりもないのでアナログ時計の針を見て時間計ってます。

ただ人の記憶というものは曖昧なもので「あれ、何分スタートやっけ。。。」となってしまうこともたまにあります。それはそれでいつもと違う一平ちゃんを堪能できるのでいいのですが、ノウハウが溜まりきってしまうとやはりベストな時間というものが見えてくるので一番おいしく食べられる時間ぴったりでお湯を捨てられるのが良いです。

なのでターミナルでサッと使えるタイマー書いた。
https://gist.github.com/dameninngenn/5865715

f:id:dameninngenn_owata:20130626234422g:plain

文字の大きさと色は変えられます。
f:id:dameninngenn_owata:20130626234436g:plain


Perl5.8以降あたり入ってたらたぶん下の一行で動く気がします。

% curl https://raw.github.com/gist/5865715/timer.pl | perl

時間指定したり色とか変えるなら

% curl https://raw.github.com/gist/5865715/timer.pl | perl - --color=green --scale=5 --timer=180

上のgistのtimer.plを信用しきってる場合は.zshrcとかにalias設定しとくといざという時役に立つかもしれません。

alias ippei='curl https://raw.github.com/gist/5865715/timer.pl | perl - --color=green'

もしかしたらtimer.plの中身がある日急にoppai時計になったりするかもしれませんが。

あとLTとかの時間測りたいけどタイマーアプリ入ってなくて急いでる時とかにも使えますね!

ちなみにデフォルトの時間が2分30秒なのは「お湯を入れてPCの前に戻ってくる時間」と「時間きてからお湯を捨てるまでの時間」を考慮してさらに3分より少し前にお湯を捨てるぐらいでちょうどいいという好みのためです。

やったー!超キュートなHiveロゴを愛でながらブラウジングできるChrome拡張できたよー\(^o^)/

f:id:dameninngenn_owata:20130613014858p:plain
http://www.apache.org/

事の発端

@tagomorisさんがHiveロゴがプリントされたTシャツを着てた

背中側が狂気に満ちてると感じた

kowai

夢に出てきた

起きたらHiveロゴがとても愛おしく感じるようになってた

もっと長い時間眺めていたい!

どのページ見てもHiveロゴが目に入るようにすればええんや!!

@tagomorisさんが着てたTシャツのデザインはこちら
Hadoop Conference Japan 2013 Winter にいってきた&しゃべってきた - tagomorisのメモ置き場

⊂二二二( ^ω^)二⊃

dameninngenn/chrome-ext-bu-------n · GitHub

やったー!かーわーいーいー!!

ただ大量に発生させすぎるとCPUがウォーーーってなってファンがファーーーーーってなる。。

余談

ライセンスの話

Hiveロゴのライセンスってどうなってるんだろうと思って調べてみたけど明記されてるとこ見つからなくてtwitterで聞いてみたら教えてもらえた。


なるほど。

読んでみると、

You needn't ask us for permission to use Apache's graphics logos (the versions published on individual project's websites) on your own website solely as a hyperlink to the specific Apache project website or to www.apache.org. All other uses of Apache Foo (and similar) graphic logos must be approved in writing by VP, Apache Brand Management or a designee.

Apache Trademark Policy

って書いてあって、www.apache.orgへのリンクと共にウェブサイトで掲載する分には特に許可とかとらなくてやっちゃっていいけどそれ以外の用途なら別途聞いてねみたいな感じだったのでメールで問い合わせた。

poor Englishで申し訳なく思いながらやりとりして、キャプチャとって見てもらったりしてこんな感じですねん!ロゴとしてそのまま使うんじゃなくてソフトウェア内での要素の一つとして使いたいですねん!って説明してokをもらった。

ポイントとしては
1. Apacheのロゴを個人的なプロダクトであれロゴとして使ってはいけない。Chrome拡張で言えばアイコンにロゴは使ってはいけない。
2. 利用者が勘違いすることなく「このグラフィックはApacheのものである」と認識できるよう注意書きを表示しなければいけない。
ということ。

なので拡張を入れた時点では機能はOFFで必ず設定画面を開いてONにしないと動かないようにしてそこに説明書きを表示するようにした。あとはREADMEにも。

当たり前のことだけどブランドをすごく大事にしてるんだなーっていうのをやりとりしてて特に感じた。

Thank you Shane Curcuru.

requestAnimationFrame

フレーム毎に動かすのをsetTimeoutでやってたけどrequestAnimationFrameっていうのがあるっていうのを知ってそれを使うようにした。

一番のメリットだと思ったのはブラウザのタブが非表示になってる時は処理をしないところ。今回のだと作りが雑ってのもあってすごいCPUが頑張る感じになってるので全部のタブでブンブン飛び回ってる状態だと大惨事になる。なので非表示にしてるやつの処理をしないと表示してるのだけ頑張る感じなので大惨事まではいかず惨事ぐらいまでにおさまる。

けど使い方を間違ってる感はあるので(CPU頑張る感じになってる部分でお察し)こういうアニメーションまわりのところとかjsの根本的なリソースまわりのこととかもうちょっとちゃんと勉強したい。マサカリ飛んでくる。kowai

Chromeのバグ

Chrome27からかわかんないけどImage()を使ってなんやかんやしようとしたら

returns Uncaught TypeError: Type error

みたいなエラーが出てよくわからず「????」ってなって悩んでたけどどうやらChrome側のバグだったらしい。

Issue 238071 - chromium - Using canvas drawImage in chrome extension content script returns type error - An open-source project to help move the web forward. - Google Project Hosting

unite.vim + perldoc.vim

unite-perldoc

perldoc.vim 便利ですよね。僕も愛用させてもらってます。

モジュール名の上にカーソルがある状態で K を入力するとドキュメントが見れるし

:Perldoc HogeFuga

としても同じように見れる。しかも補完も効く。ステキ。

カーソルがモジュール名の近くにあるか、調べたいモジュール名がはっきりわかってる場合にサッとドキュメントをひけるってわけですね。

けど上記を満たさない場合だと若干手間取ってしまう。例えば、

my $nanntoka = SugokuOboeduraiNamaeNoModuleDesuyo->new();

...
# 上のモジュール名が見えなくなるぐらいの行数を間に挟んでから
$nanntoka->shiran_method( 'hanage' );

みたいな時に「あー、このshiran_method()ってなんやろー。モジュール名なんやっけ、えっと、、、」ってなって上にスクロールして戻って「そうそうこういうモジュール名やった」って言いながらperldocで引くみたいな感じになってサッと引けないことがある。

今となってはそんなことが本当にあったのかどうかも疑わしいけどあったということにしとく。

ので今開いてるファイルでuseしてるモジュール名をunite.vimで一覧表示してそこからperldoc引けたらサッとできそうってことでやってみた。

dameninngenn/unite-perldoc · GitHub
f:id:dameninngenn_owata:20130426021332p:plain

正規表現でuse なんとかを引っ掛けてそれを:Perldocに渡してるだけです。requireはとりあえず考慮してない。vimの正規表現こわい。

とりあえずそれっぽくできたので満足した。

ref.vim

ref.vimというperlだけに限らず他の色んな言語のリファレンスを引ける便利なプラグインがあって、それだと標準でuniteから使えるみたいな感じだったので試してみた。

特に何も設定なし
f:id:dameninngenn_owata:20130426021335p:plain

let g:ref_perldoc_complete_head = 1
f:id:dameninngenn_owata:20130426021323p:plain

という表示になって候補となるモジュール名をpathを走査して一覧表示してるっぽい感じ(ちゃんと確認したわけではないですが)で今開いてるファイルに含まれるモジュール名を表示するっていうやりたい事とはまた別の用途な気がした。uniteのインターフェースで絞り込んだりして引きたいって場合に便利そう。

unite.vimでbuffer一覧表示をシュッとさせたかった

\前回のラブライブ!/

neobundleの導入ついでに使ってたプラグインが軒並みアップデートされたけど、:Unite buffer した時の表示がなんか賑やかになってたのでもうちょっとシンプルに表示するようにしたいと思ったのでした。

f:id:dameninngenn_owata:20130314042658p:plain

converter

unite.vimのバージョンは5.0。ドキュメントには簡単にそこの表示を変更できるような感じのことは書いてなかったのでググってみたところ unite.vim buffer buffer_tab のバッファ番号表示を消す でできそうだったので真似をした。

dameninngenn/unite-converter-buffer-simple · GitHub

少し違うのは、ドキュメントの unite#custom_filters の項目を見ると

Note: This function is deprecated. Please use
unite#custom_source() instead.

となっていたので unite#custom_filters じゃなくて unite#custom_source を使った

結果

f:id:dameninngenn_owata:20130314042738p:plain

少しみやすくなった。ハイライトまわりも見直す。