「Python」タグアーカイブ

今週の気になるアレDecember 16th

googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
lastfm (feed #3)
20 曲を聴きました。
delicious (feed #4)
delicious (feed #4)
delicious (feed #4)
delicious (feed #4)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
lastfm (feed #3)
4 曲を聴きました。
googlereader (feed #6)
delicious (feed #4)
googlereader (feed #6)
delicious (feed #4)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
delicious (feed #4)
googlereader (feed #6)
Shared R at Google.
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)

Rの環境操作とクロージャ

折を見て、Common Lisp関連の書籍を読んでいます。なかなか進まないのですが。。。
何を調べていた時か忘れてしまいましたが、こちらで次のようなコードを見つけました。

Javascriptとかでもよく見かけるクロージャのサンプルですね。
で、はたと気になりました。Lispの影響を強く受けているRではどのように書けるのかと。
ちょっと書いてみました。

Rでは、CLのletにあたる関数がありません(多分)。なのですが、そもそもRには環境自体を作成、操作できる関数があるので、そちらを使うこととします。

…期待どおりの動作をしてくれません。環境とクロージャ環境中のオブジェクトを表示してみます。


関数が呼ばれる度に新しい環境が作成されていて、counterは新しい環境内の変数となっているようです。

ということで、Rでは関数内で定義された変数の扱いがCLと違うようで、CLでは親環境にまで派生しますが、Rでは親環境にまで派生しないようです。
Rのスコーピング規則は、Ross先生がSとの互換性を捨ててまでこだわったところらしいので、このような仕様にしているのは何か理由があるのでしょう。破壊的な代入が親環境にまで影響するのが嫌だったとかなのかなー
詳しくはわからないんですが、Pythonのジェネレータっぽいことしたい時はどうすれば良いんだろう。クラス作れとかってことなんでしょうかね。

ちなみに、Rのレキシカルスコープについては、以下の書籍が詳しいです。

Rの基礎とプログラミング技法

著者/訳者:U.リゲス

出版社:シュプリンガー・ジャパン(株)( 2006-10-22 )

定価:

単行本 ( 258 ページ )

ISBN-10 : 4431712186

ISBN-13 : 9784431712183


今週の気になるアレNovember 10th

twitter (feed #2)
日記書いた-> 今週の気になるアレNovember 3rd http://bit.ly/cjbMIH [myuhe]
twitter (feed #2)
いいなーこれ。日本で発売するのかな? "juggly.cn » Sony EricssonのBluetoothアクセサリ「LiveView」は11月19日英国で発売予定" – http://j.mp/daFwEp [myuhe]
twitter (feed #2)
RT @yomi0512: 「おい白川、何だこの伝票!」『知りません』「間違った処理されてるだろうが!」『私じゃありません』「じゃあ誰だ!?」『分かりません』「ならお前だろ!」『ここが会社じゃなかったら』「拳と拳で」『「語り合えるのに」』 [myuhe]
twitter (feed #2)
I’m at としのり歯科. http://4sq.com/ai44ED [myuhe]
delicious (feed #4)
twitter (feed #2)
I’m at ホテル 熊本テレサ. http://4sq.com/aOcJoe [myuhe]
twitter (feed #2)
ノートPCを職場に忘れた \(^o^)/ [myuhe]
twitter (feed #2)
代わりに、職場のTOUGHBOOK持って帰ってきてもうた。。。 [myuhe]
twitter (feed #2)
I’m at 白川公園. http://4sq.com/b2ufos [myuhe]
googlereader (feed #6)
twitter (feed #2)
#Ekumacs の打ち合わせから帰宅であります!! [myuhe]
twitter (feed #2)
【訃報】熊本県在住 母艦PCさんのHDDが本日お亡くなりになられました。。。 [myuhe]
twitter (feed #2)
ブータブルCDから起動を試みましたが、すでにアクセスすることすらできない状態でした。心からお悔やみ申しあげます。 [myuhe]
twitter (feed #2)
とりあえず、新調するHDDを物色するか。。。 [myuhe]
twitter (feed #2)
たいしたデータは入ってないものの、インストールとか面倒くさすぎなんだなー [myuhe]
twitter (feed #2)
HDDって、2TBでも1万円しないんですね。。。 いや、助かるんですけど、そんなに安くても良いのかなと。。。 [myuhe]
twitter (feed #2)
#Ekumacs 今日の打ち合わせ内容を簡単ですがまとめてみました!! http://j.mp/chaEFB [myuhe]
twitter (feed #2)
#Ekumacs やる前にlingrなりIRCでこれまでのEmacs勉強会の内容とか反省点とかをみんなでお話できると面白いかなーとか思ったり。 [myuhe]
twitter (feed #2)
あ、その前にHDD注文しとかないと。2TBのやつで良いよねー。多分ほとんど使わないと思うけど。 [myuhe]
twitter (feed #2)
それと、熊本にEmacsユーザって本当に少ないのか、な話も出てたす。#Ekumacs [myuhe]
twitter (feed #2)
HDDの注文完了!! [myuhe]
twitter (feed #2)
そういえば、Rの新しいR5クラスってどうなんですかね?個人的には、S3クラスなものに回帰してほしいなー。S4めんどくさすぎて。。。後CLOSな雰囲気がどんどんなくなってくというのも少し悲しい。 [myuhe]
twitter (feed #2)
RってS互換にこだわる必要ってあるんだろか。 [myuhe]
delicious (feed #4)
googlereader (feed #6)
twitter (feed #2)
I’m at 火の国 文龍 総本店. http://4sq.com/92K2c2 [myuhe]
twitter (feed #2)
先日、お亡くなりになったHDD,去年あたりに騒動になったseagateのやつだった。情弱っぷりに泣ける。。。 [myuhe]
twitter (feed #2)
seagateのHDD,自分で直すこともできるみたいね。 "Seagate製HDD 解析まとめ – トップページ" – http://j.mp/aEDRpk [myuhe]
twitter (feed #2)
【ゆるぼ】 seagateのロック状態を自力で直した方いますか? [myuhe]
twitter (feed #2)
入力速度が速くなると、AZIKを無視しているとゆー本末転倒っぷり。 [myuhe]
twitter (feed #2)
それでも二重母音のpは脊髄反射レベルで指が動くようになってきた。 [myuhe]
twitter (feed #2)
Pythonてば、Best Programming Language Best Scripting Languageで二冠ですか "Readers’ Choice Awards 2010 | Linux Journal" – http://j.mp/9R3eQc [myuhe]
twitter (feed #2)
ちなみに、Best IDE部門ではEmacsは圏外ですた。。。 "Readers’ Choice Awards 2010 | Linux Journal" – http://j.mp/9R3eQc [myuhe]
twitter (feed #2)
結婚式二次会の案内メールを大量に送信。あ、自分のではないですので為念。 [myuhe]
twitter (feed #2)
AZIKの二重母音って、SKKの送り仮名との相性がいまいちな気がしてきた。例えば「赤い」と書きたい時って、SKKでは AkaI と書くけど、二重母音を駆使すると akq て打ってしまって送り仮名あり変換がうまいこといかないのでイライラしたりする [myuhe]
twitter (feed #2)
同居人にAZIKの素晴らしさを力説したが、理解してもらえなかった。。。 [myuhe]
twitter (feed #2)
ってことで、同居人PCのIMをuim-Anthyからuim-mozcに変えてあげるなど。 [myuhe]
twitter (feed #2)
AZIKの学習コストってSKKよりは高いよね、やっぱり。。。 [myuhe]
delicious (feed #4)

今週の気になるアレNovember 3rd

googlereader (feed #6)
Shared yas-jit.el.
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
Shared ENSIME.
googlereader (feed #6)
delicious (feed #4)
delicious (feed #4)
delicious (feed #4)
delicious (feed #4)
delicious (feed #4)
delicious (feed #4)

今週の気になるアレOctober 13th

delicious (feed #4)
googlereader (feed #6)
twitter (feed #2)
今日のBGM – リヴィング・ダート / トミー・ゲレロ http://htn.to/hHQtQa [myuhe]
twitter (feed #2)
I’m at らーめん 三楠. http://4sq.com/c16xKL [myuhe]
twitter (feed #2)
リアルな願い事やな http://twitpic.com/2wcfdi [myuhe]
googlereader (feed #6)
twitter (feed #2)
最近のweezer、良い曲多いなー [myuhe]
twitter (feed #2)
jackassメンバーとweezerが一緒にやるPVで、リヴァースが今にも殺されなそうな顔してるのが笑える [myuhe]
twitter (feed #2)
あ、ubuntu10.10でたのか。今回は見送りかなー [myuhe]
twitter (feed #2)
mark ronsonのPVって日本人から見ればネタ乙!!くらいしか思わないけど、フランス人から見れば超クール!!とか思われてるのかな。。。 [myuhe]
twitter (feed #2)
RT @nitro_idiot: Emacs Lispで正規表現書いたら8割がバックスラッシュになった [myuhe]
twitter (feed #2)
PCが熱暴走でストップ。今10月で合ってるよね。。。 [myuhe]
delicious (feed #4)
twitter (feed #2)
TL見てたら、なぜかubuntuアップデートした方が良いような気がしてきた [myuhe]
twitter (feed #2)
熱でPCとまるのが怖いので扇風機あてながらアップグレード作業を行なってみるす [myuhe]
delicious (feed #4)
twitter (feed #2)
今日から楽できるはずだったのに、いっこうに楽になる気配がない。怖い。 [myuhe]
twitter (feed #2)
若者の不安にくらべれば、シニア世代の不安なぞ鼻糞程度だと思う。 "不発に終わった団塊退職特需:日経ビジネスオンライン" – http://j.mp/9uuC7z [myuhe]
twitter (feed #2)
うちの親父とか連絡しても、たいてい家にはいないでどこそこ遊びに行ってるし、常に遊ぶことだけ考えてる気がする。それで良いんだと思う。 [myuhe]
twitter (feed #2)
まあ、誰が悪いとかじゃなくて、こればかりは運だよねー [myuhe]
twitter (feed #2)
RT @tkf: pythonのすごいところは,「誰が書いても同じようになる」っていうどう考えて無理なことを目標に掲げて,プログラマがそれを意識するように仕向けたことなんじゃないか,って思ってしまう. [myuhe]
twitter (feed #2)
run_or_raise良いね [myuhe]
twitter (feed #2)
viなキーバインドになれないけど、なれてみる [myuhe]

今週の気になるアレOctober 6th

googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
googlereader (feed #6)
delicious (feed #4)
delicious (feed #4)
googlereader (feed #6)

Pythonのヘルプをポップアップしてくれるelisp、py-doc-popupができるまで

秋の夜長、いかがお過ごしでしょうか。こんばんわ、myuhe a.k.a デスマ中にも関わらず、いつの間にかelispをいぢってたりするたわけ者 です。
さて、そのきっかけは、@kozo2さんのたわいもない一言

emacsのPython modeでcompletion-at-pointやった時にvimみたいにdocstringの表示できないんだろうか。Mon Sep 06 14:02:57 via web

これをほけーっと見てて、あー確かにポップアップできるようになったら便利だなーとか思っていたのでした。

んで、お仕事でPython書いてたら、いつの間にかelisp書いてました。
python.elに使えそうな関数があったのでそんなに手間をかけずにできてきたのですが、バッファにPythonのヘルプを実行した結果がなぜか入りません。結局、原因がわからずTL上のelisperのみなさんに助けをこうことに

pythonのドックストリングをカーソル位置でポップアップするelisp書いたんだけど、なせか2回評価しないとポップアップしないとゆーとんでもない粗悪品。。。Wed Sep 29 10:25:56 via KeySnail


というわけでハックしてくださる方、募集中です!! RT @myuhe: 先ほどのPythonのドックストリングをポップアップするelisp。 なぜか2回評価しないとポップアップしないんだけど。。。 “gist: 602537” – http://j.mp/aJ005yWed Sep 29 11:05:39 via KeySnail

すると、ありがたいことに@mori_devさんと@kiwanamiさんからコメントが。

@myuhe 整理するとけっこういいせんまでいけたのですが、comint.. の戻り値を取得できないところで諦めました! http://j.mp/cpU6xGWed Sep 29 13:01:13 via KeySnail


@myuhe comint-redirect〜が非同期の関数のようです。 comint-redirect-filter-functions で表示のイベントを取ってくるか、地味にタイマーでポーリングとかでしょうか。Wed Sep 29 14:17:34 via web


@myuhe gistでforkして100msec待つ簡単な修正をしてみました。ちゃんとするなら、中身が入るまでループして待つとか、filterでイベント拾ってdeferred開始という感じかなと思います。Wed Sep 29 14:26:55 via web

本当にありがとうございます。elispは 1割の括弧と9割の優しさでできているというのは本当なんですね!!
お二人のコードを拝借しながら、どうにか形になりました。kiwanamiさんからはdeferred.el使う必要はないかも、とのことでしたが、せっかく書いていただいたし、deferred.elの使用例としてそのままにしてます。

python.elで定義されている関数を使っているので、Emacs22以降推奨。そうでない場合は自前でインストールする必要があります。
当然deferred.elが必要です。
kiwanami’s emacs-deferred at master – GitHub
ポップアップにはpopup.elを使っているので、こちらも必要です。
m2ym’s auto-complete at master – GitHub
kozo2さんが希望されていたものと、ちょっと(かなり?)違う気もしますが、auto-complete.elに組みこむのだったら、たいした手間はかからないかも。
余裕がでてきたらやってみます。

20101001 20:41追記

deferred.elをdeffered.elとtypoしていたのを修正しました。
kiwanamiさん、ご指摘ありがとうございます。

今週の気になるアレSeptember 8th

googlereader (feed #6)
googlereader (feed #6)
youtube (feed #5)
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
googlereader (feed #6)
delicious (feed #4)
delicious (feed #4)
delicious (feed #4)
googlereader (feed #6)

EmacsでRのコード補完を快適にしてくれるauto-complete-acr.elがオムニ補完に対応しました。

Emacs Wiki更新情報を眺めていると、ac-R.elなるものを発見。

auto-complete.elのRインターフェイスが出てる!! “EmacsWiki: ac-R.el” – http://j.mp/cbrPMEMon Aug 23 22:48:03 via KeySnail

案の定、auto-complete.elのR用拡張でした。
ざーっと見た感じ、オムニ補完ができそうだし、古いバージョンのRでも補完ができるようになっていたりと、とても高機能っぽいです。
ちなみにオムニ補完とは、もともとVimの補完方法につけられている名称で(多分)、VSのインテリセンスのようなものだと思うとわかりやすいかもしれません。
これを使うと例えば、JavaやPythonのメソッドをさくっと補完していくことができるのですごく便利なのです。

で、早速使ってみたのですが、これがなかなか思うように動いてくれません。
まず、思いもよらないところでオムニ補完が働いたりするくせにオムニ補完してほしいところでしてくれません。これはオムニ補完のトリガーとなっている正規表現が変てこなことに起因するのですが、あまり肌に合いませんでした。
それと、オムニ補完時は、補完候補が読みこまれているオブジェクトに限定されるようになっているのですが、変なところでオムニ補完が働くせいで入力したいものが補完候補になかったりします。

というわけで結局, 肌にあったauto-complete-acr.elやねーということになったわけですが、せっかくなのでauto-complete-acr.elもオムニ補完ができるようにしてみました。
んですが書いた後に、そもそもCLOS風味なオブジェクトシステムのRでオムニ補完って必要なくね?という事に気がついたのですが、とりあえずアップデートしてGitHubに置いときます。

auto-complete-acr.el at master from myuhe’s auto-complete-acr.el – GitHub

インストールなぞは以前書いたこちらを参考にどうぞ。

ESS on Emacsで快適に補完できるauto-complete-acr.el0.2リリースしました

肝心のオムニ補完ですが、今のところデータフレームの列にアクセスする$演算子とS4クラスのスロットにアクセスする@演算子に対応しています。
動作している動画を見れば一目瞭然かと思います。動画ではデータフレーム”dat”で列やスロットを入力しています。

これまでデータフレーム等の要素にアクセスする際、例えばhoge$fugaのように入力する場合で考えると、hogeは補完できる可能性があったわけですが、fugaについてはほとんど手入力であったと思います。今回のオムニ補完では、$や@がトリガーとなってauto-completeするので、$より後ろのfugaについても補完候補から選択できるようになります。さらに、オムニ補完時にはトリガー($とか@)より前の文字列に応じて補完候補が絞られるので、効率的に候補選択することができるようになりました。
実は、もっとオムニ補完を働かせる場面ってあるかなーと思ってたのですが、意外にありませんでした。いやあ、CLOSって素晴らしいですね!!
ほかにオムニ補完をきかせたいシチュエーションがあったら、教えてもらえると嬉しいです。
最後になりましたが、補完候補を表示している際にいきなり補完候補が落ちる現象を確認しています。あまり気になるようでしたらac-source-omni-pre-list-essacrとac-source-omni-pre-class-essacrを情報源からはずしてみてください。

それでは Enjoy R and Emacs!!

Emacsで読みたい日本語infoとinfoの便利な使い方

電子書籍の流行による若者のinfo離れが著しい今日この頃、いかがお過ごしでしょうか。こんにちわ、myuhe a.k.a 最近欲しいのはinfoリーダー機能つきkindle です。
さて、infoとはGNUプロジェクトで用いられているドキュメント形式です。Emacsではinfoリーダーとしての機能が標準で備わっていて、infoモードで快適にinfoを見ることができます。くだらない会議中などに、こそっと見るのにもってこいです。
infoは当然読み物としても使えますが、使い方によってはリファレンスとして使うこともできます。むしろこっちの方が強力で、独自のヘルプシステムを作っていくことができます。
というわけで、今回は半ば趣味的に収集しているinfoファイルとちょっと便利な使い方を紹介してみたいと思います。

Emacs関連info

さすがにいろいろな文書が日本語訳されてます。
Emacs 電子書棚
いつもお世話になっている電子書棚さん。Emacsリファレンスマニュアルを始め、Emacs関連の様々なドキュメントの日本語訳が公開されてます。
Emacs-Lisp without a Hustle
優しいEmacs-Lisp講座として書籍にもなった文書が一部ではありますがtexinfoで公開されています。ありがたいです。
cl.texiの日本語訳:okshirai:So-netブログ
Emacsのためのより優れたLisp対話モード:okshirai:So-netブログ
CLパッケージマニュアルの日本語訳、CommonLispの開発環境であるSLIMEマニュアルの日本語訳を公開されています。

プログラミング言語関連info

こちらも、いろいろと日本語訳されてます。ただ、新しい言語などはそもそも英文のtexinfoさえもなかったりしますね。info離れか。。。
Python 和訳ドキュメント
Python2.5のドキュメントがすでにinfoに変換までされて公開されてます。PythonってEmacsとの繋がりが薄い気がしていたので、ちょっと意外。
Perl Japanese Manual
Perl5のドキュメントが公開されてます。
RAA – Documentation / Texinfo
Rubyも1.4のドキュメントが公開されてます。
統計言語 R の関連ドキュメントの和訳(最終変更 2003/06/23)
Emacsの利用がはげしく推奨されているRでも諸々のドキュメントがtexinfoで公開されていて一部が日本語訳されています。とてもありがたいです。
Gauche – A Scheme Interpreter
Scheme処理系であるGaucheもダウンロード先のdocディレクトリにtexinfoが入っているみたいです。

ツール関連info

CVS Repository
GNUプロジェクトで開発されたツールのドキュメントも日本語訳が公開されています。
KI’s Unofficial GNU Manual Translation Project
GCJやflex等のツールのマニュアル日本語訳が公開されています。
こちらも最近のツールはtexinfoがないようです。個人的には英文でも良いのでgitとmercurialのtexinfoが欲しいです。

Windowsユーザの方であれば、Meadowにはすでに日本語infoが大量に登録されてあります。まずはそっちを見てみてもいいかもしれません。
texiからinfoに変換するのがめんどくさいという方はそちらから持ってきた方が早いかもしれません。

info+.elでinfoを読みやすく

素のinfoでも十分読みやすいのですが、少し素気ない感じです。info+.elというelispを導入すれば、文字列や関数部分が色付けされて少し華やかになります。
また、簡易な栞機能もあるみたいです。auto-install.elがインストールされていればM-x auto-install-from-emacswikiとして、info+.elと入力して.emacsに以下のとおり書いておけば良いです。

anything.elからinfoを引いてみる

infoを見る環境はデフォルトで十分なので、次はリファレンスとしての機能を強化してみます。標準のanythingでもEmacs Lisp限定でinfoを引く機能は備わっています。今回は日本語でinfoが引けるようにします。上で紹介したEmacs Lisp関連の日本語infoを登録してから以下のスクリプトを.emacsあたりに追加しておきます。

ついでにPythonのリファレンスも引けるようにしてみます。同じように日本語infoを登録しておきましょう。

関数の引数の順番忘れたーとか、ちょこちょこした調べ物の時にサクッと調べられるので、なかなか便利です。

まだまだこんなinfoあるよーとか、info情報お持ちの方いましたら、教えてもらえるとすごく嬉しいです。