進・日進月歩

IT, Jazz, study, engineering, すべての真実とクリエイティビティのために

Archive for November, 2008

LYME = Linux + Yaws + Mnesia + Erlang

  • Filed under: 雑記
Wednesday
Nov 26,2008

まだ何もコメントすべきほど調べてはいないのだけど、メモ予定地としてこのエントリを作っておく。

ベンチマークは結構されていて次のサイトにまとまっているっぽい。

Lyme vs Lanp 21 Century Code Works

最近並列分散処理というようなことが流行っているので、この手のものはちょっと気になる。

Tuesday
Nov 25,2008

hamlがあまりにも気持ち悪いので、erbで実装したのですが、そのコードを参考のために載せておきます。

動作が確認済。

元記事はmerb wikiのMy First Blog

index.html.erb

<table>
<%- @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= link_to “Show”, url(:post,post) %></td>
<td><%= link_to “Edit”, url(:edit_post,post) %>/td>
</tr>
<%- end %>
</table>
<%= link_to “New”, url(:new_post) %>

new.html.erb

<%= error_messages_for :post %>
<%= form_for( @post, :action => url(:posts)) do %>
<%= partial :form %>
<p><%= submit “Create” %></p>

<% end =%>

<%= link_to ‘Back’, url(:posts) %>

show.html.erb

<p><%= @post.title %></p>
<p><%= @post.body %></p>

<br />
<hr />

<h1>Comments</h1>
<p>
<%= partial “comments/show”, :with => @post.comments.reverse, :as => :comment %>
</p>
<%= partial “comments/comment” %>

<%= link_to ‘Edit’, url(:edit_post,  @post) %>

<%= link_to ‘Back’, url(:posts) %>

edit.html.erb

<%= error_messages_for :post %>

<%= form_for(@post, :action => url(:post, @post)) do %>
<%= partial :form %>
<p><%= submit “Update” %></p>
<% end =%>
<%= link_to “Show”, url(:post, @post) %>
<%= link_to “Back”, url(:posts) %>

_form.html.erb

<p>
<%= text_field :title %>
</p>
hogehoge
<p>
<%= text_area :body %>
</p>

_show.html.erb

<p><%= comment.name %></p>
<p><%= comment.body %></p>

_comment.html.erb

<p>
<%= error_messages_for :comment %>
</p>

