タグ

ブックマーク / rubikitch.hatenadiary.org (56)

  • Rubyのrequireにディレクトリ名が必要な理由 - http://rubikitch.com/に移転しました

    Rubyのrequireのパス - imHo Cだと、ソースがどこにあっても #include "hoge.h" とやればそのファイル自身のパスも含めて探してくれるので便利なんだけどRubyの場合含めて くれないので、あるライブラリ的なソースから別のライブラリを参照するときにその置き場所 に困る。例えばソースが ・ main.rb ・ lib/lib1.rb ・ lib/lib2.rb とあって main.rbからlib1.rbがrequireされてて、lib1.rbからlib2.rbがrequireされてるとし て、lib1.rb 中で require './lib2' としても読めなくてエラーになる。 これの仕様には理由がある。 たとえばrcodetoolsの場合、以下のような配置になっている。 lib/rcodetools/xmpfilter.rb lib/rcodetools/op

    Rubyのrequireにディレクトリ名が必要な理由 - http://rubikitch.com/に移転しました
    gan2
    gan2 2012/10/22
  • buffer-nameではなくてbuffer-file-nameだよ - http://rubikitch.com/に移転しました

    アクティブなバッファから絶対パスを得る - gan2 の Ruby 勉強日記 (expand-filename (buffer-name)) 正解は (buffer-file-name) だよ。(buffer-name)はあくまでバッファ名なので変更できる。たまたま(file-name-nondirectory (buffer-file-name))がバッファ名に設定されているだけ。(buffer-file-name)かbuffer-file-nameで開いているファイル名がフルパスで得られる。

    buffer-nameではなくてbuffer-file-nameだよ - http://rubikitch.com/に移転しました
    gan2
    gan2 2012/05/14
  • savekill.elリリース - Emacsの突然死に備えて - http://rubikitch.com/に移転しました

    savekill.elをリリースしました。 動機 最近、なぜかよくわかりませんが、Emacsが突然死することありますよね? あまり使いこんでない人はあまり経験がないかもしれませんが、ヘビーユーザーにとっては日常茶飯事です。 不安定すぎて落ちまくるほどではないですが、僕のところでは数日に1回のペースで落ちてしまいます。 Emacs以外を使っていると、ソフトウェアの突然死の恐怖はよくわかると思います。 「保存してなくて、今までの作業がパーになった!」 誰もが一度はそんな経験があるでしょう。 もちろん、そこは我等がEmacs、ちゃんと防衛線は張っています。 Emacsには自動セーブ機能があり、一定時間以上保存していないと、一時ファイルに保存する仕組みになっています。 そのため、Emacsが落ちたとしても、当該ファイルに対し M-x recover-file を実行すれば、ほとんどの作業を取り戻す

    savekill.elリリース - Emacsの突然死に備えて - http://rubikitch.com/に移転しました
    gan2
    gan2 2011/02/28
  • 特定のキーに強制的にコマンドを割り当てる方法 - http://rubikitch.com/に移転しました

    Emacsにて、グローバルなキーマップ(global-map)を変更しても、すべてのバッファで有効にはなりません。 なぜなら、メジャーモードやマイナーモードでのマップがglobal-mapより優先するからです。 しかし、メジャーモードの特定のキー割り当てが気に入らず、自分用のコマンドを適用したいことがあります。 たとえば、僕の場合、C-tにother-window-or-spritというコマンドを割り当てています。そろそろEmacsのウィンドウについて一言いっとくか - http://rubikitch.com/に移転しました 参照。 C-tはdired-modeではimage-dired用のプレフィクスになっていてother-window-or-spritが使えません。 この場合は、キーマップ上書き専用マイナーモードを用意するのが手軽です。 こうすることでoverriding-minor

    特定のキーに強制的にコマンドを割り当てる方法 - http://rubikitch.com/に移転しました
    gan2
    gan2 2011/01/13
  • (rubikitch loves (Emacs Ruby CUI))

    みなさん、楽しくEmacsしていますか? この度、技術評論社より『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』を発刊することになりました。 Emacsには無数のコマンド、操作方法、Lispプログラム、設定があって、ムズカシイし、ややこしいですね。 あなたもきっと、そんな印象を持っているかと思います。 Emacsは現在、新しい時代へ向かっています。 Emacsは歴史のあるソフトウェアですが、ここ数年で多くの先進的なLispプログラムが登場してきました。 書は次世代Emacsのありかたについてあなたにお伝えするものです。 書をマスターすれば、Emacsの便利さを再発見し、Emacsユーザの最先端を走ることができます。 <2010-07-17 土> Update: 目次を公開しました <2010-08-10 火> Update: 正誤表 筆者とEmacs書の内容に入

    (rubikitch loves (Emacs Ruby CUI))
  • Emacs Lisp本に向けてアンケートに御協力お願いします! - http://rubikitch.com/に移転しました

    明けまして、おめでとうございます。 既に御存知の方もいると思いますが、今年はEmacs Lispのを執筆します。 既刊 『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』 は既存のEmacs Lispをいろいろと紹介するカタログ的なでした。 今回はEmacs Lispのということで、Emacs Lisp初心者でも最短距離でコードを書いて目的を達成できるようにすることをコンセプトとします。 その結果、Emacsをより自分好みにカスタマイズできるようになります。 年末に書店に並ぶことができればと思っています。 そこで、現役Emacserたちへ向けてアンケートを作成しました。 ニーズに合ったを執筆したいため、あなたの声をお聞かせください。 →アンケートはこちら← アンケート結果はこちら、参考までに → Emacs Lispアンケート - Google スプレッドシート

    Emacs Lisp本に向けてアンケートに御協力お願いします! - http://rubikitch.com/に移転しました
  • RubyでのDSLの作り方 - http://rubikitch.com/に移転しました

    Jay Fields' Thoughts: Implementing an internal DSL in Ruby RubyでのDSLの作り方をexpectationsというtesting frameworkを例にとって説明している。 やっぱassert_equalってオブジェクト指向っぽくなくてカッコ悪いよねwここはDSLでカッコよく書きたいものだ。 彼の言いたいことを日語で超要約してみる。 まず、どういうふうに書きたいかを決める。こんな感じにしたい。 Expectations do # テストだよというブロック expect :expected do # :expectedが期待される値 :expected # ブロックの評価結果が実際の値 end end これから、これをRubyスクリプトとして実行可能な形式にする。 まず、DSLを読み込んだら(実行したら)、Expectatio

    RubyでのDSLの作り方 - http://rubikitch.com/に移転しました
  • テスト駆動開発支援のtest-case-mode.elを使ってみた - http://rubikitch.com/に移転しました

    今更感はあるが、最近テスト駆動開発支援Emacs Lispのtest-case-mode.elが発表された。 http://nschum.de/src/emacs/test-case-mode/ M-x auto-install-batch test-case-mode でインストール。 こんな感じ。 テスト成功のグリーン、失敗のレッドなどの信号をモードラインに表示させる バッファが変更されたら信号も対応して変わる テストを実行して、失敗したら、その行へM-x next-errorとM-x previous-errorで飛べる assert関数群に色がつく JUnit, CxxTest, CppUnit, Python(PyUnit), Ruby (test/unit)に対応 テストコードを自動判別して、テストコードならばtest-unit-modeを有効にする 設定 以下の.emacsに

    gan2
    gan2 2010/05/13
  • 4時間睡眠で活動時間を増やすステップ - http://rubikitch.com/に移転しました

    お久しぶりです。気付けば1ヶ月半のブログを書いていませんでした。その間、anything.elをせっせと開発していました。多数のバグを直し、機能向上をしていました。その様子はtwitter:rubikitchにてつぶやいています。 今日はいつものテーマとは違った記事を書きます。 時間が欲しい とにかく、現代人は時間が足りない、いくらあっても足りないです。誰もが「時間がないからできない」と言うことでしょう。 しかし、時間は捻出するものです。時間を有効に使うのです。「時間がない」は言い訳です。そのことを学んでから、自分の生産性は何倍にも伸びたように感じました。 生活の規律をつくる 一番大切なのは、生活に規律を作ることです。生活の規律とは、特定の時間にある行動をすることを習慣化することです。技術的な例えでは、自分自身というOSにcronを仕組むことです(笑) 実際に特定の時間にある行動をすること

    4時間睡眠で活動時間を増やすステップ - http://rubikitch.com/に移転しました
  • そろそろEmacsのウィンドウについて一言いっとくか - http://rubikitch.com/に移転しました

    Emacsはひとつの窓(ふつうの意味の「ウィンドウ」、Emacs用語の「フレーム」)の中に複数の表示領域(Emacs用語の「ウィンドウ」)を持つことができる。そして、ヘルプ等を表示させる場合はEmacsが勝手に画面を分割して別のウィンドウに表示させる。まぁ、Emacsを使ってるならみんな経験してることだ。 ワイドディスプレイが台頭する中、フレームの横幅はどんどん長くなっている。Emacs22までだと強制的に上下分割されてとても使いづらかった。Emacs23になったら横幅にあわせて、上下分割か左右分割か判断してくれるようになった。横幅が広いと左右分割してくれる。表示行数が減らないのでこれは嬉しい。画面の有効活用だ。 Emacs22で左右分割させたいならば、M-x install-elisp-from-emacswiki display-buffer-for-wide-screen.elしてく

    そろそろEmacsのウィンドウについて一言いっとくか - http://rubikitch.com/に移転しました
    gan2
    gan2 2010/03/06
  • Rubyを使ってはてブ数をEmacsで表示する?凄いね。帰っていいよ。 - http://rubikitch.com/に移転しました

    この記事は、はてブ数をAPIで得る方法も書いてるので、Emacs使いじゃなくても役立つかもしれない? やっぱりブログをやっていると、評価は気になるものである。はてなならばはてなブックマーク数だ。 かといってちまちまブラウザではてブ数を確認しにいくのはだるいし時間の無駄である。数秒であったとしても、塵も積もれば山となるっていうじゃない。 はてブ数が気になる、かといっていちいち確認するのは面倒。この問題に対して、Emacs使いならば「モードラインにはてブ数を表示する」という解決策を選ぶもの。これを実現する display-hatebu.el を速攻で作ってみた。 M-x install-elisp-from-emacswiki display-hatebu.el でインストールしてくれ。さらにRubyとjsonライブラリが必要だ。Rubyインタプリタを入れた後で gem install jso

    gan2
    gan2 2010/03/06
  • text-translator.elで英語・日本語を自動判別しつつすべての翻訳エンジンで検索するパッチ - http://rubikitch.com/に移転しました

    久々にtext-translator.elをアップデートしたら、いろいろ便利機能が追加されていた。とりわけこの2つは強力だ。 text-trantext-translator-allで登録されている全部の翻訳エンジンで翻訳する text-translator-translate-by-auto-selectionで英語・日語を自動判別して適切な翻訳エンジンを使う しかし、この2つが両立していないところが不便だ。text-trantext-translator-allを使おうにも、毎回「enja」だの「jaen」だの打たないといけないのは至極面倒だ。せっかく英語・日語自動判別機能があるなら、使わない手はない。というわけでパッチ。 あ、インストールはauto-install.elからM-x auto-install-batch text translatorでできるよ!auto-insta

  • Emacs Lisp基礎文法最速マスター - http://rubikitch.com/に移転しました

    基礎文法最速マスターブームにのっかってみる。Ruby基礎文法最速マスターをだいたいEmacs Lisp(elisp)に置き換えてみる。 Emacs LispはEmacsで使われているLisp方言のひとつだ。他の言語をある程度知っている人はこれを読めばEmacs Lispの基礎をマスターしてEmacs Lispを書くことができるようになるかもしれない。無保証ではあるが。 ある程度はCommon Lispにも応用できると思うよ。 更新情報 [2010/02/03] 注釈の誤りを修正。 let*について加筆。 基礎 対話的にEmacs Lisp式を評価する Emacsを起動したときに生成されている、スクラッチバッファ(*scratch*)を使うと、Emacs Lispの式を簡単に評価することができる。M-Tabで補完できるぞ。 式を書いたらC-jを押すと、式の値が出てくるぞ。 (+ 1 3) 4

    Emacs Lisp基礎文法最速マスター - http://rubikitch.com/に移転しました
  • ホームポジションのアルファベットで候補を選択できるようにしてみた - http://rubikitch.com/に移転しました

    久々のanything.el更新。 anything-enable-digit-shortcutsという変数を知っているかな?この変数をtにすると、Ctrl+数字(1〜9)で先頭9個の候補を選択して、デフォルトのアクションを実行することができる。なんだけど、Ctrl+数字というのはすこぶる押しづらい!!なので使っていなかった。 (setq anything-enable-digit-shortcuts t) 今回の更新では、ホームポジションにある大文字のアルファベット(ASDFGHJKL)で候補選択できるようにしてみた。以下の設定を加える。なお、anything-enable-shortcutsはanything-enable-digit-shortcutsの新しい名前になっているので、anything-enable-digit-shortcutsを書き換えてもよい。互換性のために残してあ

    ホームポジションのアルファベットで候補を選択できるようにしてみた - http://rubikitch.com/に移転しました
    gan2
    gan2 2009/12/26
  • anything.elを使ってzshの履歴検索をする - http://rubikitch.com/に移転しました

    zshは快適なシェルではあるが、anything脳の俺にとっては履歴検索で絞り込めないと不便でしょうがない。 zshでanythingのようなものを作る方法があるものの、やはり物のanything.elを使いたい。 ということでzshのコマンドラインからanythingで履歴検索するコードを書いてみた。 更新情報 [2009/12/10]id:IMAKADOからのCarbonEmacs用のパッチを取り込み。 インストール とりあえず、anything一式が必要なのでインストール。 M-x install-elisp-from-emacswiki anything.el M-x install-elisp-from-emacswiki anything-config.el M-x install-elisp-from-emacswiki anything-match-plugin.el M

    anything.elを使ってzshの履歴検索をする - http://rubikitch.com/に移転しました
    gan2
    gan2 2009/12/26
  • topコマンドのanything.elインターフェース - http://rubikitch.com/に移転しました

    topコマンドはCPUやメモリを喰ってるプロセスをリストアップしてくれる。なるべくパソコンを軽くしたいので常に起動しているのだが、プロセスを殺すときにいちいちプロセスIDを打ち込まないといけないので面倒だ。そこでanythingインターフェース。 M-x anything-toptopコマンドを起動し、その中でC-c C-uを押すと更新。アクションはとりあえずkillのみ。 anything-config.elに加えてるので更新するだけで使える。 M-x install-elisp-from-emacswiki anything.el M-x install-elisp-from-emacswiki anything-config.el ;;; Top (process) (defvar anything-c-top-command "COLUMNS=%s top -b -n 1" "

    topコマンドのanything.elインターフェース - http://rubikitch.com/に移転しました
    gan2
    gan2 2009/12/26
  • 知らないと損するミニバッファ保険 - http://rubikitch.com/に移転しました

    Emacsを使ってて怖いことのひとつは、ミニバッファに入力中にC-gを押してしまうことだ。すると、今までの入力がパーになってしまう。 俺はskkを使っていて、変換をキャンセルするときにC-gを押すのだが、押しすぎたりタイミングを間違えたらミニバッファ入力がキャンセルされてしまう。なので、ミニバッファに日語を打つときはいつも冷や冷やしていた。 以下の設定を加えると、C-gを押したときに現在の入力がヒストリーに記録されるようになる。間違ってC-gを押してしまった場合は、再び同じコマンドを起動してM-pで前の入力を呼び戻せるぞ。 (defadvice abort-recursive-edit (before minibuffer-save activate) (when (eq (selected-window) (active-minibuffer-window)) (add-to-hist

    知らないと損するミニバッファ保険 - http://rubikitch.com/に移転しました
    gan2
    gan2 2009/12/26
  • auto-install.elでEmacsLispパッケージを自動インストール→anything.el関連を一括インストール - http://rubikitch.com/に移転しました

    Emacs Advent Calendar jp: 2009参加中!次はkiwanamiさん。 auto-install.el は拙作 install-elisp.el の後継バージョンである。サイトからEmacsLispファイルをダウンロードし、所定の位置に配置し、バイトコンパイルする。最大の違いはダウンロードが非同期になったことだ。 install-elisp ではダウンロード時に待たされるが、 auto-install ではダウンロード中も作業をすることができる。 ダウンロードはEmacsWikiから。install-elispが使えるならば、M-x install-elisp-from-emacswiki auto-install.el を実行する。 http://www.emacswiki.org/emacs/download/auto-install.el そして、以下の設定を

    auto-install.elでEmacsLispパッケージを自動インストール→anything.el関連を一括インストール - http://rubikitch.com/に移転しました
    gan2
    gan2 2009/12/26
  • Rubyリファレンスマニュアル刷新計画(るりま)をanything.elで検索して生産性を向上する - http://rubikitch.com/に移転しました

    最近Rubyリファレンスマニュアル刷新計画(るりま)を更新してなかったので状況が変わっていた。今ではsvnリポジトリを使ってドキュメントが作成されている。ドキュメントのデータを除いてみたら拡張RDで書かれている。Ruby リファレンスマニュアルを Emacs で参照・ anything.el との連携(改訂版) - http://rubikitch.com/に移転しましたではReFe2を呼んでいたが、直接RDを読み込んだほうが効率的なのでここに新しい方法を示す。こんな感じになる。 準備 まずは、るりまのリポジトリをチェックアウトする。 ~/compile/rurima以下に展開するものとする。 $ cd ~/compile; mkdir rurima; cd rurima $ svn co http://jp.rubyist.net/svn/rurema/doctree/trunk rub

  • 人は俺を「recentfマスター」と呼ぶ - http://rubikitch.com/に移転しました

    Emacsを使ってるみんな、recentfというパッケージを知っているかい? 「最近使ったファイル」を上から順に並べていってすぐに切り換えられるようにするヤツだ。最近使ったものを一番上の見易い位置に置いておくのは超整理法の手法で、すこぶる便利だ。知らない人はすぐに使おう。 ただ、デフォルトのrecentfのインターフェースはどうしようもなく使いづらい。ダイアログとかごちゃごちゃになってるし。たかだか超整理法の実装に1360行もあるってどういうことなの?そのまま使っていても、いまいち便利さに気付かないかもしれない。こんなのは空気のようなツールであるべきで、使い方を覚えるようなものではない。 anything.elから最近使ったファイルにアクセスする そこで、anything.elの出番だ。auto-install.elを使って M-x auto-install-batch anything

    gan2
    gan2 2009/12/26