- 1 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 09:11:41 ]
- LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■前スレ 【Lua】組み込み系言語総合【Squirrel】 pc12.2ch.net/test/read.cgi/tech/1205208141/ ■過去スレ その3 pc11.2ch.net/test/read.cgi/tech/1160799232/ その2 pc8.2ch.net/test/read.cgi/tech/1063711237/ その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html
- 524 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 14:49:37 ]
- JIT付き静的型付けスクリプト言語
穴場だから誰か作れば 有名になれるかもよ
- 525 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 15:10:52 ]
- >>524
すでにあるっちゅうねん。 .NET Framework向けだがな。
- 526 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 15:54:13 ]
- >>.NET Framework向けだがな。
駄目じゃん
- 527 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 16:18:55 ]
- 作りたいと本気で思ってる俺が来ましたよ
もし作るならスクリプトで定義したクラスのインスタンスがC++から簡単に作れて、マルチスレッドとか使って同時に複数のインスタンスを参照してもおかしくならない仕様にしたいな
- 528 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 16:46:03 ]
- つAngelScriptJIT
ただしやり方は不明。
- 529 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 18:52:02 ]
- LuaJIT ってなかったっけ?
- 530 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:09:51 ]
- Luaは静的じゃないでしょ
- 531 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:18:30 ]
- ああごめん、静的を見落としてた
- 532 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 13:59:21 ]
- luaのlua_pcallのerrfncが呼ばれたときに、元のエラーメッセージとは
別にソースファイル名、行番号を収集する場合なんですが、 lua_getstackのレベル指定で、1から++しながら順にたどって 最初にcurrentlineの値が-1以外になったレベルがソースファイルの 階層と判断して問題ないでしょうか?
- 533 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 15:45:53 ]
- メンバアクセスの:と.ってどう違うの?
- 534 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 17:27:09 ]
- .が通常のメンバアクセスで、:でアクセスする場合は
v.(v ,〜 に展開される。 例: v:open(arg) -> v.open(v, arg)
- 535 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 17:53:43 ]
- d
- 536 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:04:12 ]
- >>17 問題1
使用言語: R f <- function (n) {substr("abcdefghijklmnopqrstuvwxyz",1,n)} > f(6) [1] "abcdef" > f(30) [1] "abcdefghijklmnopqrstuvwxyz"
- 537 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:06:04 ]
- すみません。
書くところを間違えました。 ごめんなさい。
- 538 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:06:48 ]
- 聞かれてないけどついでに補足すると.は[]に展開される
v:member(arg) -> v.member(v, arg) -> v[menbe](v, arg)
- 539 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:09:23 ]
- v['menber'](v, arg)
- 540 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:17:00 ]
- へー
じゃあメンバアクセスのたびにマップ検索してんのか 遅くならないのかな
- 541 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:28:37 ]
- 空想具現化プログラミングというところから落としたlua5_1_3_Win32_mbenc_a2.zipを展開したところbin2c5.1.exeにウイルス検知ソフトが反応したんですが、これは大丈夫なんでしょうか?
- 542 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:31:42 ]
- >>540
そりゃ勿論遅いだろうさ
- 543 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:41:44 ]
- メンバだけの話じゃないだろうし。
変数名からなにから全ての識別子の判定で毎回どこかのテーブル見てるはず。
- 544 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:59:47 ]
- >>541
カスペルスキー系の誤検出のはず。 bin2cとか別に普段使うものでもないから削除しておいても良いかと。
- 545 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 19:20:09 ]
- >>543
ローカル変数は実行時はテーブル見ない。例えば、 local a = b * c + d を local a = b * c a = a + d に変えても速さは変わらない。
- 546 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 19:37:56 ]
- >>544
ありがとうございます安心しました
- 547 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 23:33:25 ]
- 静的型付けならPawnいかがかな?
- 548 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 22:05:16 ]
- ちょっと確認したいんですが
lua_registerで登録した関数を呼び出すときには新しいスタックが毎回生成される、したがって Glue関数内部ではlua_gettopでスタックの数を確認する必要なしにスタックの1番目が最初の引数、2番目が・・・としてよい 同様に、返り値もスタックの1番目が最初の返り値、二番目が・・・としてよい(何も考えずにスタッククリアして返り値を積めばいい) これは正しいですか?
- 549 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 00:52:46 ]
- うむ
- 550 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 06:17:28 ]
- >>524
ActionScript 3.0 がそっちのほうを目指しているんじゃないかな。 いちおう Flex SDK はオープンソースらしいから、 自分のプログラムに組み込むこともできるかも。 >>540 Lua Performance Tips www.lua.org/gems/sample.pdf for i = 1, 1000000 do local x = math.sin(i) end runs 30% slower than this one: local sin = math.sin for i = 1, 1000000 do local x = sin(i) end
- 551 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:46:34 ]
- Luaについて質問です。
10進数で書かれた文字列、たとえば「\130\160\130\162\130\164」は Lua上で「あいう」となりますが、外部ファイルに記述したものを io.linesで取り出したものだと、コード列が返ってきてしまいます。 これを通常の文字列に変換したものとして使いたいのですが、どうしたらいいのでしょうか。
- 552 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:50:08 ]
- >>549
ありがとうございます
- 553 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 22:20:40 ]
- >>551
多分C側でバイナリに変換しないとダメじゃないだろうか。 Luaの標準ライブラリでももしかしたら出来るかもしれないが、 Cの方がてっとり早いだろう。
- 554 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:27:17 ]
- SquirrelのほうがLuaよりゲーム向けなんかな?
どっちも知識なしだったらSqから勉強でいいのだろうか
- 555 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:54:06 ]
- >>554
どちらも汎用スクリプトだから処理系単体ではどちらがよりゲーム向けということはない。 周辺ライブラリやバインダの入手性や使い勝手の差はあると思うけど。
- 556 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 01:51:00 ]
- >>554
速度がLua>Sqで結構大差あったりするんで ttp://ja.wikipedia.org/wiki/Squirrel のLuaとの違いに強い魅力を感じるんでなければLuaがオススメ。 特に知識なしなら、Luaのほうが日本語資料が充実してるんで勉強しやすいかと思う。
- 557 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 02:00:16 ]
- lua は文法がな……
- 558 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 08:15:39 ]
- 日本語は文法がな・・・
- 559 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 09:41:13 ]
- AngelScript|Д゚)ジー
- 560 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 11:48:28 ]
- >>551
loadstring をつかえばできるよ。 local str = "\130\160\130\162\130\164" -- io.lines で取り出した文字列 local decode = loadstring("return \"" .. str .. "\"") print(decode())
- 561 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 15:29:08 ]
- >>449
コンパイラがOSロケールに依存してるから英語にしましょうなんて愉快すぎるわ 他のロケール依存アプリ全部道連れにする方法なんぞ万人に薦められんだろ
- 562 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 16:39:37 ]
- 問題が起こるのはShiftJISを決めうちして作っている一部の馬鹿アプリだけだろ。
なぜ全部とか間抜けな話になるのか、頭の悪い奴の考えはさっぱり分からん。
- 563 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 16:40:53 ]
- バカアプリの代表が Visual Studio って話じゃないのん?
- 564 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 18:39:01 ]
- そんな事よりお前ら、GameMonkeyについて語るんだ。
- 565 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 18:47:34 ]
- winアプリにスクリプト組み込む場合、メッセージ(WM)処理どうしてる?
自分はマルチスレッドにしてるんだけど、WM_CLOSE受けたときに スクリプトが走ってたら、スレッド他殺していいものなのかどうか。
- 566 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 18:57:22 ]
- 保存したいデータがあるかどうかで判断しね?
- 567 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 19:00:15 ]
- データ保存しない場合はどんなタイミングで落としても問題無いってこと?
- 568 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 19:16:24 ]
- スクリプトを複数スレッドで別々に動かす状況がわからんな…
Luaだと、Lua_yieldでスクリプトの処理を一時停止させて次のスクリプト、という感じではダメなの?
- 569 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 19:43:49 ]
- それだとスクリプト書く側に停止を意識させないとダメですよね?
- 570 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 22:23:10 ]
- スクリプト側にメインループを置いて処理してるの?
- 571 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 00:38:27 ]
- winmainでメッセージループ、別スレッドでスクリプト。
スクリプトは入力待ち(マウス等)で関数無いで停止することがあって、 その間にメッセージループ側にWM_CLOSEとか来た場合にどうやって 終了させるかで色々迷っている、と。 スクリプトで割り込みを意識するような書き方は手間なので、 スレッドごと落とせると楽なんだけど、lua_Stateってスレッドごと 落とした後にlua_closeに渡して大丈夫なのか?ってのが疑問な わけですよ。 lua_call系にステップ実行があると良かったんですがね。 ステップ数も指定できたりするのが。
- 572 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 09:26:27 ]
- >>571
スレッドを強制終了したら、基本的に何が起こってるか不明というか たとえばガベコレの途中だったりしたら(その他でもあらゆる不明な原因で) 異常な状態になるからやめたほうが良い。 手段としては、別スレッドのほうの処理をコルーチンで構成しておいて、 コルーチンがyieldしたタイミングでコルーチン呼び出し側のコードで 終了チェックするようにする。 あとウエイトが絡む関数については、待ちループで終了チェックをするようにして、 終了フラグが立っていたらyieldを起こすようにする。 とかそんな感じじゃないの。
- 573 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 09:30:46 ]
- >>571
無限ループ防止という観点では、デバッグフックで1行実行ごとに関数呼ばせて、 その中でカウンターアップしていって、カウンターが一定の数になったらyieldとかいう手もある。はず。
- 574 名前:デフォルトの名無しさん [2009/12/03(木) 11:24:54 ]
- スクリプト側の待ちループの中でlua_yieldを呼び出すグルー関数を呼びだすようにしておき、
メッセージ処理の待ちの間、具体的には MSG *lpMes=&m_Msg; ZeroMemory( lpMes, sizeof(MSG) ); while(lpMes->message!=WM_QUIT) { if(PeekMessage(lpMes,NULL,0,0,PM_REMOVE)) { TranslateMessage(lpMes); DispatchMessage(lpMes); } else { 〜〜〜 } } の、〜〜〜の部分で1回目はlua_call、2回目以降はlua_resumeでスクリプトを呼び出せばいいような気がする。
- 575 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 11:28:06 ]
- >>565
他のスレッドはいきなり殺したらあかんでしょ。 メインスレッドからフラグたてて、よしなに自殺
- 576 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 11:29:49 ]
- てか、この辺のマルチスレッドの話ことってLua関係なくないか?
- 577 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 11:44:10 ]
- >>571
(before) 入力待ち(マウス等)で関数内で停止する (after) yieldを使い、外で停止する 入力が来たらresumeで関数内に戻る WM_CLOSEが来たらresumeしないまま終了
- 578 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 12:59:28 ]
- lua関係ないよな。普通にC++だけで書いてても全く同じだ。
まあ、lua (ないしは squirrel) なら、yield のタイミングで同期を とるようなコードにしておくのが無難ってのはその通りだと思われ
- 579 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 20:42:03 ]
- >>573
なるほど、それならステップ実行できますね。 >>他のレスくれた方々 具体的に書いた例だとマルチスレッドになってるけど、根本は WindowsでLua使うときにメッセージ処理をどうしてるかって話ですから。 避けて通れないだろうから、実際に組み込んでる方々はどう対処してるかが 気になったもので。
- 580 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 22:32:02 ]
- >>579
シングルスレッドモデルで組んであれば処理の流れ的に問題になるようなことは別にない あとはオブジェクトをどう管理してるかの問題。 ウインドウのインスタンスを lua 配下にしてある(生成もlua側から)なら、それぞれのウインドウの メッセージ処理部から、lua でのインスタンスの適当なメソッド (onCloseとか) をイベント的に callback させて閉じるかどうかをスクリプト側に判定させればいいだろう ウインドウのインスタンスがグローバルなら、lua 側も同様に グローバルメソッドをイベントとして呼び出して判定させるように組めばいい
- 581 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 18:14:29 ]
- Luaのスタックとか文法とかにいまいち馴染めないからエンゼルスクリプトをやってみようかと思ったが日本語資料がなさすぎて泣いた
- 582 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 18:28:07 ]
- >エンゼルスクリプト
なんか可愛いな
- 583 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 18:39:34 ]
- つ英文マニュアル
結構読みやすいよ。 あと、WIPのtest_featureに入ってるサンプルもわかりやすい。
- 584 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 20:37:59 ]
- エンゼルスクリプトって速度どれくらい?
- 585 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:19:06 ]
- >>584
>>347
- 586 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:19:32 ]
- >>584
>>347
- 587 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:20:21 ]
- おい、結婚するか
- 588 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:46:45 ]
- そうだな。結婚すると良いよ。
- 589 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 21:49:36 ]
- じゃあ俺が息子になろわ
- 590 名前:551 mailto:sage [2009/12/04(金) 21:52:36 ]
- >>553,560
回答が遅くなってすみません。 >>560さんの方法で望みの動作になりました。 お二方とも、本当にありがとうございました。
- 591 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:34:54 ]
- >>581
tolua++を使えばいいと思います。 ttp://lua.mine.nu/w/LuaBookSupport
- 592 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:36:01 ]
- 日本語資料が無いから辛いと書いてるのにそんなの勧めるなよw
- 593 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:46:07 ]
- Pawn何で人気ないん?
- 594 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:49:03 ]
- Luaの入門書読み終わったけどユーザーデータについてあんまし書いてなかったぜ
ポインタ渡せないとオブジェクトの操作ができないジャマイカ
- 595 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 23:49:50 ]
- Luaの入門書ってどれのこと?
- 596 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 00:06:50 ]
- 入門Luaプログラミングというやつなんだけど、ちょろっと1Pくらいしか説明がなくてわかりにくかった
- 597 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 00:21:15 ]
- luaといえば、下の二つのスクリプトを順に実行すると、
--a.lua local v = 1 local function f() print(v) end fv = f --b.lua fv() 結果 1 感じになるんだが、関数の実体もガベコレされてるのかな? 関数内で使ってるlocal変数もコピーかリファレンスを持つことになると?
- 598 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 00:32:19 ]
- >>597
Luaはよく知らないが、単にグローバル変数を 2つのスクリプトで共有してるだけなんじゃね?
- 599 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 05:19:56 ]
- >>597
fv が f をつかんでいる間はつねに f のなかから v が参照可能だよ。 Lua の関数も参照されなくなればもちろんガベコレされる。 > 関数内で使ってるlocal変数もコピーかリファレンスを持つことになると? Lua ではこういう変数のことを upvalue と呼んでますが、 必要に応じてスタックからヒープへコピーされるみたい。 www.lua.org/docs.html ここにある The implementation of Lua 5.0 っていう論文に、 イラストつきで説明があります。
- 600 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 06:44:46 ]
- >>599
完全な回答をありがとう。凄くすっきりしました。 この辺の仕様はとても良くできてるなと思いますね。
- 601 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 07:34:58 ]
- closureみたいなもん?
- 602 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 08:39:50 ]
- >>601
そう。レキシカルクロージャです。
- 603 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 11:28:25 ]
- すっきりとした仕様だね。
Schemeライクというか。
- 604 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 12:22:26 ]
- squirrel だと同等のものは「Free variables」と呼ばれててこちらは対象の明示指定が必要だね
- 605 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 14:12:22 ]
- 未踏ユースにLua高速化が採択されているんですね。
スクリプト言語Luaの高速化と省メモリ化 (2009年度上期未踏ユース) www.ipa.go.jp/jinzai/mitou/2009/2009_1/youth/gaiyou/sk-3.html hogelog/lua (ソースコード) github.com/hogelog/lua [lua]記事一覧 - hogeなlog (開発者ブログ) d.hatena.ne.jp/hogelog/archive?word=*%5Blua%5D
- 606 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 15:06:08 ]
- >>605
エエー、あんな古臭い言語を今更高速化するのが予算つくのか。 LuaJITだってあるのに。
- 607 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 15:20:44 ]
- ヒント: 電気通信大学
- 608 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:15:48 ]
- >>606
ところがLuaJITのGCにはあんま手が入ってはいないんだ。
- 609 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:41:58 ]
- こんなんで採択されるのかよw
ローカルなスクリプト言語 高速化してたら切りが無いぞ
- 610 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:43:19 ]
- 本家と連絡取らずにやってるんなら残念な結果になる可能性が高い気がする。
- 611 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:45:53 ]
- よーしじゃあパパAngelScriptを高速化しちゃうぞー
- 612 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 17:56:48 ]
- C言語そのままスクリプトにしたようなのってありますか?
- 613 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 18:10:43 ]
- >>612
文法のことならSquirrelとかPythonがある程度近いと思うがそのまんまってのはたぶんない
- 614 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 18:14:43 ]
- >>612 csl.sourceforge.net/csl.html
- 615 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 18:17:18 ]
- >>612
C++だけど、CINT
- 616 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 23:16:35 ]
- クロージャとコルーチンさえあればもうCでいい気がしてきた俺には十分魅力的だなぁCINTわ
- 617 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 08:17:06 ]
- CINTにクロージャとかコルーチンとかあったか?
- 618 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 08:25:09 ]
- >>616
それだったらGoのほうがいいんじゃ。
- 619 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 11:33:15 ]
- Cっぽい文法ならAngelScriptでいいじゃない
- 620 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 11:25:54 ]
- pawnとgoとgamemonkeyのスルーっぷりw
- 621 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 11:32:15 ]
- C言語みたいなプログラム書きにくい言語でスクリプト記述したいとか、どんなマゾよ?
- 622 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 11:34:23 ]
- 世の中、なにか一つ習得するとそれにしがみつくのが習性という猫もいるんだ。
- 623 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 17:37:44 ]
- >>621
これってたまに見かけるが、Cってそんなに書きにくいか?
- 624 名前:デフォルトの名無しさん mailto:sage [2009/12/07(月) 17:49:32 ]
- >>623
慣れだよ
|

|