投稿

4月, 2014の投稿を表示しています

先週末の出来事

イメージ
先週末はいろいろあった。 まず4歳の息子が初めて補助輪無しの自転車に乗れるようになった。これまで長いこと乗れなかったし、乗ろうともしなかったのだけれど、ちょっとやり方を変えてやらせてみたら、急に乗れるようになり、あまりの変わりぶりにこちらが驚いた。乗れたのを見て親としても嬉しかったけれど、本人が一番嬉しかったみたい。「乗れた!」と嬉しそうに声をあげたときの輝く笑顔がそれを物語っていた。ポイントは緩やかな坂道を下りながら勢いをつけてペダルに足を乗せさせたこと。一度できることが分かったらすぐに、平らなところでもこぎ出すことが出来るようになった。坂道はストライダーで下っていたのでバランスの取り方は問題無かった。 自転車に乗れるようになった息子は、さらに水泳教室にも初参加した。以前からプール遊びは好きだけれども、泳ぎはまだ全然。それでも、バタ足や蹴伸び、顔を水に付ける練習を楽しんでやっていた。僕自身は水が嫌いで小学生になるまで泳げなかったから、のんびり楽しんで水に親しんでくれたらいいと思う。 それから、植物の手入れをした。チューリップは花が終わったので、花を取って肥料を与えた。バジルの苗を買って来てプランターに植えた。ローズマリーはすっかり元気がなかったので植え替えてみた。根の具合を見てみようと鉢から掘り出そうとすると、すっぽり抜けてしまうほど、根がはっていなかった。「良く生きていたなあ」という状態。鉢の土を掘ってみると、何かの甲虫の幼虫がゴロゴロ出てきた。ひょっとすると、この幼虫が根っこを食べていたのかもしれない。再生するかどうかはわからないけど、ひとまず新しい土で様子を見てみる。 日曜の夕食にはローストビーフを作った。フライパンだけで作るレシピに従って作ったら、なかなか美味しく出来た。これならアウトドアでも作れそうな気がする。 チューリップ(既に黄色くなっている葉も?) バジルの苗 移植したローズマリー

いまさらPHP

いまさらながら、PHPでコーディングをして遊んでいる。C言語的な感覚で、なおかつ、スクリプト言語の気軽さで記述できるところがなかなか良い。 HTMLと混ぜることもできるので、動的サイトが少ないコード量で実現可能でもある。ただし、プレゼンテーション(表示)とロジック(計算)が分離しにくいという問題もある。 完全に分離させようとするのであれば、プレゼンテーションのHTMLには、コンテンツ部分を特殊マークアップしておいて、PHPコードでそれを置き換える方法をとれば良いのだろう。 と、どうでもいいことを思っている。

TV録画閲覧サイトに検索機能を追加

イメージ
TV録画(録画じゃなくてもいいのだが。。)閲覧用のサイトに検索機能を追加してみた。タイトルのみで(疑似)フリーワード検索。データベースは使用せず、PHPの単純なパターンマッチングで引っ掛けてくる検索アルゴリズム。例えば、「ショーン」で検索すると、「ひつじのショーン」のみが表示される。 ところが、検索がキーワードのOR条件になっていたことが判明した。例えば、「女子のフィギュアスケート」を検索しようと、「女子 フィギュア」で検索すると、女子も男子も関係なく、フィギュアスケートに引っかかった録画が表示されてしまう。 アルゴリズムを改良せねば。。パターンマッチングを少し工夫して点数化してソートかな。

TV録画閲覧サイト試作

イメージ
というわけで、TV録画閲覧サイトを試作してみた。ほとんど初めて本格的に(?)PHPを触ったので、少々時間がかかってしまい、結局昨夜はほとんど徹夜だった。でも、一番時間がかかったのはスマホやタブレットに対応したサイトにするところと、スタイルシートの設定のところだったりするのだが。。。 当初はTiny Web Gallery をいじるつもりだったが、なかなか大掛かりなシステムになっていたので、結局少しずつ自分でスクラッチから作ることにした。まずはファイルリストを表示するところから初め、少しずつインクリメンタルに強化していった。 そして出来たのが、以下のページ。ひとまず、録画開始日時で降順にリスト表示するようにした。録画が、サムネイルとともに、リスト表示される。このリンクをクリックすると、HTML5のvideoタグで埋め込まれた動画が表示されるようになっている。動画表示ページもPHPになっていて、query stringsでファイルを渡すようになっている。(まあ、大したことないが。。)あれ、今見ると、タイトル表示が変(日付の情報が入っている。。)修正しないと。。。 今後は、曜日やフリーキーワードで検索できるようにしようと思う。あとは、外でもアクセスできるように、アクセスコントロールも追加したい。少しずつ改造していこう。

Raspberry Pi + dovecot (IMAP server)

Postfix で SMTP サーバーができたので、つづいて dovecot を使用して IMAP サーバーを設定してみた。 ネットの解説を頼りに設定したのだが、なかなか動かなかった。というより、IMAP へ接続できなかった。しばらく悩んだ末、 dovecot-imapd のインストールが必要であることが判明、これをインストールすると難なく動いた。 続いて、TV録画した動画を Web サイトから閲覧できるようにしようと思い、Tiny Web Gallery というフリーの PHP ベースの CMS を試してみている。これに少し手を入れれば、録画番組を楽に検索したりできそうな気がする。 このシステムのいいところは、データベースを必要としないところ。つまり、RasPi のような非力な環境で DB を動かす必要もなければ、別途 DB サーバーが必要となることもない。(最近の NAS は DB サーバーにもなったりするのだろうか。。。)ただし、データが多くなってくると、動作が重くなる可能性が高いと思われる。が、とりあえずは、これで十分。 Apache2 + PHP5 を User Dir で有効にするためには、 /etc/apache2/mods-enabled/php5.conf を修正する必要があった。デフォルトでは無効になっているので、これをコメントアウトする必要がある。 これでとりあえず、サンプルギャラリーが表示されるようにはなったが、途中で読み込み中のまま固まってしまっている。もう少し見てみないといけない。 ちなみに、最近 Apple TV 2 をほとんど使っていないので、 Jailbreak してこういう動画を自由に見られるように改造したほうがいいと考えている。というわけで、やってみたいこと(なおかつ、追加の経費がほとんどかからずできること)がまた増えた。

Postfixでリモートメール送信

RasPiで動作中の Postfix メールサーバ。これまではローカルの配信のみだったけれど、リモート配信を試してみたところ、なんとかうまく行く方法が見つかった。 参考にしたのは、 Postfix でメールリレーの設定 (SMTP クライアント + SMTP Auth) 。 /etc/postfix/main.cf に relayhost = [smtp.example.com] smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = と記載を加える。次に /etc/postfix/sasl_passwd を作成する。内容は以下。 smtp.example.com    username:password これをハッシュにかける。 % sudo postmap hash:/etc/postfix/sasl_passwd 最後に、postfixの設定をリロードする。 % sudo service postfix reload これで、sendmail コマンドなどでメールが送れるようになるのだが、その際、 "envelope sender address" をきちんと設定しないと SMTP 認証ではじかれる。私が使用したプロバイダー (hi-ho) の場合、username (=自分のe-mailアドレス)を -r オプションで "envelope sender address" に指定する必要があった。例えば以下のように。 % sendmail -r username alice@wonderland.net < mailbody 一昔前はダイレクトにメールを送ることができたものだが。。。スパム対策などのため、仕方が無い。

rsync のオプション忘れ

RasPi の設定をバックアップするために cron.daily に追加したバックアップスクリプトなのだが、肝心の rsync オプションを追加し忘れて、初回以来バックアップされていなかったことにようやく気がついた。"-a" オプションを追加して、とりあえず動作するようになったみたい。 TV録画エンコードのほうは、FFmpeg のエンコーダオプションをいろいろいじってみたら、かなりエンコード速度が変わることがわかった。" FFmpeg x264EncodingGuide " を参考に、いろいろと試してみたところ、以下の設定に変更。 -c:v libx264 -preset superfast -profile:v baseline -level 3.0 Core i5 750という古いCPUのマシンで frame rate 100fps を超える。h.264 の威力をほとんど生かしきれない設定。Baseline Profile なので B frame も使わない。まあ、これぐらいしないと、非力なマシンには辛い。