2011年2月27日日曜日

ネットワークインターフェースの設定値

完全なプライベート備忘録
以下の設定だと、samba 経由で Windows と Ubuntu 間のファイルコピー速度が 60MB/s 程度出ている。winscp 経由だと数分の1程度しか速度がでない。
玄箱だと、どう設定しても 10~15MB/s しかでない。

【Ubuntu】
MTU:7158

【Windos Vista】
MTU:7154
DefaultSendWindow:(MTU-40)*46*4=1308976

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters
に REG_DWORD で作成


2012/07/07 追記


ルーターが、世代交代したせいか、samba での200MBを超えるファイルのコピーが、タイムアウトで失敗するようになってしまった。
MTU の設定値が変化しているようなので、再設定してみた。

【Ubuntu】
ping  -c 1 -M do -s 7130 Vista
MTU:7130

/etc/network/if-up.d/setmtu
#!/bin/sh
[ "$IFACE" != "lo" ] || exit 0
ifconfig $IFACE mtu 7130

【Windos Vista】
ping -f -n 1 -l 7126 Ubuntu
MTU:7126
DefaultSendWindow:(MTU-40)*46*4=1303824
netsh interface ipv4 set subinterface "ローカル エリア接続" mtu=7126 store=persistent


2011年2月26日土曜日

epgrec で録画ファイルのスプリットに失敗した場合の復旧方法

うちの epgrec 録画環境(Ubuntu)で、結構頻繁に録画後のスプリット処理が失敗していることがある。(サムネールが録画一覧画面に表示されない)
スプリットが失敗したファイルを、そのまま利用すれば問題ないのだが、手動でリカバリ作業をしたくなるときもある。その手順を備忘録として残しておく。

この作業を行うためには以下のような前提がある。
  • スクランブル解除処理は成功していること。(B-CASカードが抜けていた場合などには、対応できない)
  • 変換前のファイルが残っていること(あたりまえ)
    do-record.sh で、スプリット処理に失敗した場合には、変換前ファイルを削除しないようにした記憶がある。そもそも do-record.sh をどこまでオレオレ仕様に変更したか覚えてないので、最後に全部のせておく。

スプリット処理は、windows 上で行うこととする。録画環境では、TsSplitterLite を利用しているが、そもそも、TsSplitterLite での処理に失敗しているので、他のスプリット方法でないとならないため、そうしている。

まずは、スプリット処理に失敗したファイルを windows 上にコピーする。ファイルは、/var/www/epgrec/video にあるはず。ファイル名は、ブラウザから epgrec の録画済一覧から該当ファイルをクリックして、ダウンロードされたファイル名を参照すると分かる。
今回は GR22_20110211015500_20110211022500_tss.ts_tmp.ts ファイルを処理する。

windows でのスプリット処理には、TsSplitter を利用する。
DTV関連ツール」サイトで、左の「メニュー」から「DTV アップローダ」を選択。
表示された右ページ上段の「過去ログ検索」リンクをクリック。
過去ログ検索画面で、「検索文字列」に”TsSplitter”と入力し、「Search/Return」ボタンを押す。
日付が”2009年07/17(金)21:17”のファイル名”up0140.zip”をダウンロードする。
少々古いが、現時点のうちの環境(windows vista 64bit SP2)でも、問題なく動作する。
ひょっとしたら、最新版がどこかにあるのかもしれない。


インストーラは無いので、up0140.zip を適当なディレクトリに解凍したら、インストール完了。

TsSplitterGUI.exe を起動する。


設定は、「HD映像を残す」だけにチェックを入れている。
好みに合わせて設定するヨロシ。

変換ファイルにスプリット処理をしたいファイルを選択して、「変換」ボタンを押すだけ。

変換後のファイルを所定のファイル名に変更する(うちの場合は、GR22_20110211015500_20110211022500_tss.ts とか)
変換後のファイルを、/var/www/epgrec/video ディレクトリにコピーする。
ファイルの所有ユーザとグループを、他の録画済みファイルと合わせておくことを忘れずに。

 次に、サムネールを作成する。
ここからは、Ubuntu 上で作業を行う。

ffmpeg -i /var/www/epgrec/video/GR22_20110211015500_20110211022500_tss.ts -r 1 -s 160x90 -ss 130 -vframes 1 -f image2 /var/www/epgrec/thumbs/GR22_20110211015500_20110211022500_tss.ts.jpg

のようにする。ファイル名は、適宜変更すること。-ss オプションで、開始から何秒後の画面をサムネールにするのかを指定している。
実行すると数秒(結構時間がかかる)でサムネール作成完了する。
作成後のサムネールの所有ユーザとグループを変更しておくこと。


