‘解決’ カテゴリーのアーカイブ

FON2202に、Webカメラを複数接続する

前回( FON2202にDEVELOPERファームを入れてSSHアクセスできるようにする )の続き。

複数のカメラをFONに接続して、定期的に写真を撮ってサーバにPOSTするというのをやりたかったので、まずは複数のカメラを認識するのか調べるところからスタート。

FON2202のUSBポートはひとつなので、ハブを繋げてみることにする。

使ったUSBハブはサンワサプライの2ポートの小型USB2.0ハブ。USB-HUB213

で、カメラはLogicool Qcam 9000 Proを2台。まぁ、いつもの。

このカメラはUVC(USB Video Class)対応なので、特別なドライバがなくても認識するのね。

ではまぁ、さくっとやっちゃいましょう。接続するだけなので。

接続してちょっと待ってから、SSHでデバイスをチェック。

# ls /dev/

リストの中に
video0
video1
とあったので成功!あとはここから画像キャプチャするだけ!



FON2202にDEVELOPERファームを入れてSSHアクセスできるようにする

La Fonera 2.0ことFON2202で何かするシリーズ第一弾。

とりあえずSSHでアクセスできるようにするべく、OpenWRTをインストール。

…と行きたかったが、どうにもkamikazeのbuildもうまく行かず、時間もないので、とりあえず開発版のFONのファームウェアを入れることにした。

方法は以下のサイト参照。

Narururuのにっき: La Fonera 2.0 DEVELOPER

今回入れたのは、20090421_FON2202_2.2.5.0_Flipper_DEVELOPER.tar.gz

プラグインのところ、本気で気付かなくて、3回もファームウェア転送してしまった…あぁ…1時間半…

しかもとにかく再起動に時間がかかるのね。

で、めでたく緑色の管理画面が見られるようになったらSSHでアクセス。

PuTTYでもいいし、WinSCPでSCPも使えるよ。SFTPは使えないのでそこだけ注意。

2009-08-11 追記

ファームウェアを転送後、30分のカウントが終わった後、強制的に電源を抜いてリセットしたりしないで、そのまま管理画面トップページを再度開けばいいだけだった模様。そうすると、Internet側の接続が何かとか(もしかしたらInternet側が繋がってなかったために聞かれたのかも)、新しいパスワードを入力しろとかが、緑の画面上で出てきます。ちなみに新しいパスワードは8文字以上で、数字が含まれていないとSSHがオープンにならないと言われます。

で、ウィザード形式で答えていくと、パスワード入力画面が出て管理画面に入れます。この時点ではまだSSHにアクセスできないので、Settings→System→Rebootと進めば電源なんか一度も触らずにSSH開放まで行けます。


CakePHPのPaginator逆ルーティング設定をビューで行う

CakePHP 1.2で、/hoge/Controller/page:1とかにしたページングがしたかったので調べた。

超参考になったのはこちらの記事。スライドの26~27ページあたり。逆ルーティング。

極める routes.php (CakePHP 1.2) : akiyan.com

routes.phpでゴチャゴチャにしたURLに対してもPaginatorにOptionsを渡してやればできるという話だったので実験。

Controllerのvar $paginateに書いてみたのだけどなぜか効かない…

色々試した末、viewに書くことで解決。

<?php
$paginator->options(array('url'=>array(
    'controller' => 'pages',
    'action' => 'display',
    'target' => 'hoge',
)));
?>

routesはこれ。

Router::connect('/hoge/pages/*', array('controller' => 'pages', 'action' => 'display', 'target' => 'hoge'));

これはこれで使い勝手いいかもしれんね。


FUSEインストールからs3fsを使うまで(後編)

Amazon S3をマウントできるs3fsをちょっとカーネルバージョンが古いRHEL5で使う方法。後編。
前編はCentOS 5で試したので、ここからが本番。
でもCentOS 5の方はカーネル最新なんですよね。
あ、このサーバ、x86_64なんでコピペしようとする人は注意。いないだろうけど。

前回と同じようにwgetしてインストール。

# wget http://dl.atrpms.net/all/fuse-2.7.4-8_10.el5.x86_64.rpm
# wget http://dl.atrpms.net/all/fuse-libs-2.7.4-8_10.el5.x86_64.rpm
# wget http://dl.atrpms.net/all/fuse-devel-2.7.4-8_10.el5.x86_64.rpm
# wget http://dl.atrpms.net/all/fuse-kmdl-2.6.18-128.1.10.el5-2.7.4-8_10.el5.x86_64.rpm
# rpm -ivh fuse-2.7.4-8_10.el5.x86_64.rpm fuse-kmdl-2.6.18-128.1.10.el5-2.7.4-8_10.el5.x86_64.rpm fuse-devel-2.7.4-8_10.el5.x86_64.rpm fuse-libs-2.7.4-8_10.el5.x86_64.rpm
エラー: 依存性の欠如:
        /boot/vmlinuz-2.6.18-128.1.10.el5 は fuse-kmdl-2.6.18-128.1.10.el5-2.7.4-8_10.el5.x86_64 に必要とされています

あー、カーネルモジュールのバージョンを合わせないとダメなのね。

RHEL5のカーネルは2.6.18-92だったのでfuse-kmdl-2.6.18-92.1.10.el5-2.7.4-8_10.el5.x86_64.rpmというファイルが必要か。

が、fuse-kmdl-2.6.18-92.1.10.el5-2.7.4-8_10.el5.x86_64.rpmで検索すると、以前はあったらしい痕跡がうかがえるのだけど、ミラーも含めてどこにもない様子。

ということは、

ATrpms – by Distribution > Red Hat Enterprise Linux 5 > fuse

の最下段にあるSRPMからこの環境で作り直さないとダメってことね。

ではとりあえずダウンロード。

# wget http://dl.atrpms.net/all/fuse-2.7.4-8_10.src.rpm

で、rpmbuildでリビルド。

ちなみにもしrpmbuildがインストールされていなければyumでインストール。

# yum install rpm-build
# rpmbuild --rebuild fuse-2.7.4-8_10.src.rpm

何かエラーでリビルド失敗。(ログ取り忘れた…)

調べてみたら、どうやらSPECで使用するマクロが足りてないらしい。

で、そのマクロがどこにもない、と。

色々探していたら、そのものズバリではないけれど、そこそこ近いマクロを発見。

Re: Re: unable to compile srpms: msg#00034 linux.redhat.rpm.atrpms.devel

ここにあったMacroセットを適当に

# vim /etc/rpm/macros.fuse

で流し込んだ。ファイル名は適当に新規作成。macros.*ならいいらしいです。

ちなみにところどころ変な改行が入っているので注意。(マクロファイルは文末に添付します)

# rpmbuild --rebuild fuse-2.7.4-8_10.src.rpm
fuse-2.7.4-8_10.src.rpm をインストール中です。
警告: InstallSourcePackage: ヘッダ V4 DSA signature: NOKEY, key ID ********
エラー: 59 行目: 依存性を表す語は英数字か、'_'、'/' で始まらなければなりません: BuildRequires: %_kernelcompiler_rh5Server

む。%_kernelcompiler_rh5Serverがないって。では追加!

# vim /etc/rpm/macros.fuse
%_kernelcompiler_rh5Server /usr/bin/gcc

ちなみにCentOSではこっちが必要。

%_kernelcompiler_rh5 /usr/bin/gcc

このまま実行するとkernel-module-fuse-2.6.18-92.1.13.el5-2.7.4-8_10.x86_64.rpmとかいうファイル名になってしまうので、先にマクロを修正。

_oldとしてコメントアウトされていたのでそっちを使うように書き換え

%kmdl_name kernel-module-%{_kpkgname}-%{_kernel}
%kmdl_nameof() kernel-module-%1-%{_kernel}
%kmdl_namepure kernel-module-%{_kpkgname}
%kmdl_namepureof() kernel-module-%1
#_kmdl_name_old %{_kpkgname}-kmdl-%{_kernel}
#_kmdl_nameof_old() %1-kmdl-%{_kernel}
#_kmdl_name_old %{_kpkgname}-%{_kname3}-%{_kversion}
#_kmdl_nameof_old() %1-%{_kname3}-%{_kversion}
#_kmdl_namepure_old %{_kpkgname}-kmdl
#_kmdl_namepureof_old() %1-kmdl
↓
#%kmdl_name kernel-module-%{_kpkgname}-%{_kernel}
#%kmdl_nameof() kernel-module-%1-%{_kernel}
#%kmdl_namepure kernel-module-%{_kpkgname}
#%kmdl_namepureof() kernel-module-%1
#_kmdl_name_old %{_kpkgname}-kmdl-%{_kernel}
#_kmdl_nameof_old() %1-kmdl-%{_kernel}
%kmdl_name %{_kpkgname}-%{_kname3}-%{_kversion}
%kmdl_nameof() %1-%{_kname3}-%{_kversion}
%kmdl_namepure %{_kpkgname}-kmdl
%kmdl_namepureof() %1-kmdl

カーネルモジュールのビルドにはソースコードが必要らしいので、kernel-develパッケージが入っていない場合は入れておく必要あり。

# yum install kernel-devel
Package kernel-devel-2.6.18-92.1.13.el5.x86_64 installed and not available
Package kernel-devel-2.6.18-92.1.6.el5.x86_64 installed and not available
Package kernel-devel-2.6.18-92.1.10.el5.x86_64 installed and not available
Nothing to do

あれ…

# yum list installed |grep kernel
kernel.x86_64                              2.6.18-92.1.6.el5           installed
kernel.x86_64                              2.6.18-92.1.10.el5          installed
kernel.x86_64                              2.6.18-92.1.13.el5          installed
kernel-devel.x86_64                        2.6.18-92.1.6.el5           installed
kernel-devel.x86_64                        2.6.18-92.1.10.el5          installed
kernel-devel.x86_64                        2.6.18-92.1.13.el5          installed
kernel-doc.noarch                          2.6.18-92.1.13.el5          installed
kernel-headers.x86_64                      2.6.18-92.1.13.el5          installed
kernel-xen.x86_64                          2.6.18-92.1.6.el5           installed
kernel-xen.x86_64                          2.6.18-92.1.10.el5          installed
kernel-xen.x86_64                          2.6.18-92.1.13.el5          installed
kernel-xen-devel.x86_64                    2.6.18-92.1.6.el5           installed
kernel-xen-devel.x86_64                    2.6.18-92.1.10.el5          installed
kernel-xen-devel.x86_64                    2.6.18-92.1.13.el5          installed

入ってた。

一応確認。

# ll /usr/src/kernels/
合計 24
drwxr-xr-x 18 root root 4096  9月 17  2008 2.6.18-92.1.10.el5-x86_64
drwxr-xr-x 18 root root 4096  9月 17  2008 2.6.18-92.1.10.el5-xen-x86_64
lrwxrwxrwx  1 root root   29 11月 10  2008 2.6.18-92.1.10.el5xen-x86_64 -> 2.6.18-92.1.10.el5-xen-x86_64
drwxr-xr-x 18 root root 4096 10月 21  2008 2.6.18-92.1.13.el5-x86_64
drwxr-xr-x 18 root root 4096 10月 21  2008 2.6.18-92.1.13.el5-xen-x86_64
lrwxrwxrwx  1 root root   29 11月 10  2008 2.6.18-92.1.13.el5xen-x86_64 -> 2.6.18-92.1.13.el5-xen-x86_64
drwxr-xr-x 18 root root 4096  7月 18  2008 2.6.18-92.1.6.el5-x86_64
drwxr-xr-x 18 root root 4096  7月 18  2008 2.6.18-92.1.6.el5-xen-x86_64
lrwxrwxrwx  1 root root   28 11月 10  2008 2.6.18-92.1.6.el5xen-x86_64 -> 2.6.18-92.1.6.el5-xen-x86_64

では、FUSEをrpmbuild

# rpmbuild --rebuild fuse-2.7.4-8_10.src.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/fuse-kmdl-2.6.18-92.1.13.el5-2.7.4-8_10.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/fuse-debuginfo-2.7.4-8_10.x86_64.rpm

完了した。

できたRPMを作業ディレクトリに移動。

# mv /usr/src/redhat/RPMS/x86_64/fuse-kmdl-2.6.18-92.1.13.el5-2.7.4-8_10.x86_64.rpm .

では改めてゴー。

