ということで、hachune.netとしてもなにかやらないといけないな、と。
それで完成したのがはちゅねドメインサービス!
簡単に言えば、Dynamic DNSとURL転送を切り替えながら使えるホスト名提供サービス、…ってところだろうか。
negi.d.hachune.netみたいなドメイン名を使ってボカロなサイト運営してみたい!って方が居ましたら、どんどん使ってあげてね!
はちゅねドメインサービス
http://www.hachune.net/domain.html
もっと分かりやすく面白い名前、募集中w
2010年8月31日火曜日
2010年7月7日水曜日
Debian LennyなMac MiniをPulseAudioサーバにする
Software Design 6月号やUbuntu Weekly Recipe 第106回 PulseAudioでリモートスピーカを使うで、Ubuntuでのスピーカーサーバの作り方が解説されていた。
UbuntuでできることがDebianでできない筈がねぇ!…ということで、Debianで挑戦してみた。
・alsa関連を入れる
# aptitude install alsa-utils
・PulseAudioとZeroConfモジュールを入れる
かなりパッケージ数が多いので注意。
# aptitude install pulseaudio pulseaudio-module-zeroconf
・サーバ起動時にPulseAudioデーモンが実行されるように設定する
/etc/default/pulseaudioのPULSEAUDIO_SYSTEM_START=0を1に変更。
・/etc/pulse/default.paを変更する
以上の部分を、以下のように変更する。
auth-ip-acl=10.39.39.0/24は、サーバへのアクセスを許可するサブネットを指定する。
・PulseAudioデーモンを起動する
# /etc/init.d/pulseaudio start
・paprefsをインストール
# aptitude install paprefs
・paprefsを起動し、Make disconverable PulseAudio network sound devices available locallyのチェックをOnにする
・「サウンドの設定」を開き、「出力」をpulse@サーバホスト名に設定する

後は、MPlayerやら何やらで再生して、サーバ側から音が出れば成功。
なかなか認識してくれない場合は、サーバをrebootしてみるのも手かもしれない。
UbuntuでできることがDebianでできない筈がねぇ!…ということで、Debianで挑戦してみた。
サーバ側
・alsa関連を入れる
# aptitude install alsa-utils
・PulseAudioとZeroConfモジュールを入れる
かなりパッケージ数が多いので注意。
# aptitude install pulseaudio pulseaudio-module-zeroconf
・サーバ起動時にPulseAudioデーモンが実行されるように設定する
/etc/default/pulseaudioのPULSEAUDIO_SYSTEM_START=0を1に変更。
・/etc/pulse/default.paを変更する
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish
以上の部分を、以下のように変更する。
auth-ip-acl=10.39.39.0/24は、サーバへのアクセスを許可するサブネットを指定する。
load-module module-native-protocol-tcp auth-ip-acl=10.39.39.0/24
load-module module-zeroconf-publish
・PulseAudioデーモンを起動する
# /etc/init.d/pulseaudio start
クライアント側
・paprefsをインストール
# aptitude install paprefs
・paprefsを起動し、Make disconverable PulseAudio network sound devices available locallyのチェックをOnにする
・「サウンドの設定」を開き、「出力」をpulse@サーバホスト名に設定する

