Androidのjava.net.URIでIPv6 scope_idが扱えない件
タイトル通り.
URI v6linklocal = new URI("http://[fe80::1%9]/foo");
を呼ぶとURISyntaxException
が返ってくる.
scope_idについては,RFC 4007で文書化されている.しかしAndroid Developersに
A Uniform Resource Identifier that identifies an abstract or physical resource, as specified by RFC 2396.
と書かれている通り,Androidのjava.net.URIはRFC 2396に準拠している.そのため,最初に示したようなURIは誤りとして扱われる.
今のところ,直接的な対処法は無さそう.
Fedora17 デスクトップ環境構築メモ
すぐ忘れるのでメモ.随時追加.
環境
OSインストール直後
MIN_UID / MIN_GIDの変更
Fedora 16から,一般ユーザのUID/GIDが1000から始まるようになった.が,NFSの関係でUID/GIDを500にしたいので設定変更. 初回起動時のウィザード(firstboot)では適当なアカウントを作っておくのがポイント.起動後,/etc/login.defsを編集.
(snip)
UID_MIN 500
(snip)
GID_MIN 500
(snip)
参照
Trimを有効にする
/etc/fstabを編集.オプション"discard"を追加.
UUID=xxxx / ext4 defaults,discard 1 1
UUID=yyyy /boot ext4 defaults,discard 1 2
参照
アプリケーションのインストール & 設定
シェル関係
dotfiles類をgit resositoryから持ってくるためのスクリプト"setup-newenv.sh"を持ってきて実行.
$ sudo yum install git zsh screen
$ git clone https://gist.github.com/4411268.git
$ cd 4411268
$ sh setup-newenv.sh
$ chsh -s /usr/bin/zsh
アプリケーションのインストール
ひたすらインストール.
$ sudo yum install gcc automake kernel-devel \
gnome-tweak-tool gnome-shell-extension-dock gnome-shell-extension-alternative-status-menu gnome-shell-extension-remove-accessibility-icon \
dconf-editor gconf-editor vlgothic* \
python3 subversion tig \
haparm powertop \
thunderbird emacs ibus-skk \
virt-manager libvirt openssh-askpass remmina-plugins-rdp \
vlc
アプリケーションの設定
X
/etc/X11/xorg.conf.d/20-trackpoint.confを作成.ThinkPadのTrackpointでスクロールできるように.
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
参照
Gnome
インストールしたshell extensionをgnome-tweak-toolで有効に.
dockを左に & サイズ調整.
$ gsettings set org.gnome.shell.extensions.dock position "left"
$ gsettings set org.gnome.shell.extensions.dock size "42"
xdg-user-dirs-updateを無効に.
$ cp /etc/xdg/user-dirs.conf .config/
$ vi .config/user-dirs.conf
(snip)
enabled=False
(snip)
ハイバネート
swapが無いとhibernateが使えないことをインストール後に知ったので作成.
$ sudo time dd if=/dev/zero of=/swap bs=1M count=8192
$ sudo mkswap /swap
$ sudo swapon /swap
$ sudo filefrag -v /swap
Filesystem type is: ef53
File size of /swap is 8589934592 (2097152 blocks, blocksize 4096)
ext logical physical expected length flags
0 0 1308672 2048
1 2048 1359872 1310720 4096
2 6144 1568768 1363968 4096
(snip)
$ sudo vi /etc/sysconfig/grub
(snip)
GRUB_CMDLINE_LINUX="... resume=/dev/sda2 resume_offset=1308672"
(snip)
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo vi /etc/fstab
(snip)
/swap swap swap defaults 0 0
(snip)
SSHの踏み台有り・無しを,ネットワーク的居場所に応じて自動で切り替える
SSHで何がしかのホストに入るとき,自ホストのネットワーク的な居場所に応じて踏み台使用の有無を自動で切り替えるようなものを書いてみた.
やりたいこと
自分の居場所に関係無く,同一コマンドでSSHできるようにすることが最終的なゴール.
あるネットワークAからは踏み台無しでSSHできるけども,それ以外のネットワークからは踏み台を通さないとSSHできないようなホストがあるとする.
今までは,$HOME/.ssh/configに
Host univ-server1 Host server1.example.jp Host univ-server1-outside Host server1.example.jp ProxyCommand ssh univ-proxy nc %h %p Host univ-proxy Host proxy.example.jp
と書いておいて,ネットワークAからは
$ ssh univ-server1
ネットワークA以外からは
$ ssh univ-server1-outside
と叩くようにしていた.
これを,自分の居場所に関係無く
$ ssh univ-server1
と叩けば入れるような状況にしたい.使い分けが面倒だし.
方法
$HOME/.ssh/configを以下のような感じで書く.ssh-autoproxy.pyはgithubから持ってきて適当にパスの通った場所へ.
Host univ-server* ProxyCommand ssh-autoproxy.py univ-proxy %h %p 192.0.2.0/24 198.51.100.0/24 Host univ-server1 Host server1.example.jp Host univ-server2 Host server2.example.jp Host univ-proxy Host proxy.example.jp
上記の例では,192.0.2.0/24と198.51.100.0/24以外からは踏み台が必要なホストを想定している.
これで,踏み台使用の有無に関係なく,
$ ssh univ-server1
を叩けば入れるようになる.
Know issue
- インターネット接続性が無いと,アレな挙動を見せる
- v4/v6 dual stackな環境だと,アレな挙動を見せる
Code
githubからどうぞ.ipaddrモジュールはPEP 3144版が必要なので注意.
ACアダプタ接続時,画面オフしないようにする (Fedora16+Gnome3)
$ gsettings set org.gnome.settings-daemon.plugins.power sleep-display-battery 600 # バッテリー駆動時は600sで画面オフ $ gsettings set org.gnome.settings-daemon.plugins.power sleep-display-ac 0 # ACアダプタ接続時は画面オフしない
液晶モニタのスピーカーから音声を出すようにしていると,画面出力がオフになると同時に音声も切れてしまう,という問題がこれで解決.
SKKがブラウザ経由で使える「SKK Anywhere」を作ってみた
Valaで書かれたライブラリをPythonから呼ぶ
Valaで書かれたライブラリは,GObject introspectionのおかげで,他言語から簡単に呼び出せる.
簡単なチュートリアルはこちら.
下のコードはlibskkをpythonから呼んでみた例.libskk/tools/tool.valaの簡易版.
$ echo "A i SPC"|python skk.py { "input": "A i SPC", "output": "", "preedit": "▼愛" }
homu = Homu.HomuClass("arg1", "arg2")
ではなく,
homu = Homu.HomuClass.new("arg1", "arg2")
なので注意.このあたりは.girファイルを読めば大方把握できるはず.
お引越し
お引越し中.