# rpm -ivh fuse-2.7.4-8_10.el5.x86_64.rpm fuse-kmdl-2.6.18-92.1.13.el5-2.7.4-8_10.x86_64.rpm fuse-devel-2.7.4-8_10.el5.x86_64.rpm fuse-libs-2.7.4-8_10.el5.x86_64.rpm
警告: fuse-2.7.4-8_10.el5.x86_64.rpm: ヘッダ V4 DSA signature: NOKEY, key ID ********
エラー: 依存性の欠如:
        fuse-kmdl-2.7.4-8_10.el5 は fuse-2.7.4-8_10.el5.x86_64 に必要とされています
        atrpms-kmdl-helper は fuse-kmdl-2.6.18-92.1.13.el5-2.7.4-8_10.x86_64 に必要とされています

orz

何だ?ファイル名合わせただけではいかんのか…

# rpm -qip fuse-kmdl-2.6.18-92.1.13.el5-2.7.4-8_10.x86_64.rpm
Name        : fuse-kmdl-2.6.18-92.1.13.el5  Relocations: (not relocatable)
Version     : 2.7.4                             Vendor: (none)
Release     : 8_10                          Build Date: 2009年06月17日 19時45分41秒
Install Date: (not installed)               Build Host: ***********
Group       : System Environment/Kernel     Source RPM: fuse-2.7.4-8_10.src.rpm
Size        : 829588                           License: GPL
Signature   : (none)
URL         : http://fuse.sf.net
Summary     : fuse kernel module.
Description :
With FUSE it is possible to implement a fully functional filesystem in a
userspace program. This package contains the FUSE kernel module.

This package contains the fuse-kmdl-2.6.18-92.1.13.el5 kernel modules for the Linux kernel package:
kernel-2.6.18-92.1.13.el5.x86_64.rpm.

おおおおお

Nameが違うYo…

めどい。直接Name固定しよう。

# vim /etc/rpm/macros.fuse
%kmdl_name %{_kpkgname}-kmdl-2.7.4-8_10.el5

再度rpmbuild。

# rpmbuild --rebuild fuse-2.7.4-8_10.src.rpm

で、結果。

# rpm -qip /usr/src/redhat/RPMS/x86_64/fuse-kmdl-2.7.4-8_10.el5-2.7.4-8_10.x86_64.rpm
Name        : fuse-kmdl-2.7.4-8_10.el5     Relocations: (not relocatable)
Version     : 2.7.4                             Vendor: (none)
Release     : 8_10                          Build Date: 2009年06月17日 21時02分15秒
Install Date: (not installed)               Build Host: ***********
Group       : System Environment/Kernel     Source RPM: fuse-2.7.4-8_10.src.rpm
Size        : 829588                           License: GPL
Signature   : (none)
URL         : http://fuse.sf.net
Summary     : fuse kernel module.
Description :
With FUSE it is possible to implement a fully functional filesystem in a
userspace program. This package contains the FUSE kernel module.

This package contains the fuse-kmdl-2.7.4-8_10.el5 kernel modules for the Linux kernel package:

おk

で、あとはatrpms-kmdl-helperとやらを入れればいいのか。

Re: atrpms-kmdl-helper error: msg#00013 linux.redhat.rpm.atrpms.general

atrpmsパッケージの中に入っているという話。

というわけでダウンロードしてインストール。

ATrpms – by Distribution > common > atrpms

# wget http://dl.atrpms.net/all/atrpms-73.1-1.noarch.rpm
# rpm -ivh atrpms-73.1-1.noarch.rpm

で、改めて。

# rpm -ivh fuse-2.7.4-8_10.el5.x86_64.rpm fuse-kmdl-2.7.4-8_10.el5-2.7.4-8_10.x86_64.rpm fuse-devel-2.7.4-8_10.el5.x86_64.rpm fuse-libs-2.7.4-8_10.el5.x86_64.rpm
準備中...                ########################################### [100%]
   1:fuse-libs              ########################################### [ 25%]
   2:fuse-kmdl-2.7.4-8_10.el########################################### [ 50%]
/var/tmp/rpm-tmp.52302: line 2: /usr/lib64/atrpms/addcustomkmdl: そのようなファイルやディレクトリはありません
   3:fuse                   ########################################### [ 75%]
   4:fuse-devel             ########################################### [100%]

…ん?大丈夫かな…?

