ページ

2012-11-12

Twitter NG Word Filter 0.2をリリースしました

リクエストにお応えして新Twitter対応版をリリースしました。
Twitter - NG Word Filter for Greasemonkey
どうぞご利用ください。
  • Firefox 16 (Greasemonkey 1.4)
  • Chrome 23 (NinjaKit 0.9)
で動作確認しています。

使い方

NGワードで非表示

ngwords変数にNGワードを正規表現で入力してください。
var ngwords = /#4ji|#followme|I'm at/i;
正規表現の書き方はこちらを参照 RegExp - JavaScript | MDN


NGユーザーで非表示

ユーザーごと非表示にしたい場合は以下の行のコメントアウトを外して、USER_NAMEの部分をユーザ名に書き換えてください。
GM_addStyle('.tweet[data-name="USER_NAME1"], .tweet[data-name="USER_NAME2"] {display:none !important;}');

NGされたものを表示

猿アイコンを(右?)クリックしてユーザスクリプトコマンドからvisibleを押すと、「NGワードで非表示」にしていたつぶやきを一時的に表示できます。



メモ

前回のバージョンではTwitterのJavaScriptが内部で利用するためにtriggerされているイベントを横から勝手につぶやきが追加されるタイミングのAPIとして活用していました(難読化されたJSを解読するのがダルかった)が、今回は MutationObserver API を使ってざっくり監視しています。addEventListener('DOMNodeInserted'などは非推奨となっているのでMutationObserverを使いましょう。

2012-11-09

SublimeText2でコード補完の候補選択をTabで行う方法


SublimeCodeIntelを入れているといちいちctrl+spaceをしなくてもコード補完(auto complete)の候補が出てくる。
コード補完の候補が表示されている時にTabを押して次の候補→次の候補と選択したい。(Google IMEと同じ動作)。下記の設定で実現した。winだけで確認。
Preferences > Key Bindings - Userに
[
 { "keys": ["tab"], "command": "auto_complete", "context":
  [
   { "key": "auto_complete_visible", "operator": "equal", "operand": true }
  ]
 },
 { "keys": ["shift+tab"], "command": "auto_complete_prev", "context":
  [
   { "key": "auto_complete_visible", "operator": "equal", "operand": true }
  ]
 }
]

調べ方

ctrl+spaceでコード補完を表示させた後、続けてctrl+spaceを押せばauto_completeコマンドによってコード補完の次の候補が選択され最後までいくとまた先頭に戻る動作を確認した。
次に Preferences > Key Bindings - Default を検索(正規表現を有効にしてctrl\+spaceをキーワードに検索)して、それっぽい{ "keys": ["ctrl+space"], "command": "auto_complete" }が見つかったので、tabに移植した。
キーバインド設定の空気はここで掴む。Key Bindings — Sublime Text Unofficial Documentation

メモ

Google IMEはTabで候補選択ができて、さらにTab+shiftで一つ前に戻ることができる。この動作もSublimeに取り入れるかはまだ決めてない。ちなみにsublimeでctrl+shift+spaceで同じ動作にならなかった。

追記

Sublime Text Japan Users Groupで教えていただいた。auto_complete_prevコマンドで解決。ありがとうございます!
Auto completeで一つ前の選択に戻すキーバインドを知りたい - Google グループ

2012-11-06

SublimeText2で拡張子ごとにインデントを設定する

設定したいファイルを開いて、以下のように設定すればソフトタブ2になるはず。
Preferences > Settings - More > Syntax Specifc - User
{
 "tab_size": 2,
 "translate_tabs_to_spaces": true
}

LubuntuにRictyフォントをインストール

Font Managerでインストール済みのフォントを確認。

あとで書く。

FontForgeインストール時のエラーメッセージ

うーん、気にしなくてよさそう。
$ sudo apt-get install fontforge
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libfontforge1 libgdraw4 libspiro0 libuninameslist0
提案パッケージ:
  fontforge-doc potrace autotrace python-fontforge fontforge-extras
以下のパッケージが新たにインストールされます:
  fontforge libfontforge1 libgdraw4 libspiro0 libuninameslist0
アップグレード: 0 個、新規インストール: 5 個、 削除: 0 個、保留: 0 個。
4,541 kB のアーカイブを取得する必要があります。
この操作後に追加で 13.3 MB のディスク容量が消費されます。
続行しますか [Y/n]? 
取得:1 http://jp.archive.ubuntu.com/ubuntu/ quantal/main libspiro0 i386 20071029-2build2 [12.5 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ quantal/main libuninameslist0 i386 0.0.20091231-1.1build1 [530 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ quantal/main libfontforge1 i386 0.0.20120101+git-2ubuntu1 [2,536 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu/ quantal/main libgdraw4 i386 0.0.20120101+git-2ubuntu1 [361 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu/ quantal/main fontforge i386 0.0.20120101+git-2ubuntu1 [1,101 kB]
4,541 kB を 4秒 で取得しました (1,034 kB/s)
以前に未選択のパッケージ libspiro0 を選択しています。
(データベースを読み込んでいます ... 現在 110941 個のファイルとディレクトリがインストールされています。)
(.../libspiro0_20071029-2build2_i386.deb から) libspiro0 を展開しています...
以前に未選択のパッケージ libuninameslist0 を選択しています。
(.../libuninameslist0_0.0.20091231-1.1build1_i386.deb から) libuninameslist0 を展開しています...
以前に未選択のパッケージ libfontforge1 を選択しています。
(.../libfontforge1_0.0.20120101+git-2ubuntu1_i386.deb から) libfontforge1 を展開しています...
以前に未選択のパッケージ libgdraw4 を選択しています。
(.../libgdraw4_0.0.20120101+git-2ubuntu1_i386.deb から) libgdraw4 を展開しています...
以前に未選択のパッケージ fontforge を選択しています。
(.../fontforge_0.0.20120101+git-2ubuntu1_i386.deb から) fontforge を展開しています...
desktop-file-utils のトリガを処理しています ...
shared-mime-info のトリガを処理しています ...
man-db のトリガを処理しています ...
libspiro0 (20071029-2build2) を設定しています ...
libuninameslist0 (0.0.20091231-1.1build1) を設定しています ...
libfontforge1 (0.0.20120101+git-2ubuntu1) を設定しています ...
libgdraw4 (0.0.20120101+git-2ubuntu1) を設定しています ...
fontforge (0.0.20120101+git-2ubuntu1) を設定しています ...
libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place
[3720:3720:10539640502:ERROR:browser_main_loop.cc(155)] GTK theme error: Invalid borders specified for theme pixmap:
                                            /usr/share/themes/Lubuntu-default/gtk-2.0/images/null.png,
                      borders don't fit within the image
                                                        [3720:3720:10539641191:ERROR:browser_main_loop.cc(155)] GTK theme error: Invalid borders specified for theme pixmap:
                    /usr/share/themes/Lubuntu-default/gtk-2.0/images/scrollbar_vertical.png,
            borders don't fit within the image
                                              [3720:3720:10540111226:ERROR:browser_main_loop.cc(155)] GTK theme error: Invalid borders specified for theme pixmap:
        /usr/share/themes/Lubuntu-default/gtk-2.0/images/null.png,
borders don't fit within the image
[3720:3720:10540147385:ERROR:browser_main_loop.cc(155)] GTK theme error: Invalid borders specified for theme pixmap:
        /usr/share/themes/Lubuntu-default/gtk-2.0/images/scrollbar_horizontal.png,
borders don't fit within the image

SublimeText2のSettings(JSON)の値をコンソールから取得する方法

デフォルトのfont_faceを知りたい。
Preferences > Settings - Default を見ても空欄になっていてわからない。
ググってみると、コンソールに以下で取得できた。
view.settings().get('font_face')
WindowsはConsolas、LubuntuはMonospace とわかった。
getの中を他のキーを変えればいろいろ調べられるはず。

Lubuntuにrbenvでrubyとrailsを入れる


Ruby on Rails 3.2 を Ubuntu にインストールする手順をかなり丁寧に説明してみました - Rails 雑感 - Ruby on Rails with OIAX

を参考(検証)にしながら、lubuntu 12.10 のほぼまっさらな状態からやってみる。
ちなみにubuntu系ははじめからrubyは入ってない。



各種パッケージのインストール

$ sudo apt-get install build-essential git curl zlib1g-dev libssl-dev libreadline-dev libyaml-dev libxml2-dev libxslt-dev libsqlite3-dev nodejs
※build-essentialにmake, g++などが入っている。railsはJavaScript Runtimeが必要なのでnode.jsを選択した。

Apache、MySQL を使うなら、以下のものが必要。
$ sudo apt-get install apache2 libmysqlclient-dev mysql-server


rbenvセットアップ

apt-getのrbenv調査

Ubuntu 12.04からapt-getでrbenvのインストールが可能
apt-getのrbenvを確認してみる。
$ sudo apt-get install rbenv
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています              
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libreadline5 libruby1.8 libruby1.9.1 ruby ruby1.8 ruby1.9.1
提案パッケージ:
  ri ruby-dev ruby1.8-examples ri1.8 ruby-switch ruby1.9.1-examples ri1.9.1
  graphviz ruby1.9.1-dev

apt-getでrbenvを入れるとシステム用に1.8や1.9のrubyも入るようだったので止めとく。
rbenv は sstephenson/rbenv にしたがってgitでインストールすることにした。



rbenvをインストール

$ cd
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
zshを使っているので.zshenvに。
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshenv
$ echo 'eval "$(rbenv init -)"' >> ~/.zshenv
何かのきっかけで、title:7: command not found: rbenv と表示されても、.zshenvに eval "$(rbenv init -)" が追記されていれば正常。


シェル再起動
$ exec $SHELL

ruby-buildインストール

$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
一回目に fatal: The remote end hung up unexpectedly が出たけどもう一回やったらうまくいった。


インストール可能なパッケージ一覧
$ rbenv install -l
略
1.9.3-p194
1.9.3-p286
1.9.3-preview1
1.9.3-rc1
previewの手前の安定版 1.9.3-p286 を入れることにした。

$ rbenv install 1.9.3-p286
※ここで make: コマンドが見つかりません が出る場合は $ sudo apt-get install build-essential



$ rbenv rehash



常に使うrubyとして設定

$ rbenv global 1.9.3-p286
$ ruby -v
ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]
で確認。

