08/03/09 21:38:31
>>274
それでちゃんとできるのは知ってる
$KCODEだとできたりできなかったりするのが不思議な昨今です
276:デフォルトの名無しさん
08/03/09 21:41:34
>>273
あ、悪い、$KCODEについては誤解がけっこう蔓延してる
$KCODE='s'はRubyスクリプトだから、これが解釈されるということは既に実行済みってことでそのファイルについては手遅れなんだ
(それ以降にrequireとかで読み込んだファイルは$KCODEにしたがって解釈してくれる)
スクリプトの先頭からShift_JISだと認識した上で読み込んで実行してくれないと困るので、普通は-Ksを使う
Windows版Rubyでも、 1行目に
#!ruby -Ks
とか適当に書いておくだけで、スクリプト解釈前(構文木生成前)に適当に解釈してくれる
スクリプトを読み込む
↓ -Ks の出番
スクリプトを解釈する
↓
プログラムを実行する
↓ $KCODE='s' の出番
277:デフォルトの名無しさん
08/03/09 21:48:52
スクリプト中に書き込まれた日本語文字列に駄目文字がなければ
$KCODE='NONE'(つまり #!ruby -Ks 無し)でも動くんだよ
駄目文字があった場合はうまく動作しない
Ruby作者さんも言っとる
URLリンク(blade.nagaokaut.ac.jp)
> まつもと ゆきひろです
> |あまりよい解決方法ではないかもしれませんが,二行目に
> |$KCODE='SJIS'
> |とするとruby -Ksと同じ挙動になると思います.
> |
> |#!/usr/bin/env ruby
> |$KCODE='SJIS'
> |
> |のような感じでどうでしょう.
>
> 残念ながら「$KCODE='SJIS'」の解釈は実行時に行われるので、プ
> ログラムの読み込みを行う時点での処理が行われません。たとえば
> ソースコードがSJISであった場合に文字列中の「表」などの処理が
> 適切に行われないことになります。
278:デフォルトの名無しさん
08/03/09 22:21:01
require したファイルの名前って一覧できますか。
279:デフォルトの名無しさん
08/03/09 22:23:14
>>278
irb> p $"
["irb.rb", "e2mmap.rb", "irb/init.rb", "irb/context.rb", "irb/workspace.rb", "irb/extend-command.rb",
"irb/ruby-lex.rb", "irb/slex.rb", "irb/ruby-token.rb", "irb/input-method.rb", "readline.so", "irb/locale.rb",
"kconv.rb", "nkf.so"]
280:デフォルトの名無しさん
08/03/09 22:25:29
>>278
$" ($LOADED_FEATURES)
281:デフォルトの名無しさん
08/03/09 22:27:09
>>279,280
さんくすです
もいっこ質問。
PHPとRubyとで、Webアプリのセッション情報を共有することはできますか。
282:デフォルトの名無しさん
08/03/09 22:28:59
>>281
テキストでファイルに保存あるいはテキストベースで遣り取り可能ならできんじゃね
283:デフォルトの名無しさん
08/03/09 22:36:49
memcachedとかでもイケそう。
284:デフォルトの名無しさん
08/03/09 22:51:30
セッション情報って別に形式決まってないよな
285:デフォルトの名無しさん
08/03/09 23:44:58
>>276
そうなのかー
$KCODE = "SJIS"を読んだ時点で設定が変更されんのかと思った
つーことはファイル毎に文字コードの設定が可能ちぅことか
>>277
ソースまで発掘してもらって申し訳ねぇ
でも2行目でやればいいってのはなんでなんだろう?
Rubyってインタプリタなんじゃないの?
読み込んだ片端から逐次実行なんじゃないの?
わかんねー
286:デフォルトの名無しさん
08/03/10 00:09:27
1.8は構文木、1.9は中間コードに一旦変換してるが、インタプリタには違いない
URLリンク(ja.wikipedia.org)
287:デフォルトの名無しさん
08/03/10 00:14:18
1. -Kオプションを解釈
2. パース
3. 実行
ソース中の「表」とかが問題になるのは2の時点、
$KCODEへの代入が実行される3の時点では手遅れ
288:デフォルトの名無しさん
08/03/10 00:32:56
>>286-287
全部一旦構文木にしてから実行すんのか?
Rubyって前方宣言じゃなかったっけ?
前方宣言だよなぁ→読み込み即実行だよなぁ→$KCODEに値代入した時点で即有効になる気がするよなぁ
っていう発想なんだが…
289:デフォルトの名無しさん
08/03/10 00:42:34
宣言してるというより実行時に作り上げてるだけ
290:デフォルトの名無しさん
08/03/10 02:01:50
なんか勝手な前提で色々考えてる感があるが…
$KCODE = "SJIS"
↑これだって単なる代入式なんだから実行されるまで作用しないだろ。
前方宣言どころかクラス定義やメソッド定義まで実行文だぞ。
291:デフォルトの名無しさん
08/03/10 06:51:16
配列自体をeachで変更したいのですが、どうしたらいいですか?
破壊的メソッドは!を付けるので
each!とかやってみたのですが駄目でした
292:デフォルトの名無しさん
08/03/10 07:00:14
>>291
要素数が同じでいいなら普通はmap!やcollect!を使う
irb> arr = [1,2,3]
irb> arr.map!{|e| e*2}
irb> p arr
[2, 4, 6]
293:デフォルトの名無しさん
08/03/10 07:04:59
>>292
おお!ありがとうございました
294:デフォルトの名無しさん
08/03/10 07:19:01
mapでの写像を覚えるとRubyコードのステキ度が100単位でアップするので超お勧め
「配列の要素をひとつずつ取り出して計算してひとつずつ格納する」から
「ある配列にブロックを作用させてもうひとつの配列を作る」という思考と記述が自然に行えるだけで超絶パラダイム
昨日までの小学生レベルのプログラムの勉強とはオサラバよオ・サ・ラ・バ
295:デフォルトの名無しさん
08/03/10 16:36:07
WinXPで音声編集をできるライブラリがあったら教えてください。
RAAを見た限りではなさそうですが。
1. 1秒以上の無音部分で音声ファイル分割
2. file1とfile2を、間に1秒無音部を入れて結合
というような事をやりたいです。