【Lua】組み込み系言語総合 その2【Squirrel】 at TECH
[2ch|▼Menu]
[前50を表示]
250:デフォルトの名無しさん
09/10/14 15:03:25
>>248
肝心な部分を説明し忘れてました
私が今作ってるのは>>190の方が言われたような
luaを同時実行させてプラグイン機能を実現するもので

それをコルーチンでやるとなると実質スレッド1つで
全処理をすることになるのでCPUリソースの消費が激しく
ステートも一つだから変数の重複などが問題になって
それらを回避するためにマルチスレッド上で
それぞれスクリプトを動かす必要があるのです

しかしあるプラグインでエラーが起こり
それに関連するスクリプトを全部停止(解放)したい時
現スレッドから他スレッドのステートを閉じようとすると
強制終了につながるエラーが起きてしまう状況で

251:デフォルトの名無しさん
09/10/14 15:35:28
>>250
ちがうよー。
コルーチンというのはプログラマが入力した任意のタイミングで
動作を中断できるようにした仕組み(yield)のことであって、
それを使って複数の仕事を1スレッドで同時に実行というのは二次的なものに過ぎないんだよ。

したがって複数のスレッドで実行しても(エンジンの実装に問題が無いなら)問題ない。

で、中断されて制御が戻ってきたタイミングでそのまま開放してあげればいい。

252:デフォルトの名無しさん
09/10/14 15:54:24
>CPUリソースの消費が激しく
>変数の重複などが問題

>強制終了につながるエラーが起きてしまう状況

戦況が悪化してるが、今さら撤退する気はない
典型的なパターンですね

253:デフォルトの名無しさん
09/10/14 16:07:52
>>250
lua はスレッドセーフじゃないから、別スレッドからの制御は根本的にできないよ

コルーチンでうごかせってのは、呼び出しに lua_call を使うんじゃなくて、lua_resume と while
ループでスクリプトを駆動させて、スクリプト側では定期的に yield するようにすれば、
その区切りで安全に実行中断できるよ、ってこと。

それぞれのスクリプトはそれぞれのスレッドで立ち上げて、ほかのスレッドから停止させるときは
フラグをたてておいて、そのフラグがたってたらwhileを抜けて速やかにスレッドを自滅させる
ような書き方にする。

コルーチン駆動&記述が面倒ってことなら、裏技チックだけど、lua_sethook を使って、
関数呼び出し、ないしは行ごとに終了フラグチェックさせて、もしフラグたってたら
lua_error で速やかにスクリプトを abort させるという手もある。
残念ながらhookにユーザパラメータは存在してないので、変数かレジストリに
参照するフラグのCポインタを格納しておく、とかの小ざかしいテクが必要。

254:デフォルトの名無しさん
09/10/14 16:12:26
なるほど
Luaスクリプトを同時実行する際は
マルチスレッドのみでの制御は無理ということですか
改めてコルーチンについて勉強し直してきます
どうも助かりました


255:デフォルトの名無しさん
09/10/14 17:04:30
スレッドって名前が紛らわしいな。
関係ないかもしれないが、非推奨な手法を使いにくくするとかいう話を思い出した。

256:デフォルトの名無しさん
09/10/14 23:15:46
Luaは普通の呼び出しと、lua_yieldで一時停止して再度呼び出す場合とで使う関数が違うのが面倒くさくて逃げちゃったな俺…
AngelScriptだと同じ呼び出し方でOKなんだよなぁ…

257:デフォルトの名無しさん
09/10/15 05:43:27
>>256
coroutine.wrap をつかえば、普通の関数呼び出しと同じように resume もできるよ。


258:デフォルトの名無しさん
09/10/15 11:25:20
変態文法&バイトコードがエンディアン依存なluaを広めるのやめようぜ
手間が増えてスクリプトにしてる意味がねえよ

259:デフォルトの名無しさん
09/10/15 11:27:46
luaって、oracleにアクセスするライブラリないですか?

260:デフォルトの名無しさん
09/10/15 22:50:58
JavaからLuaを使うことってできる?

261:デフォルトの名無しさん
09/10/15 23:24:54
JavaからC言語を使うことってできる?

262:デフォルトの名無しさん
09/10/16 10:56:47
>>259
URLリンク(www.keplerproject.org)
Lua for Windows についてくるよ。使ったことないけど。
URLリンク(luaforwindows.luaforge.net)

263:デフォルトの名無しさん
09/10/16 11:14:25
>>259
というかそんな『重い』プロダクトを扱うなら、
素直にPythonやRubyなんかのライブラリの整備されたスクリプト言語使ったほうがよくなくね?

264:デフォルトの名無しさん
09/10/16 11:16:27
まあそんなこといいつつ、俺もPythonで軽量なDBラッパー探したら見つからなかったので
ActiveRecord互換のORMライブラリを自作したんだがな。

265:デフォルトの名無しさん
09/10/16 11:24:25
>>258
Luaの速度に魅力を感じてる人がなんとなく多い気がするね。
あとは、リスとかに比べるとドキュメントの多さなんかが人気の秘訣?

266:デフォルトの名無しさん
09/10/16 11:27:28
某MMORPGで使っているからだったりして。

267:デフォルトの名無しさん
09/10/16 12:17:07
ああ、別にROに限らず採用実績っていうのは使う基準に十分なるだろうし。

268:デフォルトの名無しさん
09/10/16 12:25:08
組み込みに求められるのは速度と少ないメモリ消費だから
多少なりと癖があろうとlua使っちゃうんだよね
他に比べて採用例も多い分、多言語との連携も充実してるし

269:デフォルトの名無しさん
09/10/16 12:53:36
ORMの次は、C/C++とスクリプトのマッピングだ、というアナロジーだけで
動いてるやつがいるような気がしてきた

270:デフォルトの名無しさん
09/10/16 13:04:45
>>組み込みに求められるのは速度と少ないメモリ消費だから
なんで? 別にそれは前提条件にならないと思うけど。

オレはゲームシステムを組んでいるところだが別にメモリ消費量は大して気にしてないぞ。
速度は大切だが、どうせ1スレッドでは間に合わなくなるのでマルチスレッド化するし、
ボトルネックはスクリプト部分ではないので問題ない。

271:デフォルトの名無しさん
09/10/16 13:14:26
ヤマハ RTX1200 に Lua 実行機能搭載だってさ
URLリンク(www.rtpro.yamaha.co.jp)

