Archive for 5月, 2010

PHPユーザ層とRubyユーザ層の違い

※タイトルは釣りです!

この間会社の人たちと話していて、PHPにはWordPressSugarCRM、あと思いつく限りPukiWikiEcCubeOpenPNEMoodle、そしてたくさんのCMSなどなど、優れた「アプリケーション」が沢山あるのに、Rubyにはそれらのカウンターパートがあまり無いよね、という話題になった(Railsブーム立ち上がりの時は雨後の筍のように出現したが、でも現在では、まともにメンテナンスされているのはTypo(ブログ)Radiant CMS(CMS)Redmine(BTS)ぐらいじゃないか?)。

勝手に思いついたのは、言語の特性に根ざした言語ユーザの行動の違いで、

  • PHP
    • 言語仕様自体をハックし辛い
    • → 言語自体の改善より、それを使って何ができるか? に目が向く
    • → 実用的アプリケーションが増える
  • Ruby
    • 言語自体を拡張したりハックするのがすごく楽しい
    • → 言語自体を便利にするライブラリ、フレームワークが増える
    • → 実用アプリケーションにまでリソースが回ってない?

あと感じてるのは、偏見とか僕の観測範囲の偏りとかもあるかもしれないが、「デザイン出身だけどプログラムも書く = PHPで書く」みたいな流れが存在するような気がして仕方ない。だって、上に挙げたPHPアプリケーションはいずれもリッチなデザインとUIを持っているわけで。。

個人的には、一緒にJavaScriptやActionScriptをやるような人だったら、Rubyのブロックの使い方はlambdaやクロージャの使い方の参考になる(僕とかはRubyやり始めるまでクロージャを理解しきれていなかった)と思うので、Rubyをやった方がメリットがあるんじゃないかなーと思う。大体、これだけWebフレームワーク全盛の時代で、どの言語ならWebアプリケーションが書きやすいとかもはや存在しないでしょう。

あと、リッチなUIを持ったRuby製アプリケーションが沢山出てほしいな、とも思うので、デザイン畑の人たちにRubyがもっと広まってほしいと思います。

落ちは無いし何か炎上しそう……。

 

Last.fmとTwitterを連携させてみた / “bolbotsbot” 紹介

技術と全然関係ない話から始めるが、筆者うづらはUSローファイとカンタベリ系プログレが好きで、その両方のテイストを持った稀有な日本のバンド「箱庭の室内楽 (ex. bolbots)」を応援している。

なので、彼らの曲をLast.fmから引っ張って勝手にTwitterにポストするBot Programを作成しました。

使用したライブラリ

ソース

Read the rest of this entry »

 

Ruby+heroku.comを利用して、コストと手間をなるべくかけずにサイトを作る: draft

目標

小規模サイト(中小企業のコーポレートサイトを想定)をほとんどタダみたいなコストで、なるべく手間をかけずに作れないか?

方法論

前提

Rubyを使いたい。

ホスティング

heroku.comを利用する。

  • Pros
    • No Cost(“Blossom” Planならば)
    • Ruby使用可能
    • デプロイが楽 – git
    • 最低限のプランとはいえ、クラウドなので可用性は保証される
    • 独自ドメインも使える(「年」額で500円とかなので、ここは買ってしまうのがいいだろう)
  • Cons
    • Rubyしか使えない
    • バックエンドはほとんど手をかけられない
    • “Blossom”で使えるDB容量はわずか「5MB」
      • 月15ドルで20GBにアップグレードできるけど、その額を払うならVPSを使いたくなる。。
    • レイテンシは時々気になる程度

CMS

Ruby on Rails製の二つのアプリケーションが選択肢になる。

  • Radiant CMS
    • 多機能CMS
    • 割とカスタマイズできる
    • 日本語化はそこそこ(それも、0.9.0限定)
    • CMSで使うタグの追加程度なら楽にできそう
    • エクステンション豊富
    • 0.9.0はまだ安定感にかける(特にエクステンションの対応状況)

