LinuxにおけるTrackPointの設定

Arch Linuxにおける設定例

いろいろやり方があるみたいだが、今回は次のようにして設定した。

/etc/X11/xorg.conf.d/ に 20-thinkpad.conf のようなファイルを次のように作成する。Xを再起動後、設定が有効になる。(普通に再起動しておけばおk)

Section "InputClass"
	Identifier	"Trackpoint Wheel Emulation"
	MatchProduct	"TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint"
	MatchDevicePath	"/dev/input/event*"
	Option		"EmulateWheel"		"true"
	Option		"EmulateWheelButton"	"2"
	Option		"Emulate3Buttons"	"false"
	Option		"XAxisMapping"		"6 7"
	Option		"YAxisMapping"		"4 5"
EndSection

Javaで日本語を使えるようする

新しいLinuxの環境からTopCoderをやろうとしたとき,いつもArenaを立ち上げると日本語が□(豆腐というらしい)になるのでメモしておく.

  1. $JAVA_HOME/jre/lib/fonts 以下に fallback というディレクトリを作成する
  2. 次にそのディレクトリに日本語フォントのシンボリックリンクをはる

例えば今回の自分の環境下では次のようにシンボリックリンクをはった.

ln -s /usr/share/fonts/TTF/TakaoGothic.ttf
ln -s /usr/share/fonts/TTF/TakaoMincho.ttf

豆腐からの脱却

WindowsでVundleを使うときにはまったこと

Vundleのインストールについてはhttps://github.com/gmarik/vundleのREADME.mdを見れば大体わかるので、そちらを参照してください。

以下、自分がWindows環境でVundleを使おうとしてはまったことをメモしておく。

curl云々のところ

以下のスクリプト?をC:\Program Files\Git\cmd\curl.cmdに作ってなかった。
説明はちゃんと読みましょう!

curl.cmd

@rem Do not use "echo off" to not affect any child calls.
@setlocal

@rem Get the abolute path to the parent directory, which is assumed to be the
@rem Git installation root.
@for /F "delims=" %%I in ("%~dp0..") do @set git_install_root=%%~fI
@set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%PATH%

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%

@curl.exe %*

set shellslashをしていた

これを設定していると、「\」と「/」の関係でパスがうまくいかないのでインストールなどに失敗していた。


プラグインのインストール先が ~/.vim/bundle 以下になっていた

これでインストールできるようになったかと思えば、インストールされるプラグインの場所が、~/.vim/bundle 以下になっていた。
で、いろいろ調べていくと、.vimrc で呼んでいるVundleの関数 vundle#rc() に解決の糸口があった。この関数は以下のようになっている。

vundle.vim

func! vundle#rc(...) abort
  let g:bundle_dir = len(a:000) > 0 ? expand(a:1) : expand('$HOME/.vim/bundle')
  call vundle#config#init()
endf

let g:bundle_dir〜のところでインストールするプラグインディレクトリを定義している。
ここで何をしているかというと、(見ればわかるか…)
もし、a:000(可変長引数)の長さが0より大きいとき、a:1(可変長引数の1個目)の絶対パスを展開しそれをインストール先のディレクトリに、そうでないとき$HOME/.vim/buncle以下をインストール先にするというものである。Windowsではプラグインなどはvimfiles以下に置かなければならず*1、vundle#rc()関数を引数なしで呼ぶと$HOME/.vim/bundleがインストールディレクトリなってしまう。

解決策

.vimrcに

call vundle#rc('~/vimfiles/bundle')

と書く。
でも、これではLinuxなど他の環境と.vimrcを共有している場合だめなので、

if has('win32') || has('win64')
  let $DOTVIM = expand('~/vimfiles')
else
  let $DOTVIM = expand('~/.vim')
endif

としておいて

call vundle#rc('$DOTVIM/bundle')

とかにしておくといいかも。


これで自分の環境ではうまくVundleを使えるようになりました。

*1:Windowsでも.vimプラグインなどのインストールディレクトリにできるかもしれないが、自分の環境ではcolorschemeを読み込んでくれなかったのでvimfilesにしておいた

leo-net認証スクリプト

今住んでいる家がレオパレスさんの所で、leonetの認証が面倒くさいので認証スクリプトを書いた。

leonetの認証

leonetでは、未認証の状態で任意のURLへアクセスすると認証用のページへリダイレクトされる(たぶん、ルータによって)。そのページで認証を済ませると、leonetのウェブサイトにリダイレクトされる。認証はbasic認証だと思う。そして、一定時間通信がなかった場合、再度認証を求められる。何時間だったのかは調べてませんw。

スクリプトの簡単な説明

leonetの認証はbasic認証なので、wgetのオプション--http-user= 、--http-password=を利用してbasic認証を行うというもの。

もし万が一、このスクリプトを利用される場合

自己責任のもとで使用して下さい。

初期版

これは、どこかのサイト(忘れた)でleonetの認証にwget使ったらいいんじゃねということが書いてあったので、それを参考にして書いたもの。

#!/bin/sh

# leonet認証スクリプト

# filename : leonet_auth.sh
# date     : 21-Jan-2011
# author   : furu

# Input your id & password.
id=
pass=

wget --http-user=${id} --http-password=${pass} http://www.google.co.jp/

rm index.html
echo "index.htmlを削除しました.\n"

echo "認証が完了しました!"
read uho

改良?版

(以下、セキュリティうんぬんの所は間違ったことを書いているかもしれないので、間違っていればご指摘下さい。)

