git で 22番以外のポートを ssh に使う

コマンドラインで指定する方法が見つからなかった。できないのかな。その代わりに、~/.ssh/config に書いておく。



<pre class="prettyprint">$ cat ~/.ssh/config
Host xxx.yyy.com
User xxxxxx
Hostname xxx.yyy.com
Port 22番じゃないポート番号
</pre>

こちらを参考にした。

<ul> <li>SSHポートが通らなくてもgithub.comにpushする方法</li>
</ul>

Windows で RMySQL を使って UNIX の MySQL DB につなぐときの文字化け

UNIX (Linux) の MySQL DB には UTF-8 でデータが格納されている。Windows 上の R から

RMySQL でデータを取得すると、全て文字化けしてしまう。



<p>しばらく悩んだ結果、my.ini (UNIX での my.cnf に相当) でクライアントの文字エンコーディングを指定すればよいことが判った。</p>

<p>MySQL インストールディレクトリの my.ini の最後に、以下の2行を追加することで解決。</p>

<pre class="prettyprint">[client]
default-character-set=utf8
</pre>

<p>DB から読み込んだデータは UTF-8 なので、SJIS を期待しているコンソールにそのまま表示させると化ける。そこで

Encoding() の出番。</p>

<pre class="prettyprint">Encoding(table1$column1) <- ‘UTF-8’
</pre>

<p>このベクトルは UTF-8 ですよ、と教えてあげることで、コンソールに化けずに表示できるようになる。</p>
<p>しかし、このデータを dbWriteTable() すると、また化ける。</p>
<pre class="prettyprint">dbWriteTable(con, ‘test.rarely_used_menus_since_200807’, q)
</pre>
<p>生成されたテーブルを調べてみると、DEFAULT CHARSET が latin1 になっていた。alter database db1
charset utf8 することで、生成されるテーブルの charset も UTF-8 になった。しかし、これでも文字化けする。データに
Encoding() しなければ dbWriteTable() 時には化けない。しかしコンソールで化ける。困った。</p>
<table border="1"><tr>
<th> </th>
<th>dbWriteTable()</th>
<th>コンソール出力</th>
</tr>
<tr>
<th>Encoding() を指定する場合</th>
<td>化ける</td>
<td>化けない</td>
</tr>
<tr>
<th>Encoding() を指定しない場合</th>
<td>化けない</td>
<td>化ける</td>
</tr>
</table>
<p>あともう一息といった感じ。</p>

RMySQL でデータを取得すると Windows版 R が落ちる

Windows版の R で、RMySQL を使って MySQL からデータを取得するときに R

が必ず落ちるという現象に見舞われた。少量のデータだと取得できるのに、ちょっと多くなると、落ちる。



<p>ローカルの Windows PC に MySQL 5.1 をインストールし、リモートの Linux の MySQL

サーバにつないで使おうとした。でも、落ちる。ローカルの Windows PC にインストールする MySQL のバージョンと、RMySQL

のバージョンを正しく対応させないといけないようだ。</p>

<p>MySQL 5.0系なら CRAN でインストールできるものでよく、MySQL 5.1系の場合は、RMySQL_0.7-4.zip

を自分でダウンロードして、インストールすればいい。</p>

<pre class="prettyprint">> install.packages(‘RMySQL_0.7-4.zip’)
</pre>

<ul> <li>Windows

Support and Binaries
</li>
</ul>

XFS on LVM (on Amazon EC2)

Amazon EC2 で、XFS を LVM で使おうとしたけど、EBS のスナップショット機能があることを考えると、LVM は余計だった。ということで、意味は薄れたけど、以下、メモ。



<pre class="prettyprint">■ LVM の設定
○ 物理ボリュームをつくる
# pvdisplay
# pvcreate /dev/sdg
Physical volume “/dev/sdg” successfully created
# pvdisplay
“/dev/sdg” is a new physical volume of “100.00 GB”
— NEW Physical volume —
PV Name /dev/sdg
VG Name
PV Size 100.00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID G8RURy-DVjh-h6Vv-Fjh4-oKnn-3Bwj-VyO3l1

