2009年7月25日土曜日

マルチスレッド対応 マルチフロントエンド(もどき) を作ってみた

だいぶ前、マルチスレッド対応 lameフロントエンド(もどき)を更新すると言って早一ヶ月…。
ようやくそれなりのモノが完成したので公開することにしてみることにした。

以前作っていたマルチスレッド対応 lameフロントエンド(もどき)を元に、

・機能と安定性、起動速度の向上
・lame(mp3)以外のエンコーダー以外にも対応(設定ファイルで追加可能、NeroAacEnc(m4a)ogg Vorbisの動作を確認)
・コマンドラインで動作させられるものであれば、音楽だけでなく、動画等のエンコーダーにも対応させることが可能になった…かもしれない
・一応オブジェクト指向風味に

…などの改善を行った。
(元にしたと言っても、ソースは1から書き直していたりするのだが…)

その他にも、

・手軽にマルチスレッド化でき、どんなエンコーダーでもマルチコアCPUを有効に使える
・ファイルの名前、サイズ、最終アクセス日時、最終更新日時でフィルタリングをかけ、対象ファイルを絞り込んだりできる
・相変わらずディレクトリ単位での一括エンコードに特化
・結構詳しいエンコードログを記録できる(バイナリ統一すればベンチマークとしても使える…かも?)
・実行ファイルのアイコンにディレクトリ(フォルダ)アイコンをドラッグアンドドロップすると、規定の設定で一発エンコードすることが可能

