Rのデータビューワ ess-R-data-view.elというのを作りました

Rを使っているとオブジェクトの中に入っているデータを確認したり眺めたりしたいと思うことが頻繁にあります。

こういった欲求を満たすためにess-R-object-popup.elというものを以前作ったのですが、これはあくまでオブジェクトのサマリーをチラ見することが目的であって、中身を細かく確認するものではありませんでした。 統計量を見るだけでもデータの特徴をある程度把握することはできるのですが、やはり生のデータを目視するのにはかないません。

生データを目視したいという需要は少なからずあるようで、RStudioでもデータビューワがあります。一方のEmacsですが、ESSにはオブジェクトを俯瞰できるrdiredというものがあるものの生のデータを眺める機能はなくて、Rのインタラクティブシェルでズラズラ出力しては眺めるという程度くらいしかできませんでした。まあこれでも良いんですがテキストが整形されているだけですし、どんどん流れていってしまうので、操作性も良くありません。

というわけで、こういった不満を解消すべくデータビューワを作ってみました。ess-R-data-view.elといいます。

インストール

本体はGitHubに置いてます。

myuhe/ess-R-data-view.el · GitHub

いろいろと依存しているのでEmacs24以降であれば、package.elを使ってインストールするのをおすすめします。MELPAに登録してもらってますので、次のような感じでpackage-archivesにMELPAを登録しておけば、、、

