最近あまりcactiのグラフとか細かくチェックしていなかったんだけど、久しぶりに見たらUPSの状態がグラフに出ていない。
なんでだろーと思って、グラフの元ネタを作っているapcaccessコマンドをたたいて見ると、なんとapcupsdが起動していないようだ。
/usr/local/etc/rc.d/apcupsd start でも起動しないので、/var/log/messageを見てみると、
Jan 24 19:02:49 sv apcupsd[10014]: apcupsd FATAL ERROR in generic-usb.c at line 636 Cannot find UPS device -- For a link to detailed USB trouble shooting information, please see <http://www.apcupsd.com/support.html>.
Jan 24 19:02:49 sv apcupsd[10014]: apcupsd error shutdown completed
のようなエラーが出ている。
エラーメッセージでぐぐると、USB problems on 8.0-STABLE - lucky.freebsd.stable | Google グループと言うページを発見したが、英語が不如意なせいで読んでも良くわからない。usbconfig や dmesg の出力を見て、apcupsd.conf の DEVICE の行に ugen1.2とか書いてみても駄目だった。
で、一日置いて再度読んで見ると、「新しいメッセージ>」と言うリンクを発見。なんと、1ページですべて表示しきれていなくて、2ページ目があった!
どうも、このGoogleグループって奴のpermalinkのルールが良くわからないので、該当のメッセージを以下に引用しておくけど、
Steve Randall

A possibility occurs to me that I think nobody has yet mentioned. If you still have the obsolete usbdevs command on your system, is it possible you also still have the obsolete devel/libusb port installed? It conflicts with the libusb in the base system, causing just the sorts of problems you are experiencing.
要は、以前portsから入れた devel/libusb が 8.0 のベースシステムに入ったlibusbとconflictしてるって言う話らしい。
この後の投稿で、devel/libusbを削除したらうまくいったと言うものもあったので、pkg_deinstall -f libusb してから、依存していたsane-backendsとapcupsdを再インストールした。
無事に、apctestもapcupsdも動いて、当然apcaccessも動くようになった。
ん~、英語はわからんとか言わないで、とりあえず次のページくらいは見ておくもんですね。

ところで、sanedってどうやって起動するんだっけ?/usr/local/etc/rc.d/にはスクリプトがないんだけど・・・。
→man sanedしたら inetd が起動するんだった。/etc/inetd.conf に書いてあるのでそのまま動くはず!
tig.rb と言うtwitter とircのgatewayを使っているのだけれど、バージョンアップしたらしいので svn up してみても何も起きない。
作者さんのページtig.rb (twitter irc gareway) - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtechを見ても、しばらく意味が理解できなかったのだけれど、どうもlowreal.netからcodereposに移動して、その後githubに移動したらしい。私はcodereposを見ていたので古いままだったようだ。
さっそくgithubから git clone して、tig.rbとwig.rb(wassr と irc の gateway)を起動してみるが、tig.rbの方がopensslのエラーでうまく動かない。
otsuneさんのつぶやきを見ていたので、早速 ports の security/ca_root_nss を更新してみたが、エラーは止まらない。
apache の SNIのためにportsから openssl を入れていたのが悪いのかと思って、portsのopensslを削除してみた(FreeBSD8になったときに、openssl 0.9.8kになったのでSNI対応になったため、portsの0.9.8lは削除しても良くなった)がやはり変わらず。 ports/security/ca_root_nss の Makefile を読んで見ると、/etc/ssl/cert.pem にリンクをはるなんてオプションがあるのを発見したので、手動で/usr/local/share/certs/ca-root-nss.crt からリンクを張ってみたら無事にtig.rbが起動した。
本来の手順としては、ports/security/ca_root_nss で make config して、ETCSYMLINK にチェックを入れてやれば良いんだと思う。
しかし、/etc/ssl には元々のcert.pem は存在していなかったんだけど、ここにない場合(OSの標準の状態)はどこのファイルを見るんだろう?ひょっとしてOSの方をmake world すれば良かったんだろうか?


