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でログインして、
$ sudo apt-get update
$ sudo apt-get upgrade
 それからユーザの追加。
$ sudo useradd -m -s /bin/bash ユーザ名
$ sudo passwd ユーザ名
 サーバにしたいので、IPを固定。
$ sudo nano /etc/network/interfaces
 ネットワークに合わせて適当に設定したりコメントアウトしたり、
auto lo

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権限を与える。
$ sudo visudo
 一番最後の行に追加。
#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
ユーザ名 ALL=(ALL) ALL
 それから新しいユーザでログインしなおして、piのsudo権限をコメントアウト。
#pi ALL=(ALL) NOPASSWD: ALL
 あとは通常のセットアップ手順通り。
$ sudo apt-get install ruby1.9.3
 piユーザを削除してしまうなら、
$ 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機に差し込んで、
$ unzip 2012-12-16-wheezy-raspbian.zip
$ sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdX
 /dev/sdXのXは環境による。
 書き込みは数分程度。

 Raspberry Piに書き込み済みのSDカードを差し込んで、HDMIケーブルとUSBキーボード、最後にUSB充電アダプタからmicro USBで電源供給。
 すぐに起動メッセージが流れ始める。
 少し待つとRaspi-configという設定ツール画面になる。

 設定する必要があるのは次の項目。
・expand_rootfs:これをしないとSDカードの容量がちゃんと使えない。
・change_pass:念のためパスワード変更。
・config_keyboard:Generic 105-key (Intl)PC -> Other -> Japanese -> Japaneseと設定。その後は基本的にデフォルトのまま設定。モディファイアとかコンポーズとか使わないし、Ctrl+Alt+BackspaceでXを強制終了は、一応Yesを選択。
・change_timezone:Tokyoを選択。
・ssh:enableを選択。
 Finishを選択して再起動。rootfsの拡張にしばらく時間がかかるので、のんびり待つこと。
 loginプロンプトが出たら、piでログイン。

 設定画面をもう一度表示したい時は、
$ sudo raspi-config
 で表示されるみたい。

Sunday, December 9, 2012

ffserverのjpeg切り出し

 ffserverでjpegを配信するように設定すると、なぜか延々とつながったjpeg画像が送られてしまう。
 そういうのが欲しければ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ファイル読み込むところでコケてしまう。

 どうやら外部ファイルのエンコーディング指定には別の方法が必要な様子。
 スクリプト冒頭付近に
Encoding.default_external = "UTF-8"
 を書き込んでおくといいみたい。

 …1.9.3だと一応これで動くんだけど、もしかしてこれって1.9.1では動かなかったりするのかな?
 日本語対応地味に面倒くさいです。

Sunday, October 21, 2012

シュレディンガー音頭

 理系ホイホイの定番といえばシュレディンガー音頭
 Wikipediaにも項目があるほどの、由緒正しいものです。
 自分のためにリンクを残しておきます。

 オリジナル音源(?)らしきもの。mp3wav

おまけ

Sunday, September 30, 2012

YAPC::Asia Tokyo 2012

この週末は東京大学までYAPC::Asia Tokyo2012に行ってきました。
ろくにperlを書いたこともないのに。

手持ちのPrograming Perlがラリー・ウォールのサイン入りに進化した!



なぜかAcme大全とか入手しちゃったり。


いやまあ、とりあえず楽しかった。
Perlも面白そうだから今度書いてみようかなぁ。

詳しい講演内容やイベントリポートは他を見てね。
本家
gihyo

Monday, September 17, 2012

任天堂コードパズル

http://cp1.nintendo.co.jp/
任天堂のコードパズル。
ふむふむ、1問目は簡単。Schemeなら(rubyでも)無限桁が扱えるから何の工夫もいらないけど、他の言語だと乗算毎に余りを求めないと桁があふれるはず。

((lambda (x)
  (define (hoge i)
    (cond ((zero? (- (modulo (expt i 17) 3569) 915)) i)
          (else (hoge (+ i 1)))))
  (hoge x)) 1)
2問目はクラス作るだけならrubyでいいけど、pyhtonじゃないと面倒くさそう。
えーと、next()とtostr()あたりを実装すればいいのかな?
pythonはよく知らないなぁ。気が向いたら作ってみようか。

Thursday, August 23, 2012

ちょっとGithub