付録
[ do-record.sh ] オレオレ仕様版
#!/bin/bash
echo "CHANNEL : $CHANNEL"
echo "DURATION: $DURATION"
echo "OUTPUT  : $OUTPUT"
echo "TUNER : $TUNER"
echo "TYPE : $TYPE"
echo "MODE : $MODE"

RECORDER=/usr/local/bin/recpt1
SPLIT=/usr/local/bin/tssplitter_lite
OUTPUT_TMP=${OUTPUT}_tmp.ts

if [ ${MODE} == 0 ]; then
    $RECORDER --b25 --strip $CHANNEL $DURATION ${OUTPUT} >/dev/null
elif [ ${MODE} == 1 ]; then
    $RECORDER --b25 --strip $CHANNEL $DURATION ${OUTPUT_TMP} >/dev/null
    if [ ${TYPE} == "BS" ]; then
        $SPLIT ${OUTPUT_TMP} ${OUTPUT} ${CHANNELL}
    elif [ ${TYPE} == "GR" ]; then
        if [ ${CHANNEL} == "27" ]; then
            # NHK
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 1024
        elif [ ${CHANNEL} == "26" ]; then
            # 教育
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 1032
        elif [ ${CHANNEL} == "25" ]; then
            # 日本テレビ
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 1040
        elif [ ${CHANNEL} == "22" ]; then
            # TBS
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 1048
        elif [ ${CHANNEL} == "21" ]; then
            # フジテレビ
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 1056
        elif [ ${CHANNEL} == "24" ]; then
            # テレビ朝日
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 1064
        elif [ ${CHANNEL} == "23" ]; then
            # テレビ東京
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 1072
        elif [ ${CHANNEL} == "20" ]; then
            # Tokyo MX TV
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 23608
        elif [ ${CHANNEL} == "18" ]; then
            # テレビ神奈川
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 24632
        elif [ ${CHANNEL} == "32" ]; then
            # テレ玉
            $SPLIT ${OUTPUT_TMP} ${OUTPUT} 29752
        elif [ ${CHANNEL} == "28" ]; then
            # 放送大学
            # なぜか Segmentation fault が発生するので分割しない
            # $SPLIT ${OUTPUT_TMP} ${OUTPUT} 1088
            mv ${OUTPUT_TMP} ${OUTPUT}
            exit
        else
            exit
        fi
        if [ $? == 0 ]; then
            rm ${OUTPUT_TMP}
        fi
    fi
fi

2011年2月20日日曜日

iPad を購入

3ヶ月程悩んだ末、iPad を購入することにした。
なぜ、次世代 iPad の発表があったこの時期に?っていうこともあるが、どうせ、日本での発売は、遅れるだろうし、品薄だろうし、そしてなにより、初期ロットは、購入しないというポリシーあるし。かといって、時期が来るまで待っていたら、機会損失が目に見えているので、購入に踏み切った。と、言い訳してみる。

まじめな話、Amazon Cloud とホニャホニャという野望があるので、やっぱり実機で試すのが手っ取り早い、ということもある。
まあ、何にせよ、買ってしまったものはしようがない。使わなければ孫・・・じゃなくて「損」なのでばんばん使っていく予定である。

購入したものは、iPad WiFi モデルと Pocket WiFi
GPS の有無は気になるが、通信部分は、分けて持つことがベストという判断をした。

使い始めて数日経ったが、やはり使いやすい。
多少戸惑うこともあるが、慣れてみれば至って自然な操作に思えてくる。

基本操作は、ある程度慣れてきたので、いよいよ、応用編へ進む時期となった。
さて、何が待ち構えているか、楽しみである。

2011年2月13日日曜日

「雲の彼方へ」 ~Amazon Cloud と戯れて~ (第一話)

昨今、とてもよく耳にする「クラウド・コンピューティング」なるものに、片足を突っ込むことにした。
丸腰で玉砕覚悟の万歳突撃はやめておいて、事前に準備をしておいた。
「Amazon Cloud テクニカルガイド」インプレスジャパン

やっぱり、事前にこういう本を読んで、正解!色々予想外の内容が書いてあった。たとえば、有料サービス利用手続き作業の時に、自動応答の確認電話がかかってくるなどなど。

事情により、実家に帰省しているので、実家の PC (Windows7)を利用して作業をすることになった。
バイブル(前述の本)によると、Colud 管理用端末は、Linux の方がいいらしいので、バイブルに従って、coLinux をインストールした。しかし、coLinux を起動しようとすると、キーもマウスも操作不能。Ctrl + Alt + Del すらも利かなくなる。グーグル先生に聞いても、そういうケースは、あまり無いようだ。ハードやソフトの相性なのか?しょうがないので、素直に諦めることにした。

