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
350 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:51:52 ] おなじくリス使いの俺涙目(笑) まあ、リスはわかりやすいからいいんだよ!とか言ってみる。 でも Pawn の性能は魅力だな。とりあえず組み込みテストして みてよさそうなら、静的スクリプト言語としての併用もかんがえてみよう
351 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:53:37 ] まあなんとかとかんとかはトレードオフってやつだな
352 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 18:03:22 ] Pawnはスクリプト内で日本語文字列を扱わなくてもいいならいいかも
353 名前:デフォルトの名無しさん [2009/10/28(水) 18:17:32 ] リスのバグ発見。 setdebughookを仕掛けた状態で_callメタメソッドをコールすると死ぬ。(SQVMでぬるぽ発生) ちなみにdebughook関数の中身を空にしても同様です。 公式フォーラムの垢を紛失してしまったので誰か報告たのむ squirrel-lang.org/forums/7/ShowForum.aspx 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 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 18:39:16 ] >>353 すんまそ、環境を書いてなかった。 Squirrel 2.2.3 stable VisualC++, cygwin, Linux, 何れでも発生。 Squirrel 3はまだ試していません。
355 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 12:22:06 ] Pawn Language Guide っていうドキュメントみてみたけど、無名関数がつくれないっぽいね。 だとするとクロージャが作れないから、ちょっと不便かな。 状態遷移とかの記述に特化しているようだし、UnrealScript に似ているかも。
356 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 17:27:53 ] 347のリンク先見て思ったが、GameMonkeyが何気に性能いいな。
357 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 20:25:50 ] >>353 拙い英語ですが報告しておきました。 temp_regがメタメソッドコール前にhookで使われるのが一因っぽいです。
358 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:54:40 ] Squirrel フォーラムに代理の報告をしてもらえるなら、 sq_mem.cpp をはじめ メモリ確保失敗についてまったく考慮してないのを修正してくれ、と頼んでみて もらえまいか? 組み込み言語としてリソースの乏しい環境で使うことを考えれば、メモリ確保が 失敗しないなどという前提で組まれるとツライものがある。
359 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:56:12 ] s/sq_mem/sqmem/
360 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:57:50 ] なんで自分で報告しないのん?
361 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 05:00:20 ] 残念ながら英語で会話ができる自信がない。 リファレンスマニュアルを読む程度ならなんとかなるんだけど。
362 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 05:20:40 ] パッチ作って送れば英語できなくてもだいじょぶじゃないかな。 here is a patch for memory allocation error とか一文だけ書いとけば通じると思う。
363 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 05:42:29 ] うーん。問題はコード全体に散らばってるんで、まずは全体的な方針をはっきり 決めてからじゃないとマズイ感じ。 sq_malloc や sq_realloc がいくつかのマクロを通して間接的に使われてるんだけど、 どれも呼び出し元で NULL が返ってくることが考慮されてない。 典型的なのは配列伸ばすのに p = SQ_REALLOC(p,oldsize,newsize) してるところ。 NULL 返したら元の領域がリークするうえに後続のコードでは確保成功したものとして 余裕でアクセスしてくる。 最初は、C++だからsqmem.cppの関数から例外投げろってことかと思ったんだけど、 呼び出し側で例外の発生も考慮されてないからまた別の理由でリークするし。
364 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 10:21:32 ] AngelScriptでマルチバイト文字列を使おうとする場合の不具合も報告したほうがよさそうなんだけどなぁ…
365 名前:353 mailto:sage [2009/10/30(金) 14:26:46 ] >>357 ありがとう!!
366 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 17:39:48 ] >>364 なんか不具合あるの? AngelScript試してみようと思ってるんで気になる UTF8扱いたいんだ
367 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 17:48:06 ] >>366 ライブラリをビルドする際にプリプロセッサでAS_DOUBLEBYTE_CHARSETを定義するんだけど、 それやるとビルドでエラーが出ちゃう。 しかもマルチバイト文字かシングルバイト文字かを判定するやり方もマズい。 最新版出るたびに毎回そこ修正してるよ。
368 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 19:04:19 ] それは本家に報告してあげればみんな幸せに
369 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 23:19:35 ] >>367 ソース弄ってみるよ
370 名前:デフォルトの名無しさん [2009/10/31(土) 00:09:14 ] >>221 それ新しい版では修正されてたと思った。
371 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 10:39:11 ] AngelScriptでUTF8を使う場合、ソースの修正なくても、 asIScriptEngine *lpEngine=asCreateScriptEngine(ANGELSCRIPT_VERSION); lpEngine->SetEngineProperty(asEP_SCRIPT_SCANNER, 1); みたいな感じでエンジンの設定すれば大丈夫だったと思う。
372 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 23:04:23 ] あら、ありがと
373 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:25:04 ] 次の更新でUTF16もサポートするみたいなことが書いてあるね
375 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:16:50 ] >>374 それできたらShitJIS対応の改造しなくて済むな。
376 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:58:55 ] Linuxでx64運用してるんだが、ファイルをHDD中でコピーするだけでファイルが壊れてしまう状態になって、 パーツを電源も含めて色々入れ換えてみたところ、 SATAケーブルをノイズに強いタイプに変更したら改善した。 残念ながら完全には直ってないようだけど、十分実用レベルには戻った。 資金に余裕ができたらHDD買い足してパーティションを作り直そう……。
377 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:59:54 ] おっと。スレ違いスマン。
378 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 09:41:07 ] pawnダウンロードして、マニュアル読みながらcmake使ってVC++用のプロジェクトファイル作るところまではできたんですが… プロジェクト開いても、なんかファイル構成がよくわからないです。 もしかしてこれ、コンパイラとVMが別のプロジェクトファイルになっているんでしょうか? luaみたいに、単純にヘッダファイルとlibファイルだけが欲しいんですが… もしかしてDLLしかない??
379 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:02:52 ] >>378 pawnについていいなと思い試してみたはいいものの 詳しく使おうとするにつれてファイル構成が?で 投げ出した俺と同じ状態だね 確かにあれはわかりにくい
380 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:15:58 ] となると、マルチバイト判定用のコールバック関数を登録できるような改造した方がいいのかな。 2箇所いじれば大丈夫っぽいし。
382 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 04:57:26 ] >>381 Xtalはそんな感じのことをやってますね。 初期化関数に渡す Setting クラスインスタンスの ch_code_lib メンバに 文字コードクラス(例:SJISChCodeLib)のインスタンスを渡すことで好きな 文字コードを選択できるようになってます。 SJIS, EUC, UTF8, UTF16, UTF32 の文字コードクラスは標準で用意してある模様。
383 名前:382 mailto:sage [2009/11/10(火) 05:09:58 ] > SJIS, EUC, UTF8, UTF16, UTF32 の文字コードクラスは標準で用意してある模様。 …とはいっても別に内部で文字コード変換をしてくれるわけじゃないから、 Windowsのマルチバイト文字セットで使うなら基本的にSJISを選ぶことになるだろうけど。 Unicode文字セットで使うなら、XtalライブラリをUnicode文字セットでビルドして、 文字コードクラスは指定しない(=デフォのまま)ことで正しい挙動になりそう。 もちろんその場合のスクリプトはUnicodeで書く&渡す。 連投&AngelScriptと直接は関係ない話でゴメン。
384 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 09:30:35 ] 試してないけどソース見る限り、UTF-16用の文字コードクラス使うと、 文字列長取得時にサロゲートペアのことも考慮してるようだ 他の文字コード用のも、一文字進めるとか比較とかも変えられるようにはしているようではあるが、 今のところ文字単位での文字列長取得しか違いはないようだ
385 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 11:02:15 ] AngelScript、TCHARとかにも対応できて、Unicodeとマルチバイトのどっちでもビルドできるようにしたいが、 かなりの大部分を修正しないとダメだなぁ… Squirrelは最初から対応してるみたいだけど。
386 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:age [2009/11/11(水) 23:56:32 ] Goのビルドが早いらしいので期待age
389 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:07:43 ] ttp://jp.techcrunch.com/archives/20091110google-go-language/
390 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 13:31:44 ] そのGoって組み込みじゃないんじゃ・・・・
391 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 17:18:47 ] ゴルーチン
392 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 23:59:48 ] ttp://golang.org/doc/go_faq.html#Do_Go_programs_link_with_Cpp_programs 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 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 00:23:26 ] you ain't gonna need it
394 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 11:03:02 ] GCサポートとあるけどc++好きにはウケナイ気がする GC無しでc++的にガチガチに使えるなら使いたい c++は0xも控えてるしGoは微妙な位置に落ち着きそう
395 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 11:47:27 ] そういや0xって後50日くらいで終了するんだなぁ
396 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 12:51:11 ] C++0xはコンセプトを捨てて再調整中で、まだ時間がかかるようだ 最近はC++1xと呼ばれている・・・
397 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 12:52:17 ] っていうか検索しにくさでDに勝負挑んでんの? って感じのネーミングなんだが……。
398 名前:397 mailto:sage [2009/11/13(金) 13:00:17 ] あ、ごめんなさい誤爆。Dスレに投げたつもりだった……。
399 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:49:47 ] Squirrelの画像検索のしにくさよりはましだろ
400 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:04:49 ] 16進数だと思って欲しいだって びょーん?さんのお知らせ
401 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 02:54:01 ] で、誰かPawnつかってみた? 激高速ぽいし、静的型付けで余計なバグも少なそうだし、かなり使えそうだけど…
402 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:13:23 ] >>388 GoはLinuxとMacにしか対応していません。
403 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:54:06 ] この手の組込スクリプトエンジンをShiftJIS対応させる場合、基本的にWindows用に組んじゃって大丈夫なのかな。 Unicode対応させる場合はWindowsだけじゃダメだよね?
404 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:22:05 ] 修正を公開するつもりが無いならどうしたって構わないよ #ifで切り分けるくらいはしておけばいいんじゃないか #if (defined WIN32) 実装 #else naiyo!! #endif これならWindows以外で使いたい人が中を見て、流用できそうならそうすることも出来るだろう
405 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:56:52 ] thx!
406 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:09:23 ] >>404 上手くいけば公開しようかなと思ってる。 ただ、Windowsでしかプログラム組んでないんで、Linuxでもちゃんと動くようにするための技法とかさっぱりわからないんだ。 ちなみにShiftJIS対応は簡単だけど、Unicode対応はソースあちこちいじらないとダメなんで無理かも…
407 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 07:08:38 ] UTF-8でもなければUCS2やUTF16でもなく、UNICODEと言っている時点で、 何にも分かってないのが丸わかりだからやめておけ。
408 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:00:11 ] /ヽ /ヽ ':' ゙''" `':, ミ ・ω・ ;, :; . っ ,つLua! `:; ,;' `( /'"`∪
409 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:10:51 ] ぅあたんおはよう
410 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 10:48:18 ] しかし、今時ShiftJISはねえなあw
411 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:48:04 ] WindowsだとまだShiftJIS現役だしなぁ…
412 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:12:23 ] WindowsのNTFSのファイル名とかUTF-8にする方法ある?
413 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:25:40 ] それ以前に一つ確認しておくが、NTFSのファイル名のエンコードがどうなっているのかは理解しているのか?
414 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:27:33 ] ICUとか無駄にでかいのを勧めてみる そういう話じゃないんだろうけど、Windows依存の話はもう勘弁しておくれなんし
415 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:56:21 ] ファイル名ってUNICODEじゃなくてmbcsだろ mbcsにUTF-8そのまま突っ込んでもファイルは出来るが 望みのものにはならない訳で
416 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:05:36 ] www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-007ACA9B
417 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 17:18:13 ] ファイル名の場合、NFDにも注意ね
419 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 17:23:01 ] >>418 OSX はさっさと直せよと思う。まじで
420 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 18:20:29 ] Microsoftのコンパイラは wchar_t は2byteなので、全部一文字って訳にはいかないです サロゲートペアに対応させようとかおもった場合は手動で処理してやらんとダメです。 少なくともVS2008時点では、_tcsincやCharNextといった ポインタを進める関数がサロゲートペアをちゃんと処理してくれない (おそらくOSがサロゲートペアに対応する前のコードとの互換性を気にしてるのだろう) もっとも、クロスプラットフォーム名コード書くなら、CharNextとか使わずに自前で処理してるだろうけど・・・
421 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 19:20:13 ] 書かれてる事の意味が解らないままレスする人多すぎ ここが組み込み系言語のスレな事も考えず読んでる人も多すぎ
422 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:46:16 ] >>420 落ち着いて考えるんだ。 組み込みスクリプトごときでサロゲートペアが関係してくるようなややこしい話がどれくらいある? まあ、議論自体は有意義だとは思うが。
423 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 22:52:23 ] 素直にTRONコードを使え
424 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 23:33:37 ] とりあえずVSで使う時に、文字セットを「Unicode文字セットを使用する」にしてちゃんと使えればそれでOkだな。 Squirrelはデフォでいけたが。
425 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:17:44 ] 知れば知るほどVSなんぞ捨てた方がマシ UTF8はBOM有り前提とか諸々腐ってるし(VS2005までしか知らんけど) Windows環境で作業しなきゃならんなら gcc、devc++、エディタ、こんだけでいいよ
426 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:23:35 ] >>425 お前……VisualStudioまともに使いこなせてないだけだろ? UTF-8 BOM付きなんて使う機会ほとんどないぞ。
427 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:28:50 ] VSでエンコード付きテキストエディタを指定するとUTF-8はシグネチャ付きとなしと両方選べる。 つまりどっちも扱える。
428 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 10:47:43 ] IDEの方に問題は出ないが、VCのコンパイラ側がBOM無しだと、 文字コードの認識に失敗する。
429 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 11:18:43 ] ttp://msdn.microsoft.com/ja-jp/library/xwy0e8f2%28VS.100%29.aspx BOM無しUTF-8の時 文字コードの認識に失敗するんじゃなくて、そもそも対応していないだけ IDEでBOM無しUTF-8で保存可能なのは、ドキュメントとか編集するときのためだろうか?
430 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 23:42:08 ] Squirrel 2.2.4 stable来てるね 3.0もbeta1になった
431 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 09:19:38 ] おー、Squirrelのバージョンアップまじか 色々バグ修正されてるのかな BuildとShift-JISパッチ入れるのめんどくさいけど、今夜試してみるわ
432 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 04:33:19 ] >>429 WEBの世界だとそれが標準だからだと思うよ>BOM無しUTF-8で保存可能 Visual Web Developper あわせの対応であって、VC はスルーされてるってことかと。 コンシューマ機が UTF-8 ベースに移ってるのでそれあわせでコード共有しようとするときに地味に困る > VC がUTF-8をまともに扱えない BOM つけると今度は gcc がこけるんだぜ……
433 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 10:47:44 ] LuaでLua_Stateの解放をせずに、グローバル変数等の環境を個別に初期化する サンプルはどこかにないでしょうか?
434 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 11:56:04 ] グローバル環境を空のテーブルに置き換えるのって 普通にできんかったっけ?
435 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 18:16:26 ] 426の読解力に溜息が出るよ
437 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 08:36:36 ] >>429 UTF-8てそもそも既存のシステムに手をなるべく加えないで動かすための文字コードじゃないのか? よくわからんな
438 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 08:45:59 ] そもそも文字列はハードコーディングするべきじゃない。 外部リソースとして、入出力時にコードを調整すればいいだけのこと。
439 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 08:49:56 ] print loadstring(0x34d3a6b8); こんなプログラミングが歓迎されるんですね
440 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 09:00:17 ] >435 を試してみたのですが、lua_setfenvだとグローバル環境の操作は無理なようです。 グローバル環境テーブル全体に対する操作関数って無いのでは?
441 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 09:34:40 ] >>438 スクリプトを読み込んだ際に特定の文字コードに変換して、内部の処理はその文字コードで統一って感じかな? だとすると、何に変換するのがいいんだろう。UTF16?
442 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 09:47:54 ] スクリプトファイルは基本UTF-8、 ネイティブに引き渡すときはUTF-16、面倒ならUCS2にするのが一番問題が少ない。
443 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 11:51:20 ] >>437 その恩恵にあやかれるのはASCIIコードしか使ってない欧米人だけだけどな。 非ASCIIコード圏は、既存のエンコード方式と区別ができないので余計に混乱する。 全てのプレーンテキストがUTF-8に置き換わるまでの過渡期は、BOM付きUTF-8が 一番無難な選択だと思うけどね。 俺はWindows上でgccとか使わないので、FTPクライアントにBOMの有無を変換する 機能さえついてくれればあまり問題ない。 もっとも、MSは独自にBOM付きUTF-8を強行するのではなく、非ASCIIコード圏で 過渡期にはBOMが必要であることを訴えて、規格に盛り込ませるべきだと思うが。
444 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 12:26:22 ] >>437 「ファイルの中身」自体が最大のレガシーシステム。だから UTF-8 が使われるようになってる。 日本人は一度 SJIS やら EUC やらで通った道をもっかい世界規模で通り直してるだけではある >>438 なにが一番困るって、ファイル名中の「コメント」 コメントに日本語つかうな?ごもっとも(苦笑)
445 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 12:27:06 ] ファイル名中じゃねえ、ファイル中
446 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 12:31:33 ] >>443 > 全てのプレーンテキストがUTF-8に置き換わるまでの過渡期は、BOM付きUTF-8が > 一番無難な選択だと思うけどね。 この上の記述はわかるし、それはよくわかるんだが、 実際はBOM付きでトラブることが多くて、俺は折れたわw BOMなしで上手く行くようにすべき
447 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 12:44:29 ] あ、437 のいってること完全によみちがえてたや。すまん。 動作上は問題ないに決まってるんだから、ツールで対応できない意味がわからんってことだな。 既存エンコードと混在したのを自動判定する必然性は別にないんだから、 ツール側に「MBCSではなくUTF-8として扱う」スイッチだけつければすむことだ。 MS1社が対応するだけで世界は平和になるんだからさっさとそうしてくれってことだな
448 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 12:56:28 ] >>443 もう手遅れ MSがいまだにSJISを強行している時点で終わってる
449 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 13:38:56 ] SJISを強行しているように見えるのはロケールを日本語にして使っているからなんだが、 なんでそんなに視野が狭いんだろう? ちなみにOSのロケールを英語にすると、UTF-8も無しでコンパイルが通るぞ。
450 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 13:40:42 ] BOM無しで