portsのopensslを削除した関係で、依存関係があったものをすべてコンパイルし直したので、ついでにportauditに警告されていたpostgresqlもバージョンアップすることに。
今まで入っていたのが8.4.0で、最新が8.4.2。3番目の数字が変わる分には、DBの再構築(dump/restore)は必要ないはずなので、そのままportupgradeした。
で、postgresqlを起動しようとしたら、かなり待たされた後に起動に失敗したと言われる。
logを見ると、
FATAL:  database files are incompatible with server
DETAIL:  The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP.
HINT:  It looks like you need to recompile or initdb.
なんて出てる。どうも、DBはINT64のTIMESTAMPが使えるようになってるけど、serverはそう言うオプションでコンパイルされていないらしい。
変えた覚えないんだけどな~と思いながら、ports/databases/postgresql84-server で make config すると、果たして INTDATE - Builds with 64-bit date/time type と言うオプションがあったので有効にしてやったら無事に起動するようになった。
このオプションが有効じゃない場合、timestampは何が使われるんだろうか?
親族や親しい友人だけに見てもらえるように、認証付きのページで育児ブログを公開している。
文章や写真は普通にMovableTypeの枠組みで公開できるけど、動画はそうはいかない。
Youtube等の動画共有サイトは、まさに共有をメインに考えられているので、一部の人に限定公開すると言う用途に向かない。
だいたいのサイトでは、閲覧者がメンバにならないと限定公開の対象にできないからだ。
しかし、育児ブログを見て欲しい方はあまりパソコンやネットに詳しくないことが多いので、「○○サイトのアカウントを取ってください」と言っても通じないし、Youtubeで動画毎に公開範囲を決めるやり方は面倒くさい。
そこで、eyeVioと言うサイトならプレイリスト単位でパスワードによる認証がかけられるので利用していたのだが、ここもいまいち使い勝手が悪い。

どうせ自宅サーバでブログをやっているのだから、動画もここに置けないかと思って調べてみた。
公開する動画は、SANYOのxactiで撮った MP4 か、iPhoneのmov。どちらも、そのままaタグで貼っても普通の人は見づらい。(まあ、movはQuicktimeが入ってれば見られるけど、おじいちゃんおばあちゃんだと入ってない場合が多いんじゃないかな)
そうなると、Youtubeやニコニコ動画がやっているようにflash playerで再生できる形のビデオにしたい。
いろいろなサイトを参照した結果、どうにかしてflv形式の動画ファイルを作成し、フリーのflv playerをwebページに埋め込むと言うのが現実的らしい。

まずは、flv形式への変換だが、FLV/MP4エンコードスレ 支援サイトから「mencoder_vp6set」と言うのを持ってきて、中に入っている「FLV4enc_D&D_2pass_4:3.bat」 をコピーして
set EXTOPT=-vf flip,scale=512:384 -sws 9 -af resample=44100
の行を
set EXTOPT=-vf flip -sws 9 -af resample=44100
のように書き換えた。私のxactiの動画は 640x480で、特にサイズを変更したくなかったので。
後は、explorerでこのバッチファイルにMP4をドラッグ&ドロップして、audioのbitrateを入力するとvp6 encoderのダイアログが開くので適当に設定する。私が修正したのは bitrate だけで、デフォルトの300だと640x480の解像度ではきついので、600にしてみた。
この設定で、2分27秒のMP4(H.264/AAC/3.11Mbit/s) 54.9MBが、11.9MBのflvになった。

次に、このファイルをサーバに置いて、blogのエントリにflv playerを配置する。
flv playerは、Flow Playerと言うのを利用することにした。
free版をダウンロードし、中に入っているswf二つとjavascriptのファイルをサーバの適当な場所に置く。
続いて、blogのテンプレートをいじって今置いたjavascriptのファイルをscriptタグで読み込むようにする。
後は、blogのエントリに以下のような記述を書くと、playerが配置される。
<a href="<$MTBlogArchiveURL$>videos/ファイル名.flv"
   style="display:block;width:640px;height:480px"
   id="ユニークID"></a>
<script>
   flowplayer("ユニークID", "/flowplayer/flowplayer-3.1.5.swf", {clip: {autoPlay: false, autoBuffering: true}});
</script>
a href= に動画ファイルを置いたURLを書き、styleに動画のサイズを指定。
id にはユニークなIDを指定する。(同一エントリに複数の動画を置いたり、複数エントリに動画がある場合の MainIndex テンプレートで衝突が起きないため)
新しいバージョンのMTをインストールすると、以下のカスタマイズを実施する。
この辺は、昔のMTの方が良かったな~と思う部分だ。

1. 画像をアップロードする場所