などといった特徴がある…と思う(´・ω・`)


プログラム本体は以下からダウンロードできます。
http://mtmef.g.hachune.net/

※09.07.27 neroAacEncのコマンドラインオプションが、"-b 256000"ではなく"-b 256"となっている問題を修正しました。
ついでに、ogg Vorbisでのエンコードにも対応させました。
これで、neroAacEncとogg Vorbisをマルチスレッド化できる…ハズ。

※09.08.07 lame ABRのオプションの"--a"とすべきところが、"-a"となっている問題、pdcurses.dllが見つからないと言われる問題を修正しました。
設定ファイルの"-a"となっているところを"--a"にするだけでも回避できます。

※09.08.15 追記
ブログだといろいろ見づらい上に分かりづらいので、一つに纏めてみた
ついでに使い方の解説もしています。
最新版のダウンロードはこちらのページから行えます。
http://mtmef.g.hachune.net/



デフォルトの設定ファイルでは、lame(mp3)かneroAacEnc(m4a)、ogg Vorbisのいずれかのバイナリが必要です。
lameのWindows用バイナリは以下からダウンロードすることが出来ます。
http://www.rarewares.org/mp3-lame-bundle.php
neroAacEncのバイナリは以下からダウンロードすることが出来ます。
http://www.nero.com/jpn/technologies-aac-codec.html
ogg Vorbisのバイナリは以下からダウンロードすることが出来ます。
http://www.rarewares.org/ogg-oggenc.php


フォルダごとに適当にドラッグアンドドロップで登録して、実行するとこんな感じになる。

4つを別々に登録したので、コマンドプロンプトのウィンドウが4枚開いているが、
一つのウィンドウの処理が終わるまで待ち、それが終わった瞬間次の処理に移るようにしているので、
ファイルの整合性に問題が出ることは無い。
ドラッグアンドドロップで大量に登録しても、処理待ち状態になって、他の処理が終了すれば自動的に次の処理が開始することになるので、指定されたスレッド数以上の処理をすること無く処理を行う事が出来る。


5月位からすこーしずつ作り続けて、ようやくここまで…(ヽ´ω`)
後は、ディレクトリ選択や設定変更をGUI上で出来るようにすれば…
ドラッグアンドドロップでのエンコードに対応したんで、そろそろ(もどき)外してもいいかな…('A`)

それにしても、今マルチスレッド対応 lameフロントエンド(もどき)のソースを見ると、こりゃ汚いな…と。
非効率な上、やたらコケるという…
正直、あんなもんリリースしててごめんなさいと言わざるを得ない気が…(´・ω・`)

2009年7月22日水曜日

謎の発送メールが来た件

何やらずっと昔に申し込んでいたものが、いつの間にか発送されていたらしい。


初音ミク Studie GLAD BMW Z4個人スポンサー申し込みカスタマーサポートです。

個人スポンサー特典の発送ですが7月22日(水)より順次行わせていただいております。
急なご連絡になりまして申し訳ございません。

お客様へのお届けですが順次7月23日(木)~25日(土)お届け予定になっております。
地域により到着日が前後することをご理解ご了承の程お願いいたします。
●配送情報
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
お問い合わせ伝票番号 :番号
配送先        :私の住所
配達時間指定     :18時~20時
佐川急便お荷物問い合わせサービス:
http://k2k.sagawa-exp.co.jp/p/sagawa/web/okurijoinput.jsp

※配送状況に関しては上記URLよりご確認いただけます。
お手数ですがこちらのページにアクセスし上記の「お問い合わせ伝票番号」
を入力してください。
※伝表記載品名 「雑貨(ガラス製品)」として中身がわからない梱包にて発送しております。
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


※伝表記載品名 「雑貨(ガラス製品)」として中身がわからない梱包にて発送しております。

…'`,、('∀`) '`,、
私はおかしなものに申し込んだんだろうか…(´・ω・`)ショボーン

2009年7月17日金曜日

Rubyで端末のサイズを得る

マルチスレッド対応〜プログラムを作っていて、一覧表示時を行う為に、Rubyで端末のサイズを得るにはどうしたら良いのか、という問題に直面した。

LinuxやBSDでは、stty sizeコマンドを実行して、それを解析し取得する方法もあるが、OSに依存するため使えない。
Sorarisなど、同じコマンドがあっても微妙に結果が違ったりするものもあるので…


以前のバージョンでは、cursesを使って獲得していた。

require "curses"
def gettermsize
Curses::init_screen
x = Curses::cols
y = Curses::lines
Curses::close_screen
return {"x"=>x.to_i, "y"=>y.to_i}
end


この方法も、RubyにCursesライブラリが入っていないと駄目という問題が。
しかも、環境によって、標準出力のバッファリングがおかしくなることがあるという謎の現象が…
標準出力がおかしい件

これを回避するには、標準出力を同期モードにしてやればよいようだった。

STDOUT.sync = true

これをcurses読み込み前に書いておけば、標準出力がプログラムの流れと同期して表示されるようになった。


もっと効率が良く、どのプラットフォームでも同じ結果が得られるものは無いのだろうか…

2009年7月12日日曜日

Google Appsを使ってみる

Googleには、GmailやGoogleサイトといったサービスがあるが、通常はgoogle@gmail.comといった感じに、gmail.comドメインのみを使用することになる。
gmail.comドメインだと、「フリーメールお断り」などといった制限に引っ掛かったり、ローカル部(google@gmail.comのgoogleの部分)に、好きな文字列を使用できないことがある、などの問題がある。

そこで、独自ドメインを使用し、Googleの様々なサービスを使用できるGoogle Appsを使ってみようと思う。

Google Appsを使うメリットとして、
・無料
・独自ドメインを使用できる(MXレコードを設定できれば、ダイナミックDNSサービスのものでも可。CNAMEレコードも設定できれば楽な上に、Googleサイトで独自ドメインが使えるようになる)
・自宅サーバーを運用する必要が無くなる
・セキュリティ等にあまり悩まされなくなる
・固定IPを持っていなくても、安定してメールを受け取ることが出来る(非固定IPの場合、ドメインにIPアドレスを関連付け直すのにある程度の時間が必要なので、その間メールが正しく配送されない状態になってしまう)

などがある。

欠点は、
・Googleがサービスを停止したら終わり
・Gmailの広告がいろんな意味で怖い
・容量がStandard Editionで7.3GB(09/07/12現在)

といったところだろうか。

エディション別機能詳細などは、http://www.google.com/a/help/intl/ja/users/user_features.htmlhttp://www.google.com/a/help/intl/ja/admins/editions_spe.htmlなどで見れる。
まぁ普通の人はStandard Editionで問題無いと思う。




まず最初に、http://www.google.co.jp/apps/intl/ja/group/index.htmlにアクセスし、使用するドメイン名を入力する。自分の持っているドメインであれば、サブドメインでも構わない。
ここでは、hachune.netのサブドメイン、g.hachune.netを入力する。
取りたいドメインさっさと決めろって言われて…
.com以外空いてたんでつい…(´・ω・`)

apps-1



アカウント管理者と組織の情報の入力を行う。
メールアドレスは、現在使用出来ているアドレスにする必要がある。gmailでも大丈夫だった。
apps-2



管理者アカウントの設定を行った後、利用規約をよく読んで同意する。
apps-3



同意すると、ドメイン管理画面に進む。
まずは、ドメイン所有権の確認を行う。
apps-4



ドメイン所有権の確認方法には、CNAMEレコードの変更指定されたHTMLファイルのアップロードの二通りある。
CNAMEレコードの変更では、DNSサーバーにgooglexxxxxxxxxxxxxxx.hachune.net(xx…の部分はドメイン名によって違う)というCNAMEレコードを設定して、所有権を確認する。
apps-6

value-domain.comでドメイン名を取得し、value-domain.comのDNSサーバーを使用しているなら、value-domainにログインし、DNSレコード/URL転送の変更の設定フィールドに、
cname googlexxxxxxxxxxxxxxx google.com.
と設定を書き込み、保存する。
google.comの最後にピリオドを付けるのを忘れると、google.com.hachune.netを参照してしまうので注意する。
私の場合は、サブドメインgを使っているので、
cname googlexxxxxxxxxxxxxxx.g google.com.
となる。
適用されるまで少々時間が掛かる場合もあるが、気長に待ってね(´・ω・`)

CNAMEレコード ルックアップは以下で行える。
http://www.google.com/support/a/bin/answer.py?hl=jp&answer=93595
この確認ツールで確認すると、設定が間違っていなければ、
apps-7
のように表示される。


HTMLファイルのアップロードでは、自宅サーバーにApacheIISを導入し、Google Appsで使用するドメインのルートに、指定された内容を書き込んだgooglehostedservice.htmlを用意する必要がある。CNAMEレコードを変更できない場合は、こちらを行う。
apps-5



ドメイン所有権の確認が終われば…
apps-8
アクティブキタ――(゚∀゚)――!!




次に、今回の主要目的、メールの設定を行う。
メールを有効にするをクリックすると、MXレコードについての説明が表示される。
apps-9
valuedomainで、サブドメインgに来たメールを、指定されたGoogleのサーバーへ転送する場合、
mx ASPMX.L.GOOGLE.COM. 10 g
mx ALT1.ASPMX.L.GOOGLE.COM. 20 g
mx ALT2.ASPMX.L.GOOGLE.COM. 20 g
mx ASPMX2.GOOGLEMAIL.COM. 30 g
:
:
といった感じに設定する。
適用されるまでCNAMEレコード同様少々時間が掛かるが、気長に待つ。

使用できるサーバーと優先順位は、以下の通り。

ASPMX.L.GOOGLE.COM. 10
ALT1.ASPMX.L.GOOGLE.COM. 20
ALT2.ASPMX.L.GOOGLE.COM. 20
ASPMX2.GOOGLEMAIL.COM. 30
ASPMX3.GOOGLEMAIL.COM. 30
ASPMX4.GOOGLEMAIL.COM. 30
ASPMX5.GOOGLEMAIL.COM. 30


設定が正しければ、
apps-10
Googleのサーバーをアップデートしています…というメッセージが出る。
そして数十分後、
apps-11
キタ━ヽ(ヽ(゚ヽ(゚∀ヽ(゚∀゚ヽ(゚∀゚)ノ゚∀゚)ノ∀゚)ノ゚)ノ)ノ━!!!!




この状態でも独自メールアドレスにアクセスできるが、
アカウントのページを開くときにはhttp://mail.google.com/a/g.hachune.netという感じの、長いアドレスになってしまうのが微妙ということで、このアドレスも変更してみる。
apps-12
「URLを変更」をクリックし、メールのログインページにリダイレクトするアドレスを入力。
apps-13
再び、CNAMEレコードの設定を行う。
apps-14
mail.g.hachune.netをghs.google.comのCNAMEとするので、value-domainのDNSサーバー設定の場合は、
cname mail.g ghs.google.com.
とする。ここでもghs.google.com.の最後のピリオドを忘れないように気を付ける。




あとで設定するのも面倒なので、ここでGoogleサイトやGoogleカレンダー、Googleドキュメントのドメインも設定した。
apps-15

全ての設定が終わると、value-domainのDNSレコードは、

a g 220.108.47.247
cname googlefffffffffb909140.g google.com.
cname mail.g ghs.google.com.
cname site.g ghs.google.com.
cname cal.g ghs.google.com.
cname docs.g ghs.google.com.
mx ASPMX.L.GOOGLE.COM. 10 g
mx ALT1.ASPMX.L.GOOGLE.COM. 20 g
mx ALT2.ASPMX.L.GOOGLE.COM. 20 g
mx ASPMX2.GOOGLEMAIL.COM. 30 g
mx ASPMX3.GOOGLEMAIL.COM. 30 g
mx ASPMX4.GOOGLEMAIL.COM. 30 g
mx ASPMX5.GOOGLEMAIL.COM. 30 g

となった。



※おまけ Google Appsのアカウントでpidginを使う
「アカウント」タブ→Manage Accounts→Add...
pidgin-1
プロトコル: Google トーク
ユーザー名: Appsのユーザー名
ドメイン名: Appsに登録したドメイン名
パスワード: Appsと同じパスワード


次に「拡張」タブを開き、
pidgin-2
サーバーへ接続: talk.google.com
とする。
それ以外はデフォルト設定。
これで使える…ハズ。



…しかし、以前記事でとりあえず使ったhachune.netドメインを、本当に取ることになるとは…'`,、('∀`) '`,、
Googleで"hachune.net"を検索したところ、
hachune.netの検索結果 2 件中 1 - 2 件目 (0.06 秒)
で、出てきたのは自分のブログだけだったので…使っちゃっていいんだよね…(;´д`)?

2009年7月6日月曜日

最近話題の「~規制」について

最近、ダガーナイフ規制、ダウンロード規制など、いろいろな規制が設けられようとしているが、どれも「問題は起こさないのに規制されて、不利を被る人が大勢出る割に、本当に取り締まるべきものを取り締まれない」という問題があるように思える。


例えて言うと、蚊柱に殺虫剤噴射している感じ。

大して害の無い小さい奴だけが落ちて、質の悪い血を吸う奴や元凶のボウフラは殺せない。
そして、小さい奴の生き残りから増えた蚊が、殺虫剤への耐性を持って、更に増える。
どんどん殺虫剤を強力にしないと、蚊柱の小さい蚊すら落とせなくなるから、
強力な殺虫剤を用意…でループ。

その間、他の益虫も巻き添えにし、元々殺虫剤に慣れていた他の害虫は生き残る。

最終的には、殺虫剤を撒いてる本人が、殺虫剤で中毒を起こし、死んで終わり。
無意味どころか、最悪の方向に向かう…という。


現状を見ていると、「ろくに議論をせず、感情論で片付けているだけ」と感じてしまうのだが…
そういえば、蒟蒻ゼリー問題なんてのもあったな…

2009年7月4日土曜日

VMware Server 2をUbuntuにインストール

長い間、期限の切れたVMware Workstationで仮想マシンイメージを作成し、VMware Playerで起動という、激しく面倒くさいことをしていた。だが、ホストOSが起動したら、自動で仮想ゲストOSも起動する機能が必要になってきたので、VMware Serverを使ってみることにした。




まずは、VMware Server 2のLinux版をダウンロードしてくる。

http://www.vmware.com/jp/products/server/を開き、ダウンロードをクリック、"Register for your FREE Download"とあるので、名前とメールアドレスを入力、その他の情報を入力し、ユーザー登録するとダウンロードできる。
登録したメールアドレスにVMware Serverのアクティベーションに関する情報が送られてくるので、正しいメールアドレスを登録するように注意する。

今回はUbuntu x86_64に環境を構築する、ということなので、The core application needed to run VMware Server 2, 64-bit versionをダウンロードしてくる。



ダウンロードが終了したら、書庫を解凍、管理者権限でvmware-install.plを実行する。
インストール時、基本的には全部そのままEnter(デフォルト設定)で構わないが、
The current administrative user for VMware Server is ''. Would you like to
specify a different administrator?

と、VMware Serverの管理環境にログインするユーザーをどうするか聞かれる。
デフォルトでrootに設定されているが、Ubuntuでは通常rootアカウントにパスワードが設定されておらず、管理環境にはsudoを使ってログインということもできない為(Firefox等のブラウザ上で操作)、この設定だけ変更する必要があった。(デフォルト(root)のままでも、rootパスワードを変更(% sudo passwd root)すればVMware Serverの管理環境へログインできるが…)




何も問題が発生せずにインストールが終了したら、https://localhost:8333/にアクセス(httpsを使用したくないならhttp://localhost:8222/)する。

httpsでアクセスすると、

といった感じに怒られて、アクセスできない。
仕方が無いので、Firefox3の編集→設定→詳細タブ→証明書を表示→サーバー証明書→例外を追加…を開き…


https://localhost:8333/を入力、証明書を取得し、この証明書のセキュリティ例外を承認する。




こんな感じの画面が表示されれば、たぶん大丈夫…だと思う。
ここで、先ほど設定したユーザー名と、そのユーザーのログインパスワードを入力し、VMWareServerのログインを行う。

このとき使用するブラウザは、Firefoxが一番無難だと思われる。

それ以外のブラウザ(Operaなど)だと、コンソールが表示できない等の問題が発生して、まともに使用することができない。

Operaダメなのか…(´・ω・`)





Create Virtual Machineから、VMware Workstation等と同じ感じで、ゲストOSを設定できる。
Permisssionsタブから、管理環境でのアクセス権を設定することも可能。
間違ってrootで入るように設定してしまった場合も、ここで修正できる。




設定後、コンソールを開こうとすると、The VMware Remote Console Plug-in is not installed or could not be found.Please install the VMware Remote Console Plug-in to access this virtual machine's console.と、怒られてしまう。
install plug-inをクリックし、Firefox用のアドオンをインストールし、Firefoxを再起動する。


この時、「あなたのコンピューターを保護するため、Firefoxはこのサイト(localhost)はソフトウェアのインストールを要求出来ない設定になっています」と出るが、そのまま許可するしかないので、許可。



後は、VMware Playerと大体同じ感覚で、OSのセットアップ、管理を行える。





その他に分かった事は、
・ホストOS起動時のゲストOSの挙動は、Edit Virtual Machine Startup/Shutdown Settingsから行うことができる。
・仮想環境構築に必要なファイル(OSのisoイメージなど)は、指定したデータストア(デフォルトでは/var/lib/vmware/Virtual Machines)からのみ読み込める。ネットワークドライブなども指定可能。
ということ位か。

ネットワークを使用してサーバーのハードウェアを管理できるのは、予想以上に便利。
WindowsのVMware Playerも、VMware Serverに切り替えるか…('A`)

Project DIVAが届いた

いつの間にやら発売していた初音ミク - Project DIVA(ねんどろいどプチ付き)が、Amazonから届いた。

…のはいいのだが、
PSP持って無ぇよヽ(`Д´)ノ ウワァァン!!


…当分の間、ねんどろいどプチはつねさんを眺めて過ごすか…(´;ω;`)ウッ…
Project DIVAとねんどろプチ


…'`ァ,、ァ(*´Д`*)'`ァ,、ァ



そして、まさかのCERO B指定(12歳以上対象)
Project DIVA CERO指定

…一体なにができると…'`ァ,、ァ(*´Д`*)'`ァ,、ァ