zshの訂正機能が効いてzsh: correct 'ruby' to '_ruby' [nyae]?のようになったら、訂正しないの意味の n を入力。


一応

$ rbenv version
$ which ruby
してrbenvのrubyになってるか確認。



.gemrcを用意。
$ echo 'install: --no-rdoc --no-ri\nupdate: --no-rdoc --no-ri' >> ~/.gemrc


$ gem install rbenv-rehash
入れとく。



railsインストール

$ gem install rails
$ rails -v
Rails 3.2.8
zsh: correct 'rails' to 'tail' [nyae]?と聞かれたら n。

手順にしたがってrailsのデモを作る

$ cd
$ mkdir work
$ cd work
$ rails new foo --skip-bundle
$ cd foo

Gemfile の以下のコメントアウトを外す。
# gem 'therubyracer', :platform => :ruby
現状この意図がわからなくて悔しい。
追記:わかった。therubyracerを入れずに rails generate scaffold~ すると Could not find a JavaScript runtime.と言われた。
ググってみると、railsはJavaScript Runtime(エンジン)が必要で、railsは ExecJS というgemが環境にインストールされているJavaScript Runtimeを探してくるが見つからなくて動かねえよってことらしい。ちなみにtherubyracerにはv8が入っている。再びググるとv8まわりでトラブルが起きている記事や、メモリ使用量が多いためHerokuでは非推奨という記述が見つかった。うちはnode.jsを入れることにする。(nodejsもv8だった)。




$ bundle install

$ rails g scaffold user name:string email:string
$ rake db:migrate

$ rails s

ブラウザで http://localhost:3000/users を開いて動作確認。
動いた。
OIAXさんありがとうございました。