Saturday, February 23, 2013
OSC2013 Tokyo/Spring
OSC2013 Tokyo/Springに行ってきました。
なんだかどんどんぬいぐるみが増えているような。
お約束のペースメーカー。ウルトラモンキーとかApache Camelとか例のアレ。
Land of Lispが売っていたので確保。原書は持っていたけど読んでなかったからちょうどよかった。
ラベル:
日記
Sunday, January 27, 2013
初めてのPHP5 増補改訂版
こないだTechLION vol.11で「初めてのPHP5 増補改訂版」を貰ったので、読んでみた。
もうちょっと言語仕様を、と思うけどそれは「プログラミングPHP」の役割なのかな。
DB操作もあるし、Webアプリ作成の基本的な事項はおさえてるみたい。
とりあえず改訂版第1刷で気付いたものをいくつか。
p.10 「$q = $db>query(...」たぶん$db->多分他にもありそうだけど、とりあえず気付いた範囲で。
p.21 「ヒアドキュメントの終わりを示す告げる区切り...」告げるが不要?
p.28 「print 0;print -213;」改行忘れ?
p.44 '6pack'なのか'6 pack'なのか?
p.55 「配列名の1文字目は文字または数字で、...」数字じゃなくてアンダースコア?
p.78 「名前の残りの文字は文字、数字...」意味は分かるけどなんか変?アルファベット?
p.80 「引数のデフォルト値は12、cc3399、またはShredded swiss Chardのような文字でなければいけません。」数値または文字列? 文字列に引用符もついてないし...
p.282 「そして-10308から10308までの浮動小数点を扱うことができます。」え?
p.308 「//すべてのアルファベット文字と一致する」「[^a-zA-Z]」コメントがおかしい。ついでに説明文も「英語の文字」じゃなくて「アルファベット文字」に統一した方が...まあそれは好みか。
p.308 「60進法」16進法?
p.331 「...発生するほとんどWebアプリケーション脆弱性の...」"の"が抜けてる。「...上で非常に重であること、...」重要?
今のところオライリーにも訳者さんのサイトにも正誤表は無いみたい。
意味はわかるからそんなに問題は無さそうだけどね。
ラベル:
programming,
本
Saturday, December 22, 2012
Apache2基本設定
ubuntuやraspbianでのApache2の基本的な設定。
あまり気にしなくても良さそうだけど、公開する情報は最低限に抑える。
$ sudo nano /etc/apache2/conf.d/security
あまり気にしなくても良さそうだけど、公開する情報は最低限に抑える。
ServerTokens Prod
ServerSignature Off
TraceEnable Off
それから、
$ sudo nano /etc/apache2/mods-available/mime.conf
AddHandler cgi-script .cgi .rb .py .pl
$ sudo nano /etc/apache2/mods-available/dir.conf
DirectoryIndex index.html index.rb index.cgi index.pl index.php index.xhtml index.htm
できればCGIはどこででも使いたいので、
sudo nano /etc/apache2/sites-available/default
Options ExecCGI FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
あとはApache2の再起動。
$ sudo service apache2 restart
これで最低限の設定はできた。
バーチャルホストやmod_rewriteの黒魔術はまたそのうち。
Tuesday, December 18, 2012
Raspbian設定
Raspbianはほとんど普通のUbuntuかDebianなので、Raspberry PiをPCとして使う分には特に悩むようなことはなさそう。
Raspberry PiにLANケーブルを繋いだら、まずは初期ユーザのpiでログインして、
もう一台くらいあってもいいかな。
Raspberry PiにLANケーブルを繋いだら、まずは初期ユーザのpiでログインして、
$ sudo apt-get updateそれからユーザの追加。
$ sudo apt-get upgrade
$ sudo useradd -m -s /bin/bash ユーザ名サーバにしたいので、IPを固定。
$ sudo passwd ユーザ名
$ sudo nano /etc/network/interfacesネットワークに合わせて適当に設定したりコメントアウトしたり、
auto lo作成したユーザにsudo権限を与える。
iface lo inet loopback
#iface eth0 inet dhcp
#allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
auto eth0
iface eth0 inet static
address 192.168.*.*
netmask 255.255.255.0
gateway 192.168.*.*
$ sudo visudo一番最後の行に追加。
#includedir /etc/sudoers.dそれから新しいユーザでログインしなおして、piのsudo権限をコメントアウト。
pi ALL=(ALL) NOPASSWD: ALL
ユーザ名 ALL=(ALL) ALL
#pi ALL=(ALL) NOPASSWD: ALLあとは通常のセットアップ手順通り。
$ sudo apt-get install ruby1.9.3piユーザを削除してしまうなら、
$ sudo userdel -r piただの格安低消費電力サーバとして考えても優秀だし、しかも直接いじれるIOまである。
もう一台くらいあってもいいかな。
Raspberry Pi届いた
先週ModMyPiに注文したRaspberry Piが到着した。
一週間程度で届くし、ケース込みで3500円くらいなので、RSで待ち続けるよりずっと良い。
まずは公式サイトから2012-12-16-wheezy-raspbian.zipをダウンロード。
SDカードは4G以上。今回は余っていた16GのSDカードで。
作業はUbuntu上で進める。
SDカードをUbuntu機に差し込んで、
書き込みは数分程度。
Raspberry Piに書き込み済みのSDカードを差し込んで、HDMIケーブルとUSBキーボード、最後にUSB充電アダプタからmicro USBで電源供給。
すぐに起動メッセージが流れ始める。
少し待つとRaspi-configという設定ツール画面になる。
設定する必要があるのは次の項目。
loginプロンプトが出たら、piでログイン。
設定画面をもう一度表示したい時は、
一週間程度で届くし、ケース込みで3500円くらいなので、RSで待ち続けるよりずっと良い。
まずは公式サイトから2012-12-16-wheezy-raspbian.zipをダウンロード。
SDカードは4G以上。今回は余っていた16GのSDカードで。
作業はUbuntu上で進める。
SDカードをUbuntu機に差し込んで、
$ unzip 2012-12-16-wheezy-raspbian.zip/dev/sdXのXは環境による。
$ sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdX
書き込みは数分程度。
Raspberry Piに書き込み済みのSDカードを差し込んで、HDMIケーブルとUSBキーボード、最後にUSB充電アダプタからmicro USBで電源供給。
すぐに起動メッセージが流れ始める。
少し待つとRaspi-configという設定ツール画面になる。
設定する必要があるのは次の項目。
・expand_rootfs:これをしないとSDカードの容量がちゃんと使えない。Finishを選択して再起動。rootfsの拡張にしばらく時間がかかるので、のんびり待つこと。
・change_pass:念のためパスワード変更。
・config_keyboard:Generic 105-key (Intl)PC -> Other -> Japanese -> Japaneseと設定。その後は基本的にデフォルトのまま設定。モディファイアとかコンポーズとか使わないし、Ctrl+Alt+BackspaceでXを強制終了は、一応Yesを選択。
・change_timezone:Tokyoを選択。
・ssh:enableを選択。
loginプロンプトが出たら、piでログイン。
設定画面をもう一度表示したい時は、
$ sudo raspi-configで表示されるみたい。
Sunday, December 9, 2012
ffserverのjpeg切り出し
ffserverでjpegを配信するように設定すると、なぜか延々とつながったjpeg画像が送られてしまう。
そういうのが欲しければmjpegもあるので、jpegは1枚目だけあれば後ろは要らないんだけど…と言うワケで、こういうときはスクリプトで分割して先頭画像だけ切り出し。
軽くjpegのフォーマットを調べてみると、ファイルの終端はFFD9になっているらしい。
とりあえずなにも考えずに先頭からFFD9まで読み込むcgiスクリプトを作成。データ途中にFFD9が出てくる可能性は気にしないでおく。
フラグ使ってるのはちょっとどうかと思うけど、まあこんなものかな。
一応動く。
そういうのが欲しければmjpegもあるので、jpegは1枚目だけあれば後ろは要らないんだけど…と言うワケで、こういうときはスクリプトで分割して先頭画像だけ切り出し。
軽くjpegのフォーマットを調べてみると、ファイルの終端はFFD9になっているらしい。
とりあえずなにも考えずに先頭からFFD9まで読み込むcgiスクリプトを作成。データ途中にFFD9が出てくる可能性は気にしないでおく。
#!/usr/bin/ruby
require 'net/http'
# continuous jpeg cutting script.
# made for ffserver.
print "Content-type: image/jpeg\n\n"
flag = false
Net::HTTP.version_1_2
Net::HTTP.start('localhost', 8090) {|http|
http.request_get('******.jpg'){|response|
response.read_body{|str|
str.each_byte do |ch|
putc ch
if flag && (ch == 0xd9)
exit()
end
if ch == 0xff
flag = true
else
flag = false
end
end
}
}
}
フラグ使ってるのはちょっとどうかと思うけど、まあこんなものかな。
一応動く。
Thursday, October 25, 2012
rubyのInvalidByteSequenceError
Ruby1.9.3のcgiでJSONに日本語文字列を使ってみたら、正常に動作しない。
ログを見るとInvalidByteSequenceErrorなんてのが出ている様子。
えーと、マジックコメントとやらでエンコーディングを指定してやればいいの?
...
だめ。ターミナルでは動くようになったけど、cgiとして動作させるとやっぱりJSONファイル読み込むところでコケてしまう。
どうやら外部ファイルのエンコーディング指定には別の方法が必要な様子。
スクリプト冒頭付近に
…1.9.3だと一応これで動くんだけど、もしかしてこれって1.9.1では動かなかったりするのかな?
日本語対応地味に面倒くさいです。
ログを見るとInvalidByteSequenceErrorなんてのが出ている様子。
えーと、マジックコメントとやらでエンコーディングを指定してやればいいの?
...
だめ。ターミナルでは動くようになったけど、cgiとして動作させるとやっぱりJSONファイル読み込むところでコケてしまう。
どうやら外部ファイルのエンコーディング指定には別の方法が必要な様子。
スクリプト冒頭付近に
Encoding.default_external = "UTF-8"を書き込んでおくといいみたい。
…1.9.3だと一応これで動くんだけど、もしかしてこれって1.9.1では動かなかったりするのかな?
日本語対応地味に面倒くさいです。
ラベル:
programming
Subscribe to:
Posts (Atom)