[#46143] るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果 — eiichi_maekawa@...
62 messages
2009/07/02
[#46144] Re: るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果
— KIMURA Koichi <kimura.koichi@...>
2009/07/03
木村です。
[#46153] Re: るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果
— "NARUSE, Yui" <naruse@...>
2009/07/03
成瀬です。
[#46165] Re: に関する1.8.6→1.8.7または、1.9へのバージョンアップ
— eiichi_maekawa@...
2009/07/05
前川です。
[#46189] Ruby MySQL テーブル一覧の取得要領
— eiichi_maekawa@...
2009/07/08
前川です。
[#46302] rubyのクラス内のメソッドの使用について
— "前川 映一" <eiichi_maekawa@...>
2009/08/20
前川です。
[#46281] rubyの変数の扱いについて
— "前川 映一" <eiichi_maekawa@...>
2009/08/17
前川です。
[#46283] Re: rubyの変数の扱いについて
— "(株)ネットフォレスト 植田裕之" <ueda@...>
2009/08/17
植田と申します。
[#46284] Re: rubyの変数の扱いについて
— "前川 映一" <eiichi_maekawa@...>
2009/08/17
前川です。
[#46286] Re: [ruby-list:46284 ]_Re:_rubyの変数の扱いについて
— 詫間 陽介 <yosuketakuma@...>
2009/08/17
変数宣言は無いですね.
[#46289] Re: [ruby-list:46284 ]_Re:_rubyの変数の扱いについて
— "前川 映一" <eiichi_maekawa@...>
2009/08/17
詫間さん ありがとうございました。
[#46183] 1.8.6から1.8.7または、1.9へのバージョンアップ及びrailsのバージョンアップについて
— eiichi_maekawa@...
2009/07/07
前川です。
[#46190] Re: 1.8.6から1.8.7または、1.9へのバージョンアップ及びrailsのバージョンアップについて
— okkez <okkez000@...>
2009/07/08
okkez です。
[#46303] rubyのメソッドの切り替えについて
— "前川 映一" <eiichi_maekawa@...>
2009/08/20
前川です。
[#46304] Re: rubyのメソッドの切り替えについて
— "NARUSE, Yui" <naruse@...>
2009/08/20
成瀬です。
[#46305] Re: [ruby-list:46304 ] Re: rubyのメソッドの切り替えについて
— "前川 映一" <eiichi_maekawa@...>
2009/08/20
成瀬さん
[#46146] 文字変換 — eiichi_maekawa@...
16 messages
2009/07/03
[#46147] Re: 文字変換
— Hidetoshi NAGAI <nagai@...>
2009/07/03
永井@知能.九工大です.
[#46148] Re: 文字変換
— eiichi_maekawa@...
2009/07/03
前川です。
[#46149] Re: 文字変換
— Hidetoshi NAGAI <nagai@...>
2009/07/03
永井@知能.九工大です.
[#46151] 文字から16進への変換方法について
— eiichi_maekawa@...
2009/07/03
[#46152] Re: 文字から16進への変換方法について
— rubikitch@...
2009/07/03
From: eiichi_maekawa@mhi.co.jp
[#46154] メソッドArgumentのParenthesisについて — Shingo Hagiwara <rindou@...>
本当にくだらない質問で申し訳ありません。
10 messages
2009/07/03
[#46155] Re: メソッドArgumentのParenthesisについて
— rubikitch@...
2009/07/03
From: Shingo Hagiwara <rindou@gmail.com>
[#46156] Re: メソッドArgumentのParenthesisについて
— "5.5" <5.5@...>
2009/07/03
5.5 です。
[#46178] ruby-chasen in 64bit machine — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
きしもとです
4 messages
2009/07/07
[#46205] set_encoding についての質問 — 大田黒俊夫 <toshio.otaguro@...>
初めて投稿します.Ruby 1.9.1 を使っていて,文字コードの扱いに慣れようと四苦八苦しています.
5 messages
2009/07/12
[#46216] ファイル出力の動作について — "Jun'ya Shimoda" <jun-shimo@...>
下田と申します。
6 messages
2009/07/16
[ruby-list:46139] Re: 足し算ゲームサーバー
From:
Hidetoshi NAGAI <nagai@...>
Date:
2009-07-02 08:18:59 UTC
List:
ruby-list #46139
永井@知能.九工大です.
From: 牛坂 博則 <ushizaka@aecl.ntt.co.jp>
Subject: [ruby-list:46136] 足し算ゲームサーバー
Date: Thu, 2 Jul 2009 13:19:44 +0900
Message-ID: <4A4C3533.3050502@aecl.ntt.co.jp>
> 牛坂ともうします。"ruby アプリケーションプログラム"を勉強中です。このな
> かの5.6.5章の1対1の非同期通信のところをいま取り組んでいます。
その部分の著者です.
> serverを立
> ち上げて接続しても、途中で止まってしまいます。ちなみにwindows XP上でコマ
> ンドプロンプトより実行しています。
原因は,なかむら(う)さんがおっしゃった通りだと思います.
執筆時点では Linux 環境でやってたので,
当時は Win 環境でのその問題に気付いていませんでした.
ごめんんさい.
それだけでは何なので,応急処置的な対策を少々.
同書を使っての勉強中であれば,
もしかすると Ruby/Tk も動く環境になさっているかもしれません.
そうであるなら,コマンドプロンプトの代わりに
Ruby/Tk で作ったダミーのコンソールを使うことで
ある程度までは回避できると思います.
# コマンドプロンプト上での入力を使いませんので,
# thread 切替えをブロックしないはずです.
以下にソースを示します.
この DummyCons は手抜きで作成したものなので,細かい問題が多々存在する上,
クライアントスクリプトで使っていた print と gets にしか対応していません.
$stdin, $stdout, $stderr に設定できる程度の汎用的なものにするには
もうちょっとまじめに頑張る必要があります.
-------------------------------------------
require 'tk'
class DummyCons
def initialize
@v = TkVariable.new
f = TkFrame.new.pack(:fill=>:x)
TkLabel.new(f, :text=>'>> ').pack(:side=>:left)
TkButton.new(f, :text=>'reset EOF',
:command=>proc{reset}).pack(:side=>:right)
@e = TkEntry.new(f).pack(:side=>:left, :fill=>:x, :expand=>true)
@t = TkText.new(:takefocus=>false).pack(:expand=>true, :fill=>:both)
@st = ""
@e.bind('Return'){
s = @e.value; @e.value = ""
@t.insert(:end, "#{s}\n")
@v.value = s
}
eof_ev = TkVirtualEvent.new('Control-z','Control-d','Destroy')
@e.bind(eof_ev){@st = false; @v.value = ""}
@e.focus
@th = Thread.new{Tk.mainloop}
end
def print(s)
begin
@t.insert(:end, s)
@t.see(:end)
rescue
# ignore error
end
end
def gets
@v.wait if @st
(@st)? @v.value: nil
end
def reset
if @th.status
@st = true
self
else
raise RuntimeError, "#{self.inspect} is already destroyed"
end
end
end
cons = DummyCons.new
# ↑ここまでがダミーコンソール
#
# ↓ここからがクライアントプログラムをちょっとだけいじったもの
# "print msg" を "cons.print msg" に,
# "STDIN.gets" を "cons.gets" に変更している
require 'socket'
#STDOUT.sync = true
host = if ARGV[0] then ARGV[0] else 'localhost' end
port = if ARGV[1] then ARGV[1] else 12345 end
socket = TCPSocket.open(host, port)
th_get = Thread.start {
while msg = socket.gets
# print msg
cons.print msg
end
}
th_ans = Thread.start {
# while msg = STDIN.gets
while msg = cons.gets
socket.write msg
end
#sock.shutdown(1)
}
th_get.join
th_ans.exit if th_ans.alive?
socket.close
-------------------------------------------
--
永井 秀利 (nagai@ai.kyutech.ac.jp)
九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門