Hatena::Grouparaistudy

czk-htnの日記

2010-03-13

[][] WindowsXP + Apache 2.2 + ruby-1.8.7 + fastcgi 06:59

最初に

当初 ActiveRuby で fastcgi 環境を作ろうと試みたのですが、いざ fcgi にアクセスしてみると

[Sat Mar 13 20:58:18 2010] [crit] (OS 3)指定されたパスが見つかりません。  : FastCGI: can't start (dynamic) server "C:/app/kagemai-0.8.8/html/guest.fcgi": spawn_fs_process() failed
[Sat Mar 13 20:58:23 2010] [alert] [client 127.0.0.1] FastCGI: failed to connect to (dynamic) server "C:/app/kagemai-0.8.8/html/guest.fcgi": something is seriously wrong, any chance the socket/named_pipe directory was removed?, see the FastCgiIpcDir directive
[Sat Mar 13 20:58:23 2010] [error] [client 127.0.0.1] FastCGI: incomplete headers (0 bytes) received from server "C:/app/kagemai-0.8.8/html/guest.fcgi"

とエラーがでて実行できませんでした。どうやらActiveRubyには fcgi.so が含まれていないのが原因? のようです。fastcgi のコンポーネント構成がどうなっているのか詳しくないので、fcgi.soがないことがどこに不足することにあたるのかは分かっていないのですが、gem でゴニョゴニョするのも nmake が必要だったりと敷居が高いようです。

Ruby (One-Click Ruby Installer for Windows)

RubyのWindows版バイナリは One-Click Installer を利用する。

オブジェクト指向スクリプト言語 Rubyから "Ruby 1.8.7-p249 (RC2)" を取得し、インストーラの指示に従ってインストールする。ただしインストール先は C:\app\ruby に変更した。

追記(2010-03-13)

Rubyのホームぺージにある One-Click版 には fcgi.so が含まれていない。代わりに RubyForge にある"One-Click Installer (old)"(ruby186-27_rc2.exe)をインストールする。


fcgi

fcgiをインストールする前に、gem update --system しておかないとエラーになる。

C:\Documents and Settings\Owner>gem -v
1.3.5
C:\Documents and Settings\Owner>gem update --system
Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.6
Updating RubyGems to 1.3.6
Installing RubyGems 1.3.6
RubyGems 1.3.6 installed

** Apache

*** conf/extra/httpd-fcgi.conf
>|apache|
LoadModule fastcgi_module modules/mod_fastcgi-2.4.6-AP22.dll

Alias /kagemai/ "C:/app/kagemai-0.8.8/html/"
<Directory "C:\app\kagemai-0.8.8\html">
  AllowOverride ALL
  #AddHandler fastcgi-script fcgi
</Directory>
conf/httpd.conf
Include "conf/extra/httpd-fcgi.conf"

NookNook2011/12/24 09:45HHIS I sholud have thought of that!

