コミケで Emacs 本出します

去年同様に Emacs 本を出します。
内容は、現状での新機能(25.1 で含まれるであろう機能)やブランチで実装・実験されている機能の一部を解説するものとなります。
一昨年のキーボード本も持っていきます。


何も問題なければ、以下に居るはずです。

  • c87 火曜日 西地区 "く"-13b

数は、相変わらず宣伝しないので少数です。
コミケに行く用事があって暇なら寄っていただけたら、というところです。

更新時刻

  • 2014/12/29 22:15

コミケで Emacs 本出します

Emacs の NEWS を解説した本(24.4 の新機能を説明した本)を出します。全部解説しようとしましたが無理でした。いくつか抜粋してます。
去年のキーボード本も出す予定です。


何も問題なければ、以下に居るはずです。

  • c85 3日目 西す09b

去年以上に宣伝していないので、冊数は極少数です。
コミケに行く用事があって暇なら寄っていただけたらな、という感じです.

更新時刻

  • 2013/12/30 19:35

tmux-mem-cpu-load

tmux のステータスラインに load average とかのっけたいなーと思ってぐぐったら、tmux-mem-cpu-load というそのものすばりなプログラムがあた。



github にあるのでソースコードを git clone してビルドする。

 $ git clone https://github.com/thewtex/tmux-mem-cpu-load.git
 $ cd tmux-mem-cpu-load
 $ cmake .
 $ make
 $ sudo make install

cmake とか使ってるけど、所詮 C++ ソース1ファイルだから、以下のように g++ 直接叩いてコンパイルしても良い。

 $ g++ -Wall tmux-mem-cpu-load.cpp -o tmux-mem-cpu-load

あとは、README.rst を参考に ~/.tmux.conf に以下を追記すれば OK。

set -g status-interval 2
set -g status-right-length 100
set -g status-right "#[bg=colour189] #(tmux-mem-cpu-load 2)  %m/%d/%Y %H:%M "


tmux を起動すれば以下の画像のように表示される。
既に tmux の中に居たなら、「C-t : source-file ~/.tmux.conf」とかやれば OK (C-t は prefix キー)。

ステータスラインの白背景の部分が tmux-mem-cpu-load の情報をのっけているところ。
左から、メモリ使用量、CPU 利用率棒グラフ、CPU 利用率(割合)、ロードアベレージ(過去 1分、5分、15分)、現在時刻の順。
2 秒間隔での更新となる。



ソースコードを見ると /proc/stat とか /proc/meminfo とか /proc/loadavg とかいう文字列があるので、Linux じゃないと動かないかも。
とりあえず、Solaris 版はぐぐったら見っかった。


そんな感じで。

更新時刻

  • 2013/3/30 01:07

thinkfan

Thinkpad X201 + (X)Ubuntu 12.10 で作業していると頻繁に再起動してくれるようになっちゃったので
thinkfan を入れて設定したら頻繁に再起動することはなくなったよというメモ。



家でのメイン環境は Thinkpad X201 + (X)Ubuntu 12.10 を使っていているのだけど、数ヶ月前からだいぶ調子が悪かった。
ニコ生(nsen)を裏でかけっぱなしにしながら作業とかしてると突然ノート PC が再起動する。調べたところどうやら熱らしい。


sensors で温度を見ると90度以上になっていて、100度に到達した瞬間に再起動がかかるっぽい。
当初は温度にがくぶるしながら凌いでたんだけど、Emacsリポジトリを bzr pull しただけで再起動してくれやがったりして、
良い加減苦しくなってきたので重い腰を上げてちゃんと対処を調べてみた。


で、どうやら thinkfan という Thinkpad の fan speed を自動調節するプログラムを使うのが常道らしい(今まで困ってなかったから全然知らなかった…)。


まず、Thinkpad の fan speed を制御するために thinkpad_acpi の設定をする。/etc/modprobe.d/thinkpad_acpi.conf に以下のように記載する。

 $ cat /etc/modprobe.d/thinkpad_acpi.conf
options thinkpad_acpi fan_control=1

この上で、thinkpad_acpi モジュールを再読み込みするなり、PC を再起動するなりすれば OK。
# …のはず。やったのかなり前で記憶があやしい。


うまくいっていると、以下のようなコマンドを叩くと thinkpad の fan の speed が変わるはず。disengaged を指定すると fan が轟音を立てはじめて、Thinkpad の温度が急激に下がる。

 $ echo level 1 > /proc/acpi/ibm/fan
 $ echo level 7 > /proc/acpi/ibm/fan
 $ echo level auto > /proc/acpi/ibm/fan
 $ echo level disengaged > /proc/acpi/ibm/fan

普段から disengaged とかしていると煩くてかなわないので、この fan speed を Thinkpad の温度を元に自動調節するようにする。
これには thinkfan を使えば良く、thinkfan は、Ubuntu/Debian であれば、apt-get から簡単に導入が可能。
たぶん、事前に sensors を入れて設定しておく必要はあるような気は…する(lm-sensors パッケージ)。

 $ sudo apt-get install thinkfan

thinkfan の設定は、/etc/thinkfan.conf を参照する。適当にひろってきたサンプルを元に以下のように記載した。

