O'ReillyのiPhone AppからEPUBファイルを抽出するRubyスクリプト
404 Blog Not Found:perl - O'ReillyのiPhoneアプリ本からepubをぶっこぬくを参考に、Ruby版を作ってみるテスト。
#/usr/bin/env ruby def deleteall(delthem) if FileTest.directory?(delthem) then # ディレクトリかどうかを判別 Dir.foreach( delthem ) do |file| # 中身を一覧 next if /^\.+$/ =~ file # 上位ディレクトリと自身を対象から外す deleteall( delthem.sub(/\/+$/,"") + "/" + file ) end Dir.rmdir(delthem) rescue "" # 中身が空になったディレクトリを削除 else File.delete(delthem) # ディレクトリでなければ削除 end end def clean deleteall('Payload') end def die(message) puts message exit(1) end $src = ARGV.shift die "Usage:#{$0} src.ipa [dst.epub]" unless $src && File.exist?($src) $dst = ARGV.shift unless $dst $dst = File.basename($src) $dst = $dst.sub(/\w+$/, 'epub') end result = `unzip -q #{$src} -x iTunes*` die result unless $?.exitstatus == 0 $app = Dir.glob("Payload/*.app/book").first die "No book found in the archive" unless $app Dir.chdir($app) do |path| $updir = '../../..' system "zip", "-q0X", "#{$updir}/#{$dst}", 'mimetype' system "zip", "-qXr9D", "#{$updir}/#{$dst}", "META-INF", "OEBPS" end clean system "open", "-a/Applications/iTunes.app", $dst
Rubyには中身が空でないディレクトリを一発消去する方法がないので、逆引きRuby - ディレクトリ:中身が空でないディレクトリを削除する からメソッドを借りてきました。
また、dieがなくてifが多くなるのが嫌だったので、自前でdieメソッドを追加。
使い方は弾さんのPerl番と同じ。上記のスクリプトをipa2epubとでもして実行権を与え、
ipa2epub path/to/ipa
[訂正]
Rubyには中身が空でないディレクトリを一発消去する方法がない は間違いでした。FileUtilsライブラリがあるので、これを使えばPerl版とほぼ同じような記述が可能でした。
#/usr/bin/env ruby require "fileutils" def clean FileUtils.rmtree('Payload') end def die(message) puts message exit(1) end $src = ARGV.shift die "Usage:#{$0} src.ipa [dst.epub]" unless $src && File.exist?($src) $dst = ARGV.shift unless $dst $dst = File.basename($src) $dst = $dst.sub(/\w+$/, 'epub') end result = `unzip -q #{$src} -x iTunes*` die result unless $?.exitstatus == 0 $app = Dir.glob("Payload/*.app/book").first die "No book found in the archive" unless $app Dir.chdir($app) do |path| $updir = '../../..' system "zip", "-q0X", "#{$updir}/#{$dst}", 'mimetype' system "zip", "-qXr9D", "#{$updir}/#{$dst}", "META-INF", "OEBPS" end clean system "open", "-a/Applications/iTunes.app", $dst
Rails3で自分専用のブログを作る(8)ー NetBeans用Gitプラグインのインストール
今回作成する予定のブログシステムはgithub.comで公開をするつもりなので、ソース管理にgitを使います。
git-core自体はこれまでの準備作業でインストール済のようなので、NetBeans用のプラグインPeliculas Online Gratisをインストールします。
下記のダウンロードページからnbgit-0.4-netbeans-6.9.nbmをダウンロードします。
http://code.google.com/p/nbgit/downloads/list
次に、NetBeansを起動し、メニューから、ツール=>プラグインを選択し、「ダウンロード済み」タブをクリックします。
「プラグインの追加」ボタンをクリックして、ダウンロードしたファイルを選択して組み込みます。
クラウドはオープンソースを殺すのか?
いきなり、物騒なタイトルですが、ここ半年以上気になっていた事を書いてみます。時代は一気にクラウドに向けて走っている感のあるこのごろですが、オープンソースなしにはクラウドコンピューティングの出現はなかったというのは、おそらく誰も否定し得ない事実だろうと思います。特に、オペレーティングシステムであるLinuxの果たした役割は非常に大きく、Linuxなしには、Amazon EC2もGoogleも、Salesforce.comでさえ出現しなかったのではないでしょうか。しかし、どんどんクラウドが使われるようになってくると、Linuxをはじめとするオープンソースソフトウェアのエコシステムが変わっていく、そんな感じがしています。
オープンソースソフトウェアが一般企業のIT部門に受け入れられてきたのは、ベンダーロックインの排除や、企業のシステムが、商用ソフトウェアのライフサイクルに左右されてしまう事への危惧もありますが、やはりライセンスコストがいらないという事が最大の利点の一つであった事は確かだと思います。これがあるからこそ、開発・運用要員の教育コストや、サポートコストの問題があってもオープンソースソフトウェアを導入するメリットがあったと言えるでしょう。
これは、Linuxそのものだけでなく、その上で動作するアプリケーションにも言える事です。もっとも最初に受け入れられたメールシステムはもとより、Webサーバやアプリケーションサーバ、CMSやブログシステムといったものも、商用ソフトウェアとの対比の中でメリットを見いだされ使われてきたのだと思います。
ところが、クラウド化の進展により、一般企業のIT部門からみると、こうしたオープンソースソフトウェアの魅力が薄らぎつつあるのではないでしょうか。
例えば、現在自社でメールシステムを運用する事がメリットがあるのは、どのくらいの会社でしょうか?Google Apps Standard Editionなら、50アカウントまでは無料でメール・カレンダー・ポータルや文書共有などの機能が使えますし。50人を超えても一人月額500円で有償サービスが受けられます。ウイルス対策やスパム対策も含まれたものである事考えれば、自社導入して運用にかかるコストを支払うより経済的に思えるのは確かでしょう。セキュリティホールの心配もしなくてよい訳ですし。
こうして見ると、クラウド化の進展によって、一般企業のIT部門がLinuxなどのオープンソースソフトウェアを使う大きな理由の一つが消えつつあるように思えるのです。
Rails3で自分専用のブログを作る(6)— PostgreSQLのインストール
PostgreSQLとドライバをコンパイルするための libpq-dev をインストールします。
sudo apt-get install postgresql libpq-dev
Ruby用のPostgreSQLドライバのうち、pgをインストールします。
sudo gem install pg
Rails3で自分専用のブログを作る(4)—rvmでRuby 1.9.2 RC2をコンパイル
rvmでCRubyをコンパイルするのに必要なパッケージを見落としていたので、下記のように追加しました。
sudo aptitude install build-essential bison openssl libreadline5 libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim libsqlite3-0 libsqlite3-dev sqlite3 libreadline5-dev libreadline6-dev libxml2-dev git-core subversion autoconf
Ruby 1.9.2 RC2をコンパイルしてインストールするために、下記のコマンドを実行します。
rvm install 1.9.2