yhywrdhhwyhywrdhhw2011/12/25 02:06YeVBfB , [url=http://ituynheqbssr.com/]ituynheqbssr[/url], [link=http://yjvzpjljoloe.com/]yjvzpjljoloe[/link], http://eqzmsfdfnfqf.com/

mgltgzhzxttmgltgzhzxtt2011/12/27 01:26hWOFwB <a href="http://cptkfjrngltk.com/">cptkfjrngltk</a>

wsfaimwsfaim2011/12/27 18:353MtRKA , [url=http://xahmnkajsawk.com/]xahmnkajsawk[/url], [link=http://ojsydkippfao.com/]ojsydkippfao[/link], http://zbrfscrujrty.com/

トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20100313

2008-01-23

[] Class.send "include" Module 06:42

  • includeはModuleに対するmixin
  • extendObjectに対するmixin (特異メソッド追加)
module MyModule
  def hello
    "Hello #{self}"
  end
end

p "aaa".extend(MyModule).hello

String.send "include", MyModule

p "bbb".hello
% ruby Module.rb
"Hello aaa"
"Hello bbb"

メソッドが定義されちる場所を考えれば明らかか

トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20080123

2007-06-13

[] mfiler2 on Panther 06:53

rubyで拡張できるmfiler2というファイラがOSXにも対応しているらしいということでPanther上でコンパイルを試みるがどうしても解決できないエラーがあり中断。

% make
g++ -o mfiler2 -I . -L/usr/local/lib -g -Wl,-multiply_defined,suppress bin/main.o bin/command.o
 bin/cmdline.o bin/shell.o bin/cmdline_completion.o bin/cmdline_alias.o bin/cmdline_history.o
 bin/cmdline_macro.o bin/dirwnd.o bin/dirwnd_attribute.o bin/dirwnd_sort.o bin/dirwnd_view.o
 bin/dirwnd_tab.o bin/menu.o bin/file.o bin/help.o bin/isearch.o bin/extra.o minato_lib/minato_lib.a
 onig-4.6.1/.libs/libonig.a -liconv -lcurses -L/usr/local/lib -lmigemo -L/opt/local/lib -lruby.1.8
 minato_lib/wkf-1.3.9/libwkf.a
ld: /usr/lib/gcc/darwin/3.3/libgcc.a(unwind-dw2.o) section's (__TEXT,__eh_frame) type S_COALESCED does not match previous objects type S_REGULAR
ld: /usr/lib/gcc/darwin/3.3/libstdc++.a(eh_personality.o) section's (__TEXT,__eh_frame) type S_COALESCED does not match previous objects type S_REGULAR
ld: /usr/lib/gcc/darwin/3.3/libstdc++.a(new_op.o) section's (__TEXT,__eh_frame) type S_COALESCED does not match previous objects type S_REGULAR
make: *** [mfiler2] Error 1

ここにくるまでにいろいろとファイルを修正しているのだがそれが原因なのかも分からず。こういう時にもうちょっとCに詳しければと思う。

トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20070613

2007-06-12

[] 3n+1 17:36

#!/usr/bin/env ruby

def calcLen(num)
    count=1
    while (num!=1) do
        #p num
        if num % 2 > 0 then
            num*=3
            num+=1
        else
            num/=2
        end
        count+=1
    end
    count
end

from=ARGV[0].to_i
to=ARGV[1].to_i

max=0
(from..to).each { |i|
    r = calcLen(i)
    max = r if r > max
}
p max


__END__
C:\temp>ruby 3n1.rb 1  10
20

C:\temp>ruby 3n1.rb 100  200
125

C:\temp>ruby 3n1.rb 201 210
89

C:\temp>ruby 3n1.rb 900 1000
174
トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20070612

2007-06-09

[] misenでのテーブル表現 07:59

先日の「テーブルみたいな繰り返し要素を表現するには独自表現がうんぬん」はこちらの全くの勘違い。本当に申し訳ない。misen-0.11.1-all.tar.gzをダウンロードした中に入っている sample/bookmark.rb にあるように(以下全文掲載)

misen-0.11.1-all/packages/misen/sample/bookmark.rb

#!/usr/bin/env ruby
#-*-ruby-*-
require "misen/style-sgml"
require "misen/util"

source = '
<html>
  <body>
    <misen:groups>
      <h1>#misen:name#</h1>
      <ul>
        <misen:entries>
          <li><a href="@misen:url@">#misen:label#</li>
        </misen:entries>
      </ul>
    </misen:groups>
  </body>
</html>
'
groups = []
groups << {
  :name => "Programming Languages",
  :entries => [
    {:url => "http://www.ruby-lang.org/", :label => "Ruby"},
    {:url => "http://www.perl.com/", :label => "Perl"},
    {:url => "http://www.python.org/", :label => "Python"},
    {:url => "", :label => "Are special characters quoted?:&<>"}
  ]
}
data = {:groups => groups}

print Misen.expand_text(Misen::STYLE_SGML_EX, source, data)

ハッシュ配列を用いれば簡単。Amrita2も同様。独自記法だったのはAmrita2のAmXMLというもので、こちらは利用必須ではないらしい。参考:no title


デザイナとの作業分担をするにはやはりPure HTMLで書けるAmrita2の方が好印象。ただちょいと複雑なページ(条件分岐とか)になるとどうしてもロジック的要素が含まれPure HTML(DreamWeaverなどのツールで崩れず編集できる)とはいかなそう。Amrita2ではrailsとの連携もできるようだが、helperを利用するためにはCDATAで囲ってあげたりする必要があったり。デザインロジックの分割ってのは永遠のテーマなのか。DWあたりはASPJSPを認識してデザイナに対して編集不可領域にする機能があった気がするけど・・・ググったがそれらしい情報は見つけられず、ここ数年さわっていないので詳細は不明。


それともテンプレートエンジンで対応できないようなサイトはメンテナンス性が低いから、そういったサイトを作っちゃいけないってのが最近の風潮なんであればそれも納得。

トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20070609