[#44562] [Q] el4r に対して(デフォールト以外の)スクリプトの位置を指定する方法 — "ITSUMI ken-ichi" <itsumi.ml@...>
いつみと申します。
4 messages
2008/02/04
[#44568] Q: 動的デバッグ方法 — "morita" <m-morita@...>
こんにちは。もりた と申します。Ruby を使い始めてまだ半年の
13 messages
2008/02/04
[#44578] Ruby初心者が作りました — Kabu and Ruby管理人 <kabu_and_ruby@...>
http://www.geocities.jp/kabuandruby/index.html
26 messages
2008/02/06
[#44582] [ANN] Rails勉強会@東京 第27回のお知らせ — "MOROHASHI Kyosuke" <moronatural@...>
各位
1 message
2008/02/08
[#44608] Pathname で拡張子を変更する — "5.5" <5.5@...>
5.5 です。つまんない話なのですが…。
6 messages
2008/02/11
[#44615] 勉強会資料 — "Hideo Konami" <konami@...>
小波です。
13 messages
2008/02/12
[#44623] CGIからCのプログラムを実行する <再送 — jtjrb049@...
はじめまして、Hiraiと申します。
7 messages
2008/02/13
[#44627] warningをエラー扱いする方法について、他 — yoshimi <kazuya.yoshimi@...>
初めて投稿させていただきます。吉見と申します。
7 messages
2008/02/13
[#44656] 書籍「オブジェクト指向スクリプト言語 Ruby」 — togawa manabu <togawamanabu@...>
こんにちわ。十河と申します。
6 messages
2008/02/18
[#44662] Net::HTTP について — 大道 裕 <daidou@...2.so-net.ne.jp>
大道です。
6 messages
2008/02/20
[#44664] Ruby で形式手法 — "tadashi nagao" <tadashi.nagao@...>
長尾といいます。
5 messages
2008/02/20
[#44673] RDoc,RDフォーマットの公式文書はどこにあるのでしょうか — konishih@...6.so-net.ne.jp
小西と申します。
4 messages
2008/02/22
[#44679] Hash#<< — "ARAI Shunichi" <arai@...>
Rubyist 九州のあらいです。
7 messages
2008/02/22
[#44691] ”Rubyアプリケーションプログラミング”の伝言サーバの使い方 — "Yangkook Kim" <yangkookkim@...>
キムと申します。オーム社から出版されている書籍、"Rubyアプリケーションプログラミング"のP267~275に掲載されている伝言サーバー&クライアントの利用の仕方がわかりません。質問を要約すると次の2点です。1、サーバーが正常に起動されているかどうかわからない。2、書き込みクライアントで入力をサーバーに送信する方法がわからない。
8 messages
2008/02/24
[ruby-list:44591] Re: Ruby初心者が作りました
From:
Hidetoshi NAGAI <nagai@...>
Date:
2008-02-09 07:22:57 UTC
List:
ruby-list #44591
永井@知能.九工大です.
脇からですが...
From: "ODA Kaname" <oda@londobell.net>
Subject: [ruby-list:44589] Re: Ruby初心者が作りました
Date: Sat, 9 Feb 2008 13:42:12 +0900
Message-ID: <45a7e4b10802082042i58558a0ewe69befde49ba60fc@mail.gmail.com>
> > * 日本語を含むコードなので一行目に「#! ruby -Ks」と入れてください。
> > 「$KCODE='s'」していますが、それでは遅いです。
> これはたとえば、
>
> #!/usr/bin/env ruby
> $KCODE = 'S'
> ....
>
> というコードでもマズいということでしょうか?
日本語 EUC の場合はスクリプト先頭で $KCODE = 'e' でも
通常は何とかなりますが,Shift_JIS の場合はまずいです.
スクリプトの実行は,スクリプト全体を読み込んで
構文を解析した後に行われます.
SJIS では漢字 1 文字を構成する 2 バイトの内の 2 バイト目が
'\' の文字コードと一致してしまう可能性があります.
例えば "表" という漢字がそうですので,
スクリプト中に title = "価格表" などとあった場合,
漢字を正しく処理しない限りは title = ".....\" という形になって
本来の文字列末尾のダブルクォートがエスケープされてしまい,
結果としてシンタックスエラーになるはずです.
だからこそ,るびきちさんが
> > なぜなら、Rubyインタプリタがスクリプトを読む時点でスクリプトの文字コードが
> > Shift_JISであることを認識する必要があるからです。
と書いていたわけです.
ただ,この shebang での記述 (#! ruby -Ks) は
require されるスクリプト/ライブラリ側に書いていても機能しません.
ですので,require を実行する親スクリプト側で
-Ks あるいは $KCODE='s' の状態にしておく必要があります.
# Ruby 1.9 では日本語周りの対応方法が全く違ってきますので,
# ご注意ください.
もちろん「このライブラリを使うときは $KCODE='s' にしてください」
とする選択肢もありますが,それを忘れてもシンタックスエラーにだけは
ならないように工夫することも不可能ではありません.
例えば
----< hogelib.rb >-------------------------------------
orig_kcode = $KCODE
$KCODE = 's'
require 'hogelib-sjis'
$KCODE = orig_kcode
-------------------------------------------------------
として,SJIS を含む部分はすべて hogelib-sjis.rb に書くという方法
(もちろん利用の際は require 'hogelib' とする) があります.
# 同じ手は,日本語を含まないメインスクリプトと
# 日本語を含むスクリプトとで分割構成する形でも使えますよね.
上の例はオリジナルの $KCODE を保持するように書いてはいますが,
スクリプトがマルチスレッドで動くように書かれている場合には
安全な形になっていませんから気をつけてください.
まぁとにかく,日本語文字列として解釈をしなければならない時点に
どの漢字コードの文字列を扱おうとしているかを
Ruby が適切に知っていさえすればいいわけです.
その視点で見さえすれば,うまくコントロールできるだろうと思います.
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp