ChromeでのTumblrのダッシュボードの表示がおかしくなっていた。
Tumblr側がChromeの表示チェックをしていないわけがないので、拡張機能が悪さをしているのだろうと検討をつけて、ひとつずつ無効にしてみたところ、「Minus(Ver 1.7.98)」のせいだということがわかった。
頻繁に使うわけでもないので無効にすることで解決した。
原因を突き止める気はなかったり。
今日からVimmer!
Vim、それは選ばれし者の指で膨らむ奇跡のエディタ
ある者は清浄のエディタを咲かせ、ある者は毒のエディタを咲かせる
大エディタ時代、美しさを競いあう二つのエディタ
その名をVimとEmacsといった...
MacVimをインストールした。
quickrun, neocomplcache, surround.vim ... などなどのプラグインが気になってたので。
普段はemacsを使っているが、ここ一週間はVimで落ち着いている。
MacVim インストール
ここからダウンロードして、インストール。
GUIの方を使ってみるみる。
Vimのキーバインドには、しばしば<leader>というのが出てくる。
これはMacVimでは\(バックスラッシュ)に割り当てられている。
バックスラッシュは「Option(alt)+¥」で入力するのだが、これはちょっと面倒くさい。
なので、キー入力のマッピングの方を「¥」から「\」に変えることにした。
あとescを入力するのに小指を伸ばすのがちょっと億劫だったので、escを右⌘(Command)にもした。
キーのリマップにはKeyRemap4MacBookを使った。
以下の項目を変更。
- JIS (¥) to Backslash(\)
- Command_R to Escape
問題があるようなら対策を考える。
「お兄ちゃんは¥に縁がないから大丈夫だよ」「やかましい」
Vundle インストール
git cloneするだけ。簡単すぎて笑った。
(追記:インストールしたあとに知ったのだが、NeoBundleというのもあるらしい)
$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
「.vimrc」にVundleの設定を追加する。
set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " ここにプラグインを列挙 " Bundle 'Shougo/necomplcache' # 後述 filetype plugin indent on
プラグインのインストール
BundlerではGemfileにgem群を書く。
Vundleでは「.vimrc」にプラグインを列挙していく。
とりあえず「neocomplcache」「unite.vim」「vim-ref.vim」「vim-quickrun.vim」「surround.vim」をインストールしてみた。
" ここにプラグインを列挙 Bundle 'Shougo/necomplcache' Bundle 'Shougo/unite.vim' Bundle 'thinca/vim-ref' Bundle 'thinca/vim-quickrun' Bundle 'surround.vim'
設定ファイルにプラグインを列挙した後、「:BundleInstall」することでインストールが始まります(一度Vimを閉じる必要があるかも?)。
インストールが完了すると、Done!と出ます。Done!
neocomplcacheの設定として「.vimrc」に以下を追加。
設定の詳細についてはhttp://vim-users.jp/2010/10/hack177/をみるといいみたいですよ。
let g:neocomplcache_enable_at_startup = 1 # 起動時に有効化 let g:neocomplcache_enable_smart_case = 1 let g:neocomplcache_enable_camel_case_completion = 1 let g:neocomplcache_enable_underbar_completion = 1 let g:neocomplcache_min_syntax_length = 3
colorscheme - 色、テーマ
色が味気ないので「molokai」というテーマをインストールしました。
これもVundleからできます。Vundle万歳!
「.vimrc」
Bundle 'tomasr/molokai'
Vim上で「:BundleInstall」。
「.gvimrc」に設定追加。
" molokai theme set background=dark colorscheme molokai
vimshell インストール
vimshell、そんなものもあるのか。
ついでにvimshellをインストールしてみた。
vimshellはVim上でシェルできちゃうというもの。Vimはエディタです。
vimshellを動かすのにvimprocが必要になるのでそちらもインストール。
vimprocは、BundleInstall後に別途makeする必要があります。
「.vimrc」に追加。
Bundle 'Shougo/vimproc' Bundle 'Shougo/vimshell'
Vim上で「:BundleInstall」。
次にvimprocをmake。
$ cd ~/.vim/bundle/vimproc $ make -f make_mac # MacVim!
これでインストールが完了。
vim上で「:VimShell」するとシェルが立ち上がります。
その他設定
ちょっと触ってみて気になるところを変えてみた。
「.vimrc」
set number # 行番号 set nobackup # バックアップファイル作らない set smartindent # スマートインデント set tabstop=4 # タブ関連 set shiftwidth=4 # set expandtab # タブをスペースで
「.gvimrc」
set guifontwide=Monaco:h12 # フォント set guifont=Monaco:h12 set lines=45 # 縦幅 set columns=80 # 横幅 set guioptions-=T # ツールバー隠す
感想
GitHubとか使っちゃうあたり、Vundleから"モダン"な雰囲気が漂っています。
NeoBundle(作者はShougoさん)なるものもあるらしいので、そっちも試してみようかなぁなんて思っています。
quickrunがすごく便利でした。
ちょっとしたスクリプトを書く→実行って流れが、シェルに戻らずできるの良い。
そういえば、vim-quickrunでRubyのラムダ構文を実行したら謎のエラーが出た。
->(x) { x + 1 }.call(1)
これを実行すると、
/var/folders/nh/nhUeVY1YF70ejCARqfMkJ++++TI/-Tmp-/vRvtnds/2:1: syntax error, unexpected '>' ->(x) { x + 1 }.call(1) ^ /var/folders/nh/nhUeVY1YF70ejCARqfMkJ++++TI/-Tmp-/vRvtnds/2:1: syntax error, unexpected '{', expecting $end ->(x) { x + 1 }.call(1)
となる。
自分の環境のせいかもしれないのと、quickrunがどんな風にプログラムをしてるのかなどよくわかってないので、あとでちゃんと原因を調べてみるみる。
Vim楽しいね!
(強制まとめ)
いちおう
最終的な設定ファイル。
.vimrc
set nocompatible filetype off set rtp+=~/.vim/vundle.git/ call vundle#rc() Bundle 'Shougo/neocomplcache' Bundle 'Shougo/unite.vim' Bundle 'thinca/vim-ref' Bundle 'thinca/vim-quickrun' Bundle 'gtags.vim' Bundle 'surround.vim' Bundle 'Shougo/vimproc' Bundle 'Shougo/vimshell' Bundle 'TwitVim' Bundle 'altercation/vim-colors-solarized' Bundle 'tomasr/molokai' filetype plugin indent on set number set nobackup set smartindent set tabstop=4 set shiftwidth=4 set expandtab let g:neocomplcache_enable_at_startup = 1 let g:neocomplcache_enable_smart_case = 1 let g:neocomplcache_enable_camel_case_completion = 1 let g:neocomplcache_enable_underbar_completion = 1 let g:neocomplcache_min_syntax_length = 3 imap <C-k> <Plug>(neocomplcache_snippets_expand) # snippets的な何からしい smap <C-k> <Plug>(neocomplcache_snippets_expand) set splitbelow set splitright let $PATH=$HOME."/dmd2/osx/bin:".$PATH # quickrun - D lang
.gvimrc
set guifontwide=Monaco:h12 # フォント set guifont=Monaco:h12 set showtabline=2 set lines=45 set columns=80 set guioptions-=T # ツールバー消す set background=dark colorscheme molokai
Countableの悪夢
count($obj);
ってサポートするべきなのだろうか、
とRubyのEnumerableをtraitとmix-inで実装してみるときに思ったのである。
<?php trait Enumerable { public function count() { return 2; } public function all() {} // 略 abstract public function each(); } class Test { use Enumerable; public function each() {} } class Test2 implements Countable { use Enumerable; public function each() {} } $test = new Test; echo count($test) . PHP_EOL; // => 1 $test2 = new Test2; echo count($test2) . PHP_EOL; // => 2
なお、実際に実装はしてない模様(ぇ
Countableの悪夢
count($obj);
ってサポートするべきなのだろうか、
とRubyのEnumerableをtraitとmix-inで実装してみるときに思ったのである。
<?php trait Enumerable { public function count() { return 2; } public function all() {} // 略 abstract public function each(); } class Test { use Enumerable; public function each() {} } class Test2 implements Countable { use Enumerable; public function each() {} } $test = new Test; echo count($test) . PHP_EOL; // => 1 $test2 = new Test2; echo count($test2) . PHP_EOL; // => 2
なお、実際に実装はしてない模様(ぇ
Play framework with Scalaのデモでハマった
ふとScalaでWebアプリケーション作りたいなーと思ったので、Play frameworkをいじってみることに。
チュートリアルを参考にしてたのですが、いろいろハマったのでメモ。
とりあえず初期のプロジェクトが動作するところまでです。
(あと正直よくわからないことが多いので、とりあえずぼくはこれで動いたよってスタンスです)
インストール
$ sudo pacman -S scala $ sudo yaourt install -S playframework $ sudo play install scala-0.9.1 # 「~ install scala」だけだと上手く動かなかった
「$ play install scala」だと、(現状では)バージョンが「0.9.0」のモジュールがインストールされるみたい。
これだと上手く動かないので「0.9.1」を指定してインストールする。
プロジェクト作成
$ play new hello --with scala-0.9.1 # helloはアプリケーション名 ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.2.4, http://www.playframework.org ~ ~ The new application will be created in /home/lib2/www/hello ~ What is the application name? [hello] ~ ~ Resolving dependencies using /home/lib2/www/hello/conf/dependencies.yml, ~ ~ play->scala 0.9.1 (from playLocalModules) ~ ~ Some dependencies have been evicted, ~ ~ play 1.2.2 is overriden by play 1.2.4 ~ ~ Installing resolved dependencies, ~ ~ modules/scala-0.9.1 -> /usr/share/playframework-1.2.4/modules/scala-0.9.1 ~ ~ Done! ~ ~ OK, the application is created. ~ Start it with : play run hello ~ Have fun! ~
なんか1.2.2のフレームワークがほしいけど1.2.4がインストールされてるからそれ使うねって言われてるような気がするが、結果動いたのでよしとする(ぇ
プロジェクト起動
$ cd hello $ play run
ポート9000番で起動します。
初回のアクセス時にはコンパイルなどが行われるので、起動がちょっと遅いです。
あと、自動で作成されたプロジェクトには間違いがあるので、Template execution error
が出ると思います。
起動自体はできているので、実際にアクセスしてみると綺麗にエラー箇所を表示してくれます。
エラーメッセージ(上のやつから要約したもの)。
Template execution error
Execution error occured in template /app/views/main.scala.html: No route foundIn /app/views/main.scala.html (around line 9)
どうやらテンプレートファイル(app/views/main.scala.html)に記述されているjqueryのバージョンが、実際に存在するものとで違っているようです。
(追記:もしかして Playの1.2.2 or 1.2.4, scalaモジュールの0.9.0 or 0.9.1 の整合性がおかしくなってる…?)
調べてみると、1.6.4が用意されています(バグ?)。
$ ls public/javascripts jquery-1.6.4.min.js
そのため、テンプレート(app/views/main.scala.html)のソースコードを「1.6.4」に書き換えます。
@@ -6,7 +6,7 @@ - <script src="@asset("public/javascripts/jquery-1.5.2.min.js")" type="text/javascript"></script> + <script src="@asset("public/javascripts/jquery-1.6.4.min.js")" type="text/javascript"></script>
再度アクセスしなおすと、うまく表示できると思います。
Play framework with Scalaのデモでハマった
ふとScalaでWebアプリケーション作りたいなーと思ったので、Play frameworkをいじってみることに。
チュートリアルを参考にしてたのですが、いろいろハマったのでメモ。
とりあえず初期のプロジェクトが動作するところまでです。
(あと正直よくわからないことが多いので、とりあえずぼくはこれで動いたよってスタンスです)
インストール
$ sudo pacman -S scala $ sudo yaourt install -S playframework $ sudo play install scala-0.9.1 # 「〜 install scala」だけだと上手く動かなかった
「$ play install scala」だと、(現状では)バージョンが「0.9.0」のモジュールがインストールされるみたい。
これだと上手く動かないので「0.9.1」を指定してインストールする。
プロジェクト作成
$ play new hello --with scala-0.9.1 # helloはアプリケーション名 ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.2.4, http://www.playframework.org ~ ~ The new application will be created in /home/lib2/www/hello ~ What is the application name? [hello] ~ ~ Resolving dependencies using /home/lib2/www/hello/conf/dependencies.yml, ~ ~ play->scala 0.9.1 (from playLocalModules) ~ ~ Some dependencies have been evicted, ~ ~ play 1.2.2 is overriden by play 1.2.4 ~ ~ Installing resolved dependencies, ~ ~ modules/scala-0.9.1 -> /usr/share/playframework-1.2.4/modules/scala-0.9.1 ~ ~ Done! ~ ~ OK, the application is created. ~ Start it with : play run hello ~ Have fun! ~
なんか1.2.2のフレームワークがほしいけど1.2.4がインストールされてるからそれ使うねって言われてるような気がするが、結果動いたのでよしとする(ぇ
プロジェクト起動
$ cd hello $ play run
ポート9000番で起動します。
初回のアクセス時にはコンパイルなどが行われるので、起動がちょっと遅いです。
あと、自動で作成されたプロジェクトには間違いがあるので、Template execution error
が出ると思います。
起動自体はできているので、実際にアクセスしてみると綺麗にエラー箇所を表示してくれます。
エラーメッセージ(上のやつから要約したもの)。
Template execution error
Execution error occured in template /app/views/main.scala.html: No route foundIn /app/views/main.scala.html (around line 9)
どうやらテンプレートファイル(app/views/main.scala.html)に記述されているjqueryのバージョンが、実際に存在するものとで違っているようです。
(追記:もしかして Playの1.2.2 or 1.2.4, scalaモジュールの0.9.0 or 0.9.1 の整合性がおかしくなってる…?)
調べてみると、1.6.4が用意されています(バグ?)。
$ ls public/javascripts jquery-1.6.4.min.js
そのため、テンプレート(app/views/main.scala.html)のソースコードを「1.6.4」に書き換えます。
@@ -6,7 +6,7 @@ - <script src="@asset("public/javascripts/jquery-1.5.2.min.js")" type="text/javascript"></script> + <script src="@asset("public/javascripts/jquery-1.6.4.min.js")" type="text/javascript"></script>
再度アクセスしなおすと、うまく表示できると思います。
新・Togetterのまとめをはてなダイアリーに丸投げ(引用)するブックマークレット
以前作ったTogetterのまとめをはてなダイアリーに丸投げ(引用)するブックマークレットが動かなくなったので直しました。
不具合確認をほとんどしてないので、問題あったら言ってくだしあ。
Hatena::Letが動かない…(*´Д`)
ので、リンク先の「Togetter 引用」をブックマークしてください。
ブックマークレット詳細のページに飛ぶ
/* * @title Togetter 引用 * @description トゥギャりをはてダに投げます。getElementsByClassName()を使ってます。意外とやっつけです。Ver:2011/11/28 * @include http://togetter.com/li/* * @license MIT License * @require */ (function (option) { var i; var body = ">" + window.location.href + ":title>\n"; var els = document.getElementsByClassName("balloon_module"); var items = []; for (i = 0; i < els.length; i++) { if (els[i].id !== "") { items.push(els[i].id.match(/[.]*_([0-9]+)$/)[1]); } } for (i = 0; i < items.length; i++) { body += "twitter:" + items[i] + option + "\n"; } body += "<<"; window.location.href="http://d.hatena.ne.jp/edit?appendbody="+encodeURI(body); })(":detail");