Lionでgvimをインストールしてrubyのスクリプトを書きはじめてみると
インデント幅が自分には大きすぎて、それにテキスト全体にインデントを適用する方法がわからなかったので調べました。
rubyやpythonで書いたCGIを動かすためにやっぱりローカルでもテスト環境がほしいのでMacで使えるhttpdを探したら、BSDが元になってるのではじめからApacheが入ってるらしい。
「システム環境設定」→「共有」→「Web共有」をONにするだけでホームフォルダのしたに「サイト」というフォルダが自動的に作成されて、そこに http://localhost/~user/ でアクセスできるようになる様子。こりゃ楽だ。ひゃほーい。
全体の公開フォルダは
/Library/WebServer/Documents
/Library/WebServer/CGI-Executables
の2つになるらしい。
とはいえこんなフォルダを使いたくないのでホームフォルダの下でCGIが実行できるように変更します。
sudo vi /private/etc/apache2/users/[ユーザ名].conf
で設定ファイルを開いて
<Directory "/Users/[ユーザ名]/Sites/"> Options All AllowOverride All Order allow,deny Allow from all AddHandler cgi-script .cgi .rb .py </Directory>
のように書き換えて、
「Web共有」の設定を一旦切ってまたONにしてApacheを再起動。
cd Sites
vi test.rb
で「サイト」フォルダの下に新しいファイルを作って、その中に
#!/usr/bin/ruby
print "Content-Type: text/plain\n\n"
print "hello"
と書いて
chmod 705 test.rb
でファイルを実行可能にしてブラウザで
http://localhost/~[ユーザ名]/test.rb
で test と表示されれば成功です。
何故か途中から敬語になってますが、
参考 Apacheを起動する - Mac OS X LeopardでAMP環境を構築しよう - Apache, MySQL, PHP, Perlで作る開発環境 - futomi’s CGI Cafe
http://www.futomi.com/lecture/macosx/apache.html
前回の記事の続きです。
NHK語学のラジオ講座をさくらのVPSで自動ダウンロード
http://programming.ironsand.net/2012/auto-download-nhk-language-mp3-by-vps/
今回はさくらVPSにダウンロードしたmp3をSugarsyncにアップロードするについて解説します。
さくらのVPS上にSugarSyncやDropboxを常駐させるのはできるのかどうかわかりませんでしたし、できてもメモリを食いそうなので今回はSugarSyncが提供するAPIを使用します。
自動的にSugarSyncにファイルをアップロードさせるための手順は以下の流れになります。
APIを使うためにSugarSyncのDeveloperに登録
upload_nhkradio.rb の設定
cronの設定
1. APIを使うためにSugarSyncのDeveloperに登録 まずSugarSyncのAPIを使うためにDeveloperとして登録を行います。
http://www.sugarsync.com/developer/signup
もしSugarsyncのアカウント自体を持ってない方がいたら、まず[こちら][1]からSugarSync自体のアカウントを作ってください。
Developer登録をすると Access Key ID と Private Access Key が手に入りますのでメモっていてください。あとで必要になります。
次に[Create App]から新しいアプリの登録を行いアプリケーションキーを取得してください。
新しいアプリの作成には以下の5つの情報を入力する必要があります。
Name:[アプリ名]”NHK Radio Uploader”とか適当に
Publisher:[製作者] #名前をいれておきましょう。
Description:[詳細] “Upload NHK radio mp3” とでも。
Support URL:[作者サイト] 自分はTwitterのアカウントいれてます。
Support Email:[連絡先] 普通に自分のメールアドレスを。
以上でAppが作れたら App ID が入手できますのでコレもメモっておいてください。
2. upload_nhkradio.rb の設定 必要な情報が揃いましたので upload_nhkradio.rb の設定を行います。
まず[upload_nhkradio.zip][2]をダウンロードして解凍し、sugarsync.rb, upload_nhkradio.rb, upload_nhkradio_ini.rbの3つのファイルを取り出してください。
そしてupload_nhkradio_ini.rbを開いて先ほど入手した情報とアップロードするフォルダ名を設定します。
#SugarSyncのユーザ名(メールアドレス),パスワード @username = "" @password = "" #App ID /sc/などから始まる英数字 @application = "" @access_key_id = "" @private_access_key = "" #refresh_tokenを設定しておけばusername, passwordはいりません。 #username,passwordで接続すると無駄に一つ多く接続するのでrefresh_tokenを設定して使いましょう。 @refresh_token = "" #SugarSyncのどのフォルダにアップロードするか。 e.
NHKラジオの語学講座を毎週ダウンロードしてるんですが、
外国語を勉強してるのは海外に行くためでして、海外だとダウンロードができないことがよくあります。
なのでせっかくさくらのVPSをお金払って借りてるんだから
勝手にダウンロードするように設定しましたので参考にどうぞ。
月曜日の12時頃には決めておいたフォルダにmp3ファイルができてます。
実際に先週から動かしてみてますが、こりゃ楽でいいです。
SugarSync にアップロードしてるので海外にいるときにiPhoneがあるだけで新しい音声を聞くことも出来ます。
記事が長くなるので今回の
さくらVPSを使って自動的にNHKラジオ講座をダウンロード
次回の
さくらVPSにダウンロードしたmp3をSugarsyncにアップロードする
の2つにわけて解説していきます。
自動的にNHKラジオ講座をダウンロードするには以下の4つの手順が必要です。
flvstreamerのダウンロード、コンパイル
Rubyのインストール
CaptureStream の設定
cronの設定
1. flvstreamerのダウンロード、コンパイル flvstreamer をインストールするんですが、
まずさくらのVPSが32ビットなのか64ビットなのか確認します。
$ cat /proc/cpuinfo | grep flags
して値に lm が含まれていれば64bitのCPUです。
次に
$ uname -a
X86_64とかamd64とかが表示されたら、64ビット版のカーネルです。
64bitだとわかったので、64bitのflvstreamerをインストールしたいんですが、
32bitしかバイナリがおいてないので自分でコンパイルします。
$ wget http://download.savannah.gnu.org/releases/flvstreamer/source/flvstreamer-2.1c1.tar.gz $ tar zxf flvstreamer-2.1c1.tar.gz $ cd flvstreamer $ make posix $ ./flvstreamer FLVStreamer v2.1c1 (c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL ERROR: You must specify a hostname (--host) or url (-r "rtmp://host[:port]/playpath") containing a hostname # yum install ruby
Rubyで外部のプログラムを起動させて標準エラー出力を得るには open3 を使わないとできないが、 fork() を使ってるためWindowsでは代替の win32-open3 を使って実現する。
まず gem で win32-open3 をインストール
C:\Users\tetsuyagem install win32-open3 Successfully installed win32-open3-0.3.2-x86-mswin32-60 1 gem installed Installing ri documentation for win32-open3-0.3.2-x86-mswin32-60... Installing RDoc documentation for win32-open3-0.3.2-x86-mswin32-60... 次にわざとエラを出して標準エラー出力が受け取れるか確認する。
require 'rubygems' require 'win32/open3' stdin, stdout, stderr = *Open3.popen3('ruby -error') stderr.each{|line| print line } その結果
-e:1: undefined local variable or method `rror' for main:Object (NameError) 以上。
外部プログラムでエラーでしかほしい情報を返してくれないやつとかいるのでこれが使えると大変便利。
PythonかRubyのスクリプトを常駐させたかったので調べてみたらRubyの方が簡単そうだったので試してみた。
環境 OS:Windows 7
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
gem 1.3.4
Portableバージョンを使ってます。
Win32-ServiceのインストールC:>gem install win32-service するだけです。
ただうちの環境ではこんなエラーが出てしまいました。P:/Dropbox/bin/RailsPortable/App/Rails/bin/ruby.exe extconf.rb checking for strncpy_s()… yes creating Makefile nmake Microsoft(R) Program Maintenance Utility Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. P:\Dropbox\bin\RailsPortable\App\Rails\bin\ruby -e “puts ‘EXPORTS’, ‘Init_api’” > api-i386-mswin32.def cl -nologo -I. -I. -IP:/Dropbox/bin/RailsPortable/App/Rails/lib/ruby/1.8/i386-mswin32 -I. -MD -Zi -O2b2xg- -G6 -DHAVE_STRNCPY_S -c -Tcwin32/api.c cl : コマンド ライン warning D9035 : オプション ‘Og-’ の使用は現在推奨されていません。今後のバージョンからは削除されます。 cl : コマンド ライン warning D9002 : 不明なオプション ‘-G6’ を無視します api.