Rubellum fly light

ほぼPHP日記

package.el便利じゃないですかー!

VimのVundleやNeoBundleがすごく便利で、emacsでモダンなパッケージマネージャを使いたかったのだが、どれもパッとしなかった(当社比)(あと僕はemacsモヒカンではないので趣味趣向が合わなかった可能性があるという予防線を張っておきます)。


んでどうしたものかなーと思っていたら、emacs24にデフォルトでのるpackage.elなるパッケージマネージャがあるらしく、emacs23でも(たぶん22でも)使えるみたいなので、試してみた。便利すぎて吹いた。

f:id:rubellum:20120705004708p:plain

パッケージ一覧の表示が遅かったりするけども、まぁそんな何回も起動するわけじゃないしね、と割り切る。


設定方法はEmacs Lisp を簡単にインストールするための package.el & MELPA #elisp #Emacs - Qiitaを見るとよい。
ただ僕の手元にauto-installがなかったので(!)、

  • .emacs.d」にpackage.elを置いて、
  • .emacs」に「.emacs.d」へのロードパスとpackage.elの設定を書いた。


emacsをたちあげて、

M-x package-list-packages

とすると、パッケージファイルの一覧を表示できる。そこからインストールもできる。

今いる行のパッケージに対して、

i インストール指定
u インストール指定取り消し
x インストール実行

を操作できる。検索とかはC-sでできる。

最近やたらとよく見かける「自由なソフトウェア」について

最近とある御方のブログを読んで、「自由なソフトウェア」なるものに興味を持ったのでメモ。

自由なソフトウェアとは

自由なソフトウェアの定義などは以下のページが詳しい(というか本家)。
自由ソフトウェアとは? - GNUプロジェクト - フリーソフトウェアファウンデーション (FSF)

少し引用。

「自由ソフトウェア」は、利用者の自由とコミュニティを尊重するソフトウェアを意味します。おおよそで言うと、利用者は、ソフトウェアを実行、コピー、配布、研究、変更、そして改良する自由を有します。

http://www.gnu.org/philosophy/free-sw.ja.html

自由なソフトウェアという呼び方

「自由なソフトウェア」という呼び名は少々まどろっこしいと思うかもしれない。
だが「フリーソフトウェア(free software)」という表現を使ってはいけない。
フリーソフトウェア=無料で使えるソフトウェアという誤解が広まっており、明確に自由なソフトウェアを指さなくなったからである。
free softwareのfreeには無料という意味が含まれるため、この誤解が生まれたようだ。

日本語では「自由なソフトウェア」と呼ぼう。
フリーソフトは“自由なソフト”と呼ぼう--リチャード・ストールマン氏 - ニュース - nikkei BPnet

関係ないけどハッカーがクラッカーと同じ意味で使われてるために「正義のハッカー」と書くのと状況が似てますね。

自由なソフトウェア≠オープンソース

オープンソースが意味するのは、ソースコードを見ることができるということである。
だが、ソースコードが公開されているからといって、それが自由なソフトウェアとは限らない。

例えば、擬似フリーなソフトウェアは自由なソフトウェアとは呼べない。

疑似フリーソフトウェアとは、フリーではないが、非営利目的であれば 個人の利用や複製、頒布、改変(改変されたバージョンの頒布を含む)を 許可しているソフトウェアのことです。

http://www.gnu.org/philosophy/categories.html#semi-freeSoftware

非営利のような条件の付くソフトウェアは自由とは言えないのである。

自由なソフトウェアで利益を得ること

自由なソフトウェアによって利益を得ることは禁じられていない。
むしろ、推奨されている。

多くの人々は、GNUプロジェクトの精神とはソフトウェアの複製物を配布するにあたりお金を課してはならないということだ、とか、もし取るにしても配布コストをまかなうに足るだけの、できるだけ小額の手数料しか取ってはいけないということだ、と信じています。これは誤解です。

実際のところわたしたちは、自由ソフトウェアを再配布する人々に、お金を望むだけ、あるいはできるだけ課すことを推奨しています。これを知ってびっくりした方は、続けて、お読み下さい。

http://www.gnu.org/philosophy/selling.ja.html

自由なソフトウェアで利益を得る方法は、いくつか提案されている。
僕自身とても興味があることなので、別記事にまとめようと思っている。

「ソフトウェアを売る」という表現は、誤解を招く可能性があるので注意が必要だ。

人々が「ソフトウェアを売る」ということを考えるとき、大抵は多くの会社がやっていることと同じようなことを思い浮かべます。
すなわち、ソフトウェアを自由ではなく、プロプライエタリにするということです。

http://www.gnu.org/philosophy/free-sw.ja.html

ソフトウェアのコピーを、手数料を取って頒布するのは適切である。
だが、ソフトウェアを売るという表現をすると、プロプライエタリ(独占的な)ものを想像してしまう。

自由なソフトウェアという観点から見たJava