# cd ~/s3fs
# make
g++ -ggdb -Wall -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse  -pthread -L/lib64 -lfuse -lrt -ldl    -L/usr/kerberos/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz   -I/usr/include/libxml2 -lxml2 -lz -lm -lcrypto s3fs.cpp -o s3fs
s3fs.cpp: In function ‘std::string calc_signature(std::string, std::string, std::string, curl_slist*, std::string)’:
s3fs.cpp:426: 警告: value computed is not used
s3fs.cpp: In function ‘int put_local_fd(const char*, headers_t, int)’:
s3fs.cpp:759: 警告: format ‘%llu’ expects type ‘long long unsigned int’, but argument 4 has type ‘__off_t’
s3fs.cpp: In function ‘int s3fs_readlink(const char*, char*, size_t)’:
s3fs.cpp:852: 警告: 符合付きと符合無しの整数式同士の比較です
s3fs.cpp: At global scope:
s3fs.cpp:440: 警告: ‘size_t readCallback(void*, size_t, size_t, void*)’ defined but not used
ok!

よっしゃぁぁ!!

まぁ待て、まだあわてるほどじゃない。

# make install
g++ -ggdb -Wall -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse  -pthread -L/lib64 -lfuse -lrt -ldl    -L/usr/kerberos/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz   -I/usr/include/libxml2 -lxml2 -lz -lm -lcrypto s3fs.cpp -o s3fs
s3fs.cpp: In function ‘std::string calc_signature(std::string, std::string, std::string, curl_slist*, std::string)’:
s3fs.cpp:426: 警告: value computed is not used
s3fs.cpp: In function ‘int put_local_fd(const char*, headers_t, int)’:
s3fs.cpp:759: 警告: format ‘%llu’ expects type ‘long long unsigned int’, but argument 4 has type ‘__off_t’
s3fs.cpp: In function ‘int s3fs_readlink(const char*, char*, size_t)’:
s3fs.cpp:852: 警告: 符合付きと符合無しの整数式同士の比較です
s3fs.cpp: At global scope:
s3fs.cpp:440: 警告: ‘size_t readCallback(void*, size_t, size_t, void*)’ defined but not used
ok!
cp -f s3fs /usr/bin

よし、では実行…

# cd /mnt/
# mkdir s3
# s3fs ***** -o accessKeyId=******************** -o secretAccessKey=**************************************** /mnt/s3
# cd s3/
# ll

合計 82577
---------- 1 root root  298359 12月 23  2007 0223279e4a09010bf1d55aed45de8b46.dat
---------- 1 root root  307441 12月 21  2007 02d452b8ee0809e601297e77e0d14fca.jpg
---------- 1 root root   64051  1月  4  2008 03739992ce7b38979b7fd71bfbdf5d30.zip

できた━(∀゚ )━(゚∀゚)━━━!!

せっかくなので使ったマクロファイルをアップしておきます。Name固定されてるので注意。
誰が使うんだって感じですけど。

macros.fuse


FUSEインストールからs3fsを使うまで(前編)

Amazon S3をファイルシステムとしてマウントできるという、s3fsを使ってみたくなったので挑戦。
http://code.google.com/p/s3fs/
対象のOSは

# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.3 (Tikanga)

しかも2.6.18-92.1.13.el5(2009年6月12日現在で最新は2.6.18-128.1.10.el5)でx86_64。
この記事誰得…debianとかCentOSの人や、カーネルを最新にできる環境の人は多分さくっとaptだのyumだのすればいいかと。

いきなり本番サーバをいじるのは怖いので、同じ環境を構築しようとしたのですが、RHEL5とか手に入れようにも…
というわけで、テストはCentOS 5で。ちなみに、CentOSにはFUSEのyumが用意されてるらしいです。今回は使わないけど。

書いてたら長くなったので2エントリに分けます。
前編はCentOS 5にインストールしたメモ。あまり意味はないです。
後編はRHEL5にインストールしたメモ。本命です。

まずは目的のs3fsをダウンロード。

# wget http://s3fs.googlecode.com/files/s3fs-r177-source.tar.gz
# tar xvzf s3fs-r177-source.tar.gz
# cd s3fs
# make
s3fs.cpp:23:18: error: fuse.h: そのようなファイルやディレクトリはありません

FUSEがないと言われます。

rpmfindからRedHat EL5用のRPMを落としてきます。
FUSEを入れます。(※ここは失敗なのでやらないでください)

# wget ftp://rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/fuse-2.7.4-1.el5.rf.i386.rpm
# rpm -ivh fuse-2.7.4-1.el5.rf.i386.rpm
警告: fuse-2.7.4-1.el5.rf.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID ********
準備中…                ########################################### [100%]
   1:fuse                   ########################################### [100%]