初期版のスクリプトでは、認証してようがしてまいがwgetを実行してしまうので、指定したURLにユーザIDとパスワードを送信してしまいセキュリティ的に危ないんじゃないかと思った。
そこで、インターネットにつながっているかどうかを確認し、つながっていなければwgetを使って認証をする、つながっていれば何もしないという機能を付け足すことにした。
インターネットにつながっているかどうかの確認はステータスコードで確認するものとし、ステータスコードcurlの-IオプションでHTTPヘッダーを取得、それをファイルに書き出して、そのファイルをgrepステータスコードがPETTERN(ここでは、^HTTP/1.1 200 OK)に一致するかどうかを調べる。grepした結果、PETTERNに一致するのものが見つかれば特殊変数$?に0が、見つからなければ1が入るので、それをif文に利用して、wgetを実行するかどうかを分岐させる。
WEB+DB PRESSシェルスクリプトの特集(いつのかは忘れた)をすこーし参考にさせていただきました。

#!/bin/sh

# leonet認証スクリプト(improved)

# filename : leonet_auth_improved.sh
# date     : 8-April-2011
# author   : furu


# Input your id & password.
ID=
PASS=
SERVER="www.google.co.jp"
PETTERN="^HTTP/1.1 200 OK"

# mktemp -t : /tmp/ 以下にtmp.XXXXXXXXXXを作成
# 下のじゃ動かない。tmplogfileには'mktep -t tmp.XXXXXXXXXX'が文字列で入る。
# tmplogfile='mktemp -t tmp.XXXXXXXXXX' || exit 1
touch tmp

# get http header for $SERVER
curl -I ${SERVER} > tmp 2> /dev/null

grep "${PETTERN}" tmp > /dev/null 2>&1
if [ ${?} -eq 0 ]
then
    echo "${SERVER} -> OK\n"
    echo "Authentication has been done.\n"
else
    echo "${SERVER} -> NG\n"
    echo "start authentication ..."
    wget --http-user=${ID} --http-password=${PASS} http://www.google.co.jp/ 2> /dev/null
    rm index.html
    echo "Authentication was completed!\n"
fi

rm tmp

# Wait.
read uho

はまったところ

スクリプトを実行すると↓のメッセージが出てif文がうまく動かなかった。
[: 42: missing ]
42とかあるから42行目にあるfiが原因なのかなーとか思ってたけど、
これは
if [ $? -ep 0]
と0と]の間にスペースがないことが原因だった。
スペースを忘れずに!
参考:http://d.hatena.ne.jp/hatappo/20100219/1266569445

うまくいかなかったところ

mktempうんぬんのところ。

メモ

$?: 最後に実行したコマンドの終了コード
終了コードとは、あるコマンドを実行したときに、正常終了ならば0、異常終了ならば1が返ってくるもの。


もっといい方法があれば教えて頂けるとありがたいです。

あとスクリプト中の英語が下手くそなのは勘弁してくださいw

今、Rubyの勉強をしているつもりなので、Ruby版を練習がてら書くかもしれない。たぶん。

termtterのインストールメモ

環境

必要なライブラリのインストール

  • json
  • highline
  • termcolor
  • rubytter
  • notify

これらを

% gem install json highline termcolor rubytter notify

で入れる。

と思ったら、no such file to load -- zlib と怒られた…。

解決方法

zlib1g-devを入れる。

% sudo aptitude install zlib1g-dev

次に、$HOME/.rvm/src/ruby-1.9.2-p180/ext/zlib (ディレクトリは適宜自分の環境のものへと置き換えて下さい。)へ移動し、このディレクトリで以下のコマンドを実行する。

% ruby exconf.rb
% make
% make install

これで、gemで必要なライブラリがインストールできるようになった。

termtter本体

次にtermtter本体を入れる。
gemで入れてもいいけど、プラグインの数が少なかったり、最新の機能が使えなかったりとあんまり面白くないらしいので、githubから頂戴してくる。

適当なディレクトリで、

% git clone git://github.com/jugyo/termtter.git

次に、binにパスを通す。
.bashrcや.zshrcに以下を追記。

export PATH=/path/to/termtter/bin:$PATH

これでおk。

起動

ターミナルで、

% termtter

で起動できる…と思ったけど、

no such file to load -- openssl

調べてみると、opensslライブラリがRVM環境のパスに存在しないことが原因らしい。さっきのzlibライブラリもこれが原因っぽい。

解決方法

opensslライブラリを追加。

% rvm package install openssl

-Cオプション&各ライブラリのパスを指定して再コンパイルする。

$ rvm install 1.9.2 -C --with-openssl-dir=$HOME/.rvm/usr

これでtermtterを起動することができた。
zlibライブラリの方も上記のやり方でできる。どっちがいいんだろう…。

termtterを初回起動すると、本家twitterの連携アプリのページが開いて許可するかどうかを訊いてくるので、許可しする。すると、PINコード?が発行される。termtterの方でも、そのPINコードの入力を求められるので入力する。これで、自分のTLがだーっと流れてくる。


termtterの使い方は気が向いたら書く…かな。

termtterのおもしろいところ

  • 起動したらこいつが出てくる。
 <(@)//_
    \\
  • fib n でn番目のフィボナッチ数を計算できて投稿できる。twitterに安らぎを与えるらしいよ!

参考

以下、参考にさせていただいたページ。ありがとうございました。
http://www.ustream.tv/recorded/5772266
http://d.hatena.ne.jp/TrinityT/20110122/1295685900
http://d.hatena.ne.jp/hrsth/20110103/1294044717