次に、実際にアマゾンクラウドを利用するための手続きを行った。バイブルでは、各画面すべて英語表記になっているが、現在、かなり日本語化されている。
手続きは、以下の AWS のウェブページで行うことができる。
http://aws.amazon.com/
なお、このページは、Amazon 買い物サイトの、左メニューの下側、「Amanzon 各種サービス」>「クラウドコンピューティング」>「Amazon Web Services」リンクからも辿ることができる。


■ 「Amazon Web Services(AWS)」アカウントの取得
AWS のアカウントを取得するだけなら無料で、維持費などもかからないようだ。
Amazon 買い物サイトのユーザーが利用できるのかと思ったが、できないようだ。
登録手順などは、バイブル通りだった。

■ AWS 有料サービス利用手続き
クレジットカードの登録と、請求先情報の登録を行う必要がある。請求先情報の登録では、入力した電話番号に、Amazon 側から自動応答ガイダンス通話がかかってきて、画面に表示された番号を入力すると、認証が完了する。私の場合、au の携帯でこれを行ったが、問題なく認証できた。


今回は、EC2 などの有料サービスを動作させてはいない。
ここまでで、登録したメールアドレス宛に、Amazon Web Services から合計 5 通のメールが届いていた。届いた順番に件名を並べてみる。
「Welcome to Amazon Web Services」
「Amazon Virtual Private Cloud Sign-Up Confirmation」
「Amazon Simple Notification Service Sign-Up Confirmation」
「Amazon Simple Storage Service Sign-Up Confirmation」
「Amazon Elastic Compute Cloud Sign-Up Confirmation」

次回は、有料サービスを使ってみる予定。

2011年2月3日木曜日

OpenOffice.org と Python マクロ 4 限目

久しぶりに、OOo の Python マクロをいじってみたくなった。
詳しいことは端折るが、リアルタイムスプレッドシートと OpenOffice.org と UWSC でシステムトレーディングの可能性が見えた。最初は、MetaTrader でやるつもりだったが、楽天証券は対応していないようなので、とりあえず茨の道を進んでみる。

で、今回は、野望とは程遠い内容だが、Python マクロを、OpenOffice.org Calc に同梱する方法について、調査した。

【動作環境】
OS:Windows Vista Business 64bit SP2
OpenOffice.org 3.2.1

調査内容については、以下のサイトでのやりとりの内、今回必要な部分をまとめただけとなる。回答されている方には、足を向けて寝られない。
faq/5/430 - OpenOffice.org Q&A
http://oooug.jp/faq/index.php?faq/5/430

要点をまとめると、
  1. デフォルトの状態では、OpenOffice.org 上から、Python マクロを .ods ファイルに同梱する機能がない。
  2. 拡張機能を利用しない場合、Python マクロを .ods ファイルに同梱するには、ファイルを直接変更する必要がある。
  3. 拡張機能をインストールすることによって、OpenOffice.org 上で Python マクロを同梱したり、エディタで開いたりすることができるようなる。

では、手動でのマクロファイル同梱方法から解説する。

1.ファイルを直接変更して、Python マクロを同梱する方法。
詳細は、以下のサイトを参照のこと
http://udk.openoffice.org/python/scriptingframework/index.html

概要を説明すると、.ods ファイル(実は zip ファイル)を解凍して、Scripts/python/ ディレクトリを作成し、Python マクロファイルを配置する。
次に、META-INF/manifest.xml ファイルに前述の Python マクロファイルおよびディレクトリの定義を追加する。
最後に、再び zip 圧縮して、拡張子を .ods に変更する。

もし、Python マクロファイルだけ追加して、manifest.xml ファイルを変更しなかった場合、
「ファイル 'ほげほげ.ods' は汚染されているため、開くことができません。OpenOffice.org で修復を試してください。この汚染は、データ送信に伴う、ドキュメントの改ざんまたは構造的なドキュメントの損傷によって引き起こされた可能性があります。修復されたドキュメントの内容は信用しないことを推奨します。このドキュメントのマクロの実行は無効化されます。」などと怒られ、修復すると、きれいさっぱり Python マクロファイルが消える。ちなみに、修復をしないと .ods ファイルが開けない。


Python マクロファイルを同梱する手順を、実際に試してみた。
  • 適当なディレクトリに、「OpenDocument 表計算」を”Hello.ods”というファイル名で作成。
  • Hello.ods ファイルを zip 解凍ツールで解凍(拡張子を zip に変更する必要があるかもしれない)。
  • 以下のファイルおよびディレクトリが解凍される。
    Configurations2/
    META-INF/
    Thumbnails/
    content.xml
    meta.xml
    mimetype
    settings.xml
    styles.xml
  • 上記の階層に、Scripts/python/ ディレクトリを作成。
  • 作成したディレクトリに、適当な Python マクロファイル(今回は、C:\Program Files (x86)\OpenOffice.org 3\Basis\share\Scripts\python\HelloWorld.py を利用)を配置。
  • META-INF/manifest.xml ファイルをエディタで開き、以下のように21行目~23行目の内容を追加する。