あ、ATrpmsに新しいのがあったのでアンインストール。

# rpm -e fuse-2.7.4-1.el5.rf

FUSEをインストールするのに参考にしたサイト:SysAdmin&#8217;s Diary : Simple Steps To Mount NTFS In RHEL 5

で、目的の最新のFUSEはここ。
ATrpms – by Distribution &gt; Red Hat Enterprise Linux 5 &gt; fuse

# wget http://dl.atrpms.net/all/fuse-2.7.4-8_10.el5.i386.rpm
# wget http://dl.atrpms.net/all/fuse-libs-2.7.4-8_10.el5.i386.rpm
# wget http://dl.atrpms.net/all/fuse-devel-2.7.4-8_10.el5.i386.rpm
# wget http://dl.atrpms.net/all/fuse-kmdl-2.6.18-128.1.10.el5-2.7.4-8_10.el5.i686.rpm
# rpm -ivh fuse-2.7.4-8_10.el5.i386.rpm
警告: fuse-2.7.4-8_10.el5.i386.rpm: ヘッダ V4 DSA signature: NOKEY, key ID ********
エラー: 依存性の欠如:
        fuse-kmdl-2.7.4-8_10.el5 は fuse-2.7.4-8_10.el5.i386 に必要とされています

あ、いっぺんにインストールしないとダメなのね。

# rpm -ivh fuse-2.7.4-8_10.el5.i386.rpm fuse-kmdl-2.6.18-128.1.10.el5-2.7.4-8_10.el5.i686.rpm fuse-devel-2.7.4-8_10.el5.i386.rpm fuse-libs-2.7.4-8_10.el5.i386.rpm

で、FUSEのインストールは成功。

改めてs3fsをmake&make install

# make
g++ -ggdb -Wall -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse  -pthread -L/lib -lfuse -lrt -ldl    -L/usr/kerberos/lib -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz   -I/usr/include/libxml2 -L/usr/lib -lxml2 -lz -lm -lcrypto s3fs.cpp -o s3fs
s3fs.cpp:440: 警告: ‘size_t readCallback(void*, size_t, size_t, void*)’ defined but not used
ok!
# make install
g++ -ggdb -Wall -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse  -pthread -L/lib -lfuse -lrt -ldl    -L/usr/kerberos/lib -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz   -I/usr/include/libxml2 -L/usr/lib -lxml2 -lz -lm -lcrypto s3fs.cpp -o s3fs
s3fs.cpp:440: 警告: ‘size_t readCallback(void*, size_t, size_t, void*)’ defined but not used
ok!
cp -f s3fs /usr/bin

…何か単純なmakeだな。
とりあえず成功。

では続いてマウントを実行。

# mkdir /mnt/s3
# s3fs ***** -o accessKeyId=******************** -o secretAccessKey=**************************************** /mnt/s3

成功も失敗も出ないけど、成功しているらしい。
最初の*****はバケット名ね。

# cd /mnt/s3
# ll
ls: reading directory .: 入力/出力エラーです
合計 0

ん、何も出ない…

エラーの詳細も何も出ないので他のツールで試してみることに。
s3cmdというのを試してみる。
s3cmdのあとに続けてlsだのコマンドを打つことでバケットにアクセスできるツールらしい。

参考にしたサイトはこちら。
ks: Amazon S3用のコマンドラインツールs3cmd
http://ks.typepad.jp/blog/2009/01/amazon-s3s3cmd-.html

# cd /etc/yum.repos.d/
# wget http://s3cmd.org/repo/CentOS_5/s3tools.repo
# yum install s3cmd
# s3cmd –configure

ここで諸々設定を行う。まぁ、アクセスキーと秘密アクセスキーとか以外はすごい勢いでハイハイ言っておけばOK。
で、設定できたので実行。

# s3cmd ls

あー、ローカルの時間が違いすぎるみたいなことを言われた(ログ取るの忘れた)のでntpで時間合わせ

# date
2009年  6月 12日 金曜日 18:09:57 JST
# ntpdate 192.168.0.1
12 Jun 17:54:37 ntpdate[4372]: step time server 192.168.0.1 offset -956.022080 sec
# s3cmd ls

