【重要】ブログ・サイトを移転します

この度、独自ドメイン取得したので、ブログ・サイトを移転します。

今日をもちまして、はてなダイアリーは更新を終了します。

ブックマーク、RSSは解除していただいて構いません。

今後は新サイトでよろしくお願いします。

http://rubikitch.com/

Emacs - 『コレ』をやらない限り、何も学んでないのと同じですよ

学校やら勉強会やらセミナーやら本やらで、
いろいろ学ぶ機会があると思います。


けれども多くの人たちはとある
大事なことをやっていません。


それは


『復習』


です。


小中学校時代を思い出していただけたらわかると
思いますが、学校から帰って家で勉強するときは、
復習もきちんとやっていましたよね?


だからこそ、赤点ばかりにならずに
きちんと身に付いたのです。


思春期の定期テストの山だったり受験を乗り越え
られたのは、復習をしっかりしていたからです。



けれど大人になると日々の仕事で
せいいっぱいなのか、学生時代の
「復習」という大切な習慣を
置き忘れてしまう人が多いです。


ほとんどの人は、せっかく学んでも復習をしない、
しても数回くらいで後は放ったらかしにしてしまいます。


とてつもなくもったいない話です。



記憶といえば忘却曲線が有名です。


人間の記憶は学んでから30分もたてば半数以上は忘れて
しまいますし、1日もたてば80%は忘れてしまいます。


だからこそ、学んでからの復習が大切なのです。


ノートを毎日見返していくと、
既知の情報が多くなるため、
読み返す時間が短くなってきます。


そして、6〜7回読み返してしまえば、
「この情報は必要なものだ」だと脳が
判断するので、忘れなくなります。


なにか大事なことを学んだら、
もういい加減飽きたよ!
というくらい毎日復習してください。


予習:学習:復習 = 1:2:4


くらいの割合で復習は大切です。


復習を日々の習慣に取り入れてください。


そうすれば、学んだことは必ず
あなたの財産になります。

続きはメルマガで

復習に限らず習慣化を促進する方法を
メルマガでお話します。


あなたのEmacsがそれを助けてくれます。


ウィリアム・ジェイムズ(近代心理学の父)は、


