VPS に移設するものなどのメモ
自宅サーバをやめたい。
- irssi
- tiarra
- irssw
- perl + Plack のセットが必要
- irc gateway 系
- ruby1.8 と ruby1.9 系のいろいろが必要
使っているけど移設しない/できないの
- OpenFL → やめて LDR に戻った。あんまり困らない
- daap → 移設できないので無視する。必要な音楽ファイルは別途持ち歩く
時代を遡ってる気がする……
自宅サーバをやめたい。
使っているけど移設しない/できないの
時代を遡ってる気がする……
$ ssh hostname $ sudo vi /etc/hostname # かえたホスト名に $ mkdir .ssh $ chmod 0700 .ssh $ ssh-keygen -t dsa $ exit
# ログインしたいマシンで $ cat ~/.ssh/id_dsa.pub | ssh hostname "cat >> ~/.ssh/authorized_keys"
$ ssh hostname # パスワードを訊かれないことを確認 (公開鍵認証でログインしたことを確認) $ sudo vi /etc/ssh/sshd_config PasswordAuthentication no PermitRootLogin no UsePAM no $ sudo restart ssh # 別のターミナルを開いて ssh できることを再度確認 $ sudo reboot # ホスト名反映のため一旦リブート
$ sudo apt-get install language-pack-ja # warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8) とかでるので……
$ sudo ufw default deny $ sudo ufw allow 22 $ sudo ufw allow 80 $ sudo ufw allow 60000:61000/udp $ sudo ufw enable $ sudo ufw status
すぐやるべきことはやったので作業環境をつくる
$ sudo apt-get install zsh $ chsh -s /bin/zsh $ sudo apt-get install screen $ sudo apt-get install ruby $ sudo apt-get install git-core $ git clone git@github.com:cho45/dotfiles.git # github につくった id_dsa.pub を登録しておく $ cd dotfiles $ ruby setup.rb $ exec zsh $ screen -S main $ sudo apt-get install gcc $ sudo apt-get install libncurses5-dev $ mkdir tmp $ cd tmp $ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 $ tar xjvf vim-7.3.tar.bz2 $ cd vim73 $ ./configure --prefix=/usr/local/vim7 --enable-multibyte --enable-gpm --enable-cscope --with-features=huge --enable-fontset --disable-gui --without-x --disable-xim --disable-perlinterp $ make -j 2 $ sudo make install
tiarra を設定する
$ sudo apt-get install daemontools
$ sudo apt-get install daemontools-run
$ sudo ln -s /etc/service /service
$ cd ~/bin
$ cd
$ mkdir app
$ cd app
$ wget http://clovery.jp/tiarra/archive/2010/02/tiarra-20100212.tar.gz
$ tar xzvf tiarra-20100212.tar.gz
$ ln -s ~/app/tiarra-20100212/tiarra ~/bin
$ sudo mkdir -p /var/log/tiarra/{cho45,chokan}
$ sudo chown cho45 /var/log/tiarra/{cho45,chokan}
$ sudo ln -s ~/dotfiles/services/tiarra /service/
全然更新してないが普通に生きている。この日記書いてない期間というのは、自分の場合
のうちのどれかで、今回のこの期間については「考えているふりしかしていない」が当てはまると考える。
いろいろ不安やら考えごとはあるものの、日記に落とす前に寝てしまっている。しかし文章に起こせなかった考えはなかったも同然だ。「昨日はたくさん考えたな」と自分で思ってはいても、実際のところ頭の中は整理されておらず、ループする思考の波に身をまかせているだけになってしまっている。
文章に限らないけれど、何もアウトプットせずに「考えている」だけというのは「考えているふりしかしていない」ことと同じだ。
久しぶりに南禅寺に行ったら、いつもは拝観を受け付けていない大寧軒という庭園が見られるようになっていた。三柱鳥居があるということで、それに期待を持って入ってみた。
三柱鳥居は木嶋坐天照御魂神社にあるのを何度か見にいっていて、形がかっこいいので気に入ってる。京都だとその神社の元糺の森にしかないと思い込んでいたのだけれど、今回行った大寧軒にも確かに小さいものの一基あった。元糺の森は水が沸きでるところに立っているけど、こっちもそうらしい。
高校生か、大学生ぐらいのときは、プログラムを書くときの長期的な目標として「作りたいものを作れるようになる」というのがあったことを思い出した。
今それはある程度できるようになったけれど、ただできるようになったと言っても、自分のフィールドに強引にひっぱってくる力がついたり、他人の成果 (ライブラリなど) を探しだす能力が多少ついただけで、プログラミングそのもののスキルはそんなに向上していないように思える。
「プログラミングそのもののスキル」というのは「アルゴリズム」「設計」「実装」にわけられると思うけど (もっとあるかもしれない)、特にアルゴリズム関係の力はほとんど成長していない。設計力と実装力は今の会社に入ってから特に重点的に考えていることだから、多少できるようになっていると思うけれど (できるようになっていないと困る)、それもまだまだやっぱり経験の不足は否めない。
それはともかく「作りたいものを作れるようになる」は今も良い目標だと思っていて、これはちょうど、馬が目の前のにんじんを食べたくて走るように、自分がすすめばすすむほど「作りたいもの」は遠くにいって、ずっと成長の指標になる気がしている。目標を立てた当初、自分が「作りたいもの」はブログシステムだったけれど、これは思うように作れるようになってきている。今作りたいものは、たくさんの人がストレスなく楽しく使えるサービスであるので、また遠くに餌がいってしまっている。
「ちょっと思いついたから実装書いてみるわ」みたいなノリでさっさと作りあげてしまう、というのに憧れている。
dsn ごとに接続オプションを独自で追加したいみたいなとき、別途設定を増やしたりするのが嫌なので、dsn の中の仕組みを利用したい。
Plack::Session::Store::DBI というのがあって、最初とりあえずそれを使っていたのだけれど、もうちょいクエリの数を減らしておきたいと思い、以下のようなものを書いた。実際のところセッションのストレージに MySQL を使うべきかはよくわからないのですが…
変更点として
package Plack::Session::Store::MySQL;
use utf8;
use strict;
use warnings;
use parent qw(Plack::Session::Store::DBI);
sub fetch {
my ($self, $session_id) = @_;
my $table_name = $self->{table_name};
my $sth = $self->_dbh->prepare_cached("SELECT session_data FROM $table_name WHERE id = ?");
$sth->execute( $session_id );
my ($data) = $sth->fetchrow_array;
$self->{$session_id}->{_prev_data} = $data;
$sth->finish;
$data ? $self->deserializer->( $data ) : ();
}
sub store {
my ($self, $session_id, $session) = @_;
my $table_name = $self->{table_name};
my $data = $self->serializer->($session);
if ($self->{$session_id}->{_prev_data} ne $data) {
my $sth = $self->_dbh->prepare_cached("INSERT INTO $table_name SET id = ?, session_data = ? ON DUPLICATE KEY UPDATE session_data=VALUES(session_data)");
$sth->execute($session_id, $data);
}
}
1;
__END__
Sample schema:
CREATE TABLE session (
`id` CHAR(72) NOT NULL,
`session_data` BLOB,
`modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=InnoDB;
use Plack::Builder;
use Data::MessagePack;
use Plack::Session::State::Cookie;
use Plack::Session::Store::MySQL;
my $MessagePack = Data::MessagePack->new();
$MessagePack->canonical;
builder {
enable
"Plack::Middleware::Session",
state => Plack::Session::State::Cookie->new(),
store => Plack::Session::Store::MySQL->new(
get_dbh => sub { DBI->connect_cached(config->param('dsn_session'), 'foo', 'bar') },
table_name => 'session',
serializer => sub { $MessagePack->pack(+shift) },
deserializer => sub { eval { $MessagePack->unpack(+shift) } || +{} },
);
$app
};
// #!gcc -framework Cocoa -framework IOKit mouse.c
// code from http://lists.apple.com/archives/usb/2004/aug/msg00057.html
#include <stdio.h>
#include <IOKit/IOKitLib.h>
#include <IOKit/hidsystem/IOHIDLib.h>
#include <IOKit/hidsystem/IOHIDParameter.h>
#include <IOKit/hidsystem/event_status_driver.h>
int main () {
NXEventHandle h = NXOpenEventStatus();
if (!h) return 1;
IOHIDSetAccelerationWithKey( h, CFSTR(kIOHIDMouseAccelerationType), -1.0);
return 0;
}を実行すれば一応加速はきれる。けど速度が固定になってしまう (遅い…)
defaults write .GlobalPreferences com.apple.mouse.scaling -1
ってやればいいだけかもしれないけど、こっちは再起動がいる。(上のコードだと即時で反映される)