EmEditor で Perl のスクリプトを整形する

整形されていない Perlスクリプトを見たりするとイライラする。例えば Eclipse なら Ctrl+Shift+F でパッと整形してくれて便利なので、EmEditor でも簡単なマクロを作ってそれを実現してみる。

試した環境

  • EmEditor Pro 32bit ver10.0.8 - フリーはマクロが設定できないからダメ
  • ActivePerl (v5.10.1) - PerlScript でマクロを記述してるから ActivePerl が必要
  • Perl::Tidy モジュール - なければ PPM でインストールする
  • Windows Vista HomePre 32bit - XP,7 でも大差ないと思う

やり方

  1. 以下を適当な名前で適当なところに保存する。仮に C:\Users\USERNAME\Documents\Macros\Format.pl とする。
    #language = "PerlScript"

    use strict;
    use Perl::Tidy;
    our $Window;

    if ( $Window->document->ConfigName eq 'Perl' ) {
    my $selection = $Window->document->selection;
    $selection->SelectAll;
    my $source = $selection->Text;
    my @dest;
    perltidy( source => \$source, destination => \@dest );
    $selection->DestructiveInsert( join( '', @dest ) );
    }

  2. EmEditor のメニューから マクロ->選択 で今作成したファイルを選択する。
  3. ツールバーにマクロツールバーがなかったら、ツールバーを右クリックしてマクロツールバーをチェックして表示する。
  4. これで Perlスクリプトを編集しているとき、マクロツールバーの Format ボタンを押せば整形される。
  5. キーボードショートカットの登録は、Perlの設定->キーボード からできる。
けど、改善の余地はたくさんある。。。

追記:同様のことを既に書いている方がいた。
http://shin-yuan.blogspot.com/2011/05/emeditorperltidy.html

YouTube やニコニコ動画の動画から音声だけ抽出

YouTubeニコニコ動画H.264+AAC な MP4 または FLV から音声の AAC だけ無劣化で抽出して iTunes で再生しようという話.Windows 上で FFmpeg + MP4Box を用いる.
FFmpeg は例えば "お気に入りの動画を携帯で見よう" から,MP4Box は ここ からダウンロードしてきて,PATH の通ったフォルダに入れておく.

  1. YouTubeニコニコ動画の動画を何かしらの方法でダウンロードする(例えばブラウザのキャッシュから直接とってくるとか).それを仮に hoge.mp4 とする.
  2. FFmpegAAC のみ抽出し,iTunes で再生できるようにそれを MP4Box で MP4 コンテナに入れる.
    ffmpeg -i hoge.mp4 -acodec copy -vn hoge.aac
    MP4Box -add hoge.aac hoge.m4a
  3. 作った hoge.m4aiTunesドラッグアンドドロップなどで登録すればよろし.hoge.aac は消していい.

2つのコマンドを打つのが面倒くさいときは

@echo off
ffmpeg -i %1 -vn -acodec copy "%temp%\%~n1.aac"
MP4Box -add "%temp%\%~n1.aac" "%~n1.m4a"
del "%temp%\%~n1.aac"
をファイル名 m4a.bat として PATH の通ったフォルダに保存して
m4a hoge.mp4
とすれば,hoge.m4a ができる.

Google検索で AutoPagerize や AutoPatchWork などを強引に動作させる

追記: 次の記事 でこの記事に書いてあることをやらなくても 「Google検索で AutoPager は正常に動作した」を書いた.

Google ChromeAutoPatchWork を使っている.これはいろいろなブログや検索ページなどで,次のページを自動的に読み込んでくれる拡張機能である.同種の拡張機能は他のブラウザのものも含めていくつかある.

さて,ここ最近,といっても数ヶ月前からであるが Google のトップページから検索するとこの機能が動作しなくなった.最初は単にGoogleの検索結果のurlの書き方が変わって動作しなくなったものと思っていたが,http://xkansan.tumblr.com/day/2011/04/03 によると JavaScript を使って検索結果を表示するようになったので,AutoPatchWork が動作しなくなったらしい.