272:デフォルトの名無しさん
09/10/16 13:17:06
AngelScript使おうぜ

273:デフォルトの名無しさん
09/10/16 13:37:08
まぁ、なんだかんだでluaが一番なんだけどね

274:デフォルトの名無しさん
09/10/16 13:58:37
>>273
俺はそうは思わないけどな……。
触ったことあるけど文法がちょっと癖あるし、整数型がないし。

Pythonの方がよっぽどいい。

275:デフォルトの名無しさん
09/10/16 14:01:01
>>274
いやいや、個人的にではなく一般的にね
上でも出てるけど書籍や採用例が多いとかさ

276:デフォルトの名無しさん
09/10/16 16:06:28
このスレはIronPython使いと、AngelScript使いが一人ずつ常駐してるんだなw

277:デフォルトの名無しさん
09/10/16 17:20:01
こんだけで組み込み言語として使えるわけで、
URLリンク(alpha.mixi.co.jp)

でもphpに組み込みってなんだ。
URLリンク(www.mediawiki.org)
まあPECL拡張は2年前で止まってるみたいだけど

278:デフォルトの名無しさん
09/10/17 00:50:19
PHPはインタプリタを組み込めないライセンスだからなー。
この制限さえなければ今までなかった用途が色々できると思うんだけど。

279:デフォルトの名無しさん
09/10/17 15:11:07
>>278
??どういうこと?

280:デフォルトの名無しさん
09/10/17 15:38:39
>>279
うう〜ん……。問われたので改めて調べてみたが、どうやら間違った認識が一部あったようだ。
PHPインタプリタ本体はPHP License 3.01で配布されていて、
こいつは
・配布するソースコードまたはドキュメントに著作権表示、ラインセンス本文を記載すること
・PHP Groupから許可を得ずにPHPという名前を使用しないこと
(PHP Fooやphpfooはだめ。Foo for PHPはOK)
・文言の表示強制("This product includes PHP, freely available from <URLリンク(www.php.net)")

だけだな。インタプリタ自体を内蔵することは問題なさそう。
契約なしに内蔵できないのはZendライブラリなんだそうな。
(Zend Frameworkは修正BSDライセンス。Zendライブラリとは何ぞや?)

281:デフォルトの名無しさん
09/10/17 23:30:49
ここでzlibライセンスのSquirrelとAngelScriptの出番ですね!


282:デフォルトの名無しさん
09/10/18 01:54:10
luaスクリプト上でコルーチンを作成をした場合は
明確的に破棄する方法はないようなのだけどC側から

//コルーチンを実行するのスレッド(ステート)を作る
lua_State *L = lua_newthread(luaL_newstate());

//C側からコルーチンの操作

//コルーチンのスレッドを閉じる
lua_close(L);


とした場合はコルーチンを実行する為に確保されたメモリは解放されますよね?

283:デフォルトの名無しさん
09/10/18 03:54:02
そいや、Ioって言語はどうよ?
シンプル、軽量というのが売りらしいが。

284:デフォルトの名無しさん
09/10/18 09:02:18
>>282
lua_newthreadで作成したコルーチンはlua_closeしちゃ駄目だよ。
開放はGCにまかせる。>>121あたりから同じ様な質問出てるから見てみ。


285:デフォルトの名無しさん
09/10/18 09:33:44
>>284
指摘ありがとうございます
つまりスタックに積まれたコルーチンのスレッドを
lua_popで削除すればいいのですか
でもそれだとGCまかせでスグにコルーチン破棄はされないので

>>282のを
//コルーチンを実行するのスレッド(ステート)を作る
lua_State *L = luaL_newstate();
lua_State *T = lua_newthread(L);

//C側からコルーチンの操作

//ステートを閉じる
lua_close(L);

とすれば閉じるのはコルーチンのステートではないものの
lua_newthread は元のステートのオブジェクトを共有するみたいなので
コルーチンで確保されたメモリも同時に解放されますよね?

286:デフォルトの名無しさん
09/10/18 10:07:08
>コルーチンで確保されたメモリも同時に解放されますよね?

まぁ、そらそうだが。
任意開放ならlua_gcじゃ駄目な理由でもあるの?

287:デフォルトの名無しさん
09/10/18 10:29:55
駄目な理由はないのだけど
GCという目に見えない物に頼るより
自分で明確的に管理したくて

288:デフォルトの名無しさん
09/10/18 10:37:32
つまりC#くそくらえってことですね