後は、MPlayerやら何やらで再生して、サーバ側から音が出れば成功。
なかなか認識してくれない場合は、サーバをrebootしてみるのも手かもしれない。
2010年6月30日水曜日
RubyのYAMLライブラリで2バイト文字をそのまま扱う
RubyのYAMLライブラリでは、標準では日本語などの2バイト文字列をバイナリとして扱うようになっている。しかし、これでは人間が直接修正するのが非常に面倒である。
技術評論社のYAML解説ページには、Rubyのソースにパッチを当てビルドする方法や、ya2yamlを使用する方法が書いてあった。しかし、パッチを当てた環境をすべてに適用するのは非常に面倒であり、ya2yamlについては標準ライブラリではない上に、少々遅いという問題がある。
そこで、どうにかする方法はないものかとYAMLのソースを眺めていたところ、以下の方法であっさり解決してしまった。
一度エスケープされたものをまた戻すという、面倒なことになっているが、ソース修正するよりマシかな…と。
これで、YAMLで書き出して手動で編集…なんてことがやりやすくなるかもしれない。
技術評論社のYAML解説ページには、Rubyのソースにパッチを当てビルドする方法や、ya2yamlを使用する方法が書いてあった。しかし、パッチを当てた環境をすべてに適用するのは非常に面倒であり、ya2yamlについては標準ライブラリではない上に、少々遅いという問題がある。
そこで、どうにかする方法はないものかとYAMLのソースを眺めていたところ、以下の方法であっさり解決してしまった。
#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-
require "yaml"
require "yaml/encoding"
# String.is_binary_data?で必ずfalseを返すように書き換える
class String
def is_binary_data?
return false
end
end
data = {"はつね"=>"みく", "はちゅね"=>"みく", "かがみね"=>"りん・れん", "めぐりね"=>"るか"}
# 通常どおり表示
puts "Escape:"
puts yaml = YAML.dump(data)
# アンエスケープして表示
puts "Unescape:"
puts yaml = YAML.unescape(yaml)
一度エスケープされたものをまた戻すという、面倒なことになっているが、ソース修正するよりマシかな…と。
これで、YAMLで書き出して手動で編集…なんてことがやりやすくなるかもしれない。
2010年6月3日木曜日
RubyでWebサーバを作る(ベーシック認証/ダイジェスト認証)
WEBrickでベーシック認証を行うには、以下のようにする。
ベーシック認証では、パスワードが簡単に復号可能な状態でネットワーク上を流れるため、重要なものに利用するのは非常に危険。
そこで、ダイジェスト認証を利用する。
どちらも比較的簡単に認証を実現することができた。
ベーシック認証はHTTPAuth::HtpasswdとHTTPAuth::BasicAuth、
ダイジェスト認証はHTTPAuth::HtdigestとHTTPAuth::DigestAuthと覚えておけば良いかと思う。
※ 追記
もっと簡単にベーシック認証を行う方法があった。
#!/usr/ruby1.9/bin/ruby1.9
#-*- encoding: utf-8 -*-
require "webrick"
# HTTPServerを作成
httpd = WEBrick::HTTPServer.new(:Port => 3939)
# Basic認証の設定(引数にはパスワードファイルへのパスを渡す)
pswd = WEBrick::HTTPAuth::Htpasswd.new("dot.passwd")
pswd.set_passwd("mikubox", "miku", "mikumiku") #realm, user, passwd
auth = WEBrick::HTTPAuth::BasicAuth.new(:UserDB => pswd, :Realm => "mikubox")
# HTTPServerの/loginにBasic認証を設定
httpd.mount_proc("/login"){|req, res|
# 認証
auth.authenticate(req, res)
res.body = "<html><head><title>みくかわいいよみく</title></head><body><p>OK.</p></body></html>"
}
# INTシグナルでサーバを停止
trap("INT"){httpd.stop}
# サーバを開始
httpd.start()
ベーシック認証では、パスワードが簡単に復号可能な状態でネットワーク上を流れるため、重要なものに利用するのは非常に危険。
そこで、ダイジェスト認証を利用する。
#!/usr/ruby1.9/bin/ruby1.9
#-*- encoding: utf-8 -*-
require "webrick"
# HTTPServerを作成
httpd = WEBrick::HTTPServer.new(:Port => 3939)
# ダイジェスト認証の設定(引数にはダイジェスト認証用のデータベースのパスを渡す)
pswd = WEBrick::HTTPAuth::Htdigest.new("dot.digest")
if pswd.get_passwd("mikubox", "miku", false) == nil
pswd.set_passwd("mikubox", "miku", "mikumiku") # realm, user, passwd
pswd.flush # ファイルに書き込む
end
auth = WEBrick::HTTPAuth::DigestAuth.new(:UserDB => pswd, :Realm => "mikubox")
# HTTPServerの/loginにダイジェスト認証を設定
httpd.mount_proc("/login"){|req, res|
# 認証
auth.authenticate(req, res)
res.body = "<html><head><title>みくかわいいよみく</title></head><body><p>OK.</p></body></html>"
}
trap("INT"){httpd.stop}
httpd.start()
どちらも比較的簡単に認証を実現することができた。
ベーシック認証はHTTPAuth::HtpasswdとHTTPAuth::BasicAuth、
ダイジェスト認証はHTTPAuth::HtdigestとHTTPAuth::DigestAuthと覚えておけば良いかと思う。
※ 追記
もっと簡単にベーシック認証を行う方法があった。
#!/usr/ruby1.9/bin/ruby1.9
#-*- encoding: utf-8 -*-
require "webrick"
httpd = WEBrick::HTTPServer.new(:Port => 3939)
httpd.mount_proc('/login') {|req, res|
WEBrick::HTTPAuth.basic_auth(req, res, "mikubox") {|user, pass|
user == 'miku' && pass == 'mikumiku'
}
res.body = "<html><head><title>みくかわいいよみく</title></head><body><p>OK.</p></body>
</html>"
}
trap("INT"){httpd.stop}
httpd.start
2010年5月30日日曜日
RubyでWebサーバを作る
最近全然書いてないな~ということで、RubyでWebサーバを簡単に作れるライブラリ、WEBrickについて書いてみる。
Ruby 1.8以上なら、
たったこれだけで、TCPポート3939番に自分のHOMEディレクトリを公開してしまう、とんでもないWebサーバが出来上がる。Ruby on Railsで有名になったライブラリだが、Apacheを使うまでもない、実験用Webサーバが欲しい時などにもとっても便利。
・ CGIを利用する
拡張子を.cgiとしたファイルに実行属性を加えるだけ。
としてマウントすることもできる。
・VirtualHostを利用する
メインのHTTPServerに、別のServerNameを設定したオブジェクトをvirtual_hostとして渡す。
メイン以外のホストは、:Portをnil、:DoNotListenをtrueとする。
・各ユーザのホームディレクトリの特定のディレクトリを公開する
/home/$USER/public_htmlを公開する場合、DocumentRootOptionsのUserDirを設定する。
・MimeTypeを追加する
デフォルトで設定されているMimeTypesにマージする。
・indexが存在しない場合の、ファイル一覧を表示しないようにする
・最大クライアント数を制限する
・アクセスできるファイル/ディレクトリを制限する
DocumentRootOptionsのNondisclosureNameに、公開したくないファイル/ディレクトリ名を配列で指定する。
ワイルドカードが使用可能。
・他のURLに転送する
・Cookieを渡す
・erb(組み込みRuby)を使う
WEBrickでは、HTMLファイルにRubyスクリプトを埋め込み、実行することも簡単にできる。
まず、MimeTypeにrhtmlをtext/htmlとして追加する。
後は、拡張子をrhtmlとしたファイルに、
<%= Time.now.to_s %>
のように、必要な場所に埋め込む。
・指定された拡張子(cgi、rhtml)以外のファイル(rb、html)でCGIやerbを有功にする
require "webrick"の下あたりに以下の内容を記入しておく。
拡張子に合わせて、MimeTypeの設定も必要かもしれない。
他にもいろいろあるけれど、とりあえず一番必要とされそうな所だけ。
そのうちlogに関して等も追記する…と思う。
Ruby 1.8以上なら、
require "webrick"
WEBrick::HTTPServer.new(:Port => 3939, :DocumentRoot => ENV["HOME"]).start
たったこれだけで、TCPポート3939番に自分のHOMEディレクトリを公開してしまう、とんでもないWebサーバが出来上がる。Ruby on Railsで有名になったライブラリだが、Apacheを使うまでもない、実験用Webサーバが欲しい時などにもとっても便利。
・ CGIを利用する
拡張子を.cgiとしたファイルに実行属性を加えるだけ。
http.mount(Webサーバ上でのパス, WEBrick::HTTPServlet::CGIHandler, CGIとして実行するファイルのパス)
としてマウントすることもできる。
・VirtualHostを利用する
メインのHTTPServerに、別のServerNameを設定したオブジェクトをvirtual_hostとして渡す。
メイン以外のホストは、:Portをnil、:DoNotListenをtrueとする。
http = WEBrick::HTTPServer.new(:ServerName => "miku.hachune.net", :DocumentRoot => "miku/")
http.virtual_host(WEBrick::HTTPServer.new(:ServerName => "append.haachune.net", :DocumentRoot => "append/", :Port => nil, :DoNotListen => true))
http.start
・各ユーザのホームディレクトリの特定のディレクトリを公開する
/home/$USER/public_htmlを公開する場合、DocumentRootOptionsのUserDirを設定する。
:DocumentRootOptions => {
:UserDir => "public_html"
}
・MimeTypeを追加する
デフォルトで設定されているMimeTypesにマージする。
newmime = {"wav"=>"Audio/wav"}
mime = WEBrick::HTTPUtils::DefaultMimeTypes.merge(newmime)
WEBrick::HTTPServer.new(:DocumentRoot => ENV[HOME], :MimeTypes => mime).start
・indexが存在しない場合の、ファイル一覧を表示しないようにする
:DocumentRootOptions => { :FancyIndexing => false }
・最大クライアント数を制限する
:MaxClients => クライアント数
・アクセスできるファイル/ディレクトリを制限する
DocumentRootOptionsのNondisclosureNameに、公開したくないファイル/ディレクトリ名を配列で指定する。
ワイルドカードが使用可能。
:DocumentRootOptions => {
:NondisclosureName => [".ht*", "*~", ".svn"]
}
・他のURLに転送する
http = WEBrick::HTTPServer.new(:Port => 3939)
http.mount_proc("/"){|req, res|
res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, 'http://hachune.net/')
}
・Cookieを渡す
http = WEBrick::HTTPServer.new(:Port => 3939)
http.mount_proc("/"){|req, res|
res["Set-Cookie"] = "hatsune=miku;Max-Age=3600;"
res.body = "<p>Cookieです。</p>"
}
・erb(組み込みRuby)を使う
WEBrickでは、HTMLファイルにRubyスクリプトを埋め込み、実行することも簡単にできる。
まず、MimeTypeにrhtmlをtext/htmlとして追加する。
:DocumentRootOptions =>{
:MimeTypes => WEBrick::HTTPUtils::DefaultMimeTypes.merge({"rhtml"=>"text/html"})
}
後は、拡張子をrhtmlとしたファイルに、
<%= Time.now.to_s %>
のように、必要な場所に埋め込む。
・指定された拡張子(cgi、rhtml)以外のファイル(rb、html)でCGIやerbを有功にする
require "webrick"の下あたりに以下の内容を記入しておく。
拡張子に合わせて、MimeTypeの設定も必要かもしれない。
module WEBrick::HTTPServlet
WEBrick::HTTPServlet::FileHandler.add_handler('rb', WEBrick::HTTPServlet::CGIHandler)
WEBrick::HTTPServlet::FileHandler.add_handler('html', WEBrick::HTTPServlet::ERBHandler)
end
他にもいろいろあるけれど、とりあえず一番必要とされそうな所だけ。
そのうちlogに関して等も追記する…と思う。
2010年5月3日月曜日
はつねさんAppendをサーバに入れてみた
こーのーいーえの~ こーのさーばぁが~♪
わたしっの~ あたらっしぃ~ いばーしょーなの~♪
…ということで、AppendはつねさんをWindows Server 2008 R2なはつねサーバにインストールしてみた。