まとめ

5MBの制約があるので、あまりに大規模だったりあまりに画像を使用するサイトは無理だと思う。でも、普通にコーポレートサイトなら出来るんじゃない? って思ったりもする。5MBつっても素材とかは入らないわけだから。。

GAEとかの方が楽だったりするんかいなー。。。とも思うけど。RadiantやTypoはある程度ハックする前提で。

次回からは、実際に構築してみる。と言うか、その前にTypoを試したりRadiantを試した感想とかを書く。

 

Ubuntu 10.04(64bit)では何か知らんけどRubyODBCでエラーが出る

INTERN (0) [RubyODBC]Cannot allocate SQLHENV

とか言って接続できません。すげー困ってました。

The only thing that worked was 0.9995-1 from the archives. I’m not sure if it has ever been done but the best way to fix this regression might be to use the older version.

LaunchPadではこう言っていて、僕もまったくその通りに思うので微妙なんですけど、hardy(!)のlibodbc-ruby1.8(0.9995-1)を入れることで解決しました。

(※ 一応、Ruby-ODBCの公式から0.9995を落としてコンパイルしても、同じエラーが出ました。。)

1
2
wget http://kr.archive.ubuntu.com/ubuntu/pool/universe/libo/libodbc-ruby/libodbc-ruby1.8_0.9995-1_amd64.deb
sudo dpkg -i libodbc-ruby1.8_0.9995-1_amd64.deb

aptitudeで入れるunixodbc(-dev)や、gemのdbi、dbd-odbcには関係のないバグのようなので、その辺は普通に入れていいと思います。

あと、selectできることを確認しただけだったりするので。。。複雑なことをしようとするとやっぱり落ちるかも。

* * *

そうそう、Ruby Enterprise Editionなら何の問題なく、最新版で接続できた、なんて情報が上記LaunchPadにはあります。僕は試してないですけど(環境が出来上がってる状態で、Ruby自体を切り替えるのは大変……)。

 

Tumblrでシンタックス・ハイライトを使う

これで、Tumblrをあたかもgistのようなコードコピペストックサービスとして使えます(本当か?

やり口

(1)今回はSHJSを使います。SHJS – Downloadから、使用する*.jsと*.cssを落とす。僕はsh_golden.cssってのを使った。落としたら適当なあなたの公開サーバにアップロードしとく。

(2)Tumblrのダッシュボードから、Customize→Themeを選ぶ。

(3)「Use custom HTML」ってのをクリックしてヘッダとかをいじる。具体的には、

</head>の直前あたりに、JavaScriptとCSSをロードするタグを挿入。

1
2
3
4
5
6
7
<script type="text/javascript" src="http://udzura.jp/shl/sh_main.js"></script>
<script type="text/javascript" src="http://udzura.jp/shl/sh_html.js"></script>
<script type="text/javascript" src="http://udzura.jp/shl/sh_xml.js"></script>
<script type="text/javascript" src="http://udzura.jp/shl/sh_css.js"></script>
<script type="text/javascript" src="http://udzura.jp/shl/sh_ruby.js"></script>
 
<link type="text/css" rel="stylesheet" href="http://udzura.jp/shl/sh_style.css" />

そしてbodyタグのonloadに追記。

1
<body onload="sh_highlightDocument();">

(4)普通にSAVE。

*テーマを変えるときはその都度(2)~(4)を繰り返してね!

コードスニペットを投稿するとき

(1)Textを選ぶ。

(2)右上の「HTML」ってボタンをクリックする。そしてpreタグは自力で

1
2
3
<pre class="sh_ruby">
  here_is = YoueCode.new
</pre>

*/preが大文字なのは、WordPress側のシンタックスハイライトプラグイン都合です。。

(3)「Update」で反映。

(4)そのまま編集せずにSave

例えば

こんな風になります。

テーマによってはJavaScriptの何らかの競合が起こり、できないかも。がんばって!