<p>
<%= form_for(:comment, :action => “/posts/#{@post.id}/comments”) do %>
<p><%= text_field :name, :name => “comment[name]” %></p>
<p><%= text_area  :body %></p>
<p><%= submit “Comment” %></p>
<% end =%>

</p>

Monday
Nov 24,2008

あまりにも情報がないのでまとめてみようかと。音声認識以外の用途でつかおうと思うとなかなかとっつきにくい。

以下は関連ライブラリなど

  • ATK API fot HTK C++ Bindings

今回データとして音声以外を使うのでSOURCEFORMAT=USERと、HQuantあたりが鍵かなぁ?

HTKのサンプルが動かないときは

  • Filed under: 雑記
Monday
Nov 24,2008

音声認識などでよく使われるHMM(隠れマルコフモデル)を使うときに便利らしいHTK。
環境依存みたいですが、サンプルがそのままだと実行できないことがあります。
そういうときは次のフォルダを作って見てください。

hmms/
hmms/hmm.0
hmms/hmm.1
hmms/hmm.2
hmms/tmp
proto/
test/

こうするとなぜかできる。

merbを軽くする?

  • Filed under: IT
Monday
Nov 24,2008

実際軽くなるかどうかは不明だけど。

config/dependencies.rbに作ったmerbアプリケーションの依存しているライブラリが乗っています。

素朴にmerb-gen app hogeでやった場合こんな感じ。

# dependencies are generated using a strict version, don’t forget to edit the dependency versions when upgrading.
merb_gems_version = “1.0.1″
dm_gems_version   = “0.9.7″

# For more information about each component, please read http://wiki.merbivore.com/faqs/merb_components
dependency “merb-action-args”, merb_gems_version
dependency “merb-assets”, merb_gems_version
dependency “merb-cache”, merb_gems_version
dependency “merb-helpers”, merb_gems_version
dependency “merb-mailer”, merb_gems_version
dependency “merb-slices”, merb_gems_version
dependency “merb-auth-core”, merb_gems_version
dependency “merb-auth-more”, merb_gems_version
dependency “merb-auth-slice-password”, merb_gems_version
dependency “merb-param-protection”, merb_gems_version
dependency “merb-exceptions”, merb_gems_version

dependency “dm-core”, dm_gems_version
dependency “dm-aggregates”, dm_gems_version
dependency “dm-migrations”, dm_gems_version
dependency “dm-timestamps”, dm_gems_version
dependency “dm-types”, dm_gems_version
dependency “dm-validations”, dm_gems_version

非常にたくさんのモジュールが呼ばれています。明らかにcacheとか今使ってないのでそういうのをコメントアウトするとより軽くなるのかなぁと妄想しているところです。

Thursday
Nov 20,2008

前回のエントリー

centOS5にmerbをインストールする

最後設定まで終わったところでrubyinlineでエラーが出ていたわけですが、それを解決しました。config.ruを書き換えます。
私は次のようにしました。

まずmerbアプリのディレクトリの直下にtmpディレクトリを作ります。
パーミッションに気をつけておいてください。その上でconfig.ruを次のようにします。

require ‘rubygems’
require ‘merb-core’

m_root = File.expand_path(File.dirname(__FILE__))
ENV["INLINEDIR"] = m_root / “tmp”
Merb::Config.setup(:merb_root   => m_root,
:environment => ENV['RACK_ENV'])
Merb.environment = Merb::Config[:environment]
Merb.root = Merb::Config[:merb_root]
Merb::BootLoader.run

# Uncomment if your app is mounted at a suburi
#if prefix = ::Merb::Config[:path_prefix]
#  use Merb::Rack::PathPrefix, prefix
#end

run Merb::Rack::Application.new

前回のエラーはruby_inlineというrubyに埋め込んだCのコードを実行するためのライブラリがテンポラリファイルを作ることに失敗していたわけです。
それをENV["INLINEDIR"]で指定してあげることで解決しました。

上のconfig.ruはこのままこぴぺしても使えるようにしてあります。tmpディレクトリだけちゃんと作ってください。

では、楽しいmerb生活を!

追記:公式wikiにpassenger + merbに関する記述があります。そちらも参考に

Deploying with Passenger

CentOS5にmerbをインストールする

  • Filed under: 雑記
Saturday
Nov 15,2008

CentOS5はrubyのバージョンとかgemのバージョンとかの関係でなかなかmerbがインストールできません。

とりあえずえらく苦労したのでメモ代わりに。自分はもともとmod_railsで動く環境があったので、そこから変更をしました。

目標はpassengerのmod_rackとmerbの組み合わせで動かすこと。

まずrubyをアンインストールする

2008/11/15現在、centos5はruby1.8.5なんですがmerbはruby1.8.6以上でgem1.3以上じゃないと動きません。なのでyumで入れてる人は全部削除しましょう。

yum remove ruby

yum remove rubylibs

ねんのため次のコマンドを実行して残ってないか探してみましょう。

yum list ruby |grep installed

なにもでなければ大丈夫です。

checkinstallをインストール

なにも気にしないで入れてもいいのですが、ソースからコンパイルしてインストールすると、アンインストールが大変です。それを簡単にするのがcheckinstall。これを使ってruby1.8.7をインストールします。

rpmがあるのでダウンロード。で、インストール。

rpm -ivh checkinstall-1.6.1-1.i386.rpm

yum install rpm-build

これで完了。/usr/local/sbinにインストールされるのでルート以外だとパスが通ってません。ここ注意。
またrpmを作る場合はrpm-buildがないと動かないので入れてない人はインストールしましょう。

ruby1.8.7をインストール

とりあえずサイトからソースをダウンロード。自分は最近話題のmod_rubyやらmod_rackやらのpassengerで動かす予定なので、共有ライブラリを作るようにconfigureしました。

./configure –prefix=/usr –enable-shared

make

sudo /usr/local/sbin/checkinstall

いろいろ聞かれますが、途中でrpmを選択するところ以外は適当でok。

こうすると、rpmが/usr/src/redhat/RPMS/x86_64/につくられます。ここでインストール。

sudo rpm -ivh /usr/src/redhat/RPMS/x86_64/ruby-1.8.7-p72.x86_64.rpm

これで完了。

rubygems1.3をインストール

これもソースをrubygemsのサイトから落としてきて展開。で、インストール。

sudo ruby setup.rb

これはこれで終了。

merbのインストール

gemで一発。

gem install merb

passengerのインストール

gem install passenger

passenger-install-apache2-module

ここでもいろいろ聞かれたり表示されたりしますが、出てきたとおりに操作すれば完了。

これでインストールは終了

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

merbをテストで動かす

自分はちょっとエラーでまだ動かせてないんですが、基本的にこのサイトの「merbでつくる」から後をやればokなはず。

inlineのpermissionで起こられたら

このサイトの情報で直ると思ってます(まだ試してない

とりあえず動かせたら続編まとめます。

Saturday
Nov 1,2008

IPAの未踏プロジェクトに応募してみた。

内容は先週まで東大のビジコンに出してた内容で、一ヶ月くらいかけてビジネス面については脳内でできてきたんだけど、今度は実装がないのが問題(いつもは逆なんだが)なので、作るのにお金をくださいというのでアイディアを投げてみた。

たぶん発想としてはずっと前からあったもので、自分が調べた限りでは1980年にはすでに発想があった。まぁあのころのPCスペックでは実現するはずもない。逆に言うとそれくらい今は進歩してるんだなというのを再確認した。

基本的な内容としては俺デスクという過去の未踏プロジェクトにとてもよく似ている。たぶん違いといえば、向こうがテクノロジーであることに対して、こっちはサービスであるという差くらいなもんだろうか。
もちろんそのサービスを実現するためにテクノロジーがあることは間違いないが。

最近思うのはテクノロジーとサービスは分けて考えるべきだということだろうか。例外はあるだろうが、テクノロジーはサービスを提供する人に対してしか売れない。そしてサービスを受けたいと思ってる人はテクノロジーは買わない。この点だけ抑えておくだけでも、ITビジネスでトンチンカンなことを言わずにすむような気がする。そしてほとんどの人はサービスを提供しようとしていて、テクノロジーは提供しようとしていないように最近感じる。

サービスの根本は、お客様に代理してなにかを行うことであると最近思う。マッサージでもamazonでも基本的には、「肩をもむ」とか「本を手に入れる」という行為を代わりにやっているに過ぎない。mixiだったら「友達の近況を知る」ことを代わりにやっているといえるかもしれない。
それをすることによってお客様の行為を代替し、手間が減っていることが重要。客の視点から見れば、中身がどうであっても結果が同じなら大して興味はない。
「フェアトレードだとかチームマイナス6%とかああいうのを進んで選んでいる」という人もいそうだけど、それですら結局は南米のなにかの問題とか地球温暖化に関して自分が何かをする代わりに誰かに何かをしてもらっているということに過ぎない。

サービスとコンテンツは分けて考えるべきであるように思う。漫画とか映画とかああいうのをコンテンツと呼ぶなら、それはサービスとは違う。
映画をサービスと呼ぶなら、それは映画館が提供しているサービスであって映画製作会社が提供しているものではない。
コンテンツをうまく形容する言葉はあまり思いつかないのだけど、誤解を恐れずに言えばなくても困らないものである。コンテンツの本質は0から1を作り出す作業である。テクノロジーが価値を積み上げていくバベルの塔で、サービスが客の手間を減らす引き算だとすれば、本当の意味で価値を作り出しているのはコンテンツだけなんじゃないかと思う。もともと0なんだから、無くたって変わらないのでなくても困らない。
言ってみれば嗜好品。贅沢。暇つぶし。なんかいろいろ言い方はあるだろうけど、生活に本当にvalue addしてくれるのはおそらくコンテンツなんではないだろうか。

なんか色々書いたけど、なぜかこの辺の区別がITはなかなかされにくいと感じる。もちろんひとつのプロダクトを見たときにそれがサービス・コンテンツ・テクノロジーの組み合わせでできてるというのは十分有る話ではあるとおもう。が、その価値構造とか、それによって得られる効果とか、扱い方とかぜんぜん違う。なんか自分が知ってる範囲ではこんな混沌としている世界はITしかしらない。

とかいってみても、別にこういった議論だってあまり意味が無いように感じる。お金大好きな私とすればこんなこと考えなくても売れれば別にいいわけです。単にこういうこと考えるのはブログ書くのと同様趣味でしかない。
実際的にものを売ろうと思うんだったら、少なくともやらないといけないことは「商品を作る」「売る」の2つである。これをやらずに儲からないだなんだと言ったところで意味は無い。
今まで書いたような妄想は、それがもう実行されているか、もしくは、実行される予定がすでにある状態で始めて役に立つように思う。
だからといって、「がんがんつくれ」とか「がんがん売れ」とかいうのもなんかなぁと思うんだけど、要はいつも思うとおり3秒頭を使ってほしいということだろうか。
頭使ったからといってわからんものはわからんのだけど、3秒思いをめぐらすだけでも無駄が減るんじゃないかなといつも思います。

about me

原田 惇

応用数学や統計、ITなどを利用していろんなことをしています。
自己紹介はこちら

adsense

amazonお勧め