2011年11月16日水曜日

gnomeのpop-upを使ってみよう->ネット中毒防止 pop-up

1.
家で余暇の時間を過ごしていると、うっかりネットサーフィンを続けてしまうことがある。前述(過去の記事「"Startup Applications" で立ち上げた xclock を "Always on Top" かつ "Always on Visible Workspace" にしたい。 -> devilspie を導入した」http://quantum-public-diary.blogspot.com/2011/07/startup-applications-xclock-always-on.html)のようにあなろぐ時計を見やすい位置に表示しているにもかかわらずだ。そこで、gnomeが立って2時間経過したら、「もうネットの時間はおしまいよ」とpop-upで教えてくれるスクリプトを書いた(普段、家のPCの電源を入れっぱなしにすることはないのだ。で、電源を入れたら自動login して、gnomeを立てて待っていてくれるシステムになっている)。

2.
zenity (http://live.gnome.org/Zenity)はコマンドラインやシェルスクリプトからGTKのダイアログボックスを開くことを可能にするツールである。使い方は「試験運用中なLinux備忘録(http://d.hatena.ne.jp/kakurasan/20070716/p1)」に詳しい。

が、私には細かいことは必要ないので、一番基本的な使い方をしている。

$ zenity --info --text "It's time to leave PC"

としてみればpop-upが出せる。

3.
pop-upの出し方がわかればあとはスクリプトを書くだけだ。
以下のスクリプトを書いて保存しchmod +xして、gnomeのstartup applicationsに登録する。

#!/usr/local/bin/bash
d=`date +%w`
if [ $d -eq 0 -o $d -eq 6 ]; then
    exit 0;
fi
sleep 7200;
zenity --info --text "It's time to leave `hostname -s`"

土曜と日曜は2時間以上ネットしてもいいとのポリシーを採用した。
2時間で pkill gnome-sessionとかshutdownしようかとも思ったけど、過激過ぎるのでとりあえずは警告のみで運用する。

2011年10月25日火曜日

freebsdでflashを見るのは簡単になった

セキュリティ上の安全性のために、firefoxのversionを上げたのだが、
(firefox 3.6 -> firefox 7.0.1、portupgradeを使用。
portupgrade firefox の前に portupgrade nsprが必要だった。)
linux-flashplugin(linux-f10-flashplugin-10.2r159.1)、
nspluginwrapper(nspluginwrapper-1.2.2_8)は
そのままで、youtubeが見られた。

昔はgnashをいれてみたり、youtubeは見られなかったり、
大変な苦労をしていたが、今は楽になったなあ。

これは、portdowngradeする羽目になったときのためのversionのメモ。

2011年9月23日金曜日

旅行にいく時に持っていった方がいいもの

しばらく学会に行っていたのだが、いくつか現地で必要になって買うことになったものがある。次回は忘れないように書いておこう。
いままでの「旅の持ち物」リストに加えておこう

持っていけばよかったものたち

1. 爪切り
4日もあれば、爪は伸びる。現地の薬局で購入したが、次回は持っていこう。

2. フォーク
旅先でアップルパイを買って宿に持って帰ったときに、手づかみで食べるのは悲しい。結局、駅ビルの100円ショップでフォークを購入したが、次回は持っていこう。

3. 紅茶のティーバッグ
わたしは紅茶中毒でかつブランドにこだわりがあるのだが、うっかり忘れてしまった。これも現地調達することになった。

4. 学会の参加証
なくても困ることはなかったが、他の参加者と話すときに、わたしもあった方が相手にとって便利だろうなと思った。

5. 時刻表
ちょっと、次の次の電車を調べるときとか手元に時刻表があればよかったと思った。iPhoneでも経路検索できるけど一覧性は紙の勝ち。

これから、出かける皆さんへ
旅を楽しんできてくださいね。

2011年9月21日水曜日

回数券入れを自作しました


回数券は10枚分の値段で、11回電車に乗れるのでお得である。
得に東京メトロの回数券は金額だけで、経路の指定がないので出発地、目的地が違っても使える。さらに乗り越しができるので、190円の回数券で乗って230円のところで降りるには40円の差額を払えばよい。したがって160円の回数券を持っていればいつでも使えるのだ。

しかし、PASMOやSuicaの普及に伴い、回数券入れが置いていない券売機が多い。しかたがないので自作したので、その作り方を載せておく。

1.紙を用意する。
綺麗な紙を探そう。下図のように切り、より綺麗な面を下にして机の上に置く。


2.折り紙のように折る。




最後に糊でとめれば完璧。使用開始から2週間経つが、今のところ壊れていない。

追記

切符かPASMOで乗ると、東京メトロと都営地下鉄は乗り継ぎ割引で70円引かれるから、地下鉄を乗り継ぐなら回数券を使わない方が得だ。

2011年9月4日日曜日

電源ボタンを入れて待ってたら、gnomeが立ったらうれしい(boot時にautologinする方法)

1.背景
家のマシンに限った話をすると、
  • 使い終わったら電源を落とす。
  • 私しかユーザーはいないし、sshされない。
  • 使うときは、電源を入れるとlogin画面で止まっていて、loginしてstartxとtypeし、gnome環境で生活する。
という日々を送っていた。

しかし、
電源ボタンを入れて待っていたら、gnome が立って欲しい!
ので設定した。

2.概要
/etc/gettytabと/etc/ttysを編集し、ttyv4に自動ログイン(autologin)し、~/.bash_profileでttyv4にloginしたときはlogin直後にstartxするように設定する。

3. 自動ログイン
/etc/gettytabと/etc/ttysを以下のように修正する。

--- /etc/gettytab.orig    2011-09-03 20:59:47.000000000 +0900
+++ /etc/gettytab    2011-09-03 21:08:25.000000000 +0900
@@ -164,6 +164,10 @@
 P|Pc|Pc console:\
     :ht:np:sp#115200:

+P1|Pc1|Pc1 console:\
+    :al=username:ht:np:sp#115200:
+
+
 #
 # Wierdo special case for fast crt's with hardcopy devices
 #

--- /etc/ttys.orig   2007-01-12 16:42:20.000000000 +0900
+++ /etc/ttys    2011-09-03 21:08:55.000000000 +0900
@@ -37,7 +37,7 @@
 ttyv1    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv2    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv3    "/usr/libexec/getty Pc"        cons25    on  secure
-ttyv4    "/usr/libexec/getty Pc"        cons25    on  secure
+ttyv4    "/usr/libexec/getty Pc1"        cons25    on  secure
 ttyv5    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv6    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv7    "/usr/libexec/getty Pc"        cons25    on  secure
patch形式になれていない人へ
diff の読み方は、/etc/ttysの例でいくと、
@@ -37,7 +37,7 @@ は「/etc/ttys.origの37行目から7行分と/etc/ttysの37行目から7行分を表示しています」という意味だ。
そのあとは、「-で始まる行は、ttys.origにあってttysにない行、+で始まる行はtty.origにはなくてttysにはある行です。他の行は両方のファイルにありますが、どの行かわかりやすい用に表示しています」という意味だ。
つまり、40行目のPcをPc1にするように、エディタで編集しろと言うことだ。

上は
$ diff -u /etc/ttys.orig /etc/ttys
の出力をコピペしたもので、unified context という形式で、patchを当てるときに
使う形式でもある。diffとpatchのマニュアルに目をとおしておくこと。

これでboot直後に、ttyv4に自動ログインするようになった。
参考 昔々のhandbook http://docs.freebsd.org/doc/3.0-RELEASE/usr/share/doc/ja/handbook/handbook172.html

4.gnomeをたてる
私は、default shell としてbashを使っているので、loginしたときに~/.bash_profile が実行される。なので、~/.bash_profileに以下のように追記する。

if [ `tty` = "/dev/ttyv4" ]; then
        startx
fi
これで ttyv4 でログインした時に限り、ログイン直後に startx が実行されるようになる。

csh、tcshの人へ
.login に正しい書式で、同様に書けばよろしい。if文の書式は自分で調べてること。

以上、/etc/ttys、/etc/gettytab、~/.bash_profileの3ファイルを書き直せば、
電源を入れると、gnomeがあなたを待っている。さあrebootしよう。

5.注意
UNIXマシンに詳しくない同居人がいる人は、あなたのプライバシーが暴かれる可能性が増大します。電源を入れて黒い画面で login: と表示されたら手も足もでない人は多いですが、gnomeが立っていたらファイルを見ることは簡単です。
しかし、パートナーがUNIXに詳しい場合はLiveCDで起動して、HDDをmountしてすべて見ることができるので、あまり危険度は変わりません。気にしないでよいでしょう。

Xserver をlocalhostのclient以外が使う場合は注意が必要です。上のように、rootでautologinして、、、と思うかもしれませんが、うまくやらないと、正当なユーザ以外でもXserverを使えるようになったり、他のユーザのウインドウをとったりすることができてしまうようになります(例えば xinit 以外で Xserver を立てた場合など)。
上記のように、個人ユーザで startxする分には大丈夫ですが、気をつけてください。


2011年8月31日水曜日

FreeBSDにlinux由来のソフトウェアを入れようとすると、perlのpathのせいでしくじる

 1.FreeBSDにlinux由来のソフトウェアを入れようとすると、perlのpathのせいでしくじる

今日は、ffmpeg を install しようとして、失敗した。
(portupgrade は楽だが、成功率は100パーセントではない)

multimedia/ffmpeg の場合は、texi2pod.pl の一行目に
#!  /usr/bin/perl -w
とあるのだが、FreeBSD での perl 本体の場所は、/usr/local/bin/perl である。
($ type perl
としてみるがよい。昔は/usr/bin/perl だったらしいが、少なくとも8.2では/usr/local/bin/にある。)

perl script の path が正しくなくてmakeが通らないことは、ports systemを使わないでlinux用のソフトウェアを source codeからcompile、installをしようとするときにも、しばしばある。

2.対策
(1)
source codeがあるならば、*.pl という名のファイル内の "/usr/bin/perl" を "/usr/local/bin/perl" に置換してしまえばよいのだが、毎回やるのは面倒くさい(一行ですむけど)。よってこの方法は不採用。

(2)
# ln -s /usr/local/bin/perl5.14.1 /usr/bin/perl
# ln -s /usr/local/bin/perl5.14.1  /usr/bin/perl5
一見やる気ないが、これで万事OK。

(3)
(2)でいいのだが、perlをportupgradeするたびに(2)をするのは面倒くさい。なので /usr/local/etc/pkgtools.confの AFTERINSTALL のところに
        'lang/perl5*' =>
          'ln -s /usr/local/bin/perl5* /usr/bin/perl',
と書いておけば、perlのversionが6に上がるまでは安泰だ。

3.参考文献
ports の不具合の報告 http://www.freebsd.org/cgi/query-pr.cgi?pr=131331

4.追記
ふつうは、perlのmake optionで
USE_PERL on
になっているので、上記対策は必要ないらしい(/usr/ports/lang/perl5.14.1/Makefile を参照)。けれど、なぜか/usr/bin/perl がなかった時のために記事は残しておく。pkgtools.confは編集しないで様子見がよろし。

2011年8月23日火曜日

Mathematicaをssh越しに使うにはlocalhostにfontのinstallが必要だ。

Mathematica(http://www.wolfram.com/index.ja.html) を sshでXをとばじて使うには、 localhostにmathematica用のfontを用意する必要がある。

概要はhandbook(http://www.freebsd.org/doc/ja/books/handbook/linuxemu-mathematica.html)に書いてあるが、下の様に適当にやっても動く。なおマシン構成は、
server : FreeBSD 8.2, Xorg 7.5, Mathematica 4(古い!でも不定積分はできる)
localhost : FreeBSD 8.2, Xorg 7.5

1. fontをserverからコピーする
server のどこに fontがあるかを調べるには、server:/etc/X11/xorg.confを見る。
Section "files"のFontPathにそれらしい記述があるので、例

----ここから server:/etc/X11/xorg.conf ----
Section "ServerLayout"
        Identifier      "秘密"
        Screen      0   "秘密"
        InputDevice     "Mouse0" "CorePointer"
        InputDevice     "hhk" "CoreKeyboard"
EndSection

Section "Files"
        RgbPath      "/usr/X11R6/lib/X11/rgb"
        ModulePath   "/usr/X11R6/lib/modules"
        ModulePath   "/usr/local/lib/xorg/modules"
        FontPath     "/usr/local/mathematica4/SystemFiles/Fonts/X/"  <-
        FontPath     "/usr/local/lib/X11/fonts/misc/"
        FontPath     "/usr/local/lib/X11/fonts/TTF/"
        FontPath     "/usr/local/lib/X11/fonts/OTF"
        FontPath     "/usr/local/lib/X11/fonts/Type1/"
        FontPath     "/usr/local/lib/X11/fonts/100dpi/"
...(続く)
----- ここまで server:/etc/X11/xorg.conf ----

localhostに同じdirectryを作って、中身をすべてコピーするよろし。 上の例だと
# mkdir  -p /usr/local/mathematica4/SystemFiles/Fonts/X/
# rsync -azv username@server:/usr/local/mathematica4/SystemFiles/Fonts/X/ /usr/local/mathematica4/SystemFiles/Fonts/X/

2. xorg.confの設定
それから、/etc/X11/xorg.conf にもFontPathの行を加えて、Xを立ち上げ直せばよろし。ただし、FontPathのなかで、一番先頭にmathematica用のfontを指定しないと、fontを見つけられないので注意。(serverのxorg.confと同じ位置に書き加えればよろし)。