Thursday, October 26, 2006

Think of Ruby on Rails

rNoteやblosxomをいじってて気付いたが、未だにRuby on Railsがわからない。

個人的には1998年頃にrubyを初めて触ったがさっぱりわからず、後から覚えたC++ BuilderやDelphi、unix c、perl、VB、VC、shell、PHP、python、WSHなどで事足りてるため未だにrubyに慣れていない。
ruby以前に使ってたのはN88BasicとLSI C、Borland C++くらいなので、自分史の中では早い方なのだが。


並べて気付いたけど結構なプログラミング言語が使えるんだ。触った程度なのはアセンブラと、Java、C#、そしてrubyか。
そういやMacの開発が嫌だったのでCodeWarriorとRealBasicは敵前逃亡したっけ。今ごろ思い出した。

というわけでRuby on Rails を入れてみた。
やってみた感想を一言でまとめると、「めんどくさい」。

  1. VineLinuxのrubyはバージョンを上げる必要がある
  2. その為にはSRPMから作り直し&作り直しのためパッケージを入れまくる必要あり
  3. gemがRPM未対応
  4. gemで取るパッケージをいちいち調べて直接入力する必要がある
  5. インストールの場所等が未だによくわからん
この先まだ

  1. DBの設定
  2. ウェブに出す為の設定
が必要らしい。やってられん。

まあここまで我慢して設定すれば後はデザインも画面遷移もDB作成及び操作もGUIベースで出来る(所謂モデル・ビュー・コントローラ デザイン)のでウェブページを作るのが仕事なら効率的とは思う。
実際Javaのウェブアプリ開発は正直かなり辛いので、同じ事がRubyで出来るのならそちらを選ぶと思う。

ただ同じ苦しむなら、個人的にはperlベースのCatalystを使いたい。
あと個人的に上記作業は5年前なら「楽しい」と感じてたけど今やると「苦痛」と思うのでその差もあるかも

いずれにせよ今の自分なら適当なblogツールでページを作る方が良いと感じる。

Setting rNote

■作りこみ

・rNotePad
→~ynsiderz/blog//rnoteadmin/ 以下に rnotepad.(phpjs)をインスコ
→rnoteadmin.phpに以下を追加
 $plugin_list[] = 'rnotepad'; // rNotePad(061015add)
→rnotepadmin.php に「新規投稿」ボタンが増えた。コレでウェブからも入力出来る
→作ってみた。中身が空っぽ。駄目じゃん…
→rnoteadmin.skinのheaderタグ内に以下の行を追加
 lt;meta http-equiv="Content-Script-Type" content="text/javascript" /gt;
 lt;script src="rnoteadmin/rnotepad.js" type="text/javascript"gt;lt;/scriptgt;
→やっぱうまく生成されない。中身空っぽ…

