平衡点
2006/05/09
_ x-html 化プラグイン
導入してみた.
…ふむ. やっぱり CSS の設定が必要(というか, 今迄の CSS が微妙).
出力される xhtml 自体は真っ当. 素晴しいです.
対応していないのは recent_list と calender 関係…だけじゃない, アンカーが駄目だ. XML Parse Error って事は文字コード問題か?
明日(今日?)やろ.
tex2mathml がある訳だから RD でも書けるハズだ. mathwiki スタイルっぽくはならないけど, RD 記法 + プラグイン記法でいける, ハズ.
多分.
_ zsh へ移行中
login shell
ログインシェルにするのは恐いので .xsession の中で
SHELL=/usr/bin/zsh
とした. これならログインシェルは /bin/bash だが, X 環境では zsh が起動する. mlterm を daemon モードで起動していると, bash が上るので殺しておく.
ある程度設定が決まってきたらログインシェルにするかも.
.bash_profile の中で
- zsh があったら zsh を起動して exit 0
- zsh がないならそのまま bash を起動
なんてすれば良いのだが. zsh の位置が /usr/bin/zsh なんだよな.
if [ -f /usr/bin/zsh ] ; then /usr/bin/zsh -l exit 0 fi
なんて. 良いのかコレで. というかこれをやるなら chsh だよな(笑) zsh の無い環境では \$HOME/bin/zsh に zsh を install しておけば良いのか.
ZDOTDIR
man を見ると,
- ログインシェルにした場合
- .zshenv -> .zprofile -> .zshrc -> .zlogin
- zsh を起動した時
- .zshenv -> .zshrc
- zsh のスクリプトを実行した場合
- .zshenv だけ
という順で起動される模様. で, .zshrc とか .zlogin などの位置は ZDOTDIR で指定されている.
よって, .zshenv には
# .zshenv export ZDOTDIR=$HOME/.zsh source $ZDOTDIR/.zshenv
なんて書いておいて, \$HOME/.zsh 以下に, .zshrc と .zshenv を置く事にする. これなら, 他の環境へ移植するのも楽だろう(多分).
.zshenv
主に環境変数関係の設定をする. 今ん所,
# PATH export PATH=$HOME/bin:/sbin:/usr/sbin:/usr/local/sbin:"${PATH}" # for intel Compiler & library if [ -f /opt/intel/fc/9.0/bin/ifortvars.sh ]; then source /opt/intel/fc/9.0/bin/ifortvars.sh fi if [ -f /opt/intel/cc/9.0/bin/iccvars.sh ]; then source /opt/intel/cc/9.0/bin/iccvars.sh fi export INCLUDE=/opt/intel/mkl/8.0.1/include:"${INCLUDE}" export LD_LIBRARY_PATH=/opt/inte/mkl/8.0.1/lib/32:"${LD_LIBRARY_PATH}" # dpkg, apt-rebuild, apt-unstable とか export DEBFULLNAME="Youhei Sasaki" export DEBEMAIL="uwabami@gfd-dennou.org" export KPKG_MAINTAINER=${DEBFULLNAME} export KPKG_EMAIL=${DEBEMAIL} export COLUMNS=200 # cvs export CVSROOT=/home/uwabami/work/cvsroot export CVS_RSH=ssh # GTK アプリでのロケール対策 export G_FILENAME_ENCODING="@locale" export G_BROKEN_FILENAMES="@locale" # Java export JAVA_HOME=/usr/lib/j2sdk1.5-sun
こんだけ. zsh らしい事はしてない
.zshrc
補完とかヒストリとかエイリアスとか.
## umask の設定 umask 022 ## keybind を emacs 風に. bindkey -e ## 履歴の設定, screen でも共有 HISTFILE="$HOME"/.zsh/zhistory # メモリ内の履歴の数 HISTSIZE=100000 # 保存される履歴の数 SAVEHIST=100000 # 既にヒストリにあるコマンドは古い方を削除 setopt hist_ignore_all_dups # コマンドラインの余分なスペースを削除 setopt hist_reduce_blanks #ヒストリの共有 for GNU Screen setopt share_history # コマンドの開始時刻と経過時間を登録 setopt extended_history # historyコマンドは登録しない setopt hist_no_store # コマンド行先頭が空白の時登録しない(直後ならば呼べる) setopt hist_ignore_space # 履歴の一覧を出す function history-all { history -E 1} ## 補完 autoload -U compinit compinit # 補完候補リストを詰めて表示 setopt list_packed # 補完候補リストの日本語を適正表示 setopt print_eight_bit # 補完候補は Emacs のキーバインドで選択 zstyle ':completion:*:default' menu select=1 # 補完時に大文字小文字を区別しない zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' ## misc # コマンド入力エラーでBEEPを鳴らさない setopt no_beep # コアファイルを吐かないようにする limit coredumpsize 0 ## cd の履歴 setopt autopushd # ディレクトリスタックに重複する物は古い方を削除 setopt pushd_ignore_dups # cdhist みたいなー alias gd='dirs -v; echo -n "select number: "; read newdir; cd +"$newdir"' ## prompt の設定 #prompt の色指定を簡便に … $fg[blue] で可能になる. autoload -U colors colors # 被る時は右プロンプトを消す unsetopt promptcr # 環境変数をプロンプトに展開する setopt prompt_subst # プロンプトを設定 PROMPT=$'[%n@%B%m%b:%j]%(!.#.%%) ' RPROMPT=$'%B%(5~,%-2~/.../%2~,%~)%b' ## alias とか. alias ls='ls -F --color=auto' alias la='ls -haF --color=auto' alias ll='ls -hlaF --color=auto' alias rm='rm -i' alias mv='mv -i' alias clean='rm -rf *~; rm -rf *.bak ; rm -rf a.out' alias cleanall='rm -rf .*~ ; rm -rf .*.bak; rm -rf .saves-*' alias reboot='sudo reboot' alias en='emacs21 -nw' alias dselect='aptitude' alias aptitude='LANG=C aptitude' alias xxd="startx -- -dpi 100 -nolisten tcp -layout DualHead" alias xxx="startx -- -dpi 100 -nolisten tcp -layout Default" alias scr="screen -R"
なんて. zsh の dirs は検索効くのかな. 効けば cdhist2 だわ.
_ 学会日程
勘違い. 土曜日二連チャン代講だわ. 飛行機は
- 行きは AIRDO の道民割引きが使えそう.
- 帰りは JAL の特便かな?
- 宿はどうすんべ.
…てか, ヲイ. 出発, 土曜日じゃん. なんでまだやってねぇのさ < ヲレ
2007/05/09
_ VMwarePlayer で USB 接続
…というか単に iPod を繋ぎたいだけ.
vmware.log を見てみたら…
vmx| USB: Unable to open "/proc/bus/usb/devices" (No such file or directory). vmx| USB: Unable to initialize USB Generic backend.
… udev になったから?
という訳でちょっと ad hoc ながら
$ sudo mount -t usbfs /dev/bus/usb /prc/bus/usb $ vmware.sh start
としたら VMware Player からも USB 機器が見えた. そんな訳で vmware.sh を更新.
#!/bin/sh # Start/stop the vmware player test -f /usr/bin/vmplayer || exit 0 test -f /etc/init.d/samba || exit 0 test -f /etc/init.d/vmware || exit 0 test -f /usr/bin/vmwareesd || exit 0 case "$1" in start) echo "run vmware !!" if [ -e /var/run/samba/smbd.pid ]; then echo "smbd nmbd is already running" else sudo /etc/init.d/samba start fi if [ -e /var/run/vmnet-natd-8.pid ]; then echo "vmnet8 is already running" else sudo /etc/init.d/vmware start fi sudo mount -o remount -t usbfs /dev/bus/usb /proc/bus/usb echo "vmplayer start" vmwareesd /home/uwabami/vmware/winxp/winxp.vmx 2>/dev/null ;; stop) echo "stop vmware !!" sudo /etc/init.d/vmware stop sudo /etc/init.d/samba stop sudo umount /proc/bus/usb ;; *) echo "Usage: vmware {start|stop}" exit 2 ;; esac exit 0
…でもって, iPod のファームウェアの更新には失敗…_|‾|○
_ dual head
大学での居室が変わって, laptop の上の位置にディスプレイを置くようになったので, dual head で同時出力する画面を laptop の上に持って行きたくなった.
man 5 xorg.conf によれば RightOf, LeftOf と Above, Below, Rlative が使えるらしい. そんな訳で
Section "ServerLayout" Identifier "DualHead" Screen 0 "Default Screen" Screen 1 "extScreen" Above "Default Screen" InputDevice "Generic Keyboard" InputDevice "TouchPad" "AlwaysCore" EndSection
みたいに.
2011/05/09
_ 快適なメール環境の構築(1/n): offlineimap の設定
最近になって Wanderlust + offlineimap + offlineimap-el (+ epa) で, ようやく幸せな気分になったので, そのメモを残しておこうかと (というか, 周りで Gmail + Wanderlust な人がけっこういるので, 参考になったら良いなぁ, とか).
offlineimap
まずは offlineimap の設定のお話.
多くの MUA では, IMAP サーバとのやりとりの際に, メール全文を取得せずヘッダのみを取得してスレッド表示させたりしている (Wanderlust もそうですね), これだとネットワーク接続が無い場合にメール本文が取得できないし, 検索するのも具合が良くない.
offlineimap は, その名前の通り IMAPサーバ上のメールと local の Maildir を同期してくれるソフトウェア. local の Maildir でメールの振り分け(ファイルの移動)や メールの削除(Trash への移動, 削除)などを行なうと, その結果を IMAP サーバと同期してくれる. 当然 IMAP サーバ側でメールを操作していても, 同期時にそれを反映してくれる.
Debian の場合, install は
$ apt-get install offlineimap
で OK.
設定例は /usr/share/doc/offlineimap/examples/offlineimap.conf.gz にあるので
$ zcat /usr/hare/doc/offlineimap/examples/offlineimap.conf.gz \ > ~/.offlineimaprc
とでもしてから .offlineimaprc を編集すれば良い. 注意すべきは "[Gmail]/All Mail" を同期しないようにすることかな(しても良いけどエライ時間かかるし, あんまり見ないでしょ?).
設定例は例えば如何の通り
[general] metadata = ~/Mail/.offlineimap accounts = Gmail [Account Gmail] localrepository = LocalGmail remoterepository = RemoteGmail [Repository LocalGMail] type = Maildir localfolders = ~/Mail/Gmail restoreatime = no [Repository RemoteGmail] type = Gmail remoteuser = [gmail のメールアドレス] realdelete = no nametrans = lambda foldername: re.sub('^\[Gmail\]/Starred', 'Starred', re.sub('^\[Gmail\]/Spam', 'Spam', foldername)) folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail', '[Gmail]/Trash','[Gmail]/Sent Mail','[Gmail]/Drafts']
この設定では
- offlineimap のメタデータは ~/Mail/.offlineimap 以下に格納
- メールは ~/Mail/Gmail 以下に格納(複数アカウント用に)
- [Gmail]/All Mail, [Gmail]/Trash, [Gmail]/Sent Mail, [Gmail]/Drafts は同期しない
となっている.
この設定で offlineimap を走らせるとパスワードの入力待ちになるので, 適宜入力して同期が終わるのを待つ. maxconnection とか適宜設定しておくと, スレッド並列で同期しはじめるので, 初回には良いかもしれない.
他の Gmail アカウントや他の IMAP サーバとの同期設定も必要ならしておくと良い.
パスワード管理
examples にある offlineimap の設定例でも述べられているけれど, offlineimaprc 内に password を書くことも可能.
以下は gpg で暗号化したファイル内にパスワードを書いておく場合の設定. 以下の python スクリプトを適当な場所に置いておく. (ここでは ~/bin/offlineimap_auth.py とする).
#!/usr/bin/python import re, os def get_authinfo_password(machine, login, port): s = "machine %s login %s password ([^ ]*) port %s" % (machine, login, port) p = re.compile(s) authinfo = os.popen("gpg -q --no-tty -d ~/.offlineimap-pass.gpg").read() return p.search(authinfo).group(1)
.offlineimap-pass.gpg がパスワードが書かれたファイル. 適宜場所や名前を好みに合わせて変えると良い. ファイルの形式は netrc と同じで
machine [IMAPサーバ名] [認証方式] [アカウント名] password [パスワード] port [ポート番号]
例えば Gmail であれば
machine imap.gmail.com login [Gmail のメールアドレス] password [パスワード] port 993
で ok. 認証方式は login 以外は試していない(cram-md5 とかできるのかしらん).
でもって, 実際には
[general] metadata = ~/Mail/.offlineimap accounts = Gmail # パスワードを読みだす python スクリプト pythonfile = ~/bin/offlineimap_auth.py ... - snip - ... [Repository RemoteGmail] type = Gmail remoteuser = [gmail のメールアドレス] remotepasseval = get_authinfo_password("imap.gmail.com", [gmailのメールアドレス], 993) ...
としておくと, offlineimap を動作させる際に gpg でファイルの複合を行なうことになる.
予定
パスワード管理に gpg を使っているので cron で同期させる事はできないのだけれど
- Emacs には epa があるので gpg ファイルを透過的に扱える.
- gpg-agent でも良いけれどね.
- offlineimap-el という emacs lisp がある.
というわけで, 次はその話.
_ Wiki の導入...?
お仕事で, Redmine 上の Wiki にドキュメントを書いてもらっていたりする. 記法は Markdown なのだけれど, いざドキュメントを Fix して公開する段になって, 欲が出てきてちょっと困っていたり.
どうするかな...
- LDAP 認証に対応.
- 閲覧, 追記修正も認証ユーザのみ.
- Markdown Extra 記法に対応
している Wiki ってないもんだろうか. Hiki の パーサを弄るのが一番早いかしらん...
2021/05/09
_ researchmap V2 api のメモ
なるほど.
というか, 公開されている API の仕様書が読みづらくてかなわん. 必要な情報はちゃんと書いてある訳だけどね.
まあ, 一般公開されていなかった V1 api よりはマシなんだが.