Githubの使い方はヘルプにわかりやすく書いてあってありがたい。
……んだけど、リポジトリ作ってコミットしようとしても何か変なエラーが出て拒否される。
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/fuzuki/kokon-renamer.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
とりあえず
git fetch
git merge origin/master
とやってからもう一度
git push origin master
で、無事にpushできたみたい。
とりあえずメモ。


参考:
http://d.hatena.ne.jp/snaka72/20100602/1275496817 https://help.github.com/articles/create-a-repo

Sunday, August 12, 2012

ちょっと本格的っぽいお手軽タイカレー

材料:
タイカレーペースト:50~60g(業務スーパー、個人的に黄色がお勧め) 
ココナッツミルク缶詰:1缶
カットトマト缶詰;1缶
ヒヨコマメ缶詰:1缶
トリモモ肉:250gくらい(胸肉でも牛赤身でも可、脂の少ないところが良い)

手順: ココナッツミルクを鍋にかけて沸騰させる。
カレーペーストを加えて溶かす。 カットトマトの缶詰を(液ごと)加える。
ヒヨコマメの缶詰を缶詰内の液を切ってから加える。
ひとくち大に切った鶏肉を加える。
20分ほど煮込む。 


というわけでちょっと本格的っぽいタイカレーの出来上がりです。
脂が気になる場合は掬ってください。
ナスやピーマンやその他適当な野菜を加えるのもお勧め。 


なんといってもお手軽なのでメニューに困ったり面倒なときにはぜひどうぞ。

Sunday, June 3, 2012

MCT2012

Maker Conference Tokyo 2012に行ってきました。
そういや最近いろいろ進んでない。なんとかしないとなぁ。

Tuesday, May 8, 2012

SICPよんでみる 3.3.4

なんだかやたらと時間のかかった3-3-4。論理回路関連です。 3-3-5も時間かかりそうで不安。























Saturday, April 21, 2012

SKECHERS買ってみた

 最近運動不足だなぁと思っていたので、友人に聞いて気になっていたシェイプアップシューズというのを買ってみた。
 スケッチャーズのシェイプアップ(SKECHERS Shape-ups KMR 6504)。
 Amazonで安売りしてたので5000円ちょっと。
 数日履いてみた感想は、一応効いている…のかな?
 ふくらはぎと背筋に少し負荷がかかっているような気がするから、たぶん効果はあるんじゃないかと思う。
 まあ毎日履くんだし、少しでも効果があるなら何もしないよりマシなんでしょ。
 気休め程度効果があればいいや。

Sunday, April 15, 2012

エレキジャックフォーラム行ってきた

エレキジャック・フォーラム in Akihabara 2012に行ってきました。
いろいろ面白い話が聞けたりしたのですが、とりあえず購入したジャンクの紹介。
秋月のジャンク袋500円のと1000円の。


LEDが結構ある。
大き目のコンデンサが沢山。

電子コンパスのデモ基盤は一応動くみたい。
宇宙開発仕様のコンデンサとか。
1000円袋の方には、なぜか大量のレンズが。12~13mmで、凹レンズが多いけど凸レンズもいくつか。
一番使えそうなのがこのゼロプレッシャソケット。

ま、そのうちジャンクで適当なおもちゃでも作ってみようかな。

Sunday, March 25, 2012

中華Pad買ってみた

Poyer MOMO9 加強版とかいうAndroid4.0.3機。
…正直使い勝手はiPod Touchの方がずっと良いような…

ま、実用目的で買ったわけでもないから気にしないけど。

PCに繋いでもドライバが入らないので、この辺を参考にWindows用ドライバ設定して再起動。
http://d.hatena.ne.jp/ousttrue/20111224/1324723329
http://www.geocities.jp/kuw8823/android/chinapad3.htm


eclipseとAndroid SDKの設定を済ませて、お約束のHello Worlldアプリ(プロジェクト作ると最初からできてるヤツ)を転送して…
よしOK。

これでいつでも実機でAndroid開発ができるぞ、と。

Sunday, January 8, 2012

Arduinoでラジコン制御



Ubuntu 11.4で動作させています。(11.10だとなぜかffserverがうまく動作しない…)

自由に使ってください。

ffserverはこんな感じのコマンドで起動してます。
$ sudo ffserver -f /etc/ffserver.conf
$ ffmpeg -f video4linux2 -s 640x480 -r 2 -b 64k -i /dev/video0 http://localhost:8090/feed1.ffm