<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
 <manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.spreadsheet" manifest:version="1.2" manifest:full-path="/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/statusbar/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/accelerator/current.xml"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/accelerator/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/floater/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/popupmenu/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/progressbar/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/menubar/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/toolbar/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/images/Bitmaps/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Configurations2/images/"/>
 <manifest:file-entry manifest:media-type="application/vnd.sun.xml.ui.configuration" manifest:full-path="Configurations2/"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="styles.xml"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="meta.xml"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Thumbnails/thumbnail.png"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Thumbnails/"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="settings.xml"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Scripts/python/HelloWorld.py"/>
 <manifest:file-entry manifest:media-type="application/binary" manifest:full-path="Scripts/python/"/>
 <manifest:file-entry manifest:media-type="application/binary" manifest:full-path="Scripts/"/>
</manifest:manifest>

  • 再び zip 圧縮をする。
  • 圧縮したファイル名を Hello.ods に変更する。
  • Hello.ods ファイルを OpenOffice.org で開く
成功すると、「セキュリティ警告」ダイアログが開き、「ドキュメントマクロを含むドキュメントです。マクロには、ウィルスが含まれていることがあります。安全のためには、ドキュメントのマクロを無効にすることをお勧めします。ただし、マクロを無効にすると、ドキュメントマクロの機能を利用出来なくなりいます。」と警告されるので、「マクロの有効化」ボタンを押すと、めでたくマクロが利用可能になる。

「ツール」メニュー -> 「マクロ」 -> 「マクロの管理」 -> 「Python」を選択
ツリーの「Hello.ods」以下に、”HelloWorld”マクロが含まれていることが確認できる。

以上が、手動による Python マクロファイルの同梱手順だが、面倒くさい。
そこで、拡張機能の出番。

以下のサイトにアクセスする。
http://hermione.s41.xrea.com/pukiwiki/index.php?OOobbs2%2F194

上記サイトで以下のファイルをダウンロードして、ファイルをダブルクリックすると、OpenOffice.org の拡張マネージャ画面が起動するので、それぞれインストールする。
EditorKicker-0.1.0.oxt
ModifiedPythonScriptProvider-0.4.2.oxt

OpenOffice.org を再起動する。
OpenOffice.org の「ツール」メニュー -> 「拡張機能マネージャ」を選択する。
「EditorKicker」を選択し、「オプション」ボタンをクリックする。

「Editor」の「Choose」ボタンを押して、エディターを選択する。
私の場合は、”C:\appli_x86\sakura\sakura.exe”
を選択した。

「Options」には、「-Y=${COL} -X=${ROW} -- "${FILENAME}"」のように設定した。ファイル名をダブルクォートで囲む必要がある。でないと、スペース入りのディレクトリや、ファイル名で問題が起こる。

「OK」ボタンを押す。

「拡張機能マネージャー」の「閉じる」ボタンを押す。
OpenOffice.org を再起動する。必ずすること。でないと設定が反映されないようだ。

これでインストールは完了。

この拡張機能は、OpenOffice.org の「ツール」メニュー ->「マクロ」 -> 「マクロの管理」 -> 「Python」を選択すると表示される、「Python マクロ」管理画面に対して機能が追加される。
具体的には、マクロファイルに対して、「作成」、「編集」、「名前の変更」、「削除」ボタンなどが利用できるようになる。


この拡張機能の利用方法で、理解に時間がかかった部分を補足説明する。

■ ファイル同梱のマクロファイルとそれ以外では、「編集」ボタンの挙動が異なる。(しばらく意味が分からず、不具合かと思ったwww)


「あなたのマクロ」および「OpenOffice.org マクロ」のマクロファイルに対しては、エディターが起動する。
ファイル同梱のマクロファイルに対しては、ファイル選択ダイアログが開く。Python マクロファイルを選択すると、ファイル同梱のマクロファイルの内容が、選択したファイルの内容で上書きされる。

■ 一度ファイル同梱のマクロを作成してしまうと、マクロファイルを削除しても、起動時にマクロに関する警告が表示される。
これは、Scripts ディレクトリが残るためだ。前述の手動での同梱マクロ追加方法を参考に、Scripts ディレクトリと設定を削除することで、マクロに関する警告が表示されなくなる。

また一歩、Python マクロの深みに嵌っていく・・・・

冒頭の FAQ でのやり取りから、マクロの配布形態は、「ユーザー共通」、「ユーザー個別」、「ファイル同梱」、そして、「拡張機能」形式が存在することが分かった。「拡張機能」形式には、アップデートが容易などの利点があるので、興味はあるが、もはや、目的が何だったのか忘れる勢い・・・さらなる茨の道を進む・・・のか?