○ ボリュームグループをつくる
# vgdisplay
# vgcreate vg1 /dev/sdg
Volume group “vg1” successfully created
# vgdisplay
— Volume group —
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 100.00 GB
PE Size 4.00 MB
Total PE 25599
Alloc PE / Size 0 / 0
Free PE / Size 25599 / 100.00 GB
VG UUID KyPuS8-1BEE-ddXZ-RhdL-0uY7-jffL-uEKqGw

○ 論理ボリュームをつくる
# lvdisplay
# lvcreate -l 25599 -n lv1 vg1
Logical volume “lv1” created
# lvdisplay
— Logical volume —
LV Name /dev/vg1/lv1
VG Name vg1
LV UUID UVybxJ-jVat-Mtk9-7WJ1-axPm-gHTD-kTcXYl
LV Write Access read/write
LV Status available
# open 0
LV Size 100.00 GB
Current LE 25599
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

■ XFS をつくる
○ 管理ツールをインストールする
# yum install xfsprogs

○ ファイルシステムをつくる
# mkfs.xfs /dev/vg1/lv1
meta-data=/dev/vg1/lv1 isize=256 agcount=16, agsize=1638336 blks
= sectsz=512 attr=0
data = bsize=4096 blocks=26213376, imaxpct=25
= sunit=0 swidth=0 blks, unwritten=1
naming =version 2 bsize=4096
log =internal log bsize=4096 blocks=12799, version=1
= sectsz=512 sunit=0 blks, lazy-count=0
realtime =none extsz=4096 blocks=0, rtextents=0

○ fstab に追加してマウント
# cat /etc/fstab
/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 00
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/sda2 /mnt ext3 defaults 0 0
/dev/sda3 swap swap defaults 0 0
/dev/sdf /vol/vol1 ext3 defaults 1 1
/dev/vg1/lv1 /vol/vol2 xfs defaults 1 1


# mount -a

# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 10321208 2511820 7285100 26% /
none 870472 0 870472 0% /dev/shm
/dev/sda2 153899044 6934904 139146516 5% /mnt
/dev/sdf 103212320 11177492 86791948 12% /vol/vol1
/dev/mapper/vg1-lv1 104802308 272 104802036 1% /vol/vol2
</pre>

<p>ここまでできたところで、このボリュームは捨てて XFS 単体で作り直した。</p>

phplist-2.10.10

phplist-2.10.10 をインストールした。