これを解決するために,検索結果のページの url を Ajax ではない旧来のページの url へ強引に書き換える方法が紹介されていたのでやってみた.userscripts.org に既にスクリプトをアップされている方がいたので以下のようにしてやった.
試した環境は Win Vista 上の Chrome11 + AutoPatchWork,Firefox4 + Greasemonkey + AutoPagerize

  1. Google Search AJAX Killer ( http://userscripts.org/scripts/show/101838 ) に Google Chrome もしくは Firefox からアクセスし緑の Install ボタンをクリック.
  2. Chrome の場合は画面下部に警告が出てくるので,「続行」をクリック.
  3. Google Search AJAX Killer をインストールしますか?」と聞かれるので「インストール」をクリック.

これでインストールされる.ちゃんとインストールされたかどうかはアドレスバーに

と入力すれば拡張機能の設定画面が出てくるので確認できる.アンインストールや一時的な無効化もこのページから行える.

Google Search AJAX Killer をインストールしてGoogle のトップページから検索してみると確かに AutoPatchWork,AutoPagerize は動作した.

すこしおかしな挙動があって,それはインスタント検索の途中で確定されたり,トップページから検索してもう一度そのページから検索を行おうとするとオートコンプリートが効かなくなるといったものだ.これはGoogle検索したときにオートコンプリートを無効にするパラメータ &complete=0 を付加していることに起因すると思われる.現時点ではこのパラメータを付けなくても,AutoPatchWork などは動作するようだ.よって取っ払ってみる.
それには Google Search AJAX Killer のスクリプトを開いて,例えばその17行目をコメントアウトして

// var params = [query, "complete=0"].join("&");
var params = query;
とでもすればいいと思う.

スクリプトのある場所は

こうやると今のところ満足する挙動が得られている.ただこの先どうなるかはわからない.

アンインストールや無効化も簡単なので,AutoPacthWork,AutoPagerizeが動かなくてストレスを感じているならやってみていいと思う.

ちなみに,Google Search AJAX Killer を入れたことによって Chrome では word highlight もちゃんと動作するようになった.

Google検索で AutoPager は正常に動作した

前の記事AutoPagerize や AutoPatchWork を Google トップページからの検索で動作させるために旧来の url に強引に書き換えることを書いたが,同じ機能をもつ AutoPager はそのままでGoogle トップページからの検索に対応していた.ver0.6.2.6の時点で

AutoPager will now re-support ajax mode google now.

http://www.teesoft.info/content/view/88/1/lang,en/

と書いてある.

対応を確認したのは2011年5月4日0:00時点で,Win Vista上のGoogle Chrome11.0.696.60 と Firefox4.0.1 に AutoPager 0.6.2.8 をインストールした場合.

Chromeここから,Firefoxここの AutoPager 0.6.2.8 をクリックすればインストールできる.

いつGoogleが仕様を変更するかわからないので,これも使えなくなるかもしれない.拡張機能つくる人は大変ね.

Ubuntu 11.04 の問題なところ

Ubuntu 11.04 日本語 Remix CDをインストールしたけれど原因がいまいち分からない問題が多い。10.10の方が安定していた。
GPUがGA-E7AUM-DS2HオンボードのGeForce9400じゃ非力か。

  • 使って数時間で3回フリーズした。
  • アイドル時と思われるのにCPU使用率が10-20%を彷徨うことがある。
  • CompizConfig設定マネージャをいじるとフリーズしたり、メニューバーが真っ黒になることがあって再起動しないと治らない。
  • 左のランチャーにある検索で日本語入力ができない。
  • 起動が遅い。明らかに10.10の方が速かった。一方、終了は10.10と変わらず速い。
  • いろいろいじってたら、なんか安定してきた。

Ubuntu 11.04 で Dropbox のアイコンが出ない

Ubuntu 11.04 の日本語 Remix CDが出たので早速インストールしてみた。特に何もしていないのに始終、CPU使用率が10-20%で推移してるのが謎。

さて、Dropboxをインストールして再起動してみると、なぜだかDropboxのアイコンが通知領域に表示されない。システムモニターを見てみると、Dropboxは実行されているし、実際ファイルの更新などもしっかり動作する。しかし、アイコンだけが表示されない。

あまり気持ちよくないので調べると、
http://forums.dropbox.com/topic.php?id=37361
http://www.dropbox.com/release_notes
に書いてあった。とりあえず、ver1.1.29にアップすれば解決するらしい。インストールしてあるDropboxのバージョンは ~/.dropbox-dist/VERSION を開けば分かる。

フォーラムに書いてある通り、

  1. Dropboxを終了させる。
  2. 下記のどちらかをダウンロード(仮に ~/Downloads にx86をダウンロードしたとする)。
    http://dl-web.dropbox.com/u/17/dropbox-lnx.x86_64-1.1.29.tar.gz
    http://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.1.29.tar.gz
  3. rm -r ~/.dropbox-dist
    tar -xvf ~/Downloads/dropbox-lnx.x86-1.1.29.tar.gz -C ~

でver1.1.29に更新する。

再起動したらちゃんとアイコン出てきた。

追記 2011.05.06:ver1.1.31 がでたので、ver1.1.29はダウンロードできなくなっていた。ver1.1.31は
http://dl-web.dropbox.com/u/17/dropbox-lnx.x86_64-1.1.31.tar.gz
http://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.1.31.tar.gz
からダウンロードできる。