289:デフォルトの名無しさん
09/10/18 10:43:50
(#^ω^)

290:デフォルトの名無しさん
09/10/18 11:14:07
(C#^ω^)

291:デフォルトの名無しさん
09/10/18 11:22:19
(Ruby#^ω^)

292:デフォルトの名無しさん
09/10/18 11:27:18
>>287
Luaでは文字列もテーブルも関数もuserdataもGCで管理されてる訳だが、そういうのも自分で管理したいの?

293:デフォルトの名無しさん
09/10/18 11:31:28
>>292
そこまではこだわってないです
それらはスクリプトに自分で定義しないと生成されないから
ある程度は管理出来るので

294:デフォルトの名無しさん
09/10/18 11:54:51
>>285
元のステートごと閉じてたら、そのコストがでかすぎて全然うれしくないと思われ。
GCいやな人は lua 使うな、が精神的には正しい。squirrel にしときなされ。

295:デフォルトの名無しさん
09/10/18 12:06:48
>>283
遅い
検索しづらい

296:デフォルトの名無しさん
09/10/18 12:07:49
>>283
言語としては面白いよ
組み込みも簡単に出来るし
でもWinの開発環境を整えるの面倒

297:デフォルトの名無しさん
09/10/18 12:26:45
ネットでの検索しやすいのさは大切だよね
iPhone 3G S もジョブスが発表後に iPhone 3GS に改名させたそうだ


298:デフォルトの名無しさん
09/10/18 12:28:16
> ネットでの検索しやすいのさは大切だよね
「ネットでの検索のしやすさ」の間違いです…


自分でワロタ


299:デフォルトの名無しさん
09/10/18 12:37:33
>>294
>元のステートごと閉じてたら、そのコストがでかすぎて
具体的にkwsk

300:デフォルトの名無しさん
09/10/18 13:09:55
>>299
や、普通にグローバルな関数や変数も全部毎回順次解放&登録しなおすハメになるじゃん
そういったコストを下げるために共有させる仕組みなのに本末転倒だろう

それぞれのスレッドが完全独立で頻繁に起動するものでもないのなら止めはしない。

301:デフォルトの名無しさん
09/10/18 13:17:45
>>285を見る限りコルーチンを実行し終わった時に
不要になったのを解放するのだから問題ないでしょ

302:デフォルトの名無しさん
09/10/18 14:09:07
実際にはluaL_openlibsが必要だからコストが大きいよ
擬似コードにはいちいち書かないだろうけど
擬似コードを書くとどうしても、目に見えない物に頼りがちだよね

303:デフォルトの名無しさん
09/10/18 16:00:28
ちょっと前にLuaで乱数を作っていたものだけど
今度は重複しない乱数を表示させたいと思っている。
でも何度やってもできない。。。
ヒントだけでも教えてください

304:デフォルトの名無しさん
09/10/18 16:05:01
そもそも重複しないものは乱数とは言わない。もはや lua とは関係ない話なので手頃なアルゴリズム系の質問スレに移るのをオススメする
ヒント:シャッフル

305:デフォルトの名無しさん
09/10/18 16:19:02
>>304
レスありがとう

ということは、最初に規定量の数値を指定しておいてそれをシャッフルすればいいってことか!
ありがとう。

306:デフォルトの名無しさん
09/10/18 16:59:56
個人情報が流出しても、ニュー速民は困る人いないよね?
スレリンク(news板)

307:デフォルトの名無しさん
09/10/18 23:54:16
(C#^ω^)

308:デフォルトの名無しさん
09/10/23 14:27:21
以下のようなプログラムで
クリティカルセクションの所有権を放棄し
それぞれのスレッド、スクリプトの実行を
安全に終了させるにはどうしたらいいでしょうか?

-- test.lua
while true do
foo()
end
-- test2.lua
while true do
foo()
end
-- main.cpp
void thread1(){
・・・
if(luaL_dofile(L,"test.lua")){
・・・
}
void thread2(){
・・・
if(luaL_dofile(L,"test2.lua")){
・・・
}
int foo(luaState* L){
EnterCriticalSection(&CriticalSection);
// 少し重めの処理
LeaveCriticalSection(&CriticalSection);
}


309:デフォルトの名無しさん
09/10/24 00:21:40
1つ1つのLuaステートをLua_yield使って個別に動かすのはダメなの?

310:デフォルトの名無しさん
09/10/24 00:42:33
あれ もしかしてAngelScriptって結構良いんじゃね?
名前が可愛いからちょっと舐めてたわ

311:デフォルトの名無しさん
09/10/24 00:51:08
>>310
できたら、どの辺りが気に入ったか詳しく

312:デフォルトの名無しさん
09/10/24 06:30:35
ついでに、このスレに常駐しているAngelScript信者の方にお聞きしたいのだが、
LuaやSquirrelと比べて優れている点は何がありまんすか?

313:デフォルトの名無しさん
09/10/24 06:39:49
//
/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ AngelScript!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


314:デフォルトの名無しさん
09/10/24 07:09:44
AngelScriptの@がよくわからん。
オブジェクトの参照なのか?

 Hoge@ hoge;

みたいなの。
C++みたいに、インスタンス入れる変数と参照がわかれているのか?(C++詳しくないからなんtねいったらいいかわからん)
LLなのに面倒な言語だな…
全部、デフォで参照でいいと思うんだが

315:デフォルトの名無しさん
09/10/24 12:38:48
>>314
スクリプト言語の癖に静的型付言語だからなぁ。
それって本当に意味あるのか? って思ってしまう。

Booとかも触ってみてその動作速度は認めるけど、スクリプトの記述が面倒に感じる。

316:デフォルトの名無しさん
09/10/24 13:28:09
ActionScript3.0 もいちおうスクリプト言語だけど、静的型付言語。
まぁ、インタプリタじゃないけどね。

317:デフォルトの名無しさん
09/10/24 23:43:43
>>312
・文法がC++まんまなので書きやすい
・C++との連携が簡単
・クラスとかほぼそのまま使える
・const〜やenumなど、定数定義が可能
・#includeも可能
こんなところか?

>>314
その例だと、「Hogeクラスの参照型」って扱いになる。
C++のHoge &という記述に近い。

318:デフォルトの名無しさん
09/10/25 00:41:08
スクリプトを自分で改造して使いたいんですが、ライセンスが緩くて
ソースが読みやすく短い組み込みライブラリのお勧めを教えてもらえませんか?
今のところLuaが最有力候補だと思ってます。

319:デフォルトの名無しさん
09/10/25 01:10:08
Squirrelがソース短いんじゃなかったっけ。読みやすさは知らんが。

320:デフォルトの名無しさん
09/10/25 05:11:42
>>319
実質としてはそんなに悪いコードではないが、しかし決して良いコードではない。
そして、SqPlusは絶対に読むな。頭が痛くなること請け合い。

それはそうと、Xtalのコードは大変いいと思うぞ。
言語自体の仕様は首を傾げたくなるところがあるが。

321:デフォルトの名無しさん
09/10/25 08:12:58
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ



322:デフォルトの名無しさん
09/10/25 17:53:23
>>320
Xtalのコードは俺の頭じゃ解析不可能だからLua読んでます。

323:デフォルトの名無しさん
09/10/25 18:55:12
SqPlus使おうと思ったらもう全然更新してないのか
いったいどれにすれバインダ

324:デフォルトの名無しさん
09/10/25 20:22:51
そもそもSquirrel自体全然盛り上がってないというか終わってるというか
始まる前に終わっちゃったよ的な

325:デフォルトの名無しさん
09/10/25 20:29:35
Lua 5.2まだー

326:デフォルトの名無しさん
09/10/25 22:01:57
>>323
SqPlusはダメすぎる、忘れましょう、使ってる人はたぶんいません
squirrelのバインダは自分で使い易いように自分で書いた方が1024倍マシよ

327:デフォルトの名無しさん
09/10/25 22:15:15
そこでバインダとか無くても全然問題のないAngelScriptの出番だな

328:デフォルトの名無しさん
09/10/25 22:36:22
>>326
ごめん、動いてるものはさわるな原則にのっとって使い続けてる^^;
一部手はいれてあるけど。
時間あったら新しいバインダにしたいんだけどなかなか……

329:デフォルトの名無しさん
09/10/25 23:08:08
スクエニのゲームはSqPlus使ってるって
cedecのスライドに書いてあったよね。

330:318
09/10/26 01:03:53
SquirrelとXtal読んでみます。
ありがとうございました。

331:デフォルトの名無しさん
09/10/26 02:05:58
こうなったらLuaとSquirrelとAngelScriptの合わせ技でいくか

332:デフォルトの名無しさん
09/10/26 14:10:36
angelscript初めて知った。いいなこれ!!
スタックゴニョゴニョしなくていいからコード読みやすいし
なによりデフォルトでメモリ上から「のみ」スクリプトコードをロードできるってのがイイ!
ゲーム開発だと裸のままスクリプトファイルが置いてあることなんてないからね。。。
モジュールのロードとかもオブジェクト指向で非常に素直に書けるぽいし
さっそくLuaを破棄して組み込んでみよう

333:デフォルトの名無しさん
09/10/26 14:25:29
AngelScript つかう場合は、これ C++ だけでよくね?という思考に陥らないように注意な


334:デフォルトの名無しさん
09/10/26 16:01:05
まんまC++なのがメリットでありデメリットでもある

335:デフォルトの名無しさん
09/10/26 20:39:28
>>AngelScript つかう場合は、これ C++ だけでよくね?という思考に陥らないように注意な
前使おうとして陥った
ちょっと聞きたいんだが、AngelScriptを使っている人や使わなくなった人(他の言語に移った人)は
なんで使っている、使わなくなった?

C++そのままというか継承に制限があるのが大きくてSquirrelに移ろうと思ってるんだけど、
他の人はどう思ってるのか気になる
アプリ実行時にちょこちょこ書き直したり、コンパイル/リンク時間の省略とかスクリプト自体の
メリットは分かるんだが…


336:デフォルトの名無しさん
09/10/26 21:10:20
コルーチン

337:デフォルトの名無しさん
09/10/26 23:17:06
コルーチン

338:デフォルトの名無しさん
09/10/26 23:21:46
チンコール

339:デフォルトの名無しさん
09/10/27 08:20:18
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


340:デフォルトの名無しさん
09/10/27 09:35:24
>>335
C++との連携が簡単、C++クラスをほぼそのままで使える、複数のコンテキスト(LuaStateに相当?)を同時に処理させるのも簡単、
定数定義や列挙型も使える、といった点が便利なんで使ってる。

特にC++との連携はLuaやSquirrelより簡単だし、マニュアルもサンプルも英語だけどわかりやすい。

341:デフォルトの名無しさん
09/10/27 18:19:47
コルーチン

342:デフォルトの名無しさん
09/10/28 00:13:00
AngelScriptに乗り換えようかな
細かいとこがc++と違和感無くて簡単だわ

343:デフォルトの名無しさん
09/10/28 04:00:43
そこで敢えてPawnという選択肢も

344:デフォルトの名無しさん
09/10/28 04:39:16
コルーチ

345:デフォルトの名無しさん
09/10/28 13:47:14
AngelScript と Luaって
メモリ消費や処理速度はどれほど違う?

346:デフォルトの名無しさん
09/10/28 14:09:25
   /ヽ /ヽ
  ':' ゙''"  `':,
  ミ   ・ω・ ;,
 :; . っ     ,つLua!
  `:;      ,;'
   `( /'"`∪


347:デフォルトの名無しさん
09/10/28 14:17:51
Pawnつえーな、使い勝手とか全然知らないけど
URLリンク(codeplea.com)

348:デフォルトの名無しさん
09/10/28 14:48:51
これ見るとリス使いの俺涙目だわ

349:デフォルトの名無しさん
09/10/28 15:50:27
・メモリ消費低
・静的型付
・スレッドセーフ
・スタック操作なし(またはLuaより容易)

で選ぶとしたら
やっぱりAngelScriptがいいのかな〜

350:デフォルトの名無しさん
09/10/28 15:51:52
おなじくリス使いの俺涙目(笑)

まあ、リスはわかりやすいからいいんだよ!とか言ってみる。
でも Pawn の性能は魅力だな。とりあえず組み込みテストして
みてよさそうなら、静的スクリプト言語としての併用もかんがえてみよう

351:デフォルトの名無しさん
09/10/28 15:53:37
まあなんとかとかんとかはトレードオフってやつだな

352:デフォルトの名無しさん
09/10/28 18:03:22
Pawnはスクリプト内で日本語文字列を扱わなくてもいいならいいかも

353:デフォルトの名無しさん
09/10/28 18:17:32
リスのバグ発見。

setdebughookを仕掛けた状態で_callメタメソッドをコールすると死ぬ。(SQVMでぬるぽ発生)

ちなみにdebughook関数の中身を空にしても同様です。
公式フォーラムの垢を紛失してしまったので誰か報告たのむ
URLリンク(squirrel-lang.org)


function debughook(event_type, sourcefile, line, funcname) {
 local fname = funcname ? funcname : "unknown";
 local srcfile = sourcefile ? sourcefile : "unknown";
 ::print(::format("%s:%d: [DEBUGHOOK:%c] %s\n", srcfile, line, event_type, fname));
}
::setdebughook(debughook);
class FOO {
 function test() { ::print("FOO::test()\n"); }
 function _call(orig_this) { ::print("FOO::_call()\n"); }
};
local foo = FOO();
foo.test();
::setdebughook(null);
foo();
::setdebughook(debughook);
foo(); // Segmentation fault (core dumped)


354:デフォルトの名無しさん
09/10/28 18:39:16
>>353
すんまそ、環境を書いてなかった。
Squirrel 2.2.3 stable
VisualC++, cygwin, Linux, 何れでも発生。
Squirrel 3はまだ試していません。

355:デフォルトの名無しさん
09/10/29 12:22:06
Pawn Language Guide っていうドキュメントみてみたけど、無名関数がつくれないっぽいね。
だとするとクロージャが作れないから、ちょっと不便かな。
状態遷移とかの記述に特化しているようだし、UnrealScript に似ているかも。


356:デフォルトの名無しさん
09/10/29 17:27:53
347のリンク先見て思ったが、GameMonkeyが何気に性能いいな。

357:デフォルトの名無しさん
09/10/29 20:25:50
>>353
拙い英語ですが報告しておきました。
temp_regがメタメソッドコール前にhookで使われるのが一因っぽいです。


358:デフォルトの名無しさん
09/10/30 04:54:40
Squirrel フォーラムに代理の報告をしてもらえるなら、 sq_mem.cpp をはじめ
メモリ確保失敗についてまったく考慮してないのを修正してくれ、と頼んでみて
もらえまいか?

組み込み言語としてリソースの乏しい環境で使うことを考えれば、メモリ確保が
失敗しないなどという前提で組まれるとツライものがある。

359:デフォルトの名無しさん
09/10/30 04:56:12
s/sq_mem/sqmem/

360:デフォルトの名無しさん
09/10/30 04:57:50
なんで自分で報告しないのん?

361:デフォルトの名無しさん
09/10/30 05:00:20
残念ながら英語で会話ができる自信がない。
リファレンスマニュアルを読む程度ならなんとかなるんだけど。

362:デフォルトの名無しさん
09/10/30 05:20:40
パッチ作って送れば英語できなくてもだいじょぶじゃないかな。
here is a patch for memory allocation error
とか一文だけ書いとけば通じると思う。

363:デフォルトの名無しさん
09/10/30 05:42:29
うーん。問題はコード全体に散らばってるんで、まずは全体的な方針をはっきり
決めてからじゃないとマズイ感じ。

sq_malloc や sq_realloc がいくつかのマクロを通して間接的に使われてるんだけど、
どれも呼び出し元で NULL が返ってくることが考慮されてない。

典型的なのは配列伸ばすのに p = SQ_REALLOC(p,oldsize,newsize) してるところ。
NULL 返したら元の領域がリークするうえに後続のコードでは確保成功したものとして
余裕でアクセスしてくる。

最初は、C++だからsqmem.cppの関数から例外投げろってことかと思ったんだけど、
呼び出し側で例外の発生も考慮されてないからまた別の理由でリークするし。

364:デフォルトの名無しさん
09/10/30 10:21:32
AngelScriptでマルチバイト文字列を使おうとする場合の不具合も報告したほうがよさそうなんだけどなぁ…

365:353
09/10/30 14:26:46
>>357
ありがとう!!

366:デフォルトの名無しさん
09/10/30 17:39:48
>>364
なんか不具合あるの?
AngelScript試してみようと思ってるんで気になる
UTF8扱いたいんだ

367:デフォルトの名無しさん
09/10/30 17:48:06
>>366
ライブラリをビルドする際にプリプロセッサでAS_DOUBLEBYTE_CHARSETを定義するんだけど、
それやるとビルドでエラーが出ちゃう。
しかもマルチバイト文字かシングルバイト文字かを判定するやり方もマズい。

最新版出るたびに毎回そこ修正してるよ。

368:デフォルトの名無しさん
09/10/30 19:04:19
それは本家に報告してあげればみんな幸せに

369:デフォルトの名無しさん
09/10/30 23:19:35
>>367
ソース弄ってみるよ

370:デフォルトの名無しさん
09/10/31 00:09:14
>>221
それ新しい版では修正されてたと思った。


371:デフォルトの名無しさん
09/10/31 10:39:11
AngelScriptでUTF8を使う場合、ソースの修正なくても、

asIScriptEngine *lpEngine=asCreateScriptEngine(ANGELSCRIPT_VERSION);
lpEngine->SetEngineProperty(asEP_SCRIPT_SCANNER, 1);

みたいな感じでエンジンの設定すれば大丈夫だったと思う。

372:デフォルトの名無しさん
09/11/01 23:04:23
あら、ありがと

373:デフォルトの名無しさん
09/11/02 06:54:37
AngelScript2.17.2で試してみた
UTF8はデフォルトでサポートしてるっぽく読めたんでDLしたまんまビルド
static const char* scriptString =
"void hellow()"
"{"
" Print( \"hellow world\" );"
" Print( \"UTF8テスト\" );"
"}";
とりあえずこれOKだった
ホストへstd::stringで渡せたり楽だわあ

374:デフォルトの名無しさん
09/11/02 13:25:04
次の更新でUTF16もサポートするみたいなことが書いてあるね

375:デフォルトの名無しさん
09/11/03 16:16:50
>>374
それできたらShitJIS対応の改造しなくて済むな。

376:デフォルトの名無しさん
09/11/04 10:58:55
Linuxでx64運用してるんだが、ファイルをHDD中でコピーするだけでファイルが壊れてしまう状態になって、
パーツを電源も含めて色々入れ換えてみたところ、
SATAケーブルをノイズに強いタイプに変更したら改善した。

残念ながら完全には直ってないようだけど、十分実用レベルには戻った。
資金に余裕ができたらHDD買い足してパーティションを作り直そう……。

377:デフォルトの名無しさん
09/11/04 10:59:54
おっと。スレ違いスマン。

378:デフォルトの名無しさん
09/11/07 09:41:07
pawnダウンロードして、マニュアル読みながらcmake使ってVC++用のプロジェクトファイル作るところまではできたんですが…
プロジェクト開いても、なんかファイル構成がよくわからないです。
もしかしてこれ、コンパイラとVMが別のプロジェクトファイルになっているんでしょうか?
luaみたいに、単純にヘッダファイルとlibファイルだけが欲しいんですが…
もしかしてDLLしかない??

379:デフォルトの名無しさん
09/11/07 16:02:52
>>378
pawnについていいなと思い試してみたはいいものの
詳しく使おうとするにつれてファイル構成が?で
投げ出した俺と同じ状態だね
確かにあれはわかりにくい

380:デフォルトの名無しさん
09/11/08 02:12:15
>>371
asEP_SCRIPT_SCANNER の設定で何がどう変わるのか AngelScript 2.17.2 の
ライブラリのソースを見てみたけど、単に 'あ' みたいなUTF-8の文字リテラルが
正しく読めるようになるだけっぽい。
"あいう" みたいな文字列リテラルは設定に関係なく1バイトずつ読んで処理してる。

ただし AS_DOUBLEBYTE_CHARSET プリプロセッサを有効にしてビルドしたライブラリで
asEP_SCRIPT_SCANNER の設定が 0 だと、マルチバイト文字を考慮する。
>>367が言っているように判定方法がマズいからShift_JISの半角カタカナを渡すと
おかしな挙動になるだろうけど。

あと AngelScript 2.17.2 での asEP_SCRIPT_SCANNER の既定値は 1 っぽい。

381:デフォルトの名無しさん
09/11/09 16:15:58
となると、マルチバイト判定用のコールバック関数を登録できるような改造した方がいいのかな。
2箇所いじれば大丈夫っぽいし。

382:デフォルトの名無しさん
09/11/10 04:57:26
>>381
Xtalはそんな感じのことをやってますね。
初期化関数に渡す Setting クラスインスタンスの ch_code_lib メンバに
文字コードクラス(例:SJISChCodeLib)のインスタンスを渡すことで好きな
文字コードを選択できるようになってます。
SJIS, EUC, UTF8, UTF16, UTF32 の文字コードクラスは標準で用意してある模様。

383:382
09/11/10 05:09:58
> SJIS, EUC, UTF8, UTF16, UTF32 の文字コードクラスは標準で用意してある模様。
…とはいっても別に内部で文字コード変換をしてくれるわけじゃないから、
Windowsのマルチバイト文字セットで使うなら基本的にSJISを選ぶことになるだろうけど。

Unicode文字セットで使うなら、XtalライブラリをUnicode文字セットでビルドして、
文字コードクラスは指定しない(=デフォのまま)ことで正しい挙動になりそう。
もちろんその場合のスクリプトはUnicodeで書く&渡す。

連投&AngelScriptと直接は関係ない話でゴメン。

384:デフォルトの名無しさん
09/11/10 09:30:35
試してないけどソース見る限り、UTF-16用の文字コードクラス使うと、
文字列長取得時にサロゲートペアのことも考慮してるようだ

他の文字コード用のも、一文字進めるとか比較とかも変えられるようにはしているようではあるが、
今のところ文字単位での文字列長取得しか違いはないようだ

385:デフォルトの名無しさん
09/11/11 11:02:15
AngelScript、TCHARとかにも対応できて、Unicodeとマルチバイトのどっちでもビルドできるようにしたいが、
かなりの大部分を修正しないとダメだなぁ…
Squirrelは最初から対応してるみたいだけど。

386:デフォルトの名無しさん
09/11/11 22:18:49
// .amxファイル(コンパイル済みPawnバイナリ)を実行するための最小コード。これをビルドするためには
// ダウンロードしてきたPawnのソースに含まれている amx.c, amx.h, amxaux.c, amxaux.h, amxcons.c, amxcore.c をプロジェクトに追加しておく
#include "amx.h"
#include "amxaux.h"
#include <stdio.h>
extern "C" AMX_NATIVE_INFO console_Natives[];
extern "C" AMX_NATIVE_INFO core_Natives[];
int main(int argc, char *argv[]) {
 AMX amx;
 cell ret = 0;
 if (aux_LoadProgram(&amx, "test.amx", NULL) != AMX_ERR_NONE) exit(1);
 if (amx_Register(&amx, console_Natives, -1)) exit(1);
 if (amx_Register(&amx, core_Natives, -1)) exit(1);
 if (amx_Exec(&amx, &ret, AMX_EXEC_MAIN)) exit(1);
 printf("%ld\n", (long)ret);
 aux_FreeProgram(&amx);
 return 0;
}


387:デフォルトの名無しさん
09/11/11 22:20:25
Pawnコンパイラのビルド方法
--
CMakeダウンロードする
CMakeインストールする
CMake起動する
"Browse Source"をクリックし、実行環境をビルドするなら<pawn>\source\amxを指定する。Pawnコンパイラをビルドするなら<pawn>\source\compilerを指定する
"Browse Build"をクリックし、適当な出力フォルダを指定する(以下、<out> と表現する)
"Configure"をクリックし、VisualC++ネイティブを選択する。エラーが起きても、もう一度 ConfigureをクリックするとGenerateボタンが有効になる。
"Generate"をクリックしてファイルを生成する
<out>にVC++用のプロジェクトファイルができている
ソースに<pawn>\source\compilerを指定した場合、<out>にはpawnc.slnができている。それをVCで開いてビルドする。
..\bin\pawn.icoが存在しませんとかエラーがでたら、該当場所に適当なアイコンファイルを入れておく。
<out>\Debugにpawnc.dllとpawncc.exeができている。それがコンパイラ。


388:デフォルトの名無しさん
09/11/11 23:56:32
Goのビルドが早いらしいので期待age

389:デフォルトの名無しさん
09/11/12 00:07:43
URLリンク(jp.techcrunch.com)

390:デフォルトの名無しさん
09/11/12 13:31:44
そのGoって組み込みじゃないんじゃ・・・・

391:デフォルトの名無しさん
09/11/12 17:18:47
ゴルーチン

392:デフォルトの名無しさん
09/11/12 23:59:48
URLリンク(golang.org)

There is a “foreign function interface” to allow safe calling of
C-written libraries from Go code. We expect to use SWIG to
extend this capability to C++ libraries.

There is no safe way to call Go code from C or C++ yet.

組み込みまだ出来なさそう。あとは、luaみたいに使える方向性があるか分からない。
現在の対応はdarwinのx86/x86_64とlinuxのx86/x86_64/armとnative clientのような気がする

393:デフォルトの名無しさん
09/11/13 00:23:26
you ain't gonna need it

394:デフォルトの名無しさん
09/11/13 11:03:02
GCサポートとあるけどc++好きにはウケナイ気がする
GC無しでc++的にガチガチに使えるなら使いたい
c++は0xも控えてるしGoは微妙な位置に落ち着きそう

395:デフォルトの名無しさん
09/11/13 11:47:27
そういや0xって後50日くらいで終了するんだなぁ

396:デフォルトの名無しさん
09/11/13 12:51:11
C++0xはコンセプトを捨てて再調整中で、まだ時間がかかるようだ
最近はC++1xと呼ばれている・・・

397:デフォルトの名無しさん
09/11/13 12:52:17
っていうか検索しにくさでDに勝負挑んでんの? って感じのネーミングなんだが……。

398:397
09/11/13 13:00:17
あ、ごめんなさい誤爆。Dスレに投げたつもりだった……。

399:デフォルトの名無しさん
09/11/13 18:49:47
Squirrelの画像検索のしにくさよりはましだろ

400:デフォルトの名無しさん
09/11/13 19:04:49
16進数だと思って欲しいだって
びょーん?さんのお知らせ

401:デフォルトの名無しさん
09/11/14 02:54:01
で、誰かPawnつかってみた? 激高速ぽいし、静的型付けで余計なバグも少なそうだし、かなり使えそうだけど…


402:デフォルトの名無しさん
09/11/14 21:13:23
>>388
GoはLinuxとMacにしか対応していません。

403:デフォルトの名無しさん
09/11/15 21:54:06
この手の組込スクリプトエンジンをShiftJIS対応させる場合、基本的にWindows用に組んじゃって大丈夫なのかな。
Unicode対応させる場合はWindowsだけじゃダメだよね?

404:デフォルトの名無しさん
09/11/15 23:22:05
修正を公開するつもりが無いならどうしたって構わないよ
#ifで切り分けるくらいはしておけばいいんじゃないか

#if (defined WIN32)
 実装
#else
 naiyo!!
#endif

これならWindows以外で使いたい人が中を見て、流用できそうならそうすることも出来るだろう

405:デフォルトの名無しさん
09/11/15 23:56:52
thx!

406:デフォルトの名無しさん
09/11/16 00:09:23
>>404
上手くいけば公開しようかなと思ってる。
ただ、Windowsでしかプログラム組んでないんで、Linuxでもちゃんと動くようにするための技法とかさっぱりわからないんだ。

ちなみにShiftJIS対応は簡単だけど、Unicode対応はソースあちこちいじらないとダメなんで無理かも…

407:デフォルトの名無しさん
09/11/16 07:08:38
UTF-8でもなければUCS2やUTF16でもなく、UNICODEと言っている時点で、
何にも分かってないのが丸わかりだからやめておけ。

408:デフォルトの名無しさん
09/11/16 08:00:11
   /ヽ /ヽ
  ':' ゙''"  `':,
  ミ   ・ω・ ;,
 :; . っ     ,つLua!
  `:;      ,;'
   `( /'"`∪


409:デフォルトの名無しさん
09/11/16 08:10:51
ぅあたんおはよう

410:デフォルトの名無しさん
09/11/16 10:48:18
しかし、今時ShiftJISはねえなあw

411:デフォルトの名無しさん
09/11/16 11:48:04
WindowsだとまだShiftJIS現役だしなぁ…

412:デフォルトの名無しさん
09/11/16 13:12:23
WindowsのNTFSのファイル名とかUTF-8にする方法ある?

413:デフォルトの名無しさん
09/11/16 13:25:40
それ以前に一つ確認しておくが、NTFSのファイル名のエンコードがどうなっているのかは理解しているのか?

414:デフォルトの名無しさん
09/11/16 14:27:33
ICUとか無駄にでかいのを勧めてみる
そういう話じゃないんだろうけど、Windows依存の話はもう勘弁しておくれなんし

415:デフォルトの名無しさん
09/11/16 14:56:21
ファイル名ってUNICODEじゃなくてmbcsだろ
mbcsにUTF-8そのまま突っ込んでもファイルは出来るが
望みのものにはならない訳で


416:デフォルトの名無しさん
09/11/16 15:05:36
URLリンク(www-06.ibm.com)

417:デフォルトの名無しさん
09/11/16 17:13:46
>>415
Windowsは内部的には全部 Unicode で NTFS もUnicode。
Win32 API的には、Uincode な API と MBCS な API が両方同時に存在していて任意に選んで使う。

原理的にはエンコードが UTF-8 な Locale を指定すれば MBCS なAPIでそのまま使えるはずだが、
あいにくそんなロケールは定義されてない。もっとも、UTF-8 から Unicode へは単純に変換できるので、
Unicode な API をラッピングして使えば良いだけなので自前プログラム上で問題になることは特にはない。
自分のプログラムで文字列を char ベースで扱ってるなら、MFC の CString のような char <-> wchar_t 変換
対応したクラスを作ってAPI に渡す時はそれを介するようにしておけば良い

一般的にこの手の組み込み言語の場合「Unicode対応 」ってのはワイドキャラ化のこと。変換は全部入出力部で
処理してしまって、内部は全部 char ではなく wchar_t で処理を行うようにする。英数字もひらがなかたかな
漢字も同じ「1文字」として扱えるので、もろもろ概念や処理が楽になる。そのかわりメモリを喰らう。
Windows だと、Unicode な APIがあるのでこれで作業するのが定番。
UNIX 系OSは、Unicode API は存在してないので、API に渡す必要がある部分(ファイル名など)は
逆にMBCS に変換する必要があってそれなりに面倒だったりするが、これが C言語系における正道

「SJIS対応」だとパーサの類をいじって、\ とかの特殊文字のエスケープ対応を行う対応になる。
また、文字列系のクラスに、専用の mblen とか mbsubstr とかSJISとして1文字単位で扱える
専用の処理を足さないと実用上困る。正規表現系をまじめに対応とかすると死ねる。
「UTF-8対応」や「EUC対応」はASCII 的に安全な文字コードなのでパーサ部は通常いじる必要がないが、
文字列処理用に専用の命令系を足さないと実用性が低いのは SJIS対応と同じ。

古いプログラムを wchar_t 化するのは大変だけど、Unicode は扱いたい、といった場合にUTF-8 対応が行われる。

418:デフォルトの名無しさん
09/11/16 17:18:13
ファイル名の場合、NFDにも注意ね

419:デフォルトの名無しさん
09/11/16 17:23:01
>>418
OSX はさっさと直せよと思う。まじで

420:デフォルトの名無しさん
09/11/16 18:20:29
Microsoftのコンパイラは wchar_t は2byteなので、全部一文字って訳にはいかないです
サロゲートペアに対応させようとかおもった場合は手動で処理してやらんとダメです。
少なくともVS2008時点では、_tcsincやCharNextといった ポインタを進める関数がサロゲートペアをちゃんと処理してくれない
(おそらくOSがサロゲートペアに対応する前のコードとの互換性を気にしてるのだろう)
もっとも、クロスプラットフォーム名コード書くなら、CharNextとか使わずに自前で処理してるだろうけど・・・

421:デフォルトの名無しさん
09/11/16 19:20:13
書かれてる事の意味が解らないままレスする人多すぎ
ここが組み込み系言語のスレな事も考えず読んでる人も多すぎ

422:デフォルトの名無しさん
09/11/16 22:46:16
>>420
落ち着いて考えるんだ。
組み込みスクリプトごときでサロゲートペアが関係してくるようなややこしい話がどれくらいある?
まあ、議論自体は有意義だとは思うが。

423:デフォルトの名無しさん
09/11/16 22:52:23
素直にTRONコードを使え

424:デフォルトの名無しさん
09/11/16 23:33:37
とりあえずVSで使う時に、文字セットを「Unicode文字セットを使用する」にしてちゃんと使えればそれでOkだな。
Squirrelはデフォでいけたが。

425:デフォルトの名無しさん
09/11/17 10:17:44
知れば知るほどVSなんぞ捨てた方がマシ
UTF8はBOM有り前提とか諸々腐ってるし(VS2005までしか知らんけど)
Windows環境で作業しなきゃならんなら
gcc、devc++、エディタ、こんだけでいいよ

426:デフォルトの名無しさん
09/11/17 10:23:35
>>425
お前……VisualStudioまともに使いこなせてないだけだろ?
UTF-8 BOM付きなんて使う機会ほとんどないぞ。

427:デフォルトの名無しさん
09/11/17 10:28:50
VSでエンコード付きテキストエディタを指定するとUTF-8はシグネチャ付きとなしと両方選べる。
つまりどっちも扱える。

428:デフォルトの名無しさん
09/11/17 10:47:43
IDEの方に問題は出ないが、VCのコンパイラ側がBOM無しだと、
文字コードの認識に失敗する。

429:デフォルトの名無しさん
09/11/17 11:18:43
URLリンク(msdn.microsoft.com)
BOM無しUTF-8の時 文字コードの認識に失敗するんじゃなくて、そもそも対応していないだけ
IDEでBOM無しUTF-8で保存可能なのは、ドキュメントとか編集するときのためだろうか?

430:デフォルトの名無しさん
09/11/17 23:42:08
Squirrel 2.2.4 stable来てるね
3.0もbeta1になった

431:デフォルトの名無しさん
09/11/18 09:19:38
おー、Squirrelのバージョンアップまじか
色々バグ修正されてるのかな
BuildとShift-JISパッチ入れるのめんどくさいけど、今夜試してみるわ

432:デフォルトの名無しさん
09/11/19 04:33:19
>>429
WEBの世界だとそれが標準だからだと思うよ>BOM無しUTF-8で保存可能
Visual Web Developper あわせの対応であって、VC はスルーされてるってことかと。

コンシューマ機が UTF-8 ベースに移ってるのでそれあわせでコード共有しようとするときに地味に困る > VC がUTF-8をまともに扱えない
BOM つけると今度は gcc がこけるんだぜ……

433:デフォルトの名無しさん
09/11/19 10:47:44
LuaでLua_Stateの解放をせずに、グローバル変数等の環境を個別に初期化する
サンプルはどこかにないでしょうか?

434:デフォルトの名無しさん
09/11/19 11:56:04
グローバル環境を空のテーブルに置き換えるのって
普通にできんかったっけ?

435:デフォルトの名無しさん
09/11/19 12:37:17
じゃあこんな感じで良いのかな?

Lua_State *L;

〜 一回load、callして使用 〜

lua_newtable(L);
lua_setfenv(L, LUA_GLOBALSINDEX); //グローバル変数だけ初期化される?

lua_gc(L, LUA_GCCOLLECT, 0); //念のためにGCも走らせるべき?

〜 Lにまたloadして再利用 〜

436:デフォルトの名無しさん
09/11/19 18:16:26
426の読解力に溜息が出るよ

437:デフォルトの名無しさん
09/11/20 08:36:36
>>429
UTF-8てそもそも既存のシステムに手をなるべく加えないで動かすための文字コードじゃないのか?
よくわからんな

438:デフォルトの名無しさん
09/11/20 08:45:59
そもそも文字列はハードコーディングするべきじゃない。
外部リソースとして、入出力時にコードを調整すればいいだけのこと。

439:デフォルトの名無しさん
09/11/20 08:49:56
print loadstring(0x34d3a6b8);

こんなプログラミングが歓迎されるんですね

440:デフォルトの名無しさん
09/11/20 09:00:17
>435 を試してみたのですが、lua_setfenvだとグローバル環境の操作は無理なようです。
グローバル環境テーブル全体に対する操作関数って無いのでは?

441:デフォルトの名無しさん
09/11/20 09:34:40
>>438
スクリプトを読み込んだ際に特定の文字コードに変換して、内部の処理はその文字コードで統一って感じかな?
だとすると、何に変換するのがいいんだろう。UTF16?

442:デフォルトの名無しさん
09/11/20 09:47:54
スクリプトファイルは基本UTF-8、
ネイティブに引き渡すときはUTF-16、面倒ならUCS2にするのが一番問題が少ない。

443:デフォルトの名無しさん
09/11/20 11:51:20
>>437
その恩恵にあやかれるのはASCIIコードしか使ってない欧米人だけだけどな。
非ASCIIコード圏は、既存のエンコード方式と区別ができないので余計に混乱する。

全てのプレーンテキストがUTF-8に置き換わるまでの過渡期は、BOM付きUTF-8が
一番無難な選択だと思うけどね。

俺はWindows上でgccとか使わないので、FTPクライアントにBOMの有無を変換する
機能さえついてくれればあまり問題ない。

もっとも、MSは独自にBOM付きUTF-8を強行するのではなく、非ASCIIコード圏で
過渡期にはBOMが必要であることを訴えて、規格に盛り込ませるべきだと思うが。

444:デフォルトの名無しさん
09/11/20 12:26:22
>>437
「ファイルの中身」自体が最大のレガシーシステム。だから UTF-8 が使われるようになってる。
日本人は一度 SJIS やら EUC やらで通った道をもっかい世界規模で通り直してるだけではある

>>438
なにが一番困るって、ファイル名中の「コメント」

コメントに日本語つかうな?ごもっとも(苦笑)



445:デフォルトの名無しさん
09/11/20 12:27:06
ファイル名中じゃねえ、ファイル中

446:デフォルトの名無しさん
09/11/20 12:31:33
>>443
> 全てのプレーンテキストがUTF-8に置き換わるまでの過渡期は、BOM付きUTF-8が
> 一番無難な選択だと思うけどね。

この上の記述はわかるし、それはよくわかるんだが、
実際はBOM付きでトラブることが多くて、俺は折れたわw
BOMなしで上手く行くようにすべき

447:デフォルトの名無しさん
09/11/20 12:44:29
あ、437 のいってること完全によみちがえてたや。すまん。

動作上は問題ないに決まってるんだから、ツールで対応できない意味がわからんってことだな。

既存エンコードと混在したのを自動判定する必然性は別にないんだから、
ツール側に「MBCSではなくUTF-8として扱う」スイッチだけつければすむことだ。
MS1社が対応するだけで世界は平和になるんだからさっさとそうしてくれってことだな

448:デフォルトの名無しさん
09/11/20 12:56:28
>>443
もう手遅れ
MSがいまだにSJISを強行している時点で終わってる


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4274日前に更新/247 KB
担当:undef