<ol> <li>アーカイブを展開する。</li>
<li>public_html/lists/* を Web の公開ディレクトリへ置く。</li>
<li>config/config.php の内容と整合性のあるように、MySQL の DB とユーザを作成する。</li>
<li>http://xxxxxxxx/phplist/admin にアクセスすると、DB が無いよ、初期化しなさい、と言われる。</li>
<li>初期化すると、Database error 1071 while doing query Specified key was

too long; max key length is 1000 byte というエラーが発生する。<li>

<li>UTF-8 だと、バイト数の問題でオーバーしてしまうらしい。http://forums.phplist.com/viewtopic.php?p=27343

を参考に、email フィールドの長さを 255 から 100 にしてみる。

<pre class="prettyprint"> * admin/structure.php.org 2009-06-23 20:07:28.000000000 +0900
— admin/structure.php 2009-06-23 20:08:30.000000000 +0900
****
** 27,33 **
),
“user” => array ( # a user in the system
“id” => array(“integer not null primary key
auto_increment”,”sysexp:ID”),
! “email” => array(“varchar(255) not null”,”Email”),
“confirmed” => array(“tinyint default 0”,”sys:Is this user
confirmed”),
“blacklisted” => array(“tinyint default 0”,”sys:Is this user
blacklisted”),
“bouncecount” => array(“integer default 0”,”sys:Number of
bounces on this user”),
— 27,33 —-
),
“user” => array ( # a user in the system
“id” => array(“integer not null primary key
auto_increment”,”sysexp:ID”),
! “email” => array(“varchar(100) not null”,”Email”),
“confirmed” => array(“tinyint default 0”,”sys:Is this user
confirmed”),
“blacklisted” => array(“tinyint default 0”,”sys:Is this user
blacklisted”),
“bouncecount” => array(“integer default 0”,”sys:Number of
bounces on this user”),
****
** 60,71 **
“index_2” => array(“dateidx (date)”,”sys:index”),
),
“user_blacklist” => array(
! “email” => array(“varchar(255) not null unique”,”Email”),
“added” => array(“datetime”,”When added to blacklist”),
“index_1” => array(“emailidx (email)”,””),
),
“user_blacklist_data” => array(
! “email” => array(“varchar(255) not null unique”,”Email”),
“name” => array(“varchar(100) not null”,”Name of Dataitem”),
“data” => array(“text”,””),
“index_1” => array(“emailidx (email)”,””),
— 60,71 —-
“index_2” => array(“dateidx (date)”,”sys:index”),
),
“user_blacklist” => array(
! “email” => array(“varchar(100) not null unique”,”Email”),
“added” => array(“datetime”,”When added to blacklist”),
“index_1” => array(“emailidx (email)”,””),
),
“user_blacklist_data” => array(
! “email” => array(“varchar(100) not null unique”,”Email”),
“name” => array(“varchar(100) not null”,”Name of Dataitem”),
“data” => array(“text”,””),
“index_1” => array(“emailidx (email)”,””),
****
** 256,262 **
“id” => array(“integer not null primary key auto_increment”,”ID”),
“user” => array(“integer not null”,”User ID”),
“message” => array(“integer not null”,”Message ID”),
! “forward” => array(“varchar(255)”,”Forward email”),
“status” => array(“varchar(255)”,”Status of forward”),
“time” => array(“timestamp”,”When was it forwarded”),
“index_1” => array(“usermessageidx (user,message)”,”index”),
— 256,262 —-
“id” => array(“integer not null primary key auto_increment”,”ID”),
“user” => array(“integer not null”,”User ID”),
“message” => array(“integer not null”,”Message ID”),
! “forward” => array(“varchar(100)”,”Forward email”),
“status” => array(“varchar(255)”,”Status of forward”),
“time” => array(“timestamp”,”When was it forwarded”),
“index_1” => array(“usermessageidx (user,message)”,”index”),
****
** 273,279 **
“id” => array(“integer not null primary key auto_increment”,”sys:ID”),
“loginname” => array(“varchar(25) not null”,”Login Name (max
25 chars)”),
“namelc” => array(“varchar(255)”,”sys:Normalised loginname”),
! “email” => array(“varchar(255) not null”,”Email”),
“created” => array(“datetime”,”sys:Time Created”),
“modified” => array(“timestamp”,”sys:Time modified”),
“modifiedby” => array(“varchar(25)”,”sys:Modified by”),
— 273,279 —-
“id” => array(“integer not null primary key auto_increment”,”sys:ID”),
“loginname” => array(“varchar(25) not null”,”Login Name (max
25 chars)”),
“namelc” => array(“varchar(255)”,”sys:Normalised loginname”),
! “email” => array(“varchar(100) not null”,”Email”),
“created” => array(“datetime”,”sys:Time Created”),
“modified” => array(“timestamp”,”sys:Time modified”),
“modifiedby” => array(“varchar(25)”,”sys:Modified by”),
****
** 407,413 **
/* “translation” => array(
“id” => array(“integer not null primary key auto_increment”,””),
“translator” => array(“varchar(255)”,”Name of translator”),
! “email” => array(“varchar(255)”,”email of translator”),
“pass” => array(“varchar(255)”,”encrypted password for translation”),
“ident” => array(“varchar(255)”,”Translation identifier”)
),
— 407,413 —-
/* “translation” => array(
“id” => array(“integer not null primary key auto_increment”,””),
“translator” => array(“varchar(255)”,”Name of translator”),
! “email” => array(“varchar(100)”,”email of translator”),
“pass” => array(“varchar(255)”,”encrypted password for translation”),
“ident” => array(“varchar(255)”,”Translation identifier”)
),
</pre> </li>

<li>DB を一度 drop して再度作り直し、もう一度初期化。今度はテーブルの生成に成功した。</li>

<li>これでとりあえず動いているらしい。</li>

</ol>