平衡点


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

みたいに.

_ zsh の設定

φ(._.)メモ


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 よりはマシなんだが.


連絡先など
最近の日記
一覧
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|02|03|04|08|09|10|11|12|
2013|01|02|03|04|05|06|08|09|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|09|10|
2016|02|03|
2017|01|02|03|05|06|07|09|11|12|
2018|03|06|07|10|11|12|
2019|01|02|03|04|05|07|10|12|
2020|01|02|03|04|05|08|09|10|11|12|
2021|01|02|03|05|06|07|08|09|11|12|
2022|01|02|03|04|05|06|08|10|11|12|
2023|02|03|04|06|08|09|11|12|
2024|01|02|03|
Back to Top ▲