January 18(Mon), 2010
今年に入ってから作ったものまとめ (gthumb, twittering-mode.el)
2010年も始まり早くも半月が経過した。新年になってからハックして成果物らしきものが一応できたのでまとめ。
gthumb の独自改変版
http://code.assembla.com/774-gthumb/git/changesets
リモートフォルダにある画像の表示と整理に gthumb を利用していたのだが操作性に不満があり他のツールもイマイチだったので、本体のソースコードに独自にパッチを当てることにした。
すでに実装した機能
これから実装したい機能
- 現在のフォルダの次/前のフォルダに移動する機能 ( gth-dir-list.c に関数を実装すれば出来る ? )
- 同一フォルダ循環と順次移動の切り替え
等、他にもいろいろ考えられそうなので今後も自分でメンテしていくことにした。
ビルド方法
あらかじめ sudo apt-get build-dep gthumb してライブラリを揃えてから git clone git://git.assembla.com/774-gthumb.git してソースコードを取得し debuild -r fakeroot すれば Debian パッケージが生成されるので dpkg -i でインストールする。
twittering-mode.el の機能縮小版
本家の twittering-mode.el の開発のスピードが最近やたら速いのだが、最新版はバギーだったりするし、肥大化していて実装されたすべての機能が欲しいわけではない。それと、コード全体を自分でメンテしていきたいと思ったので、少し古いバージョンに対し最新版から必要な機能だけを選んで取り込んだ版を作った。
現在残っている機能
- タイムラインを見る
- 自分のタイムラインを見る
- 他人のタイムラインを見る
- リプライを見る
- 発言する (字数カウント有)
基本的にこの5つがあれば十分。 (リプライはあまり見ないけど)
fav や RT 、 jojo モード等は不要なので削除した。
これから実装したい機能
- OAuth
今後も最新版のソースコードを追って、良さそうな機能があればそこだけ取り入れるという形で使っていこうと思う。
January 04(Mon), 2010
マシン最新状況
マシンまとめを以前に書いたが状況が変わっているので記録。
ThinkPad X60 1709GDJ
液晶が破損したりしたので arawas さんに譲渡した。猫の暖房として活躍中。
http://movapic.com/arawas/pic/974725
http://movapic.com/arawas/pic/974728
ThinkPad は今でも名機だと思うが、バッテリーの持続時間だけが唯一の不満であり、モバイルに適さなくなっていたのでマシンを買い換えた。
Eee PC 1000HE
たった3万円で新しく購入したマシン。バッテリー容量が 8700mA/h もあるため、実働で約7時間は持つ非常にスタミナのあるマシン。ちなみにカタログスペックで最長10時間駆動を謳う VAIO X のバッテリーは実は 4100mA/h しか無いのでその倍以上の容量ということになる。
購入直後に Windows を消して Debian GNU/Linux 5.0 lenny をクリーンインストールした。マシンパワーの低さだけが弱点だが主に Emacs と Terminal で作業するのでさほど問題にならない。現在のニーズにぴったりマッチしており非常に快適だ。安価なので平日持ち歩くのに最適。
MacBook (White, early 2007)
ThinkPad の存在であまり出番のなかった MacBook も、チューニングしなおしてモバイルで使うように。試しに年末にクラブに持っていったら快適だった。
Aspire One
こちらは軽さだけは No.1 だが、バッテリー持続時間が短いためモバイルマシンとしては引退か。スペアマシンまたはサーバー等の用途に使うことに。
13-inch MacBook Pro (Mid 2009)
現在メインのモバイルマシン。
December 26(Sat), 2009
xflock4 を書き換えた。
内部でいろんなスクリーンセーバーを探して、そのたびにパッケージが無かったりして、きちんと画面にロックがかからなかったりする。そこで思い切って全部書き換えた。
#!/bin/sh test -x /usr/bin/gnome-screensaver && /usr/bin/gnome-screensaver > /dev/null 2>&1 gnome-screensaver-command --lock exit 0
これで確実に gnome-screensaver でロックされるようになってスッキリした。
December 24(Thu), 2009
GNU/Linux から NTFS をマウントして利用する。
username と password は、接続先の Windows ドメインのアカウントと同一にする。
#!/bin/sh test -n "$1" && IP_ADDRESS=$1 test -n "$1" || IP_ADDRESS=172.16.xx.xx test -d ~/mnt/win || mkdir -p ~/mnt/win if [ `df -T | grep 'mnt/win' | wc -l` = 0 ]; then smb.rb -m ~/mnt/win -s C$ -i $IP_ADDRESS -u username -p password fi
引数に Windows ホストの IP アドレスを指定して実行すると、対象ホストの NTFS ファイルシステムを GNU/Linux のファイルシステムの一部として扱うことができるようになる。もちろん Windows Server による共有フォルダなどもマウントできる。
smb.rb の中身。
実行されるプラットフォームに応じて smbmount または net use コマンドを発行している。
#!/usr/bin/env ruby $:.unshift File.join(ENV['SCRIPTS'], 'lib') unless ENV['SCRIPTS'] == nil $:.unshift File.join(File.dirname(__FILE__), 'lib') class ExecOnWin def run(mount, share, ipaddr, user, pass) bs = "\\" target = bs + bs + ipaddr + bs + share if system("ping -n 1 -w 3 #{ipaddr} > nul") puts `net use #{mount} #{target} #{pass} /USER:#{user} /persistent:no` else puts "#{ipaddr} ping timeout." end end end class ExecOnPosix def run(mount, share, ipaddr, user, pass) if system("ping -c 1 -i 3 #{ipaddr} > /dev/null") puts `sudo smbmount //#{ipaddr}/#{share} #{mount} -o rw,uid=#{user},username=#{user},password=#{pass},iocharset=utf8` else puts "#{ipaddr} ping timeout." end end end if __FILE__ ==$0 require 'optparse' mount = '~/mnt' share = 'homes' ipaddr = '' user = '' pass = '' parser = OptionParser.new do |parser| parser.banner = "#{File.basename($0,".*")} by id774 <idnanashi@gmail.com> Usage: #{File.basename($0,".*")} [options]" parser.separator "options:" parser.on('-m', '--mount DIR/DRV', String, "mount (default = ~/mnt)"){|m| mount = m } parser.on('-s', '--share DIR', String, "share (default = homes)"){|s| share = s } parser.on('-i', '--ipaddr IP', String, "IP address"){|i| ipaddr = i } parser.on('-u', '--user username', String, "username"){|u| user = u } parser.on('-p', '--pass password', String, "password"){|p| pass = p } parser.on('-h', '--help', "show this message"){ puts parser exit } end begin parser.parse! rescue OptionParser::ParseError => err $stderr.puts err.message $stderr.puts parser.help exit 1 end if ARGV.size >= 0 && !ipaddr.empty? if ENV['windir'].nil? x = ExecOnPosix.new else x = ExecOnWin.new end x.run(mount, share, ipaddr, user, pass) else puts parser.help end end
December 16(Wed), 2009
Ubuntu 8.04 LTS で Nuvola アイコンを無理矢理使う。
Karmic の gnome-themes-extras には Nuvola アイコンが含まれているようだ。そこで /etc/apt/sources.list を下記のようにして sudo aptitude update し、一時的に Karmic のリポジトリを利用する。
deb http://jp.archive.ubuntu.com/ubuntu/ karmic main restricted universe multiverse deb-src http://jp.archive.ubuntu.com/ubuntu/ karmic main restricted universe multiverse deb http://jp.archive.ubuntu.com/ubuntu/ karmic-updates main restricted universe multiverse deb-src http://jp.archive.ubuntu.com/ubuntu/ karmic-updates main restricted universe multiverse
この状態で gnome-themes-extras パッケージをインストールする。
$ sudo aptitude install gnome-themes-extras $ aptitude show gnome-themes-extras パッケージ: gnome-themes-extras 新規: はい(yes) 状態: インストール済み 自動的にインストールされた: はい(yes) バージョン: 2.22.0-3 優先度: 任意 セクション: gnome メンテナ: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> 展開サイズ: 13.5M 依存: gtk2-engines (>= 1:2.14), librsvg2-common 推奨: gnome-themes-more 説明: extra themes for the GNOME desktop This package contains a few nice contributed themes for the GNOME desktop. It includes the following global themes: * Darklooks, a dark version of the standard Clearlooks theme. * Unity, a smooth and rounded theme. It also includes some icon themes for the desktop: * GNOME Alternative, which is similar to the standard GNOME icon theme. * Foxtrot, a simple theme in yellow tones. * Dropline Neu, a flashy and colorful theme resembling Dropline GNOME. * Gion, an original and sober theme.
完了したら /etc/apt/sources.list を元に戻すことを忘れずに。
参考
http://sugablog.air-nifty.com/impossibility/2009/05/ubuntu-904----1.html
December 09(Wed), 2009
reg.exe を利用してスクリプトで Windows の環境を変更する。
reg.exe を使えばレジストリをコマンドで変更できる。これを利用するスクリプトを書けば、コントロールパネルなどのダイアログを呼び出さなくても Windows の環境を切り替えることができる。
ThinkPad のブラウザキーの有効/無効を切り替えるスクリプトを書いた。
@echo off set REGKey=HKLM¥SYSTEM¥CurrentControlSet¥Control¥Keyboard Layout set REGValue="Scancode Map" set RemoteMachine=%1 if ""=="%1" goto Usage if "/?"=="%1" goto Usage if /I "/h"=="%1" goto Usage if /I "/a"=="%1" goto LocalMachine if /I "/d"=="%1" goto LocalMachine if /I "/b"=="%1" goto LocalMachine set RemoteMachineName=%1 set Action=%2 :Parse if /I "/a" == "%Action%" goto Add if /I "/d" == "%Action%" goto Delete if /I "/b" == "%Action%" goto Browse goto Usage :Add rem レジストリを追加する echo - レジストリキーを追加します - 操作対象は%RemoteMachineName% REG ADD "¥¥%RemoteMachine%¥%REGKey%" /v %REGValue% /t REG_BINARY /d 00000000000000000300000000006ae0000069e000000000 /f echo. goto End :Delete rem レジストリを削除する echo - レジストリキーを削除します - 操作対象は%RemoteMachineName% REG DELETE "¥¥%RemoteMachine%¥%REGKey%" /v %REGValue% /f echo. goto End :Browse rem 操作対象のレジストリを表示する echo - レジストリ値を表示 - 操作対象は%RemoteMachineName% REG QUERY "¥¥%RemoteMachine%¥%REGKey%" goto End :LocalMachine set Action=%1 set RemoteMachine=. set RemoteMachineName=localhost goto Parse :Usage rem コマンドラインのオプション echo ------------------------------------------------------------ echo Usage: echo %0 [machine_name] [/a] [/d] [/b] [/h] echo /a = Add Registry echo /d = Delete Registry echo /b = Browse Registry echo /h = Help echo. echo Examples: echo %0 mymachine /a (Add Registry on machine "mymachine") echo %0 /d (Delete Registry on the local machine) echo ------------------------------------------------------------ :End rem 終了時に環境変数をクリア set REGKey= set REGValue= set Action= set RemoteMachine= set RemoteMachineName=
この例では、スクリプト名にオプション /a を付ければブラウザキーが無効になる。有効に戻すには /d オプションを付けてスクリプトを実行すればいい。
参考
ThinkPad X40 -ブラウザ・キーの無効化-
November 24(Tue), 2009
Emacs でタブ・全角スペース・行末の空白文字列を目立たせる。
jaspace.el を試しに使ってみたらとても良かったので、こちらでも紹介。
wget http://homepage3.nifty.com/satomii/software/jaspace.el wget http://openlab.dino.co.jp/wp-content/uploads/2008/08/dotemacs-jaspace.txt mv jaspace.el ~/.emacs.d/elisp/3rd-party/ mv dotemacs-jaspace.txt ~/.emacs.d/elisp/jaspace-mode.el
ディレクトリはロードパスであればどこでも良い。jaspace-mode.el のファイル名はなんでも良い。中身は自分好みに少し編集したほうが良いかもしれない。
jaspace-mode を呼び出すとトグル動作で on/off を切り替えられるのでこれも設定しておくと良い。
;; タブ, 全角スペース、改行直前の半角スペースを表示する(トグルで動作) (define-key global-map "\C-c\C-c\C-t" 'jaspace-mode)
参考
続・Emacsでタブ・全角スペース・行末の空白文字列を目立たせる
November 10(Tue), 2009
Opera 10.01 にアップグレードした。
qt3 ではなく qt4 の Opera を利用しているので wget した。
wget ftp://ftp.yz.yamagata-u.ac.jp/mirror7/opera/linux/1001/final/en/i386/opera_10.01.4682.gcc4.qt4_i386.deb sudo gdebi opera_10.01.4682.gcc4.qt4_i386.deb
October 22(Thu), 2009
ClamAV の開発版を利用する。
オープンソースのアンチウイルスソフトウェアである ClamAV が Debian GNU/Linux の stable から削除された。
http://lists.debian.org/debian-security/2009/10/msg00037.html
リポジトリは、かつては SVN だったが現在では git に移行している。
http://www.clamav.net/download/sources
常に開発版の最新のソースコードを利用することにした。
test -d install_clamav || mkdir install_clamav cd install_clamav git clone git://git.clamav.net/git/clamav-devel cd clamav-devel ./configure make sudo make install sudo vim /usr/local/etc/freshclam.conf /usr/local/etc/clamd.conf sudo chmod 700 /usr/local/etc/freshclam.conf sudo cp /usr/local/etc/freshclam.conf /usr/local/etc/freshclam.conf.base sudo cp /usr/local/etc/clamd.conf /usr/local/etc/clamd.conf.base sudo freshclam cd .. test -d /usr/local/src/security/clamav && sudo rm -rf /usr/local/src/security/clamav test -d /usr/local/src/security/clamav-devel && sudo rm -rf /usr/local/src/security/clamav-devel test -d /usr/local/src/security || sudo mkdir -p /usr/local/src/security case $OSTYPE in *darwin*) sudo cp -R clamav-devel /usr/local/src/security sudo chown -R root:wheel /usr/local/src/security/clamav-devel sudo chown root:wheel /usr/local/src/security sudo chown root:wheel /usr/local/src ;; *) sudo cp -a clamav-devel /usr/local/src/security sudo chown -R root:root /usr/local/src/security/clamav-devel sudo chown root:root /usr/local/src/security sudo chown root:root /usr/local/src ;; esac rm -rf clamav-devel/ cd .. rm -rf install_clamav/
あとは cron で定期的にアップグレードとスキャンを実行する。 $EXCLUDEFILE にはスキャン対象外のディレクトリを羅列しておく。
TARGETDIRS="/" LOGFILE=/var/log/clamscan.log EXECDIR=${0%/*} EXCLUDEFILE=$EXECDIR/clamscan_exclude cd /usr/local/src/security/clamav-devel git pull make clean ./configure make make install test -f /usr/local/etc/freshclam.conf.base && cp /usr/local/etc/freshclam.conf.base /usr/local/etc/freshclam.conf test -f /usr/local/etc/clamd.conf.base && cp /usr/local/etc/clamd.conf.base /usr/local/etc/clamd.conf chmod 700 /usr/local/etc/freshclam.conf.base chmod 700 /usr/local/etc/freshclam.conf freshclam if [ -s $EXCLUDEFILE ]; then for i in `cat $EXCLUDEFILE` do if [ $(echo "$i"|grep \/$) ]; then i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d` OPTS="${OPTS} --exclude-dir=$i" else OPTS="${OPTS} --exclude=$i" fi done fi for dir in $TARGETDIRS do echo "clamscan ${dir} ${OPTS} -r -i -l ${LOGFILE}" clamscan ${dir} ${OPTS} -r -i -l ${LOGFILE} done
September 15(Tue), 2009
Ubuntu 8.04 LTS で s2ram を利用してサスペンドをする。
まず s2ram のソースコード一式を以下のサイトからダウンロードする。
Userspace Software Suspend
http://suspend.sourceforge.net/
次にビルドに必要となるパッケージをまとめてインストールする。
sudo aptitude install uswsusp acpi acpi-support pmtools pciutils-dev libx86-dev
s2ram のビルドに成功すると /usr/local/sbin/s2ram が生成される。
s2ram -f などのオプションでサスペンドできることを確認する。
Xubuntu で、ショートカット・キーのみで素早く安全にサスペンドをする。
Xfce の場合 xflock4 でスクリーンをロックできる。
そこで /usr/local/sbin/xfsuspend という名称で以下のようにスクリプトを作成する。
#!/bin/sh xflock4 && s2ram -f
これを/etc/sudoers に登録する。
Cmnd_Alias SUSPEND = /usr/local/sbin/xfsuspend %admin ALL=(ALL) ALL %admin ALL=(root) NOPASSWD: SUSPEND
あとは Xfceのキーボード設定で任意のショートカット・キーから sudo xfsuspend を呼び出せば良い。
September 03(Thu), 2009
Opera 10 を導入する。
Opera 10 が正式にリリースされたのでまとめ。
Mac OS X (10.5/10.6)
Opera の公式サイトから .dmg ファイルをダウンロードしてインストールする。
ベータ版を使っていた場合はプロファイルディレクトリをリネームすれば以前の設定が引き継がれる。
cd ~/Library/Preferences mv "Opera Preferences 10" "Opera Preferences"
Ubuntu (8.04/8.10/9.04) または Debian GNU/Linux 5.0
Qt4 版を入れて SCIM で日本語入力するのが良さそう。
sudo aptitude install -y scim-bridge-client-qt scim-bridge-client-qt4 gdebi wget ftp://ftp.yz.yamagata-u.ac.jp/mirror7/opera/linux/1000/final/en/i386/opera_10.00.4585.gcc4.qt4_i386.deb sudo gdebi opera_10.00.4585.gcc4.qt4_i386.deb
スキンを使う
Opera を入れてからスキンのページを開いて「スキンをダウンロード」をクリックする。
August 16(Sun), 2009
Firefox のタイトルを変更する。
about:config の nightly.templates.title で設定できる。
${DefaultTitle} Firefox ${version} (Build ${AppBuildID}) Gecko ${geckoVersion} Profile ${Profile}
July 30(Thu), 2009
Ubuntu 8.04 LTS のメインブラウザを Opera 10 Beta2 にした。
背景
今まで仕事では ThinkPad X61 に Ubuntu 8.04 LTS を入れて Firefox 3.0 を利用していた。今日になって Firefox を起動しようとしてもプロセスそのものはメモリ内に常駐するがウィンドウが表示されない状態が起こるようになった。プロファイルの再作成、apt での再インストール、Mozilla の公式サイトや外部リポジトリにある Firefox 3.0/3.5 の導入、WM の変更などいずれを試しても改善しない。かねてから多機能でセキュアだけど鈍重な Firefox に少し嫌気が指していたので、ちょうど良い機会だから Firefox を捨て Ubuntu に Opera を入れてメインブラウザをスイッチしてみることにした。そこで手順などをまとめ。
ダウンロード
i386 版を利用しているので以下から最新のベータ版を導入する。
http://www.opera.com/browser/download/?os=linux-i386&list=all
今回は現時点最新の Opera 10.00 Beta2 をダウンロードした。tarで解凍して sudo ./install.sh してあらかじめ作成しておいた /opt/opera ディレクトリをインストール先に指定する。Xfce のショートカット C-M-o に /opt/opera/bin/opera を割り当てる。Opera は apt で入れることのできる Debian なリポジトリも用意されているのだが、手動で最新のベータ版を導入するのでリポジトリは利用しない。
日本語入力
もっともハマったのがこの日本語入力。このままだと Opera (というか Qt を使うアプリケーション) で ZenkakuHankaku 相当のキーを押しても日本語入力が有効にならない。最近の Ubuntu では scim が標準らしいが、これを利用すると Opera が落ちまくるという情報があるし、そもそも好みじゃないので uim-anthy を Opera で利用することにした。
主に以下の内容を参考にした。
http://d.hatena.ne.jp/zzzhaya/20081213
scimのremove
sudo apt-get remove scim
これをすると利用していないパッケージとして ttf-vlgothic までうっかりアンインストールされてしまったので Emacs のフォント表示が悲惨なことに。すぐに再インストールして事無きを得た。
uimをinstall
sudo aptitude install uim uim-m17nlib
QT_IM_MODULE=xim のみを設定すれば良いらしいので、設定ファイルを以下の通りに編集した。これで GTK では uim を利用しつつ、Qt では xim という状態になるので Opera で日本語入力を利用できるようになる。
/etc/X11/xinit/xinput.d/uim
# uim without toolbar indicator XIM=uim XIM_PROGRAM=/usr/bin/uim-xim XIM_ARGS= GTK_IM_MODULE=uim QT_IM_MODULE=xim # It seems to me that the system needs to be initialized. # Folowing trick will wait 10 seconds without slowing down X start up. #XIM_PROGRAM_XTRA="(sleep 10; uim-toolbar-gtk)" DEPENDS="uim-xim,uim-gtk2.0|uim-qt,uim-anthy|uim-canna|uim-prime|uim-skk|uim-m17nlib"
システムトレイにuimのバーを格納する。
sudo update-alternatives --config xinput-ja_JP
初期設定
スピードダイアル
画面右下の Configure Speed Dial から設定変更できる。4x4などに適当に拡大してよく利用するサイトをがしがし登録していく。
Preferences
Startup を Start with Speed Dial にして Home page に自分のサイトを登録する。
フォント
E-mail compose/display、Web page normal text、Text field などを IPA モナーフォントの明朝体にする。ウェブページのテキストが IPA モナー明朝だとそれだけで見映えは非常に良くなる。等幅フォントを VL ゴシックにする。UI 周りは IPA モナーゴシックをそのまま使ったほうが Opera の場合は良さそう。
パスワード/ブックマークレット
ウェブサービスのパスワードは保管しておけば次回から C-Enter で呼び出せる。なので主要なウェブサービスのパスワードをブラウザに記憶させておく。さらに [View]-[Toolbars]-[Personal Bar] を表示させてここにブックマークレットを登録する。
- はてなブックマーク http://b.hatena.ne.jp/register
- Delicious http://delicious.com/help/bookmarklets
- Tumblr http://www.tumblr.com/goodies
- Livedoor Reader http://reader.livedoor.com/utility/bookmarklet/
- Mitter http://mitter.jp/tools
Nickname を設定しておくと C-l でアドレスバーにジャンプして略称を打つだけでブックマークレットを呼び出せる。このあたりは Firefox と同じなので共通のキーをアサインしておくと幸せになれる。
ショートカットキー
Opera のショートカットキーは以下を参考にする。
http://help.opera.com/Windows/9.00/ja/keyboard.html
Flash Player
libflashplayer.so を直接ブラウザのプラグインに入れていた場合は Opera で利用できないので .deb パッケージを以下からダウンロードしてシステムにインストールする。
http://www.adobe.com/jp/products/flashplayer/
完成
以前に Opera を利用したときは全角文字の文字化けがひどかったり C-l でアドレスバーに飛べなかったりと悲惨だった記憶があるが、どうやらこれなら実用レベルで使えそう。Mac でも Safari をメインに利用しているし、これで自分の利用環境としては Firefox はほぼ不要になった。







