そういえばDreamHostのPassengerでRackだけで動くのか試してなかった。

% tree
.
|-- config.ru
|-- public
`-- tmp

2 directories, 1 file

最小限。

% cat config.ru
app = proc do |env|
    return [200, { "Content-Type" => "text/plain" }, "ζ゚<I can fly."]
end
run app

icanfly

http://i.can.fly.komagata.org/

動いた。こりゃ便利。

プロジェクト完了で伊香保温泉行ってきましたー。

シュウマイ弁当

しゅうまい弁当うめー。

081205_103642

尋常じゃない程過疎っててのんびりできました!

githubって色んな機能がありますが、好きな機能のひとつが、READMEを置くと勝手に表示してくれる機能。(README.rdocとかでもいいみたいです)

github readme

これってRailsプラグインだと”“init.rbにプラグインインストール後にコンソールにREADMEを表示するように書いておく”“なんて慣習もあるので1人3役みたいでお徳な感じです。

プラグインやライブラリを探す時なんかはどうせプログラマー向けなんでREADMEさえ出てれば必要十分で、Wikiすら見なくていいので便利です。

まだこのサイトへのコメントの実装方法を考えています。

調べていたところ、JS-Kitのやり方にとても感心しました。

JS-Kit: Commentsをカスタマイズする

RSSをセットアップする。

以下のURLを使えば、RSSを通じて全部のコメントがアクセス可能になります。:

http://js-kit.com/rss/your.site.com/path

pathが、有効なpermalink属性あるいは有効なpath属性の値のどちらかである場合。

別のやり方として、DNSエントリーを設定する方法もあります。:

js-kit.your.site.com. IN CNAME js-kit.com. 

シンプルなのにスゴイ分散システムです。DNSとHTTPで大抵のことが解決できるんですな。

さっそくJS-Kitを使ってみたんですが、どうも機能が多過ぎて気に入らないところが色々。単に見た目とかの問題なんですが。最初はシンプルだったんでしょうが、商売にしようとするとこうなっていくんですかね。

自分で似たようなものを作るか・・・? いや、しかし・・・。

このサイトもAutoPagerizeに対応してみた。

面倒かと思ったらwill_paginateプラグインは最初からrel=”“next”“が設定されてるのでスゴイ楽!やってよかった。

このサイトのコメントの実装についてまだ悩み中です。

テキストの抽象化 – p0t

構造化/非構造化テキスト

テキストには構造(親や子となる何か)を持つものと持たないものがあるようです。一般的なブログコメントはブログエントリを親に持つテキストということになる。

実際に実装しようとすると、テキストを構造化していない(構造化テキストを扱わない)ことが現在シンプルでいられる一番の理由だということがわかった。

非構造化テキストと構造化テキストをわけつつ、直交性を保ったまま統合する方法を考え中です。

簡単SQLite設定

SQLiteはDBがファイルだからCapistranoで困る。

# config/database.yml
production:
  adapter: sqlite3
  database: ../../shared/production.sqlite3
  pool: 5
  timeout: 5000

productionだけsharedに置けばOK!

svnをexportにする

vi config/deploy.rb
:deploy_via, :export

ここにコメント機能を追加しようとしてまた悩んでしまった。

「コメントって何?」

テキスト/ドキュメントの定義を”“ある程度の長さと意味を持つ文の集まり”“とするならコメントもテキストだ。日頃よく扱うテキストの種類を考えてみた。

  1. ブログエントリ/日記
  2. メモ/個人Wiki
  3. つぶやき/メッセンジャーの発言/チャットでの発言
  4. コメント
  5. メール

現状このシステムで扱えるのは1と2だけだ。他のテキストも扱うには特徴を調べて抽象化する必要がある。

文書管理システム

テキストが持つデータ

  • タイトル
  • 本文(必須)
  • 作成日時(必須)
  • 更新日時(必須)
  • 可視性(プライベート/パブリック)

構造化/非構造化テキスト

テキストには構造(親や子となる何か)を持つものと持たないものがあるようです。一般的なブログコメントはブログエントリを親に持つテキストということになる。

メモやブログは基本、親を持たない。 つぶやきは時に他のつぶやきを親に持つ。(返信) メールは時に他のメールを親に持つ。(返信) チャットはスレというテキストを親に持つ。

テキストの指向性

テキストが”“誰が誰に向かって書いたのか”“という指向性の概念を取り入れると複雑化する。なぜなら、閲覧・編集権限が変化するからだ。また”“テキストの作者”“というリソースも新たに定義する必要がある。

ここは思い切って、”“作者とは名前とプロフィールで表されるテキストである”“と定義してしまえば単純化する。(匿名はAnonymouseリテラルで表現する)

各作者が使えるメソッド

認証したものはプライベートなテキストも含めた閲覧、作成、更新、削除ができる。(通常のブログポスト) 認証してないものはパブリックなテキストの閲覧、作成(POST)ができる。(コメントやメール送信)

CakePHPガイドブック
  • CakePHPガイドブック
  • 毎日コミュニケーションズ(2007-10-25)
  • 毎日コミュニケーションズ
  • 定価:¥ 3,360
  • 新品価格:¥ 3,360
  • 中古価格:¥ 2,860
  • ASIN:4839924317

これからCakePHP使うので借りて読みました。分かりやすかったです。1.2が出そうなのだとしたら読むタイミング悪かったかな?

郷に入っては郷に従え。

ディストリビューションの流儀に従ってSSL自己認証。

これでDebian原理主義者の先輩にも気に入られること間違い無し。

a2enmod ssl
a2ensite default
make-ssl-cert generate-default-snakeoil

「スネークオイルって誰ですか?」

などと質問すればポイントアップ!

# /etc/apache2/ports.conf
Listen 80
Listen 443

気を抜いてコレをapache2.confに書くと嫌われるぞ!

# /etc/apache2/sites-available/default
NameVirtualHost *:80
<VirtualHost *:80>
...(snip)...
</VirtualHost>

NameVirtualHost *:443
<VirtualHost *:443>
      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/
      SSLEngine on
      SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
      SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>

デフォルト期限の30日が嫌だったら /usr/sbin/make-ssl-cert をチェック!