(0,     0,      55)
(1,     48,     60)
(2,     50,     61)
(3,     52,     63)
(4,     56,     65)
(5,     59,     66)
# (7,   63,     32767)
(7,     63,     82)
(127, 80, 32767)

一番左が、level。真ん中と右が温度。Thinkpad の温度がだいたい59度を越えると fan speed の level が 5 になるという感じ。
温度がある程度高くなったときは、level 7 じゃなくて、やはり disengaged になってくれないと心配なのでその設定を追加しただけ。
ぐぐった内容を鵜呑みにした感じだと、127 と指定すると disengaged らしい (ちゃんと調べてない)。
# で、まあ、127 で 80 度越えると disengaged になってるっぽいから気にしていない。


あとは、適当に起動すれば OK。

 $ sudo service thinkfan start

# 起動時に自動起動するように、/etc/default/thinkfan をいじって START=yes とかしたような記憶があるけど、ちょっと定かじゃない…。



リハビリがてら、こんな内容で…(はてな記法を忘れていて愕然とした…)

更新時刻

  • 2013/3/30 00:40

コミケでキーボード本出します

購入したキーボードがけっこうな数になってきたので、キーボード本出します。
内容は、キーボードの写真と少しのコメントをまとめたカタログ的な感じです。


特に何も問題なければ、以下に居るはずです。

  • c83 3日目 東 Y-10a

まったく宣伝していないので、まあ、冊数も極々少数しか用意してないです。
コミケに行く用事があって暇なら寄っていただければな、という感じです。

更新時刻

  • 2012/12/30 20:15

Python で stand-alone バイナリを作る freeze を試してみた

なんとなくふと、Python で stand-alone な実行ファイル作れんのかなーと思って、検索してみたら、以下の FAQ を見付けたので試してみました。

「One is to use the freeze tool, which is included in the Python source tree as Tools/freeze. It converts Python byte code to C arrays; a C compiler you can embed all your modules into a new program, which is then linked with the standard Python modules.」とのことで、C ソースに変換してコンパイルできるみたいです。


これを試してみたので、そのメモです。

環境


なんとなく、さくらの VPS 上で作業しました。Ubuntu 10.04 です。

 $ python -V
python 2.6.5

対象ファイル

Hello, World を吐く Python スクリプトを変換してみます。

 $ cat hello.py
#!/usr/bin/env python

print "Hello, World"

# hello.py ends here.

準備

以下のパッケージを入れます。これらの他に gcc や make のようなツールが必要です。build-essential あたりを入れておけば大丈夫に思います。

  • python2.6-examples
  • python2.6-dev
  • libssl-dev

python2.6-examples は、freeze.py を手に入れるために入れます。freeze.py が無いとバイナリが作れません。
python2.6-dev は、こいつを入れていないと、python ファイルから C ソースファイルを変換するときに「config.c.in」が無いと言われて変換に失敗します。
libssl は、変換した C ファイルをビルドするときに必要となります。


ただし、これだけでも駄目です。以下の差分を /usr/share/doc/python2.6/examples/Tools/freeze/makeconfig.py に適用する必要があります。

これを適用しないと、「undefined reference to `init_warnings'」と言われ、ビルドが成功しません。

手順

以上の準備が完了したら、以下のようにコマンドを叩きます。

 $ python /usr/share/doc/python2.6/examples/Tools/freeze/freeze.py ./hello.py
 $ make

C ソースへの変換は、python コマンドにfreeze.py ファイル、変換したい Python ファイルの順に渡します。
すると問題がなければ、大量の C ファイルと Makefile が作られるはずです(計13万行ぐらい)。
あとは、make と実行するだけです。

成果物

出来上がったバイナリは以下のような感じです。

 $ file ./hello
./hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
 $ du -sh ./hello
4.3M    ./hello

とまあ、けっこう馬鹿でかいファイルができあがります。もちろん出来上がったモノは普通に実行できます。

まとめ

とまあ以上のような感じです。作成が目的だったので、実行速度の差等は全然計測していません。
strip してもバイナリは、4Mぐらいなので、やっぱりちょっと大きいのが気になります。
なんとかもっと小さくできないのかなあとか思いながら、そんなこんなで。

更新時刻

  • 2011/12/30/00:20

Emacs で SL

このエントリは、Emacs Advent Calendar jp 2011の22日目です。
前日は、id:dev-null さんの アーティストモードでメリークリスマス でした。

明日は、id:r_takaishi さんです。

概要

sl とは、UNIX の有名なジョークコマンドです。
ディレクトリの内容一覧を表示する ls と間違えて sl と打つと、SL 機関車のアスキーアートが端末上をかけぬけます。
これを Emacs Lisp で作成してみました。

使用

EmacsWiki にソースを置き、Launchpad の個人領域上に bzr リポジトリも作りました。以下より取得できます。

このファイルを load-path の通ったディレクトリに置き、以下のように読み込むだけ使えます。

(require 'sl)

使用方法は、M-x sl とするだけです。

画像

画像はこんな感じです。


動画

動画をとって、ニコニコにアップしてみました。エンコードとか考えてないので、ちょっと見辛いです。
動画は、recordmydesktop の gtk 版でとってみました。


まとめ

ちょっと急ごしらえで問題があるかもしれませんが、よかったら遊んでみてくださいー。

更新時刻

  • 2011/12/23 00:16