→rnotepad.phpを見た。どうも$textをfputsで書き込めてないっぽい
→POSTの文字列がうまく取れていないのかも
→httpd.confの設定をいじった(以下のコメント外した)けど効果なし
lt;Directory /home/*/public_htmlgt;
lt;Limit GET POST OPTIONSgt;
Order allow,deny
Allow from all
lt;/Limitgt;
lt;/Directorygt;

→調べた結果、get_magic_quotes_gpc() の結果がfalseになる為、その後の
 「$text = stripslashes($_POST['text']);」が実行されないのが原因と判明
→俺の環境ではphp.iniで「magic_quotes_gpc = Off」になっている為全てfalseになってた模様。つまりバグ
→get_magic_quotes_gpc()がfalseの場合はstripslashesしないで単純に引き渡す処理を加えた


------------------------------------------------------------
ビフォア
if(get_magic_quotes_gpc()) $text = stripslashes($_POST['text']
------------------------------------------------------------
アフター
// 061015 change
if(get_magic_quotes_gpc()){
$text = stripslashes($_POST['text']);
}else{
$text = $_POST['text'];
}
------------------------------------------------------------

Install rNote on Vine Linux

■事前準備

・インストール
→apt-get update する
→apat-get install でapache2やPHP入れる

・apache2起動
→「Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.」というエラーでapache2が起動しない…
→「/sbin/update-alternatives --config apache2」コマンドで「2 /usr/sbin/apache2.prefork」を選択してリンクを張り直した
→起動した

・public_html有効化
→まずhttpd.confで、 「ServerName」を「mist.ynsiderz.org」とした
→その後以下のの行を有効に、の行をコメントアウトした

------------------------------------------------------------

<IfModule mod_userdir.c>
# UserDir disable
UserDir public_html
</IfModule>
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>
------------------------------------------------------------

→index.phpもdirectoryIndexに加えた
------------------------------------------------------------
 DirectoryIndex index.html index.html.var index.cgi index.php
------------------------------------------------------------

・ディレクトリ 設定
→/home/ynsiderz で、以下の作業をした
$ mkdir public_html $ chmod o+x .

■rNote設定
・rNoteインストール
 rnote75.zipを~ynsiderz/public_html/blog/ に展開
→rNote公式ページのマニュアルを参考にして、rss.rdfを(666) entries、及びその中のディレクトリ全て(info,diary,bbs)を(777) cacheディレクトリを(777) にパーミッション変更
$ chmod 666 rss.rdf
$ chmod -R 777 entries/
$ chmod 777 cache
→index.phpとしてリンク張った
 ln -s rnote.php index.php

・アクセス確認
http://192.168.0.11/~ynsiderz/blog/rnote.php にアクセス
→成功!
→「rnote_config.php」に書いてある初期ぱすわどを入れてログインする

Install Blosxom on Vine Linux

■インストール
・スターターキット「bsk113.zip」を、
 http://hail2u.net/archives/bsk.html からインストール

・パーミッションを変更
$ chmod 755 blosxom.cgi chkfullpath.cgi google.cgi
$ chmod 777 entries/
$ chmod 666 entries/first_post.txt
$ chmod 777 plugins/states/

・httpd.conf修正
 以下の行を有効にする
------------------------------------------------------------
AddHandler cgi-script .cgi

<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI FollowSymLinks
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
# <LimitExcept GET POST OPTIONS>
# Order deny,allow
# Deny from all
# </LimitExcept>
</Directory>
------------------------------------------------------------

・perlのパスを追加する
# cd /usr/local/bin
# ln -s /usr/bin/perl .

・config.cgi修正
$basedir = "/home/ynsiderz/public_html/blog";
$url = "";@css_paths = ( "/~ynsiderz/blog/style-sites.css",);
※↑は"./style-sites.css"だと「Edit」等他のディレクトリパスの場合おかしくなる
※逆にこれを利用すればカテゴリ毎にstyle変えられるかも

・確認
→http://192.168.0.11/~ynsiderz/blog/blosxom.cgiとして正常に表示出来た→/home/ynsiderz/public_html/blog/entries の下に「test」ディレクトリを掘って「text.txt」をUTF-8で書いたら正常に更新された

■懸案事項
・blosxom.cgi を index.cgi にシンボリックリンクにしたら上手く動かない(FollowSymLinksが有効でも)
→仕方ないのでハードリンクでしのいだ
→「Edit」したらおかしくなったので、mod_rewriteしないと駄目っぽい

・UTF-8のファイルが多いので.bashrcのLANGを「ja_JP.UTF-8」にしたら、WinSCPのリスト取得がおかしくなった
→ヤなので上記指定は外した

Install Vine Linux on VMware from FTP

■イメージDL
・FTPサーバ(このへん→)(http://www.ring.gr.jp/pub/linux/Vine/)で、
 最新のVineを探す
 「bootnet.img」を落とす

■イメージ書き込み
・VirtualFloppyDriveで、
 FDD(Bドライブ)を作成
 「vine32_bootnet.img.vfd」という名前のFILEをBドライブにマウントさせる
・Vineのdosutils(あればCDROM、なければ↑のFTPから落とす)のrawwitewin.exeで
 「bootnet.img」を書き込む

■インストール
・VMWareの仮想マシンのFDD設定で
 「vine32_bootnet.img.vfd」を読み込ませる

・マシンを起動させ、インストーラで以下を指定
  •  IP自動取得
  •  インストール先:FTP
  •  FTPサイト名:ring.asahi-net.or.jp (この辺→から適当に探す)(http://vinelinux.org/getvine.html#ViaFTP)
  •  VineLinuxディレクトリ:/pub/linux/Vine/Vine-3.2/i386/
  •  パスワードは適当に付ける(外部に情報流れたら嫌なので一応)
  •  インストールオプションは「最小」
■結果
・20分程で問題無く成功

テスト

テスト