画像をアップロードする場所は、デフォルトでblogのディレクトリ。この場所を決めるのは、tmpl/cms/include/asset_upload.tmpl。このファイルを、alt-tmpl/cms/include/ にコピーして、以下の修正をする。
*** tmpl/cms/include/asset_upload.tmpl  2009-09-11 18:10:24.000000000 +0900
--- alt-tmpl/cms/include/asset_upload.tmpl      2009-11-29 15:10:50.000000000 +0900
***************
*** 168,174 ****
              <select name="site_path" id="site_path" onchange="setExtraPath(this)">
                  <option value="1">&#60;<__trans phrase="Site Root">&#62;</option>
              <mt:if name="enable_archive_paths">
!                 <option value="0"<mt:if name="archive_path"> selected="selected"</mt:if>>&#60;<__trans phrase="Archive Root">&#62;</option>
              </mt:if>
              <mt:if name="extra_paths">
                  <mt:loop name="extra_paths">
--- 168,174 ----
              <select name="site_path" id="site_path" onchange="setExtraPath(this)">
                  <option value="1">&#60;<__trans phrase="Site Root">&#62;</option>
              <mt:if name="enable_archive_paths">
!                 <option value="0" selected="selected">&#60;<__trans phrase="Archive Root">&#62;</option>
              </mt:if>
              <mt:if name="extra_paths">
                  <mt:loop name="extra_paths">
***************
*** 176,182 ****
                  </mt:loop>
              </mt:if>
              </select>
!             / <input type="text" name="extra_path" id="extra_path" class="extra-path" value="<mt:var name="extra_path" escape="html">" />
              &nbsp;<a href="javascript:void(0);" mt:command="open-folder-selector"><__trans phrase="Choose Folder"></a>
          </mtapp:setting>
      </mt:if>
--- 176,182 ----
                  </mt:loop>
              </mt:if>
              </select>
!             / <input type="text" name="extra_path" id="extra_path" class="extra-path" value="images" />
              &nbsp;<a href="javascript:void(0);" mt:command="open-folder-selector"><__trans phrase="Choose Folder"></a>
          </mtapp:setting>
      </mt:if>
これ、ソース的には mt の変数 archive_path, extra_path に依存しているコードの様なので、これらの変数が適切に設定されていれば動きそうなもんなんだけど、その辺の仕組みがわからないので直接テンプレートをいじってしまっている。

2. 画像の表示とか

