サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
rubikitch.hatenadiary.org
define_methodの中にsuperを書くとどうなるか実験。 class A def hoge "hoge" end end class B < A define_method :hoge do "[#{super}]" end end class C < A define_method :hoge do "[#{super()}]" end end RUBY_VERSION # => "1.8.7" B.new.hoge rescue $! # => "[hoge]" C.new.hoge # => "[hoge]" Ruby 1.8.7だと動く。 class A def hoge "hoge" end end class B < A define_method :hoge do "[#{super}]" end end class C < A define_method :hog
音鳴らん! 僕はDebian GNU/Linuxのtestingを使っているので、ちょくちょく「sudo apt-get dist-upgrade」を実行しています。 ずっとstableを使っていたのですが、パッケージがあまりにも古いのでメイン機には使えないから乗り換えました。 sidでテストされているものがtestingに降りてくるので、sidほどではないもののパッケージは準最新のものが使えます。 さて、いつもdist-upgradeしていると(準)最新のパッケージになるので嬉しいのですが、たまに困ったことが起きます。 それは、いつも動いているものが更新によって動かなくなることです。 しかも再起動するまで気付かなかったケースとかも… 今回困ったのは、再起動したらUSBオーディオから音がでなくなったことです。 Debian GNU/Linuxは再起動が要求されることはめったにないのですが、
Pry = IRB.succ 今回は久々にRuby+Emacsなお話です。 あなたはRubyプログラミングで試行錯誤するときに どういうツールを使っていますか? irb? xmp(rcodetools)? irbはRubyをインストールしたときに 昔からついてくる対話的Rubyです。 シェルのインターフェースでRubyの式を 書いたら評価結果を表示してくれます。 その進化形がPryです。 で、pryとは何かというと、 『Pry = IRB + Shell + Ruby Shell + Debugger』 といった感じです。 Emacsの世界にあるeshellは 『Eshell = IELM + Shell + Emacs Lisp Shell』 なので、pryはRuby界のeshellみたいなものと 思っていただければよいです。 $ sudo gem install pry pry-nav
yasnippetは便利だけど… yasnippetは略語を展開して 定型文入力を支援するelispです。 yasnippetは開発してから何年もたち、 すでにたくさんのスニペットがついてきました。 それこそスニペットの山、やま、Yama! これだけスニペットがあればさぞかし 便利になるだろうと最初は思うはずです。 だがしかし! これには本質的に避けられない大きな問題があったのです。 その問題とは… 『記憶』 です。 いくらたくさんスニペットが登録されていたとしても、 それを展開するための略語が覚えられないのです。 開発者からしてみれば、よかれと思って どんどん追加しまくったスニペット群、 だが、略語が覚えられないと展開できない という根本的問題があるのです。 頻繁に使う略語ならば、何度か使っていくうちに勝手に 覚えてきますが、使用頻度の低い略語は一旦覚えたとしても、 あっさり忘却の彼方へ
くどいプレフィクスキー Emacsにはプレフィクスキーという概念がありますね。 そのおかげで1ストロークではおさまりきれいないほどの 数のコマンドをキーに割り当てることができます。 それはいいことなんですが、プレフィクスキー 付きのコマンドを何度も実行すると、いい加減 プレフィクスキーがくどいと感じてきませんか? たとえば、 C-x 3でウィンドウを左右分割してください。 その後C-x {を何回か実行して ウィンドウを縮めてください。 C-x { C-x { C-x { …と何度もC-x {を 実行するハメになってしまいますね。 repeatはいいけど これを回避する方法としてrepeatを使う方法があります。 C-x zを使えばC-x { C-x z z …のようにできますが、 やはりC-xがくどいのではないでしょうか? (global-set-key (kbd "C-,") 'repe
お久しぶりです。 みなさん、M-x allって知ってますか? M-x package-install all でインストールできるのですが、これはM-x occurのように正規表現にマッチする行を表示します。 occurとの違いは表示結果を書き換えれば、該当部分が自動的に書き変わることです。 ユースケースとしては、編集対象行を絞り込んでから、置換やrectangle系コマンドで一気に編集するって感じです。 便利なので以前から重宝しています。 ただ、occurより劣る点としては、対象行の行番号が出ていない点と、M-g M-n (next-error)とM-g M-p (previous-error)で移動できない点です。 (union all occur) occurで絞り込んだはいいけれど、その結果をやっぱり編集したいという場合に改めてM-x allを実行するのは面倒ですね。 そこで、拙作
お久しぶりです。 世の中はすっかりEmacs24になってきたようですね。 本日、el-expectations.elの後継となるert-expectations.elをリリースしたのでお知らせします。 el-expectations.elは現役で使っているのですが、テストが失敗したときのレポート機能が弱くて不便に思っていました。 Emacs24ではユニットテストフレームワークのERTが標準添付になったことにより、ERTを内部で呼び出すことでその問題を克服しました。 基本的な使い方はel-expectationsと変わりません。 ERTについて学んでなくても今すぐ使えます。 M-x install-elisp-from-emacswiki ert-expectations.el M-x install-elisp-from-emacswiki el-mock.el あるいは M-x auto
anything.elの後継としてhelm.elが開発されていますが、anything.elはまだ死んでいません。 anything.elの現行ユーザのために、バグ修正をメインにメンテナンスし続けます。 ものすごい久し振りですがanything-grep.elを修正しました。 grepの結果をanything.elで絞り込む anything-grep.el をリリース - http://rubikitch.com/に移転しました 変更点はたった1点で、何も設定しなくてもpersistent-actionでマッチした行をハイライトできるようにしました。 (require 'anything-grep) のみでおkです。 M-x install-elisp-from-emacswiki anything-grep.el Gitリポジトリではcontribに入っているので注意。
Emacs24「ねんがんのlexical-bindingをてにいれたぞ!」 10年にわたって開発してきたlexical-bindingがついにEmacs24に取り込まれました。 これはEmacs界の大大大ニュースです! lexical-bindingが有効になると、letがlexical-letに化けます。 lexical-bindingは速いということらしいのですが、現時点でベンチマークをみかけないので測定してみました。 lexical-bindingは変数lexical-bindingをtにすると有効になります。 この変数は、バッファローカル変数なのでsetqで設定しても他のバッファに影響はありません。 M-x ielmで実験してみましょう。 ELISP> (setq lexical-binding t) t ELISP> (defun f1 (n) (let ((i 1) (s 0)
明けまして、おめでとうございます。 今年もよろしくお願いします。 昨年発行したEmacs Lispテクニックバイブルは好評です。 絶賛の声をたくさんいただきました。 本当にありがとうございます。 万全を期していたのですが、残念 ながら誤植がみつかってしまいました。 読者の皆様には大変御迷惑をおかけしました。 ================================================================ p132 4-3-2 注1が行方不明 注1 筆者は4分割以上はしていません。 ================================================================ ================================================================ p142 5-1-2
おひさしぶりです。 急に冷え込んできましたが、風邪 などには気をつけてくださいね。 今日は、実話を通して我々技術者にとって「価値を 提供する」とはどういうことかについて書きます。 どうしても見落してしまいがちな視点 なので、しっかり読んでください。 僕はパソコン初級者Rさんとスカイプをしていました。 Rさんは、もちろんEmacs使いではなくて、健気にもメモ帳 で3000行ものテキストを苦しんで作成していました。 Rさんは、 「あまりに長すぎてまとまってないな」 と言いました。 僕はテキスト処理のエキスパートとして長年ス キルを磨いているので、これは目次をつけて箇 条書きにすれば見やすくなると提案しました。 ふつうのテキストファイルを箇条書き にして目次をつくるといえば、Emacs ユーザならばおなじみのorg-modeです。 C-c C-e Aでorg-modeのバッファを目 次つきテキス
この記事は Emacs Advent Calendar jp: 2011 の11日目です. 昨日はta2_o2p さん、明日は id:handlename さんです。 去年、一昨年とインストーラ系を連続して紹介してきましたが、 今年はうってかわって身近な例を取り上げたいと思います。 僕は最近、Windows XPのネットブックを 使っていることが多いです。 あれだけ忌み嫌っていたWindowsの方が自宅の Linuxマシンよりも稼働率が高いのです。 数年前の自分が聞いたらびっくりしてることでしょう。 この前はネットブックにEmacsをインストール する話をしましたが、今回は小さい画面で Emacsを使うノウハウをお送りします。 最近はパソコンといえばノートパソコンが普通の ようなので、これからする話は役立つと思います。 とにかく、小さいパソコンでEmacsを使う場合、 最大の問題点となるの
お待たせしました。 2大プロジェクトその2を発表します。 それは、まぐまぐでメルマガを発行することです! 題名は「Emacsの鬼るびきちのココだけの話」です。 僕はこれまでブログや書籍という 形で情報提供をしてきました。 僕の著書を買ってくださった皆様、 本当にありがとうございます。 本メルマガでは、Emacsを中心にRubyやLinuxなどの コンピュータ関係の話題を初めとして、心構え等 僕の脳内をすべてさらけ出していきます。 まさに「ココだけの話」というの に相応しい内容になっています。 本メルマガを定期購読することで、 あなたは立派なEmacsハッカーになります。 Emacsを手足のごとく、まるで身体の一部で あるかのように使えるようになります。 そのためのサポートをさせていただきます。 なぜメルマガを発行するのかというと、 一番大きいのが書籍との住み分けです。 書籍執筆というのは、
お久しぶりです。 この度、新著の 『Emacs Lispテクニックバイブル 〜真髄を知るLispの掟〜』 を執筆しました。 この本は、すでにEmacsを使っている人が、 Emacsを手足の如く扱うことを目的にしています。 前著『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』は あらゆるEmacs Lispプログラムを活用して、快適な環境を構築するための カタログ的な本でした。 紹介された様々なEmacs Lispプログラムによって、 あなたのEmacsは劇的な進化を遂げたことでしょう。 それでも、人間の欲というものは限りないものです。 「このEmacs Lispプログラムのココが気に食わない」 「このようなEmacs Lispプログラム欲しいけどないなー」 「世界でただ一つ、俺だけのEmacsを作りたいぜ」 みたいな欲が出てくるんですね。 もし、その感情が湧いたことが
それではお待ちかね、ネットブックにEmacsをインストールする話です。 この手順通りにやることで、あなたのネットブックは 立派なEmacs専用機に大変身します。 古くから、モバイルギアやリナザウによってUnix環境を 持ち歩き、そこの中でEmacsひきこもり生活を始めて いる人がいますが、その環境構築には多大な手間が かかりました。 しかし、この方法を使えば、OS換装の手間もなく、 単にEmacsをインストールするだけでよいのです。 OSはWindowsのままですが、Emacsにはeshellという 立派なシェルがありますので、各種Unixコマンドや スクリプト言語の環境を整えておけばLinuxと何等 変わらない操作性を得ることができます。 あなたも、「物書きマシン」、「Emacsが動くpomera」 というコンセプトでネットブックをとらえてみませんか? 僕は、愛用ネットブックを 「パソコ
それでは、ネットブックと母艦のデータを同期させる方法を説明します。 2つのパソコンのデータを一致させておくことで、 一方が他方のファイルを上書き保存してしまう 危険性がなくなります。 2台以上のパソコンを使っている人ならば おそらく、上書き保存をしてしまって 途方に暮れたことがあると思います。 ここでお話する同期を取る方法さえしっかりやっておけば、 こんな問題とはおさらばすることができます。 パソコンのデータを同期させるにはunisonというツールを使います。 rsyncに似ているのですが、unisonは双方のパソコンで データが更新されていても対応できる強味があります。 それではunisonを使って同期させるための手順を示します。 とりあえず母艦はLinux、ネットブックはWindowsだと想定しますが、 手順自体にはOSは関係ありません。 1. 母艦に同期用のネットワークカードを接続す
24日、Yokohama.vim #1へ行ってきました。 Yokohama.vim #1 を開催しました - Guyon Diary 意外なことに、これが勉強会初参加です。 しかも、自分のフィールドであるEmacsやRubyではなくて、アウェイなVimの勉強会。 いろいろ事故ってしまい、遅刻してしまいました。本当にごめんなさい。 それにしても、みんなノートパソコンを持ってきていて、僕は持っていないので肩身が狭かったです。 そのうち安価なネットブックを手に入れたいところです。 感想はみんな書いているし、多忙なので、僕はやや短めで(笑) テーブルシャッフルVimLevelにあわせてテーブルシャッフルを行いました。 VimLevelの順番に後ろにみんなが並ぶのです。 こーゆーのは初体験で意外におもしろかったです。 高レベルの人はとても少なく、初心者・初級者が多かったです。 僕はhjklとかiax
ども、るびきちです。 この度、14年間使ってきたLinuxから決別することにしました。 今日からWindowsを使うことにしました。 なぜ、突然このような決断を、と思ったでしょう。 自分でいろいろいじれるLinuxは今でも大好きです。 車にたとえたら、マニュアル車ですから。 しかし、いくら自分がLinux大好きといっても、世の中はまだWindows全盛です。 便利なツールがあっても、Windowsでしか使えなくて、齒痒い思いをすることもたびたびありました。 Windowsといえば、たしかにウィルスは怖いです。 しっかりWindows Updateをして、きちんとウィルス対策ソフトを導入します。 もちろん怪しいサイトからダウンロードすることはしませんし。 今更Windowsに転向するのは茨の道だと思っています。 慣れない操作体系ですから。 しかし、考えてみれば、EmacsもRubyもWind
<2011-03-23 水> 更新!本家から最新版を取ってくる必要があります。 先月、Debian GNU/Linux squeezeがリリースされました。 もちろん僕もアップグレードしました。 この話は、おそらくUbuntu ユーザにも関係があるかもしれません。 Debian GNU/Linux squeezeにアップグレードしたとき、一番困ったのがX Window Systemの設定でした。 インテルのオンボードグラフィックでは xserver-xorg-video-intel というXサーバを使うのですが、これがフリーズするのです。 フリーズが解決したと思ったら、今度は描画速度がめちゃくちゃ遅いという。 特に端末の描画速度がやばいほど遅く、イライラしていました。 しょうがないから xserver-xorg-video-fbdev を使っていたのですが、今度はmplayerで -vo
savekill.elをリリースしました。 動機 最近、なぜかよくわかりませんが、Emacsが突然死することありますよね? あまり使いこんでない人はあまり経験がないかもしれませんが、ヘビーユーザーにとっては日常茶飯事です。 不安定すぎて落ちまくるほどではないですが、僕のところでは数日に1回のペースで落ちてしまいます。 Emacs以外を使っていると、ソフトウェアの突然死の恐怖はよくわかると思います。 「保存してなくて、今までの作業がパーになった!」 誰もが一度はそんな経験があるでしょう。 もちろん、そこは我等がEmacs、ちゃんと防衛線は張っています。 Emacsには自動セーブ機能があり、一定時間以上保存していないと、一時ファイルに保存する仕組みになっています。 そのため、Emacsが落ちたとしても、当該ファイルに対し M-x recover-file を実行すれば、ほとんどの作業を取り戻す
久々のEmacsネタ。 歴史は繰り返すものです。 今はブラウザでなんでもできてしまう時代、かつてのEmacsを彷彿とさせます。 だが、ブラウザがEmacsに決定的に劣っているのは、『速さが足りない』ことだと思ってます。 フレーム、フラッシュなどマウス前提のIFなので、素早い動作が難しいです。 対して、Emacsはテキスト入力のスペシャリスト。 テキスト入力が関わる場面があれば、そこに必ずEmacsの活躍があります。 dabbrev、yasnippetなど、入力に不可欠なツールが無数に存在するからです。 さてさて… 2年前に書いた記事 では、外部コマンドやloopを使ってEmacsで連番を入力する方法を紹介しました。 しかし、めんどいですね。 なので、Emacs Lispで書きました。 M-x duplicate-this-line-forward 直前の行をコピーする直前の行と同じ行を作成
先日、サンヨーのICレコーダーICR-PS401RMを購入しました。 結論を言うと、Linuxからふつうに使えます。 メーカー側はMacにすら非対応と言っていますが。 録音機能つきMP3プレーヤーが欲しい以前から録音機能つきMP3プレーヤーが欲しいと思っていました。 というのは、パソコン作業をしていなくても音楽やオーディオブックを聴いていたいからです。 これがないとパソコンでしか聞くことができません。 つまり、パソコンに束縛されている状態ですね。 パソコンどころか外出中でも聞くことができれば、隙間時間を勉強時間にできます。 そして、録音ができるといろいろ便利です。 会議や打ち合わせを録音することができます。 また、自分用のボイスメモとしても使うことができます。 声を録音するなら、メモ紙に書くよりも早いし、楽です。 帰宅後、改めて録音を再生してパソコンのGTDシステムに放り込めばいいのです。
明けまして、おめでとうございます。 既に御存知の方もいると思いますが、今年はEmacs Lispの本を執筆します。 既刊 『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』 は既存のEmacs Lispをいろいろと紹介するカタログ的な本でした。 今回はEmacs Lispの本ということで、Emacs Lisp初心者でも最短距離でコードを書いて目的を達成できるようにすることをコンセプトとします。 その結果、Emacsをより自分好みにカスタマイズできるようになります。 年末に書店に並ぶことができればと思っています。 そこで、現役Emacserたちへ向けてアンケートを作成しました。 ニーズに合った本を執筆したいため、あなたの声をお聞かせください。 →アンケートはこちら← アンケート結果はこちら、参考までに → Emacs Lispアンケート - Google スプレッドシート
動機時間のかかる処理をしていると、いつまで待たされるのかわからなくなります。 このとき、進捗状況を表示してくれると安心です。 マニュアルより Progress - GNU Emacs Lisp Reference Manual 使い方単純な数値ループ: (dotimes (変数 回数) 処理〜)決まった回数(N)だけループするにはdotimesを使います。 以下の例では、メッセージを表示し、500個カウント(1カウントあたり0.01秒なので)します。 、5秒後(0.01×500)にdoneと表示します。 (progn (message "Collecting some mana for Emacs...") (dotimes (k 500) (sit-for 0.01)) (message "Collecting some mana for Emacs...done"))進捗状況付き数値ル
Emacs Advent Calendar jp: 2010 の9日目の記事です。 去年のauto-install.el に引き続き、今年もインストーラの紹介です。 昨日は id:yaotti さん(anything関数を好きな言語で実装できるanything-with-everything.el (Emacs Advent Calendar 2010 8日目) - yaotti's diary)でした。 anything-with-everything.elは以前から作ろうと思っていたら先越されてしまいました。 明日は id:handlename さんです。 つい最近になって、Emacs Lispのインストールを管理するel-get.elが登場しました。 Emacs Lispのインストールといえば、auto-install.elやその前身のinstall-elisp.elがあります。 し
動機yasnippetの展開機能はなかなか強力ですが、「次の」テンプレート展開の準備や条件分岐ができない弱点があります。 連続展開の例は、プログラミングにおけるドメイン特化言語を記述する場合です。 この場合は、パターンが決まっているので、次のテンプレート展開の準備をするテンプレートを記述すればすんなり記述できるのです。 そして、テンプレート展開後に、次のテンプレートを展開していきます。 条件分岐テンプレートの例は、新規ファイル作成時に文章のテンプレートを選んで展開するケースです。 僕のブログの場合、「自作Emacs Lispリリーステンプレート」、「Emacs Lispを使ってみたテンプレート」、「EmacsのTipsテンプレート」などがあります。 記憶力のいい人ならば、テンプレート名を覚えて普通に展開すると思います。 僕の場合はテンプレート名はおろか、テンプレートを作ったこと自体忘れてし
ブログを毎日更新すると決めていたものの、1ヶ月で途絶えてしまいました。 ごめんなさい。 毎日書くのはさすがにきついです。 まだ文章を書くのに時間がかかるので、ブログに時間がとられてしまいました。 これからは、数日おきくらいになると思います。 さて、org-modeでGTDをやって2年ほどになりますが、思ったほど成果がでていませんでした。 しかし、行動をものすごく細かく分けて考えることで、力が発揮できるようになりました。 「すべてはプロジェクト」と考え、サブタスクを定義していく方法です。 すべてはプロジェクトGTDでは、2つ以上の行動がともなうものをプロジェクトと定義しています。 ところが、1つの行動で済むタスクというのはほとんど多くないと思いました。 行動はとことん細分化することができるからです。 極論を言うと、「歯磨きをする」でさえもプロジェクトです。 なにせ、以下のステップに細分化され
東洋経済新報社刊、本田直之著『レバレッジ・シンキング』を読みました。 著者提唱の「レバレッジ」理論の総まとめ。 「労力」「時間」「知識」「人脈」にレバレッジをかけて、効率的に成果をあげ、時間を生み出し、その時間を再投資することでもっと自分を成長させていこうというのが狙い。 『レバレッジ・リーディング』、『レバレッジ時間術』、『レバレッジ勉強法』、『レバレッジ人脈術』の内容も含んでいるが、要点がコンパクトにまとめてあるのでおすすめ。 いわば、これらの本のレバレッジ・メモを読んでいるような気がする。 レバレッジ・メモはいろいろな本の要点をまとめた究極の本なのだから、本書はかなり有用! 著者が実践している方法には、なんでもかんでも「レバレッジ」という接頭辞がつく。 たとえば、「レバレッジ・リーディング」は多読法としてはありきたりだと思うが、あえてそういう名前をつけることでかっこよく思えてくるのが
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
次のページ
このページを最初にブックマークしてみませんか?
『’(rubikitch wanna be (a . lisper))』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く