(add-to-list 'package-archives
  '("melpa" . "http://melpa.milkbox.net/packages/") t)

(package-initialize)

M-x list-packages などとして ess-R-data-view を選べばサクッとインストールできると思います。

使い方

M-x R としてRのインタラクティブシェルを起動させます。この状態でデータ名の上にキャレットを置いた状態で M-x ess-R-dv-ctable を実行します。

例えば、バンドルされているデータセット、irisでこのような操作をすると、次のようなバッファがポップアップしてくるかと思います。このバッファの中ではおなじみのn,p,f,b またはj,k,h,lに移動のコマンドがバインドされています。また、ヘッダーも固定されているので、ヘッダーとデータの対応が非常にわかりやすくなります。

https://raw.github.com/myuhe/ess-R-data-view.el/master/image/ctable.png

ess-R-data-view では、データフレームとマトリックスでこのような表が表示されるようになっています。ベクトルなど対応していないデータの場合、次のようなエラーメッセージがポップアップします。

https://raw.github.com/myuhe/ess-R-data-view.el/master/image/popup.png

M-x ess-R-dv-ctable の代わりに M-x ess-R-dv-pprint を実行すると次ようなバッファがポップアップします。

https://raw.github.com/myuhe/ess-R-data-view.el/master/image/pprint.png

このバッファにはボーダーもありませんし、ヘッダも固定されていませんが、データが多いときに軽快に動作するので重宝するのではないかと思います。データの大きさ次第でこちらを選択すると良いかと思います。

この機能を使いはじめると頻繁に使うことになるかもしれません。そうなるといちいちミニバッファにコマンドを入力するのが面倒くさくなってきます。自分のところでは、次のような感じでキーバインドさせて使ってます。

(define-key ess-mode-map (kbd "C-c v") 'ess-R-dv-ctable)
(define-key ess-mode-map (kbd "C-c V") 'ess-R-dv-pprint)

これからの予定

データフレームとマトリックスにしか対応していないので、他のデータをどうしようかと少し考えていました。特にリストとか配列あたりはhelmインターフェイスで掘っていって最後はess-R-data-viewで表示させたりすると素敵そうです。 とは言うもの現状でかなり満足してしまったというのと、そもそもRをめっきり使わなくなってしまったので、恐らくこれ以上機能を追加することはないと思います。

ctableはすごいということを言いたかった

今回のess-R-data-view.elを作りはじめたのは、実はctable.elを使って何か作ってみたかったというのがとても大きい理由だったりします。 実際、使ってみてかなり素敵なライブラリでした。ctable.elについては、また別の機会にちゃんと書こうと思います。

Google Reader代替はEmacsなのではないでしょうか

Google Reader終了のお知らせは、いち愛用者として非常に衝撃的でした。

Google Reader終了 ― 結局のところ「RSS」は一般の人が必要とする情報収集手段ではなかった | TechCrunch Japan

なぜGoogle Readerだったのかと改めて振り返りますと、シンプルな作りもさることながら、やはり豊富なショートカットが重要なファクターだったような気がします。 フィードの移動や既読の管理など、Emacsさながらのキー操作でサクサク読み進むことができました。

ん?「Emacsさながら」?

それ、いっそのことEmacsでよくね?

という結論に達しそうなので、Emacs上でRSSを読む方法について調べてみました。

newsticker

newstickerはEmacsに同梱されているRSSリーダーです。既読の管理や記事間の移動、ブラウザで開くなどなどGoogleReaderでできていたこともひととおりはできそうです。また、非同期でRSSを読みこめるというのも、なかなか嬉しいポイント。Emacsで使うなら、まずこれから試してみると良いのかも。

賢者の漬け物石: Emacs 上で RSS フィードをチェックする (Newsticker)
Emacs 内で使える RSS reader をちょっと使ってみる – とりあえず暇だったし何となく始めたブログ
EmacsWiki: News Ticker

Gnus

Gnusといえば、Emacs同梱のニュースリーダーなわけですが、RSSリーダーとしても機能します。バックエンドとして用意されているnnrssを使ってopmlを読みこめば、簡単にフィードを登録することができます。使うには

(require 'nnrss)

として、M-x nnrss-opml-import を実行。読みこみたいOPMLを指定すれば、グループモードに読みこんだRSSの一覧が出てきます。Gnusについてはkhikerさんが詳しい記事を書かれているので、そちらを見ていただくのが良いかと思います。

GnusをRSSリーダとして使うメリットとしては、メールの読みかきとシームレスに使えるというのと、Gnusを常用しているならば、使いかたをいちから覚える必要がないということでしょうか。

Gnusを全く使ったことがないというのであれば、あえて選択する意味はないかもしれません。

org-feed

あのorg-modeもRSSリーダーとして機能します。わざわざOrg-modeを使わずとも良い気がしますが、Org-modeジャンキーはとにかくOrg-modeで構造化しないと気がすまないのです。 使いかたとしては、org-feed-alistにフィードを連想配列としてつっこんでいけば良いようです。

MobileOrgと合わせて使えば、iPhoneやAndroidと情報を共有できそうですね。うーん、これは以外と良いかも。

org-feed.el – add RSS feed items to Org files
Emacs org-modeを使ってみる: (22) RSSフィードを取り込む – 屯遁のパズルとプログラミングの日記

ニュースグループとして読んでみる

gweneというサービスを使うとRSSをニュースグループに変換することができます。

Read RSS Feeds Via NNTP

これを使えば、MewやWanderlustなどのMUAやemacs-w3mのshimbunでRSSを読むことができます。

フィードの登録がやや面倒ですが、各アプリに使いなれている方はこういった方法もありますよ、ということで。

Richard Hoskins – Google+ – I’m using Gnus now as a replacement for Reader.  asjo h…

Emacsでいい気がしてきた

めぼしいものをザクッと紹介してきました。Emacs上でRSSを読む最大のメリットは周辺との強力な連携にありそうな気がしています。

スクラップしたい記事があれば、org-captureでサクッとスクラップ、evernote-modeでevernote-modeに保存することもできます。

記事の中にeispがあれば、読みながらevalみたいな芸当もできますね。

Dropboxのようなサービスを利用すれば、複数端末での同期も問題なさそうです。

というわけで、EmacsはRSSリーダーでした。

Emacs温泉に行ってきました

150972647.v1345990421.jpg?size=450.jpg

昨日から今日までEmacs温泉に行ってきました。

とても楽しいイベントだったのでその時の模様を報告しておきます。全体の流れや出席者は以下。

Emacs / Lisp 温泉 : ATND

自己紹介, LT

出席者から何かネタなどを披露。まずkiwanamiさんからctableの話。Emacsに表を描画するためのフレームワークでソートや各行の色分け、列幅の切りつめなどにも対応してとにかく高機能。聴衆からは、「Excelのあの機能はないんですか?」的な質問が。皆さんExcel大好きです。

nom4476さんからは、Org-modeに合わせたmmm-modeのポーティングの話。org-modeとmmm-modeの相性があまり良くないというのは、org-babelと連携させたくて以前調べた時に理解していたのですが、今回は逆の発想で、メジャーモードの中でorg-modeを動かそうというアプローチ。

結果、至るところがorg-modeになったとのこと。素敵ですね。

3人目は、vimmerのaharisuさんからgaucheの補完プラグインの話。SchemeでGacheのコードをパースして補完候補を生成してVimに食わせてるんだとか。で、今度はEmacsにも対応させたいということで、それはS式であげれば良いだけなので、す極楽でしょうなどなど。

その次は僕から、Emacsは画像とかブラウザとかを埋めこみできて素敵ですね、という話をちょっとさせてもらいました。最近はあまり使ってなかったxwidgetブランチ(awesomeで使うと即落ちるので)をこのネタだけのためにコンパイルして望みました。

次はsyohexさんからwebsocket.elの話。ブログで拝見してはいましたが、実際に見てみるとタイムラグもなく実にスムーズに動いていました。その昔js2-modeで有名なyeggeさんが自身のブログでEmacsのこれからのライバルはブラウザだということを書かれていてなるほどなーと思っていましたが、xwidgetなり、websock.etでそれすら使役できるようになると、夢が広がるなーと思いました。

最新のwebsocket.elで日本語入力に難ありらしいのですがどうやらマルチバイト関係の問題だったとのこと。海外の方が作られてものでよくありますよね。僕も悩まされたことがあったので(こちらとか) 日本人が積極的にこういうところに関わってかないといけないですねーなどと考えてました。

最後はkozo2さんからevilというVimバインディングエミュレーションアプリとhelmの紹介。evilってネーミングがまた何とも。helm-M-xがとても便利ですねという話で、とても同感できました。右にキーバインドがチラリと見えるのが便利なんですよね。

aanything/helmは人によって、使い方が本当に変わるなーとも思いました。

モクモクしたり、激論変わしたり

いろいろあったんですが、わさお君の「CPU先輩パねえす」発言で、もうそんなことはどうでも良くなってですね。

発表会

プリキュア鑑賞を堪能した後、発表会をスタート。kiwanamiさんからは開発中のMVCフレームワークの紹介。チラリと見せてもらいましたが、誰もが使わないwidgetがとても極楽に利用できそうな雰囲気で完成がとても楽しみです。

次に僕からは、org-modeで書けるo-blogという静的サイトジェネレータをちょろっと使ってみました、という話と、半ばネタ的に作ったAZIKの入力矯正アプリを紹介させてもらいました。後日日記でも詳しく紹介する予定です。発表についてはなかなかウケてもらえて良かったです。

syohexさんからは、toraのメジャーモード作ったよ、という話。

プログラミング言語 Tora を公開した – tokuhirom’s blog.

行きがけの新幹線でほぼできていたそうですが、ちゃんとメジャーモードを書いたことがないのでいずれ何か書いてみたいです。

nom4476さんからは、octpressをorg-modeで書きましょうというお話。もう手捌きが尋常ではなくて、攻殻機動隊に出てくる指が30本くらいある博士を思いだしました。

それぞれの記事は早速kiwanamiさんのctableで管理できるようになっており、さすがの一言。

皆でEmacsの話したり、温泉入ってのんびりしたりと、とても楽しいひとときでした。企画してくれたkiwanamiさんありがとうございました。

次回開催も期待です。 今回参加できなかったという方も是非参加してみたり、企画してみると良いと思います。

150972630.v1345990405.jpg?size=450.jpg

玉名を旅してきた

4月から異動でお勤め先が玉名になったのですが、玉名のことを全然知らなかったので玉名を旅してみました。

まず、玉名地域の最高峰、小岱山山系筒々岳に登頂。登山口は林道小岱山線沿いの中央登山口。ルートはこんな感じ。


より大きな地図で 筒々岳登山 を表示

片道50分ほどの初心者向けコースです。

この時期の登山は植物にもいろいろと変化があって、なんだかウキウキします。

132628588.v1335783524.jpg?size=450

132628708.v1335783543.jpg?size=450.jpg

132628736.v1335783551.jpg?size=450.jpg

132628664.v1335783535.jpg?size=450

玉名といえば、やっぱりラーメン。ということで、下山後は駅前の「黒龍」というラーメン屋さんに行ってきました。

132629098.v1335783641.bin?size=450

玉名ラーメンは久留米ラーメンと熊本ラーメンの間の子な感じで熊本ラーメンとは、ちょっと趣が違います。「黒龍」のラーメンもどっちかといえば、久留米ラーメンに近い感じです。替え玉もあるし。あと値段が450円。安い。

132628783.v1335783560.jpg

食欲を満たした後は、玉名温泉でゆっくりと。良いところですね、玉名。今度は海のものを食べてみようと思います。

Emacs24で標準となるパッケージ管理システムとその周辺まとめ

Emacs24のリリースも近づきつつある(ソース俺)今日この頃、皆様いかがお過ごしでしょうか。

私はと言いますと、4月から異動で新しい職場となりEmacsの利用頻度がガクーッとさがってしまいました。というわけで、ここ最近Emacsをいぢる機会もあまりなかったのですが、次の記事が目につきまして

It’s just same as dust ahead of a wind: el-get を使って Emacs でパッケージ管理

いやはや、これはだいぶ誤解されているぞ、と。これはいかん(何が)と思い、Emacs24のパッケージ管理システムについて書いておくことにしました。

Emacs24で標準となるパッケージ管理システムとは

Emacs24では、標準でパッケージ管理システムが同梱されます。これはpackage.elにより提供されていて、Emacs23で利用したい時は以下のpackage.elを使うと良いです。

package.el

このパッケージ管理システム、実は結構前からあったにも関わらず、全くパッとしませんでした。

これは一重にパッケージのリポジトリサイトELPAに原因があります。ELPAではパッケージを登録するのに管理者にメールで依頼、というとってもレガシーな手法をとっていて、このため登録するパッケージが全く増えなかったためです。

その間、Emacsには決定打となるパッケージ管理システムがなく、auto-installやel-getなどパッケージ管理システムが乱立することとなってしまいました。

ところが、Emacs24でpackage.elが標準のパッケージ管理システムとなることが決まってからその周辺はかなり賑やかになってきました。ELPAを補完するようなリポジトリサイトができてきたのです。以降ではそのリポジトリサイトを紹介していきます。

Marmalade

MarmaladeはELPAと違い誰でも自由にパッケージの登録ができるリポジトリサイトです。

Marmalade: Spreadable Elisp

以前の日記でもMarmaladeについては詳しく書きました。

Marmaladeはお手軽感が素敵なEmacs Lispのリポジトリサイト
elispリポジトリサイト、Marmaladeの新着情報をRSS化した

Marmaladeの良いところは何といっても誰でも気軽に登録ができるというところですが、他もいろいろとメリットがあります。

例えば、ヘッダー部分に記述することによって、パッケージ間の依存関係も整理することができます。また、Marmalde自体のソースコードも公開されているため、作ろうと思えば、誰でもオレオレMarmaladeを作ることができます。

MELPA

Marmaladeは、確かにお手軽ではあったのですが問題点もありました。バージョン番号などパッケージに必要な情報はEmacsで慣習的に使われるコメントヘッダーからもってくるのですが、この部分が適切に書かれていないと登録することができませんでした。

また、パッケージをアップデートする時は、新しいバージョンをMarmaladeに登録し直す必要があり、開発者にはちょっとばかり面倒でした。

この点をel-getはスマートに解決しています。リポジトリはパッケージのソースコードリポジトリ自体となっており、そのVCSにコミットすることでパッケージもアップデートされることになります。そして、MELPAはel-getのこの特徴をうまく利用したリポジトリといえます。

MELPA

MELPAは、el-get同様パッケージのvcsが登録されていて、コミットされた日付がバージョン番号となります。そのため、MELPAに登録されればパッケージ更新のためにソースコードを改変する必要もありませんし、コミットすることでリポジトリのバージョンも自動的に更新されます。

また、MELPAに登録されているパッケージ自体もel-getライクなrecipeで管理されています。

melpa/recipes at 2253142c4c3c2d771607063b967284b91e7af079 · milkypostman/melpa

というわけで、登録してもらいたいパッケージがあればrecipeを作ってpull reqすると良いです。私も常用しているパッケージをいくつか追加してpull reqしたら、即マージしてもらえました。

Re: Emacs でパッケージ管理

アップデート用のコマンドがありません

最新のpackage.elではすでに実装されています。また、過去のバージョンを残すことでダウングレートすることもできます。

elispの側から一定の方法に則って登録してあげる必要がありますので

MElPAではelispを改変する必要はありません。el-get同様recipeを追加するだけです。

膨大な過去資産が含まれる emacswiki を直接利用できません。

同じくMElPAでは、Emacs wikiのパッケージを登録することができます。

package.elで良いんではないでしょうか

というわけで、今のpackage.elとel-getを比較するとだいたい同様のことはできてしまいます。強いてあげればel-getのafter相当の機能がpackage.elにはありませんが、その辺りはeval-after-loadなりhookシステムを使えば、柔軟に設定できるので、個人的にはあまり魅力的ではありません。

むしろ、package.elには 依存関係も記述できる、インストール用のUIがある、何より 標準(予定)であるというメリットがあります。

てことで、パッケージ管理システムはpackage.elで十分なんではないかなーと思っています。

2012-04-28 追記

el-getについてコメントいただいたので修正しました。

UbuntuからArch Linuxへ宗旨替えしてからしたことまとめ

実は昨年の末頃から自宅のマシンは徐々にArch Linuxへ移行してたのですが、いろいろと忘れないうちにここらへんできちんと整理しておこうかなと。

インストール作業に関する情報はかなり見かけますのでここでは、はまったとことか細々としたTipsを書き留めておこうと思います。

Ubuntuをやめた理由

Unityがひどいといった理由を見かけますが、そもそもUbuntu使ってた頃からWMはawesomeだったので全く気にかかりませんでした。

Ubuntuをやめようと思った決定的理由はアップグレードの安定性のなさでした。Ubuntuでは半年ごとにアップグレードが来るのですが、すんなりアップグレードが完了することは一度もなく、ひどい時は再インストールすることもありました。

だんだん回数を重ねるたびに知恵がついてきて、リリースしてしばらく間を置いてからアップグレードした方が良いのではなどいろいろ試してみましたが、あんまり効果はなかったような気がします。 そもそもアップグレードしないという選択肢も当然あるわけですが、新しいもの好きな性格が災いしてついアップグレードしたくなってしまうのです。

ここ最近のアップグレードではアプリの安定性も悪くなってきてました。常用しているmltermとtmuxを併用するとmltermがなぜか落ちるという謎の現象が発生していて、こういった些細な問題もイライラを募らせていた原因だったように思います。

ArchとGentooが残った

というわけで、Ubuntuをやめようと決心、次は宗派の選定です。まず、Gentoo。twitterでGentooという言葉を見かけることが度々あって気になっていました。

それとArch Linuxにも興味がありました。Linux関連の情報を集めているとしばしばArch wikiに行き着くことが多くて、漠然と気になっていました。

そこでTwitter上でいろいろな方からご意見いただきまして、結局Arch Linuxに入信することにしました。

Gentooにしなかった理由ですが、やはりほとんどコンパイルというのはつらいなーと思いました。 常用しているアプリなどはいろいろと手を加えてコンパイルしたいという気持はとてもよくわかるのですが、Xとかベーシックなとこまでコンパイルとなると、デスクトップ用途で使うのにはちょっと気がひけました。

インストールするマシンにスペックが低いものがあったのもGentoo導入の障害でした。気の短い性分のため寝ている間にコンパイルなんてとてもできそうにありませんでした。

というわけで、Arch Linuxをインストールすることと相成りました。次からは実際の作業で知った、気づいたことを書き連ねていきます。

GPTを使うならArchbootがおすすめ

今回Arch Linuxをインストールしたマシンはデスクトップ1台、ラップトップ2台の計3台。ラップトップの2台についてはSSDだったので、まずはArch wikiでSSDについて調べてみるとGPT使うといいよーなことが書いてありました

Solid State Drives – ArchWiki

よくわかりませんが良さそうです。というわけでGPTを使うことにしたのですが、GPTを使うとbootloaderは必然的にGRUB2となってしまいます。ところが、Arch Linuxの標準インストーラにGRUB2が選択肢になく、いろいろと面倒なことをしないといけなさそうです。

Arch LinuxをGPT + Grub2でインストールを行う: くしゃみ日記

面倒くせーなーといろいろ調べていると、標準インストーラにいろいろと手が加えられたArchbootというものがあるということを発見しました。

Archboot – ArchWiki

これだと、GRUB2のインストールも楽そうです。最新の変更に追随しているようなので、インストール後のアップデートによるトラブルも減らせるかもしれません。

.fonts.confの設定が反映されない。

ホームデイレクトリの.fonts.confをいぢるのですが、全然反映されません。どうやら/etc/fonts/conf.d/50-user.conf というのがないといけないようです。

それとこのディレクトリはフォントをインストールしたりする時にしょっちゅう更新されるので、注意。フォントがなんか変だな、という時は/etc/fonts/conf.d/にあるconfを確認してみましょう。

flashが文字化け

当然flashも使えるのですが、うちの環境だと文字化けしてしまいました。どうやらインストールしているフォントとシステムフォントの設定で文字化けが起きるみたいです。 うちの環境ではシステムフォントをVlゴシックにすると正しく表示されるようになりました。

(早くflashなくならないかな。。。)

skksearchがない

skkはサーバ派です。Ubuntuでは、skksearchを使わせてもらってたのですが、Archではパッケージがありません。はて、どうしようかといろいろ見ていましたらyaskkservというskkサーバを発見しました。

wac’s webpage./yaskkserv
AUR (en) – yaskkserv

独自辞書を作る手間はありますが、google Japanese Input との連携があったりととても面白そうです。何よりすでにAURにPKGBUILDがあるので、インストールがとても楽。というわけで、なんの憂いもなく移行しました。

Linux版窓使いの憂鬱がDAEMONで起動しない

SandSを使っています。Linuxで実現するにはいろいろと方法があるのですが、Windowsで使っていることもあり、Linux版窓使いの憂鬱を使わせてもらってました。

窓使いの憂鬱 Linux & Mac (Darwin) 対応版とか配布してるところ

さすがにLinux版窓使いの憂鬱のPKGBUILDはなかったので、PKGBUILDをちょろちょろと書いてインストール。rcスクリプトまでこさえたのですが、DAEMONSにいれても全く起動してくれませんOrz

手動で起動してあげれば使えるのですが、起動するたびにいちいち立ちあげるのもめんどくさいので、代替のアプリを探すとat-home-modidfierというものを発見しました。

At home modifier – Gitorious
AUR (en) – xf86-input-evdev-ahm-git

こちらもAURがすでにあるのでインストールはとても楽。SandSの設定も簡単なので、楽に移行できました。

トラックポイントでスクロール

Ubuntuでも度々手間がかかっていたこ問題。Archでも同じように/etc/X11/xorg.conf.d/20-thinkpad.conf に次のように書いておけば良いみたいです。

Section "InputClass"
   Identifier   "Trackpoint Wheel Emulation"
   MatchProduct "TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device"
   MatchDevicePath  "/dev/input/event*"
   Option       "EmulateWheel"      "true"
   Option       "EmulateWheelButton"    "2"
   Option       "Emulate3Buttons"   "false"
   Option       "XAxisMapping"      "6 7"
   Option       "YAxisMapping"      "4 5"
EndSection

トラックポイントの速度調整

これもUbuntuでやってた設定。UbuntuだとGUIツールもあったのですがArchでは /etc/rc.local に次のように書いて凌いでます。

echo -n 230 > /sys/devices/platform/i8042/serio1/speed
echo -n 230 > /sys/devices/platform/i8042/serio1/sensitivity

音関係

もともとALSAが入っているのでaudioグループにユーザを追加すれば使えるようになります。

gpasswd -a yourusername audio

ただ、インストールした時はミュートになっていることに注意。alsamixerなど使って音量を設定しましょう。

デスクトップはALSAで問題なかったのですが、奥様機であるラップトップのx40はなぜか音が鳴りませんでした。というわけで、x40にはOSSをインストール。OSSについてはWikiに詳しく書いてあるので、そちらを参考にすればつまずくこともなく設定できました。

Open Sound System – ArchWiki

R関連

Rもパッケージになっています。「R」という何のひねりもないパッケージ名ですので探すのも楽です。

RのライブラリもいくつかAURにあります。

AUR (en) – Search Criteria: R-cran

また、cran2archというPythonスクリプトはcranにあるパッケージからPKGBUILDを生成してくれますので、これを使ってABSにパッケージ管理を統一しても良いかもです。

AUR (en) – cran2arch
master/cran2arch

Arch wikiをローカルに保存しておきたい

Arch Linuxについて調べているとWikiの情報量の膨大さにびっくりします。この膨大な情報、オフラインでも見れたら良いなと思うのはどうやら僕だけではないらしく。すでにパッケージングされています。

Arch Linux – arch-wiki-docs 20111219-1 (any)

これでgrepなり何なりで快適に探しものができますね。

Emacsのpkgbuild-mode

Arch Linuxでは、すでにかなりのアプリがパッケージングされているのですが、中にはLinux版窓使いの憂鬱などまだパッケージングされていないものもあったりします。そんな時はPKGBUILDを書くことになるのですが、そこはEmacs、すでにPKGBUILD用のモードがありました。

juergenhoetzel/pkgbuild-mode

これで、ガシガシPKGBUILDが書けますね!!

インストール後の感想

普段使いの状況に戻すまで手こずりましたが、慣れてしまえばとても楽です。

確かにUbuntuはインストールが終わってすぐ使えるディストロとしてはとても素敵ですが、自分のこだわりを追求すると途端にめんどくさくなります。その点、Arch LinuxはオレオレPKGBUILDさえ書いてしまえば、野良ビルドにも全く手間はかかりません。

即座に自分の普段使いの環境に戻すことができるので、トータルで見るとUbuntuより環境設定にかかる時間は短かくなった気がします。

また、低スペックマシンにも優しいのかなという気がしました。奥様用のThinkpad x40には LXDE on Arch Linuxを入れたのですが、以前使っていた fluxbox on Ubuntuよりもサクサク動くようになって、とても喜んでいます。というわけで、奥様にも優しいディストロ、Arch Linuxなのでした。

Arch Linux Handbook 2.0: A Simple, Lightweight Handbook

出版社:Createspace( 2010-10-13 )

定価:¥ 1,292

Amazon価格:¥ 1,125

ペーパーバック ( 187 ページ )

ISBN-10 : 1453807683

ISBN-13 : 9781453807682


elispリポジトリサイト、Marmaladeの新着情報をRSS化した

elispをMarmaladeで公開される方がかなり増えてきました。

DB操作ツール Emacs DBI を作ってみた – 技術日記@kiwanami
key-combo v1.3をリリース:post-command-hookを使うelispと併用しても問題ないようにしました – むしゃくしゃしてやった
quickrun.elで開発効率アップ – Life is very short
marmaladeからmagitを入れてみた – すぎゃーんメモ
punchagan/org2blog

他のもかなり頻繁に更新されるのでちょくちょく見にいくのですが、いちいちMarmaladeのサイトに見に行くのがめんどくさいですし、たまに落ちていることも。

いずれ、RSSで出力してくれるようになるだろうと気長に待ってたのですが、なかなかその気配もないのでyahoo pipesで作ってみました。

Pipes: Marmalade

にしてもpipesのサイト、かなり重くなった気がします。yahoo、だいじょぶなんやろか。

Org-modeでリンクのfont-lockがおかしくなる問題とその対策

Org-modeで日本語を書いていると、リンクのfont-lockがおかしいことになります。
リンクの終端が空白か改行文字まで伸びてしまうのです。

http://i.imgur.com/VMS3x.png

現象からして空白で単語を区切らない日本語特有の問題だしなーと半ば諦めていたのですが、一念発起、あのorg.elの正規表現樹海を散々さまよった結果、どうにかなったので書き留めておくことにします。

といっても、たいしたことはしなくてよくて

(setq org-activate-links '(date bracket radio tag date footnote angle))

とするだけです。

詳しく知りたい方は、org-activate-linksのDocstringをどうぞ。

ずっと悶々としていたのでかなりすっきりです。

R用ウィンドウマネージャー e2wm-R.el 0.4をリリースしました

e2wmのRインターフェイス、e2wm-R.elの新しい版をリリースしました。いつものようにGithubからダウンロードしてください。

Tags · myuhe/e2wm-R.el

ちなみに、初回リリースの時は次のようなことを書いていました。

EmacsでのR開発環境をRstudio、Eclipseライクにするe2wm-R.el

それでは、新しい機能についていくつか紹介します。

グラフのサムネイルを表示するR-thumbsパースペクティブの追加

これまでに出力した画像をサムネイルで一覧表示するR-thumbsパースペクティブを新たに追加しました。R-thumbsパースペクティブは、View、Dired、そしてmainであるThumbs、三つのプラグインで構成されていて、恐らくこんな感じに表示されると思います。

http://i.imgur.com/gzcJO.png

R-thumbsパースペクティブに切りかえるにはM-x e2wm:dp-R-thumbs とします。C-c t、または(e2wmの)prefix tにもバインドされています。このパースペクティブにはimage-diredを用いているので、image-dired自体の機能も使えます。image-diredについてはInfoのEmacsにあるDiredの章image-diredの説明を参考にしてください。

このimage-dired、起動時に盛大にブロックするというとても残念な仕様となっています。@mhayashi1120 さんのimage-dired+.elと併用することを全力でおすすめします。

Emacs で画像をスライドショーしたりカタログ表示したりする – 戯れ日記

データフレームの中身とかをポップアップするe2wm:dp-R-popup-objの追加

データの中身を確認する術としては、ess-R-object-popup.elとかがあったのですが、これはあくまでサマリーを表示するだけだったので、データを直接見ることはできませんでした。

ユースケースとしては、データの中身を個々に確認したいということもままありそう、というかよくあったのでsubウィンドウにデータを表形式で表示する関数を追加しました。

https://cacoo.com/api/v1/diagrams/7zWvpuWS9vMOmMAu-2D2F6.png

デフォルトではC-c v、または(e2wmの)prefix vにバインドされています。データをさらっと確認したい時はess-R-object-popup.el、がっつり確認したい時はe2wm:dp-R-popup-objというような感じで使い分けると良いと思います。

May the force with C-g …

popwin.elのC-gフォースがあまりにも羨ましかったので、subウィンドウをC-gで閉じられるようにしてみました。popwin.elのコードを大幅に使わせてもらっています。

今回新たに追加した、e2wm:dp-R-popup-objやヘルプなどsubウィンドウを使うことは結構あると思いますが、常時表示させておくような代物でもありません。見なくなったらC-gでサクッと閉じてウィンドウのスペースを有効活用しましょう。

imgur.comにグラフをアップロードする

R-thumbsパースペクティブはimage-diredをベースにできているので、昨日紹介したimgur.elと併用することで画像ホスティングサイトのimgur.comにサクッとグラフをアップロードすることができます。

imgur.comにEmacsから画像をPOSTするimgur.el

すでにimgur.elをインストールされている方は、R-thumbsパースペクティブで投稿したいグラフにキャレットを合わせ「C-c C-u」と押してください。

imgur.comに画像が投稿されて、Anythingの候補選択バッファが表示されると思います。

ほかにも諸々のバグフィックスをやっています。すでに使われていた方も是非アップデートしてみてください。

imgur.comにEmacsから画像をPOSTするimgur.el

というのを作ってみました。もともとはRから出力した画像を気軽にアップできたらいいなと思ってe2wm-R.elの機能の一つとして作っていたのですが、作っているうちにいろいろと夢がふくらんできたので、e2wm-R.elとは独立してリリースすることにしました。

インストール

package.elをお使いの方はMarmaladeを利用したインストールがとても手軽です。M-x list-packages として imgur.el を探してインストール。後は再起動するだけで使えるはずです。

Marmaladeからのインストールについては以前書いた日記が多少参考になると思います。

Marmaladeはお手軽感が素敵なEmacs Lispのリポジトリサイト

そうでない方は、GitHubからimgur.elを落としてきて、ロードパスの通ったところに置いてください。

myuhe/imgur.el

それとanything.elに依存していますので、同様に置いておく必要があります。

後は.emacsあたりに(require ‘imgur)と書けば使えるはずです。

使い方

使い方はさらに簡単。M-x imgur-post とするだけです。

このとき、Diredバッファかimage-diredバッファであれば、キャレット下のファイルがPOSTされます。そのどちらでもない場合は今開いているファイルがPOSTされることになります。

POSTが成功すると、Anythingインターフェイスにより得られた画像のURLをどう処理するかたずねられますので適当に選んでください。

http://i.imgur.com/KZHl5.png

これから追加したい機能

今回使っているAPIは、個人認証を必要としないためお手軽なのですが、これまでPOSTした画像などリストアップすることができません。

imgurではOauthによる個人認証のしくみがあるのですが、Oauthまわりで手こずってしまいまして、今回のリリースには見あわせることとしました。

というわけで、どなたかOauth1.0のライブラリを作ってくれる方を募集しています。

明日のsheepheadは

順番があべこべになってしまいましたが、新しくなったe2wm-R.elについて書く予定です。