以下の記事を読んでね(はーと
本の虫: Javaの権利にまつわるまとめがすごい

Rubyのオブジェクトについてのメモ

だいぶ曖昧なのは自分の理解が足りないため。

クラス/Class/classの表記方法について

クラス/Class/classはすべて異なる(ものとして表記している)。

クラス

オブジェクト指向における一般的な意味のクラス。

Class

クラスを表現するのに使用される普通のオブジェクト。
メソッドも持ってる。

class

classはクラスを定義するのに使う予約語
Rubyはオープンクラスなので、スコープを変えてるといえるかも。
というかselfが変える?

すべての道はBasicObjectに通ず

MyClassを定義する。

[22] pry(main)> class MyClass; end

MyClassのスーパークラスをたどってみる。

[23] pry(main)> MyClass.superclass
=> Object
[24] pry(main)> MyClass.superclass.superclass
=> BasicObject
[25] pry(main)> MyClass.superclass.superclass.superclass
=> nil

MyClass -> Object -> BasicObjectの順で階層構造。
BasicObjectは親を持たない。

Classのスーパークラスをたどってみる。

[34] pry(main)> Class.superclass
=> Module
[35] pry(main)> Class.superclass.superclass
=> Object
[36] pry(main)> Class.superclass.superclass.superclass
=> BasicObject
[37] pry(main)> Class.superclass.superclass.superclass.superclass
=> nil

Class -> Module -> Object -> BasicObject という階層構造になっている。

みんなのClass

MyClass, Class, Module, Object, BasicObjectのクラスはClassである。

[27] pry(main)> MyClass.class
=> Class
[28] pry(main)> Class.class
=> Class
[29] pry(main)> Module.class
=> Class
[30] pry(main)> Object.class
=> Class
[31] pry(main)> BasicObject.class
=> Class

Classちゃんはみんなの友達なんだからっ!

トップレベルのオブジェクト

mainというObjectクラスのインスタンス(?)が用意されている。

[50] pry(main)> self
=> main
[51] pry(main)> self.class
=> Object

タイトルは「パルスのファルシのルシがパージでコクーン」を意識した。

Twitterでエゴサーチ

Twitterの検索はいろいろオプションがあってエゴサーチがはかどります。
いまの検索ワードはこんな感じ。

-to:rubellum -from:rubellum -@rubellum rubellum OR るべるむ OR ルベルム

Google先生でもおなじみの「-」検索は素敵ですね。
関係ないツイートが引っかかる場合はどんどん除外していきましょう。

僕は以下のようなツイートを除外してます。

  • リプライ (-to:rubellum) : mentionで見るので除外
  • mention (-@rubellum) : mentionで見るので除外
  • 自分のツイート (-from:rubellum)

あとは"OR"で検索したいキーワードを連結すればOKです。

Kobitoのいいところ

改行。
f:id:rubellum:20120408124105p:plain

説明

markdownにおける改行の仕様は以下のようになっている。

空白行に囲まれた複数行の文章(一行の場合も含む)がまとめて一つの段落として扱われます。

http://blog.2310.net/archives/6#paragraphs_and_line_breaks

つまり、改行が<br />タグのように扱われない。

Markdownで<br />タグを使用したい時は、その行の末尾を二つ以上のスペースを記述してから改行することとなります。

http://blog.2310.net/archives/6#paragraphs_and_line_breaks

改行したいときは、行末に2つ以上のスペースを入力しなければならない。


具体例をあげる(GitHub Wiki)。

markdown
f:id:rubellum:20120408124057p:plain

表示例
f:id:rubellum:20120408124102p:plain
空行を挟むことで改行している(rubyのコードはおまけ)。


Kobitoでは改行はそのまま<br />タグのように扱われる。
f:id:rubellum:20120408124105p:plain
(スクショ撮るの忘れたけど)連続する空行は1つの改行とみなされる。

その他Kobitoについて

コードのリアルタイムなSyntax Highlightがカッコイイ。
"Qiita Markdown"がローカル環境で使えるのが素敵。
「ブログ記事をローカルで書きたい!→プレビュー機能が使えない><」みたいなことが多くって、プレビュー機能がローカルでも使えるのは、それはとっても嬉しいなって。

まあ、なにはともあれ、
「KobitoかわいいよKobito」

「半角/全角」よりもMacの「かな」「英数」の方が好き

Macには「半角/全角」キーがない。
代わりに、スペースの左側に英字入力(半角)に切り替える「英数」キー、右側に日本語入力(全角)に切り替えるを「かな」キーが用意されている。
「半角/全角」は日本語入力と英字入力を"トグル"するが、Macの「かな」および「英数」キーは"トグル"しない(
それぞれのモードに移行するだけ)。


僕は「半角/全角」より、この「かな」「英数」を使う方が好きだ。
「半角/全角」は位置が少しだけ遠くて、打ちにくいと感じてるからだ。
スペースの両隣にある「英数」「かな」は親指で押せるため、こちらの方がストレスなく打つことができる。
僕はすべての環境において、このキー配置を使いたいと考えている。


僕の身近にあるキーボードはMacBook ProRealforce 91UDK-Gの2つ。
RealforceUbuntuマシン(友人には散々Arch Linuxを勧めておきながら)で使っている。
したがって、UbuntuRealforceという環境で「かな」「英数」のキー配置を実現する必要がある。
幸いなことに設定は簡単だった。


まず、「かな」「英数」として使いたいキーのkeycodeを調べる。
これはxevを使うと簡単に調べられる。xevの実行後、調べたいキーを入力すればよい。

$ xev

僕の場合、keycode "102"を「英数」、keycode "100" を「かな」に割り当てればよさそうだった。


次に、ホームディレクトリに「.Xmodmap」を作成する。
「.Xmodmap」は起動時に読み込まれる設定ファイルだ。
keycodeと「Return」や「Escape」といったイベント(?)を結びつけることができる。

「英数」に"Hankaku"、「かな」に"Zenkaku"を割り当てた("Zenkaku", "Hankaku"は適当に決めた)。

! 日本語入力(全角)
keycode 100 = Zenkaku
! 英数入力(半角)
keycode 102 = Hankaku


最後に、IMEのON/OFFを"Zenkaku"および"Hankaku"に対応させる。
これはibusの設定画面から設定可能だ。設定画面はibus-setupで表示できる。

$ ibus-setup

一般タブの「Enable:」「Disable:」がそれぞれ「かな」「英数」に対応しているので、"Zenkaku", "Hankaku"を対応させる。


これで快適なUbuntu生活を送れそうだ。