これは、MTのバージョン云々じゃなくて、細かい趣味の問題。ひとつは、imgタグに border="0" を付けること。(CSSでやれって話ではある)、もう一つは画像をクリックしたときに開くウィンドウの属性が気に入らないので修正、最後は、サムネイルのデフォルトのサイズの修正。
そもそも、昔のMTはサムネイルのサイズを、pixelだけじゃなくてpercentで指定できたのに、今のはできないのが気に入らない。
*** lib/MT/Asset/Image.pm.orig  2009-11-24 09:51:41.000000000 +0900
--- lib/MT/Asset/Image.pm       2009-11-29 15:25:49.000000000 +0900
***************
*** 314,326 ****
              my $link =
                $thumb
                ? sprintf(
!                 '<img src="%s" %s alt="%s" %s />',
                  MT::Util::encode_html( $thumb->url ),   $dimensions,
                  MT::Util::encode_html( $asset->label ), $wrap_style
                )
                : MT->translate('View image');
              $text = sprintf(
! q|<a href="%s" onclick="window.open('%s','popup','width=%d,height=%d,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">%s</a>|,
                  MT::Util::encode_html( $popup->url ),
                  MT::Util::encode_html( $popup->url ),
                  $asset->image_width,
--- 314,326 ----
              my $link =
                $thumb
                ? sprintf(
!                 '<img src="%s" %s alt="%s" %s border="0" />',
                  MT::Util::encode_html( $thumb->url ),   $dimensions,
                  MT::Util::encode_html( $asset->label ), $wrap_style
                )
                : MT->translate('View image');
              $text = sprintf(
! q|<a href="%s" onclick="window.open('%s','popup','width=%d,height=%d,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">%s</a>|,
                  MT::Util::encode_html( $popup->url ),
                  MT::Util::encode_html( $popup->url ),
                  $asset->image_width,
***************
*** 331,337 ****
          else {
              if ( $param->{thumb} ) {
                  $text = sprintf(
!                     '<a href="%s"><img alt="%s" src="%s" %s %s /></a>',
                      MT::Util::encode_html( $asset->url ),
                      MT::Util::encode_html( $asset->label ),
                      MT::Util::encode_html( $thumb->url ),
--- 331,337 ----
          else {
              if ( $param->{thumb} ) {
                  $text = sprintf(
!                     '<a href="%s"><img alt="%s" src="%s" %s %s border="0" /></a>',
                      MT::Util::encode_html( $asset->url ),
                      MT::Util::encode_html( $asset->label ),
                      MT::Util::encode_html( $thumb->url ),
***************
*** 386,392 ****
        ( $blog->image_default_wunits || 'pixels' ) eq $_ ? 1 : 0
        for qw(percent pixels);
      $param->{thumb_width} = $blog->image_default_width
!       || $asset->image_width
        || 0;

      return $app->build_page( 'dialog/asset_options_image.tmpl', $param );
--- 386,392 ----
        ( $blog->image_default_wunits || 'pixels' ) eq $_ ? 1 : 0
        for qw(percent pixels);
      $param->{thumb_width} = $blog->image_default_width
!       || $asset->image_width / 4
        || 0;

      return $app->build_page( 'dialog/asset_options_image.tmpl', $param );

3. bookmarklet

昔のMTは、bookmarkletからポストしようとすると、blockquoteにしてくれたり、トラックバック先が自動で入力されたり、blogが選べたり、他にもいろいろオプションがあったんだけど、今のはできない。
せめて、blogのURLへのリンクやページタイトルと、選択部分のblockquoteくらいやりたくて、以下の修正。
*** lib/MT/CMS/Entry.pm.ORIG    2009-11-29 21:06:37.000000000 +0900
--- lib/MT/CMS/Entry.pm 2009-11-29 21:10:16.000000000 +0900
***************
*** 2223,2229 ****
          or return $app->error($app->translate('Can\'t load blog #[_1].', $blog_id));
      my %args    = ( '_type' => $type, blog_id => $blog_id, qp => 1 );
      my $uri = $app->base . $app->uri( 'mode' => 'view', args => \%args );
!     my $script = qq!javascript:d=document;w=window;t='';if(d.selection)t=d.selection.createRange().text;else{if(d.getSelection)t=d.getSelection();else{if(w.getSelection)t=w.getSelection()}}void(w.open('$uri&title='+encodeURIComponent(d.title)+'&text='+encodeURIComponent(d.location.href)+encodeURIComponent('<br/><br/>')+encodeURIComponent(t),'_blank','scrollbars=yes,status=yes,resizable=yes,location=yes'))!;
      # Translate the phrase here to avoid ActivePerl DLL bug.
      $app->translate('<a href="[_1]">QuickPost to [_2]</a> - Drag this link to your browser\'s toolbar, then click it when you are visiting a site that you want to blog about.', encode_html($script), encode_html($blog->name));
  }
--- 2223,2229 ----
          or return $app->error($app->translate('Can\'t load blog #[_1].', $blog_id));
      my %args    = ( '_type' => $type, blog_id => $blog_id, qp => 1 );
      my $uri = $app->base . $app->uri( 'mode' => 'view', args => \%args );
!     my $script = qq!javascript:d=document;w=window;t='';if(d.selection)t=d.selection.createRange().text;else{if(d.getSelection)t=d.getSelection();else{if(w.getSelection)t=w.getSelection()}}void(w.open('$uri&title='+encodeURIComponent(d.title)+'&link='+encodeURIComponent(d.location.href)+'&text='+encodeURIComponent(t),'_blank','scrollbars=yes,status=yes,resizable=yes,location=yes'))!;
      # Translate the phrase here to avoid ActivePerl DLL bug.
      $app->translate('<a href="[_1]">QuickPost to [_2]</a> - Drag this link to your browser\'s toolbar, then click it when you are visiting a site that you want to blog about.', encode_html($script), encode_html($blog->name));
  }
*** lib/MT/CMS/Common.pm.ORIG   2009-11-29 21:24:34.000000000 +0900
--- lib/MT/CMS/Common.pm        2009-11-29 21:25:10.000000000 +0900
***************
*** 515,520 ****
--- 515,527 ----
              my $data = $q->param($_);
              $q->param( $_, $data );
          }
+       my $title = $q->param('title');
+       my $link = scalar $q->param('link');
+       my $text = $q->param('text');
+       $text = sprintf qq(<blockquote>\n<div class="quote-head"><a title="%s" href="%s">%s</a></div>\n\n%s\n</blockquote>), $title, $link, $title, $text;
+       $q->param('title', '');
+       $q->param('link', '');
+       $q->param('text', $text);
      }

      $param{autosave_frequency} = $app->config->AutoSaveFrequency;
ダッシュボードのデザインは4よりは5の方が趣味にあっているので、使い続けようと思うけど、とっくの昔に自前サーバでblogをやると言う時代は終わっているのかも知れないな~と思った。
ここのblogシステムはMovableTypeを使っているのだけれど、最近5.0がリリースされたので早速インストールしてみた。
まず、5.0からは正式なサポートがMySQLだけになって、SQLiteとPostgreSQLは使えなくなってしまったらしい。
私はMySQLよりもPostgreSQLが好きなので、どうしようかと悩んでいたが、どうせperlのDBDとかDBIとかその辺のパッケージを使っているはずなので、PostgreSQLのまま行ってみることにした。
ためしに、mt-check.cgiを動かして見ると、相変わらずSQLiteとかPostgreSQLのパッケージのチェックもしているから行けるのではないかと思ったのだ。
まずは、公式のインストールガイドの「既存のデータベースを残す方式のアップグレード」を参考に、別のDB、別のパスでインストールすることにする。
MT4をインストールしているディレクトリの横に mt5 と言う名前で一式を置き、mt-config.cgiをmtから持ってくる。
DBは、mtと言うDBからmt5と言うdbにコピー。PostgreSQLの場合は、
# createdb -T mt mt5
でそのまんまコピーができる。
mt5/mt.cgi にアクセスすると、アップグレードの確認になるので、そのまま進む。
無事に終わって再度mt.cgiにアクセスすると、新しいダッシュボードにアクセスできる。
ここで、Web site と言うのがあるはずなのに、何もなくって、新しく作るしか選べない。
新しいものを作ろうとすると、デフォルトの言語が英語になっている。Movable Type 5.0 の変更点、注意事項、および既知の問題を見ると、mt-config.cgiに 「DefaultLanguage ja」を追加しろとあったので、追加してみたら日本語がデフォルトになった。
しかし、試しに新しいWeb siteを作って見たりしても、ブログが一個も出てこない。
アップグレード時のウェブサイト自動作成を見ると、勝手にウェブサイトができるように見える。
このドキュメントを見ると、サイトのURLからウェブサイト(?)の何かを決めるように見えるので、その辺が怪しいのかと思って、mt-config.cgiの StaticWebPath をフルのURLにして、StaticFilePath に絶対パスを書いてみたりしたが、効果なし。
しょうがないので、アップグレード周りのソースをつらつらと眺めていたら、lib/MT/Upgrade/v5.pm の中で、以下のような箇所が。
sub upgrade_functions {
    return {
        #'v5_migrate_blog' => {
        #    version_limit => 5.0004,
        #    priority      => 3.2,
        #    code          => \&_v5_migrate_blog,
        #},
ここにある_v5_migrate_blog を読むと、そのまんまgeneric website の作成的な感じなので、このコメントを外して試して見たら、無事に移行ができた。
後は、pluginを移行して試しにリビルドしてみるが、動いている感じ。
これで本格的に移行できるかと思って、blog entryの編集画面に行ってみたら、本文が表示されない。
Firefoxだと編集領域にカーソルが行かなくて、IEだとカーソルが行くけど本文が出てない。
調べて見たら、MacでMT4の本文が編集できない事態が発生!?と言う記事を発見。
さきほど変更した StaticWebPath と StaticFilePath が悪かったらしい。
元のようにStaticWebPathだけにして、中身は /mt-static だけにする。
これでなんとなく動きそうな雰囲気なので、/mt5 から /mt にして、mt-config.cgiも直し、DBをコピーし直して MovableType 5.0 で運用を開始することにした。
2010年3月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
[New] [Admin]
あわせて読みたい

最近のコメント

Squidで認証 by たけちゃん: 最初から、入れ直した
Squidで認証 by false: squid.conf
Squidで認証 by たけちゃん: # Then, se
Squidで認証 by false: digest_aut
Squidで認証 by たけちゃん: windows版です

Photos

  • graph_47_5.png
  • items.jpg
  • feeds.jpg
  • false.jpg

アーカイブ

広告

Powered by Movable Type 5.01