まぁ、以前から何度も試しているだけあって、今回も何の問題もなくインストールは進み…

Twitterでクリプトンの人が「インストールに20分ぐらいかかるかもしれません!」と言っていた割に、10分で終了。
まだまだPhenom X4 9750なはつねサーバはメインで現役だね(`・ω・´)シャキーン

歌ってもらった感じも、今のところ全く問題なし。
…スタンドアロンでしか試してないけど。
※おまけ
Appendはつねさんの着メールボイス的なものと、
Append聴き分けテスト的なもの
http://append.hachune.net
わたしっの~ あたらっしぃ~ いばーしょーなの~♪
…ということで、AppendはつねさんをWindows Server 2008 R2なはつねサーバにインストールしてみた。

まぁ、以前から何度も試しているだけあって、今回も何の問題もなくインストールは進み…

Twitterでクリプトンの人が「インストールに20分ぐらいかかるかもしれません!」と言っていた割に、10分で終了。
まだまだPhenom X4 9750なはつねサーバはメインで現役だね(`・ω・´)シャキーン

歌ってもらった感じも、今のところ全く問題なし。
…スタンドアロンでしか試してないけど。
※おまけ
Appendはつねさんの着メールボイス的なものと、
Append聴き分けテスト的なもの
http://append.hachune.net
2010年5月2日日曜日
Amazon先生から何かが送られてきた

Amazonから荷物が届いた。コンビニ振込み14400円。
キタ━━━━(゚∀゚)━━━━ !!!!!
キタ━━━ヽ(ヽ(゚ヽ(゚∀ヽ(゚∀゚ヽ(゚∀゚)ノ゚∀゚)ノ∀゚)ノ゚)ノ)ノ━━━!!!!
キタ━ヽ(=゚ω゚)人(*^ー゚)人(´・ω・`)人( ´∀`)人( ;´Д`)人(゚∀゚)人(´-`)ノ━━!!
そしてこれまでにない箱と内容物の豪華さ。
はつねさんの時はふつーのDVDケースに紙が数枚、って感じだったんだよな…
それが今回は、結構厚めの取説と、マウスパッド的なものまで入ってたり…(*´д`*)
見てみたい? ならAppend買おうね!(ぁ
使用許諾契約書。
これを守ってさえいれば、はつねさんはうちの子でいてくれるのである。
1+6つの表情を持つはつねさん。夢が広がるな…'`ァ,、ァ(*´Д`*)'`ァ,、ァ
登録:
投稿 (Atom)