で、s3cmdの方は成功。

つまりそういうことか。

# cd /mnt/s3
# ll

合計 82577
———- 1 root root  298359 12月 23  2007 0223279e4a09010bf1d55aed45de8b46.dat
———- 1 root root  307441 12月 21  2007 02d452b8ee0809e601297e77e0d14fca.jpg
———- 1 root root   64051  1月  4  2008 03739992ce7b38979b7fd71bfbdf5d30.zip
できた━(∀゚ )━(゚∀゚)━━━!!


Arduino DHCP Libraryを使ってみる

Ethernetシールドを入手したのでDHCPクライアントを試してみたいと思います。

現在のバージョンは0.4。ダウンロードはこちらから。

Arduino DHCP Library: Version 0.4

使い方はVersion 0.1のところに書いてあります。

RFID Lock Prototype: DHCP Library v0.1

ダウンロードしたファイルを展開して、開発環境のディレクトリにあるArduino\hardware\libraries\Ethernetに上書きするだけ。

そのあと、開発環境を起動してメニューからサンプルコードを開けば実験可能。

スイッチサイエンスで購入した場合は基板の裏にMACアドレスのシールが貼ってあるので、スケッチのMACアドレスをそれに書き換えます。

デフォルトではDEADBEEFFEEDってなってます。

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

↓(シールの表記に合わせて変更のこと)

byte mac[] = { 0x00, 0x50, 0xC2, 0xXX, 0xXX, 0xXX };

で、べリファイして転送。

Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

あ、このArduino Duemilanove、ATMEGA 328だった。

Tool→Board→Arduino Duemilanove w/ ATmega 328を選択して再度実行でOK。

ちなみに転送直後はいいけど、その後何かに組み込んで使おうとする場合は、IP取得するたびにリセットを押さないとダメらしい。シリアルモニタでログを見ると平気なのに、スタンドアローンで使おうとしたら、電源入れてもIP取得しないので困った。


ArduinoのEthernetShieldで13番ピンが使えない

というか、WebClientの仕様か…?

ExampleのWebClientをいじっていたのだけど、コネクション確立時に13ピンがHIGHになる。スケッチ上でLOWにしてやろうと思ったのだけど、一切効かず。

ちなみに12番ピンも同様の様子。

11番ピンはHIGHになりっぱなし。11番は何やら※印ついてるので、使えないってことなのかと理解しましたが。

というわけで、同じく※印のついている10、9番を飛ばして8番ピンに接続してみたところ、正しくdigitalWriteできました。

無駄にハマったわー。


ArduinoのDHCPライブラリ

Arduino標準のEthernet libraryがIPを固定しないと使えないようなので使いにくいなと思っていたところ、リアルタイムで開発中のDHCPライブラリを発見。

Arduino DHCP Library: Version 0.3

とりあえず先にEthernetシールド買わないとだ。


WEPキーのHex/ASCII変換

何かってと、まぁ、ChumbyのWEPキー入力なんですが。

今まで変換アルゴリズムを知らなかったのだけど、調べてみたら意外とってか、非常に簡単だった。

Linux/hexへの変換方法 – Tomocha WikiPlus

つまり、単純に一文字ずつASCIIコード表に従ってHexに変換していくだけ。

え、それってASCIIの範囲的に全部Hexで入れた場合に比べてかなり弱くない?

変換してくれるサイトとかあるけど、自分のWEPキーをサイトに打ち込むのはあまりにもアレなんで、もっとお手軽に。

バイナリエディタ Bzで一発。新規で開いて右側のカラムにWEPキー入力するだけ。


Mac OSXでAIRを複数起動させる

参考:Adobe AIRを多重起動する方法

Macでもほぼ同じ方法で実現できたのでメモ。

ただし、Macの場合、ターミナルから起動する必要がある。

$ open -n /Applications/hoge.app

で、起動したあと、Application.xmlを書き換えてもう一度同じコマンドを実行することで、2つめを起動させることができる。IDが重複しなければいくつでも可能。

Macの場合は

/Applications/hoge.app/Contents/Resource/META-INF/AIR/Application.xml

にApplication.xmlがあるので、Windowsのときと同じくIDを適当にユニークにしてやればOK。

ちなみに

/Applications/hoge.app/Contents/MacOS/hoge &

で複数起動させようとしたらやたら不安定になった。注意。