`心が変われば行動が変わる。
行動が変われば習慣が変わる。
習慣が変われば人格が変わる。
人格が変われば運命が変わる。
運命が変われば人生が変わる。'

と言っています。


つまり、習慣が変われば人生が変わるのです!


いい習慣を身に付けて、僕と一緒に進化しませんか。


↓
http://www.mag2.com/m/0001373131.html

Debian testing/sidを使う上での大切なマインド4選

音鳴らん!

僕はDebian GNU/Linuxのtestingを使っているので、ちょくちょく「sudo apt-get dist-upgrade」を実行しています。

ずっとstableを使っていたのですが、パッケージがあまりにも古いのでメイン機には使えないから乗り換えました。

sidでテストされているものがtestingに降りてくるので、sidほどではないもののパッケージは準最新のものが使えます。

さて、いつもdist-upgradeしていると(準)最新のパッケージになるので嬉しいのですが、たまに困ったことが起きます。

それは、いつも動いているものが更新によって動かなくなることです。

しかも再起動するまで気付かなかったケースとかも…


今回困ったのは、再起動したらUSBオーディオから音がでなくなったことです。

Debian GNU/Linuxは再起動が要求されることはめったにないのですが、「気分的に」再起動をしてみたら音がでなくなりました。

まずはUSBオーディオを一旦USB端子から外し、ふたたびつなげました。

USBオーディオのトラブルはたいていの場合、再接続したら直るからです。

それでも直らなかったので、ふたたび再起動しました。

Windowsでは問題が起きたら再起動というのが常套手段だと思いますが、Debian GNU/Linuxでも同じです。

それでも治りませんでした。

ログ読むか

んーなんでだろう…再起動前までは音なってたのに………

考えること5分、原因はきっとdist-upgradeのせいだなと…



ログを読もう。なにが起きたのかが書いてあるはず。ということで /var/log/apt/history.log を読む。


Start-Date: 2014-07-23 13:38:37
Commandline: apt-get dist-upgrade
Install: (ry
Upgrade: (ry, alsa-utils:amd64 (1.0.27.2-1, 1.0.28-1), alsa-base:amd64 (1.0.25+3, 1.0.27+1), (ry
Remove: (ry
(ry

alsa関係が更新されていた、そこが臭う。

alsa-baseを読もう

/usr/share/doc/alsa-base/changelog.gz をみてみると、


* Remove all package contents, and tweak package descriptions to note
this is an empty, dummy package.

と書いてあり、じゃあ、なにが削除されていたのかなと古いバージョン alsa-base_1.0.25+3~deb7u1_all.deb の中身を見る。

ちなみにdebはarアーカイブで、Emacsならばそのまま開ける。

その中にdata.tar.gzがあるので、それがパッケージの中身。

Emacsならそのまま開ける。

なるほど、これがalsa-baseの内容か。


-rw-r--r-- root/root 1186 ./etc/modprobe.d/alsa-base.conf
-rw-r--r-- root/root 229 ./etc/modprobe.d/alsa-base-blacklist.conf
-rw-r--r-- root/root 637 ./etc/default/alsa-base

同じように最新版alsa-baseの内容を見てみたが、上のファイルがない。

というわけで /etc/modprobe.d を開く。

見てみると、構成がかわっていた。

alsa-base.conf.dpkg-bakとsound.confというファイルができていた。

解決!

なるほど、元々あったalsa-base.confが無効になってたのね。

sound.confが新しい設定…

options snd_usb_audio index=0

とだけ書かれていたので、それが音がなってない原因…


というわけで、alsa-base.conf.dpkg-bakの内容をsound.confにコピペして、元のsound.confの内容をコメントアウトした。

そしたら無事に音鳴った!!!!

教訓

そこで得た教訓がいくつかあります。

まず、dist-upgradeするのは時間に余裕があるときにやること。アップグレードで問題が発生することがあるので、それを解決するだけの時間を確保することです。とはいえ、常時接続のマシンでdist-upgradeが遅いとセキュリティ問題になるから、放置もいけないです。まあバランスで。

次の教訓は、たまにでも再起動することです。再起動した後に問題が発覚することがあるからです。

もうひとつ、困ったらログと/usr/share/doc/XXXX/changelog.gzを見ること。パッケージの変更が原因っぽかったらchangelogを見るのは当たり前です。

最後に、最新のソフトウェアが簡単に導入できるのは素晴しいですが、最新を保つにはそれ相応の苦労があることを受け入れることです。Debian stableは更新が遅いので、パッケージに満足していれば長期間安定しますが、その反面、パッケージが古くなってしまいます。

物事はなんでもそうですが、結果を得るためには、あるものを犠牲にする必要があります。stableよりも新しいパッケージが使いたいからテスト版(testing)を使っているのですが、不意に問題に直面する頻度が上がることです。新しいパッケージと引き換えに安定性(アップグレード時のトラブル)が犠牲になりました。でも、このようなトラブルをたくさん経験すると勘と問題解決力が身に付きますので、悪いことではありません。問題は人間を成長させてくれます。

Emacs - だめだめ人間

効率ばかり求められる現代人、
やはり仕事は効率的に行いたいものですよね。


てきぱきと短時間で仕事を終わらせて、
さっさと帰宅したり遊んだりしたいですよね。


プログラミングをしている人達はなおさら
効率化をしたがりますよね。


Emacsの設定を書くのも、
より効率的に使うためですしね。

だめだめ人間るびきち

そんな僕はどうすれば物事がうまく進むように
なるのかなと何年も試行錯誤を続けてきました。


GTDをやり始めたりとか、
時間割方式を試したりとか、
生産性を上げる方法とか、
集中力を上げる方法とか…


本当にいろいろやってきました。


けれども、どれも決定打にならなかったのです。


本やメルマガを書き始めたときは、
プレッシャーに圧倒されてしまい、
心が壊れてしまいそうでした。


1ヶ月以上もまったく文章が
書けなくなる時期がありました。


GTDを試してみても、今思えば
週次レビューがうまくいかず、
本来の効果が発揮できませんでした。


「いつかやるリスト」が一向に減らず、
行動のモチベーションがわかないまま、
たまっていくばかりでした。


学校の時間割はタスクを完遂させるのに
とても素晴しいシステムです。


開始時間・終了時間をはっきり決めて、
迷うことなく前へ進んでいくやつです。


時間割システムを試してみても、
予定が狂ってしまってその時間に始められないと
自分にはできないんだなと思っていました。

続きはメルマガで

けれどもある真実に気付くことで、
こんな僕でも物事がどんどんうまく進んでいくようになりました。


物事がうまくいっていないのならば明日のメルマガは必読です!
↓
http://www.mag2.com/m/0001373131.html

がんばらない方が物事がうまくいく!

あなたは、新しいことに挑戦したいですか?


Emacsの新たな操作方法を覚える
新たなプログラミング言語を覚える
ダイエット
運動
…


いろいろありますが、
すべてうまくいっているでしょうか?


この問いにYesと答えられる人は
ほとんどいないと思います。


新しいことに挑戦するも、


『なかなか時間がとれない』
とか
『モチベーションが続かない』
とか
『ついめんどくさいと思ってしまう』
とか


いろいろな壁に阻まれていたりしませんか?


三日坊主で終わっていませんか?



日本人はまじめなのでみんな
『がんばって』
新たなことを達成しようとしていますが、
がんばりつづけるのはしんどいものです。


そして、いつしかモチベーションが続かなくなって
途中でやめてしまう場合がほとんどです。


それは本人が怠け者だからいけないのではなくて、
脳がそーゆー風にできているのだから仕方ないのです。


脳が『がんばる』ということを拒否しているんですね。


緊急を要しないタスクとか
結果が出るまで長期間かかるタスクは
本当にそういう傾向が強いですよね。



そこで、ひとつだけやってはいけないことを教えますね。


新しいことを一気に始めないようにしてください!!!


よほど使命感に燃えていたり緊急を要しない限りは
そのうちやらなくなってしまいます。



ですが、うまい方法で脳をだまして
がんばらなくても自動的に
物事が成功する方法があるとしたら
知りたくないですか?


この方法を使えば
新たなプログラミング言語を覚えることとか
1年で5kgのダイエットとか
読書で知識を蓄えていくこととか
本当に楽勝でできるようになってしまいます。


怠け者で面倒くさがりやであってもできます。


僕もこっそりこの方法を使うことで
日々のタスクが着実に進んでいることを
実感しています。

続きはメルマガで

この
『脳をだましてがんばらなくても
自動的に物事が進んでいく方法』
を明日から何回かに分けてメルマガでお話します。


Emacsメルマガで脳の話って新鮮ですよね(笑)


もちろんタスク処理システムとしてEmacsを用います。


Emacs+脳シリーズをお楽しみに!

↓
http://www.mag2.com/m/0001373131.html

Emacs×Ruby - PryをEmacsで使ってみる

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

でインストールしてください。

Emacsで使う準備

pryはEmacsから使えます。

Rubyのパッケージには、ruby-mode.elなどのelispが
含まれていますが、古いのでMELPAのものを使います。

昔からEmacsでirbを使うにはinf-ruby.elを使うのですが、
MELPA版のinf-ruby.elはpryにも対応しています。

M-x package-refresh-contents
M-x package-install inf-ruby

そして、以下の設定をしてください。

==== pry-init.el
(require 'inf-ruby)
(setq inf-ruby-default-implementation "pry")
(setq inf-ruby-eval-binding "Pry.toplevel_binding")
;; riなどのエスケープシーケンスを処理し、色付けする
(add-hook 'inf-ruby-mode-hook 'ansi-color-for-comint-mode-on)

続きを読む

Emacs - yasnippetでスニペットを一覧する

yasnippetは便利だけど…

yasnippetは略語を展開して
定型文入力を支援するelispです。

yasnippetは開発してから何年もたち、
すでにたくさんのスニペットがついてきました。

それこそスニペットの山、やま、Yama!

これだけスニペットがあればさぞかし
便利になるだろうと最初は思うはずです。

だがしかし!
これには本質的に避けられない大きな問題があったのです。


その問題とは…

『記憶』

です。


いくらたくさんスニペットが登録されていたとしても、
それを展開するための略語が覚えられないのです。

開発者からしてみれば、よかれと思って
どんどん追加しまくったスニペット群、
だが、略語が覚えられないと展開できない
という根本的問題があるのです。

頻繁に使う略語ならば、何度か使っていくうちに勝手に
覚えてきますが、使用頻度の低い略語は一旦覚えたとしても、
あっさり忘却の彼方へ吹き飛んでしまうのです。

これではいくらyasnippetが便利だとしても、
もったいなさすぎですよね。

今回は、この問題をどうにかする方法を教えます。

スニペットを一覧したい!

無数に存在するスニペットたち、
使っていると、当然、どんなスニペットが
あるのか気になってしまいますよね。

『スニペットを一覧したい!』

その気持ちよくわかるんです。

それならば、まずこのコマンドを使ってください。

M-x yas-describe-tables

今使えるスニペットたちが一覧されます。

続きはメルマガで

スニペット一覧が得られれば、
もちろんアレですよね!

続きは明日のメルマガでお話します。お楽しみに!

↓
http://www.mag2.com/m/0001373131.html