プログラミング言語 Lua  その3at TECH
プログラミング言語 Lua  その3 - 暇つぶし2ch116:デフォルトの名無しさん
07/02/11 14:37:36
EVE onlineもすごいぞ
今検索したら日本語版も出そうだな。
URLリンク(www.4gamer.net)

stackless pythonをサーバー側・クライアント側ともに使ってるらしい。

117:デフォルトの名無しさん
07/02/16 22:15:17
NullLogic Embedded Scripting Language
URLリンク(sourceforge.net)

118:デフォルトの名無しさん
07/02/17 00:54:05
getfenvってlocal変数は取得できないのって不便だな。
function f1(e)
 setfenv(1,e) ;print(a)
end
function f2(f)
 local a=123 ;f(getfenv(1))
end
f2(f1)

で123が表示されてほしいんだけど。
debug.getlocalとか使えばなんとかなるんだろうけど。
getlocalとgetupvalueだけ何でdebug扱いなんだろう。
速度?

119:デフォルトの名無しさん
07/02/17 12:23:25
あげとこう

120:118
07/02/21 21:35:09
ぅぅ、誰もいないのか? or どうでもいい話題?

これが出来ないとf1への引数指定をするしかないよね。
f2のローカル変数が増えて且つf1でそれを使う場合
f1の引数宣言をどんどん追加する羽目になるんだよなー。
Cのマクロ展開的に気楽に処理をまとめようとする時
>>118見たいに出来ると便利なんだけど。

-------
話変わるけど、luabind使って
a=luabind_class_a() --luabindで定義したクラス生成
b=luabind_class_b() --luabindで定義したクラス生成
a.p=b ; b.p=a
a=nil ; b=nil
collectgarbage("collect")
ってやっても回収されないような気がする。
(pはluabindでdef_readwrite指定してない)
循環さえしてなければ回収されるっぽい。
そもそもdef_readwrite指定してpに代入すること
自体がまずいのかな?

luabind使ってる人、意見ヨロ。

121:118
07/02/21 21:38:11
修正
そもそもdef_readwrite指定してpに代入すること
=> そもそもdef_readwrite指定してないpに代入すること


122:118
07/02/21 21:43:47
更に追記
118は最初f1をf2のローカル関数にしてたけど他でも参照しようとして
外部に出した時の話です。

123:デフォルトの名無しさん
07/02/21 22:08:28
luaさわったことないが、luaでは環境=テーブルなんだし
print(e.a)じゃだめなの?もしくはgetfenv(f2)ではどうなる?
getfenv(1)というのがわからんな。ソース読んだ方が早い

124:118
07/02/21 22:13:40
>>123
print(e.a)でも駄目。
getfenv(f2)もgetfenv(1)もf2内では
同じ意味(のはず)です。

125:118
07/02/21 22:20:39
function f1(e)
 setfenv(1,e) ;print(a)
end
function f2(f)
 setfenv(1,setmetatable({},{__index=_G}))
 a=123 ;f(getfenv(1))
end
f2(f1)

これなら動くんだけどねぇ。

126:デフォルトの名無しさん
07/02/21 23:20:32
>>118
すまん。見てたが良くわからないから
偉い人が降臨するのを待った方がいいと思った。

でもローカル変数はenvironmentが持ってるわけじゃないし
(Function Prototypeが持ってるぽい)
他の関数はスコープの外だから無理だと思うよ。
table:functionの形式にしてselfに持たせるのはどう?

127:118
07/02/22 00:27:58
>>126
いえいえ半分愚痴なんで。
たとえば>>118を以下の様に書き換えると
a=456
function f1(e)
 setfenv(1,e) ;print(a) -- 123が表示
end

function f2(f)
 --ここからシンタックスシュガー
 local org_env=getfenv(1)
 local local_env={}
 setfenv(1,setmetatable(local_env,{__index=org_env}))
 --ここまでシンタックスシュガー

 -- aはローカル
 a=124
 f(local_env)

 -- print($a) グローバルなaを表示 =>
 print(org_env["a"]) -- 456が表示
end
f2(f1)
print(a) -- 456が表示

関数先頭でローカル環境設定して
むしろlocalが指定されていないときをlocal変数
と解釈し、Rubyみたく$a見たいに記述された時を
グローバル変数と解釈するほうが安全なようなきがする。
関数内でlocal宣言し忘れてうっかりグローバル汚す
心配もないし。

128:118
07/02/22 02:37:14
なんか一人で書き込んでるな (orz
luabindのほうが大問題に思えてきた

class 'abc'
function abc:__init(name) self.name=name ; print("initialize:"..self.name) end
function abc:__finalize() print("finalize:"..self.name) end
a=abc("1")
b=abc("2")
a.p=b;b.p=a --循環
a=nil;b=nil
collectgarbage("collect")

これも__finalizeが呼ばれない模様
上記コードのaもbもuserdataで多分GCがuserdata内部で
持ってる参照を追ってないためリークしてるのではと
予想してみたけど、どうでしょ。


129:デフォルトの名無しさん
07/02/22 12:27:46
luabindはboostまわりで環境(バージョン)依存するし、tolua++使ってるわ。

>>118で何を実現したかったのか見えなかったんだけど、
setfenvとかはあくまでグローバルテーブルが取れるだけだし、
localとupvalueが取れないのは仕様上しょうがない・・・。
debugライブラリ使ってもいいけど、安全上の問題が・・・とかマニュアルに書いてある。

んで、今luaのソースちょっと見てみたら、
ローカル変数は数値インデックスで管理されてて、テーブルになってない。
バイトコード上ではほぼ名前は省かれてて、「このインデックスのローカルにこのインデックスのローカルを代入」みたいな
処理になってると思われる。
グローバル変数をlocalに代入してから処理したほうが高速、といわれるのはこういう理由なのね。

グローバル汚す可能性についてはグローバルのメタテーブルの__newindexをいじくって
制限をつければいいと思う。

130:118
07/02/22 19:38:37
>>129
tolua++ってコードジェネレーター系ですよね。
tolua++て>>128みたいなことって出来ます?例えば
a=ABC:new()
b=ABC:new()
a.p=b;b.p=a --aとbで循環参照させる。
a=nil;b=nil
collectgarbage("collect")
出来るとしたら、これでC++側のABCの実体のデストラクタ
って呼ばれます?

>グローバル汚す可能性についてはグローバルのメタテーブルの__newindexをいじくって
誰かがそんなことやってましたね。


131:デフォルトの名無しさん
07/02/23 03:51:29
>>130
newしたものを普通のテーブルと同じように扱ってるところに問題がない?
userdataの可能性が高いし、そのままメンバー追加してどうなるかはluabindの実装によるかも。

tolua++では、new()で生成すると手動でdeleteが必要。
new_local()または クラス名() で生成すればガベコレに任せる。

local a=TestClass()
local b=TestClass()
local ax = { p = a }
local bx = { p = b }
a=nil;b=nil
ax=nil;bx=nil
collectgarbage(0)

これならちゃんと回収されてる。(Lua5.0の場合)


132:118
07/02/24 00:04:45
>>130
てゆうか、それ循環してないし。
例え循環させても、テーブルは循環してても当然回収されるので
>>130みたくラッピングすればluabindでも当然回収される。

>>userdataの可能性が高いし、そのままメンバー追加してどうなるかはluabindの実装によるかも。
luabind的にはuserdataだけど一応メタテーブル設定して大丈夫になっています。

>>128にも書いたけど、おそらくuserdataからそれに関連づけされた
luaオブジェクトへの参照をGCが追跡できて無いのでリークしてると思う。
5.0ではuserdataに環境は設定できないけど5.1では出来るようになって
いる。5.1でそうした理由は多分”userdata->その環境table”のパス
をGCでおえるようにして循環参照を検出して回収可能にする為だと思います。
(ぐぐったらそれっぽい議論がされてる。)
おそらくluabindが5.1に対応しきれてないのではと予想して対策を検討中。

133:118
07/02/24 00:05:50
まちがえた
>>130では無く>>131です(自分レスしてどうするw)

134:デフォルトの名無しさん
07/02/24 04:44:20
>>132
あ・・・ほんとだぜんぜん循環してないorz

あとLua5.0でもフルユーザーデータにはメタテーブルもてたけどね。
lightuserdataの扱いが変わっただけかと。

問題はメタテーブルの__newindexとかで実際何をやってるかということだけど・・・

135:デフォルトの名無しさん
07/03/10 15:00:02
hoshu

136:デフォルトの名無しさん
07/03/18 02:28:50
Squirrel + SqPlus使ってる人とかっているんかな?

Squirrel側から呼ばせるC++側の関数で
戻り値としてあるクラスのインスタンスをPushするにはどうすればいいんだろう?



137:デフォルトの名無しさん
07/03/29 21:09:52
保守

138:デフォルトの名無しさん
07/04/06 23:54:07
Lua 5.1.2 released.
URLリンク(www.lua.org)

139:デフォルトの名無しさん
07/04/09 14:51:00
Squirrelのプログラムサイズがでかい…
squirrel.libだけで741KBってどうなんですか?
スクリプトエンジンとか組み込むの初めてなので標準的な尺度がいまいちわかりません。
コンパイルかけたファイルしか使わないと考えればいろいろと削れる部分はあるんでしょうけど、
そういう使い方するのが普通なんですかね?
Luaってどのくらいのサイズなんでしょうか?

140:デフォルトの名無しさん
07/04/09 20:17:31
>>139
自分でexe作成して確認してみな。
そっちのが手っ取り早いぞ。

141:デフォルトの名無しさん
07/04/10 09:23:05
>>139
それでかすぎな気がする
デバッグ情報はってない?
あとstdlibとかなしでそのサイズ?

142:139
07/04/10 18:40:41
squirrel.libのサイズが741KBです。
プログラムサイズが小さくなるような最適化設定にしてビルドしたら664KBでした。
両方ともreleaseです。

>>139
一応、プロパティの『デバッグ情報の形式』というところは無効になっています。


143:139
07/04/10 18:42:17
訂正
>>139じゃなくて>>141でした。

144:デフォルトの名無しさん
07/04/10 19:05:16
報告乙

145:デフォルトの名無しさん
07/04/10 19:28:56
にしてもでかすぎる気がする。
Linux/gcc-4.1.2だとストリップ前が403926バイト、後が295940バイト
Linux/gcc-3.3.6だとストリップ前が390954バイト、後が281116バイト

…Luaと比べると非常に大きいな。


146:デフォルトの名無しさん
07/04/10 21:07:09
いや、Luaがすんごい小さいってのもあると思う。

147:デフォルトの名無しさん
07/04/10 21:53:40
CとC++の差が大きいよ。サイズはでかくなるしコンパイル遅いしライブラリ
配布ではバイナリ互換性が怪しくなってない?
GCCのバージョンを揃えないとリンクに失敗するとか(←これ本当?)

PerlもRubyもPythonもPHPもLuaもオールCで書かれているのはその辺の事情
と思う。
FirefoxやOpenOfficeはC++で別に問題ないが、オプソのスクリプトエンジンの
ジャンルはC++は駄目でCが適切らしい.

148:139
07/04/10 22:12:21
いや、
URLリンク(www.wanderer.jp)
ここのサイトの人がコンパイルかけたら270KBくらいだった言ってたり…
VS2005でビルドしてたんですが、gccでメイクしたら450KBでした。
うーん、まだ何かあるのかな?

149:デフォルトの名無しさん
07/04/10 22:25:40
>>147
オープンでも C++ の実装も結構あるよ。
JDK, AVM2, Poly/ML, StrongTalk とか。

俺も C で書いた方が良いと思うけどね。

150:デフォルトの名無しさん
07/04/10 22:44:39
>>149
JDKがC++と判明して、オプソ界では扱いづらいな...と思われてたりして。

151:デフォルトの名無しさん
07/04/10 22:48:23
>>150
昔からソースは公開されていたし、nm すればソース見ないでも C++ だって
分かる人には分かっていたから大丈夫だよ。

152:デフォルトの名無しさん
07/04/10 22:52:18
>>151
あー、そうなんだ。

153:デフォルトの名無しさん
07/04/11 06:46:14
Squirrelって糞だね

154:デフォルトの名無しさん
07/04/11 07:38:08
>>148
VS2005で、SquirrelをDLL化して
Releaseビルド220Kだよ


155:139
07/04/11 13:13:13
>>154
それって『構成の種類』をdllに設定してビルドするってことですか?
たしかにsquirrel.dllが170KBくらいで軽くなっているんですが、
sqstdlib.dllがエラーで作成できない…。このリンクエラーどうしました?

156:139
07/04/11 15:34:58
>>154
libのサイズってコンパイルさせるために必要なデータが入ってるから
dllより重くなるみたいですね。知りませんでした。
実行ファイルのサイズに影響する分のサイズは二つのlibでだいたい270KBくらいなんだと思います。
ありがとうございました。

157:デフォルトの名無しさん
07/04/11 16:46:14
>>147
Rubyは作者が、オブジェクト指向の言語をオブジェクト指向の言語で書きにくいと言ってる。

>>153
どの辺が?
サイズ大きいのは別に害じゃないと思うけど

158:デフォルトの名無しさん
07/04/22 00:44:07
Xtal 復活記念あげ

159:デフォルトの名無しさん
07/04/28 20:45:47
何かネタないの?

160:デフォルトの名無しさん
07/05/08 17:11:31
保守

161:デフォルトの名無しさん
07/05/09 20:26:56
Squirrel - Lua/組み込み系言語 Wiki*
URLリンク(wikiwiki.jp)

Squirrelの参考リンク参考になりました。
サンクス。

162:デフォルトの名無しさん
07/05/13 11:16:32
初歩的なことかもしれないけど
Squirrelで
sq_open使うと

ハンドルされていない例外 : System.TypeLoadException: アセンブリ 'squirreltest, V
ersion=0.0.0.0, Culture=neutral, PublicKeyToken=null' から型 'SQVM' を読み込めま
せん。
at main()
みたいなメッセージでる。調べたけどわからん
助けて

163:デフォルトの名無しさん
07/05/13 11:33:09
すまん自己解決した
なんでこうなるのかよくわからんけど

164:デフォルトの名無しさん
07/05/13 11:41:18
>>163
自己解決したら、解決法をかけとあれほど・・・

165:デフォルトの名無しさん
07/05/13 11:52:47
URLリンク(support.microsoft.com)にのってる

1. MyProject.cpp ファイルに次のコードを含みます。typedef struct _t_Struct *myStruct;

2. 手順 1 で探したコードをの後、次のコードを追加します。 struct _t_Struct
{
};

を書いて
t_Structの部分をSQVMにしたら動いた
プログラム初心者なんで意味がよくわからないし本当に治ってるのかわからないけど

166:デフォルトの名無しさん
07/05/16 15:52:01
squirrel使う人増えれば嬉しいな
今ゲームに組み込んでるのでそこで得た知識をいずれ記事にしてまとめるかも
コードのどこを削るかとか、Windows以外で使うときにメモリ確保部分をどう書き換えるかとか

167:デフォルトの名無しさん
07/05/16 17:29:10
>>166
マジで期待したいです。

168:デフォルトの名無しさん
07/05/16 23:03:00
新言語 Xtalを作る日記
URLリンク(d.hatena.ne.jp)

169:デフォルトの名無しさん
07/05/18 00:35:54
リンク張り逃げだけじゃなく、なにかしらの解説してくれや。

170:デフォルトの名無しさん
07/05/18 20:11:56
>>169
ざっと目を通しただけなので細かいところはわからないけど、
C++への組み込みに使用するとき、スタックを意識せずによいみたい。

残念なのは、ソースがVC依存ぽいところ。


171:デフォルトの名無しさん
07/05/23 03:05:54
>>170
むしろ、レス見てると、gcc依存っぽいが。

172:デフォルトの名無しさん
07/05/23 17:33:52
>>168
xtal-language - Google Code
URLリンク(code.google.com)

こっちを出さないと

173:デフォルトの名無しさん
07/05/23 20:38:36
Cみたいに文字列の先頭から順にアクセスするとかできないんですか?

174:デフォルトの名無しさん
07/05/23 22:20:10
>>173
おまー、mixiのluaコミュでも同じ質問してるだろ

175:デフォルトの名無しさん
07/05/23 22:38:27
別に効率が悪いだけでstring.subでできるでしょ。

176:デフォルトの名無しさん
07/05/23 23:36:38
>>168,172
なんか凄いところで紹介されてるね

■404 Blog Not Found
君は新言語xtalを知っているか?
URLリンク(blog.livedoor.jp)

177:デフォルトの名無しさん
07/05/23 23:59:34
>175
ver5.1使ってるんですけど日本語化パッチが5.02までしかないみたいなんで
sjisに対応できないんですよ。まあ出るのを待ちますか。

178:デフォルトの名無しさん
07/05/24 00:01:39
>>177
自分で改造するんだ!

179:デフォルトの名無しさん
07/05/24 07:36:57
UTF8でいいじゃない

180:デフォルトの名無しさん
07/05/24 14:31:10
>>177
これはどう?

Lua@空想具現化プログラミング
URLリンク(hammm.dw.land.to)


181:デフォルトの名無しさん
07/05/26 21:53:29
誰かlua_qt使ってる人いますか?


182:デフォルトの名無しさん
07/05/26 22:25:11
はい

183:デフォルトの名無しさん
07/05/30 16:12:03
質問です。LuaからOpenGLって使えます?
C++ネイティブからOpenGL使っているところを、一部分のOpenGL関数だけ
Luaから呼びたいんですけど。

184:デフォルトの名無しさん
07/05/30 17:36:39
そういうやつが、どっかにあった気がす
WikiLuaだっけ

185:デフォルトの名無しさん
07/05/30 18:38:34
というか逆に使えないと思う理由は何?

186:デフォルトの名無しさん
07/05/30 19:06:52
俺が昔使ってたやつはまだ大まかな関数しかなかったから、
自分で書いて命令増やしたりしてたな。
HDDと共に吹っ飛んでもう手元にないが。

187:デフォルトの名無しさん
07/06/02 16:37:36
>>147
GCCのABIがかわったのは、C・C++関係ないだろ。


188:デフォルトの名無しさん
07/06/02 16:39:26
>>166

は、どうした?

189:デフォルトの名無しさん
07/06/06 20:10:29
あげる

190:デフォルトの名無しさん
07/06/07 07:23:06
WikiXtalとかないの

191:デフォルトの名無しさん
07/06/07 20:10:15
SquirrelをDLL化して使っている人いませんか?

squirrel.dllを作ろうとするのですが、失敗します・・・
うまくできた人いない?

192:デフォルトの名無しさん
07/06/07 20:21:05
VisualStudio 2005 の、squirrelプロパティで、構成の定義で、
「ダイナミック ライブラリ (.dll)」を選べばいいんですよね?

あれ?あ、できました。
何でできなかったんだろ・・・。

ところで、
sqstdlib は、DLL化できないのですが、これってもしかして、付属のライブラリが使えないことを意味するのでしょうか?

193:191
07/06/07 20:51:45
sqstdlib.dll ビルドできました。

一旦、squirrel プロジェクトで、lib\ に Squirrel.libを吐いておいて、
sqstdlib プロジェクトで、プロパティ→構成プロパティ→リンカ→→入力 で、
..\lib\squirrel.lib をパスに加えたら、コンパイル通りました。

これでいいのかな?

これで上手くいっているのか、わからないのですが、
他言語(Delphi)から、使ってみようと思います。

ああ、ヘッダーかかなきゃ・・・

194:191
07/06/07 20:57:48
squirrel.dll 200K
sq.exe    348K
sqstdlib.dll 348K

なんかサイズが、マズイ気がします。
もしかして、squirrel.dllの中身全部、sqstdlib.dllにも入っちゃってるんでしょうか?
(..\lib\squirrel.libつっこんだんだから当り前か・・・)

別プロジェクト作って、一つのDLLにまとめた方が手っとり早いのですかね?

195:デフォルトの名無しさん
07/06/07 22:39:14
半年ROMってろ

196:デフォルトの名無しさん
07/06/07 23:43:22
スタティックリンクでいいじゃん

197:デフォルトの名無しさん
07/06/07 23:51:10
>>195
ムカッ!!

>>196
C++じゃないから、できないもん・・・

198:デフォルトの名無しさん
07/06/07 23:53:13
>>196
え、あ、もしかして、zlibみたいに、.oでリンクできるかってことか?
できるんかいな・・・

Delphiと、結合となると、BCCもってきていコンパイルか('A`)
どっちにせよだな・・・

199:デフォルトの名無しさん
07/06/08 07:14:40
自分で調べて学習する気がないなら、いくら教えても無駄だ

200:デフォルトの名無しさん
07/06/08 07:50:47
191はがんばってるとおもうけど

201:デフォルトの名無しさん
07/06/08 08:52:20
>>199
ひとつも教えてやってもいないじゃないかw

202:191
07/06/08 17:30:58
squirrel と sqstdlib 合わせて、まとめた squirrel.dll 作れました。
普段、VS.net使わないから、いやに手こずったぜ・・・

作り方は、後でかくぜ

203:191
07/06/08 17:48:50
以下、まとめた squirrel.dll の作り方。
VS.net 2005 proでコンパイルを確認。

squirrel_2.1.1_stable が解凍されているとして、

・squirrel_dll ディレクトリを作る
・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・ファイル→追加→既存のプロジェクト で、 squirrel_dll を追加
・プロジェクト名が、squirrel になっているので、squirrel_dll に変更
・squirrel_dll の関連づけられたファイルを一旦全部削除
・プロジェクト → 新しいフィルタ で、フィルタを作って、
 ソリューションエクスプローラーで、フィルタ名を squirrel に変更
・ソリューションエクスプローラーで、フィルタ squirrel を選択して、
 右クリック→追加→既存の項目 で、..\squirrel ディレクトリ の .h と .cpp を全部追加
・同様に、プロジェクト → 新しいフィルタ で、フィルタを作って、
 ソリューションエクスプローラーで、フィルタ名を sqstdlib に変更
・ソリューションエクスプローラーで、フィルタ sqstdlib を選択して、
 右クリック→追加→既存の項目 で、..\sqstdlib ディレクトリ の .h と .cpp を全部追加
・プロジェクト→プロパティで、
 ・構成プロパティ→全般→構成の種類 を、「ダイナミック ライブラリ (.dll)」に設定
 ・構成プロパティ→全般→出力ディレクトリを、「..\bin」に設定
 ・構成プロパティ→リンカ→全般→出力ファイルを、「$(OutDir)\squirrel.dll」に設定
・あとは、ビルド→squirrel_dll のビルドで、
 bin\ に、348KBの squirrel.dll ができていたら成功ー
 
面倒なら、フィルタは作らんでもいいけど・・・

204:191
07/06/08 17:49:38
ようは、squirrel と sqstdlib のファイルまとめて、DLL出力にしただけです。
たぶん、普段 VC使っている人なら見なくてもできる。


205:デフォルトの名無しさん
07/06/08 17:55:47
>>172
これ面白そうだね。でもまだバージョンが1.0未満か


206:191
07/06/08 18:22:03
一部訂正

> ・squirrel_dll ディレクトリを作る
> ・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする

・squirrel_dll ディレクトリを作る
・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel\squirrel_dll.dsp に名前を変えておく
・squirrel\squirrel_dll.dsp を VS.netで開く(新しいプロジェクトに変換する)

207:191
07/06/08 18:22:50
間違えた orz

> ・squirrel_dll ディレクトリを作る
> ・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする

・squirrel_dll ディレクトリを作る
・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel_dll\squirrel_dll.dsp に名前を変えておく
・squirrel_dll\squirrel_dll.dsp を VS.netで開く(新しいプロジェクトに変換する)

208:デフォルトの名無しさん
07/06/08 20:26:11
squirrel の 日本語対応できている人はいませんか?
環境は、Windowsです。

ためしに、sq.exeを対応させてみようとしているのですが、微妙な状況です。

素(そのままコンパイルした)のsq.exe に、
---- multi_byte.nut ------
// 表が怖い
print("噂のソフト\n")
-----------------------
を食わせてみた場合

・SJISは、エラー
 sjis.nut line = (2) column = (10) : error unrecognised escaper char
 Error [unrecognised escaper char]
・UTF-8N は問題なく通る?
 出力は、UTF8だが、ターミナルの文字コードをPoderosaで、UTF-8にすると問題なく見られる。
・UTF-16 LE-BOM付き は問題なく通る?
 出力が、UTF-16になっているがUTF-16のターミナルを持たないので確認できない。

となったのですが、
これは、素で、UNICODE対応していると見てよいのでしょうか?

SQUNICODEしなくてよいのかな?

209:デフォルトの名無しさん
07/06/08 20:28:54
Squirrel 2.1 リファレンスマニュアル
URLリンク(muffin.cias.osakafu-u.ac.jp)

> Unicode
>
> デフォルトではSquirrelの文字列はプレーン8ビットASCII文字となる。
> しかし、VMにシンボル'_UNICODE'がdefineされているなら、
> コンパイラとAPIで文字が16ビットとして扱われる。



210:デフォルトの名無しさん
07/06/08 20:44:06
>>209
_UNICDOEをプリプロセッサの定義に設定して、コンパイルしたのですが、
今度は、

>>208のファイルで、
・sjis
・UTF-8N
・UTF-16 LE-BOM
でどれも、
 Error [?????????????8・?8?8?8?

と出てしまい、実行できません。

困りました・・・。

211:デフォルトの名無しさん
07/06/08 20:47:25
>>210
ちなみに、_UNICODEを定義すると

// hello
print("hello")

とだけ書いたファイルでも
 Error [?????????????8・?8?8?8?
といわれてしまいます。


212:デフォルトの名無しさん
07/06/08 21:28:30
SqPlusつかったほうがはやいかもね。


213:デフォルトの名無しさん
07/06/12 16:39:38
Squirrel の_UNICODE で、デバッガでおいかけていたのですが、
バグなのか、sq.exeで、途中でfilenameが変わって、ファイルが読み込めないという、
不可解な挙動をして、読み込みエラーを吐くので、_UNICODE 見合わせる方向です。

ソースをみると、一応、_UNICODEなくても、BOM付きファイルのUTF16 LE, UTF-16 BE、UTF-8が、
ちゃんと考慮されているようなので、(sqstd_loadfile付近)
_UNICODE使わずに、UTF-16でやってみようと思います。

>>212
多言語から利用したいので、たぶん使えないのですよ・・・
参考にするのはできると思いますが・・・

214:デフォルトの名無しさん
07/06/12 18:36:04
>>213
残念ながら、_UNICODEなしで、UTF-16は駄目のようです。
_io_file_lexfeed_UCS2_LE あたりを見ればわかるのですが、
wchar_t を char にキャストしていますので、日本語がつぶれてしまいます。

UTF-8では、そのようなことは起きないようですので、
_UNICODEなしの場合は、UTF-8を使いましょう。

という結論です。



215:デフォルトの名無しさん
07/06/12 18:50:36
>wchar_t を char にキャスト
すげえなこれ。マジかよ

216:デフォルトの名無しさん
07/06/12 19:08:56
>>210-211の _UNICODE の問題ですが、解決できました。

sq.exe で、動作確認をしていたのですが、単に、プロジェクト sq が参照している、
プロジェクト squirrel とプロジェクト sqstdlib の_UNICODE が定義されていないだけでした。
VS.netでは、プロパティのプリプロセッサ設定です。
(つまり、_UNICODEの定義された objと、されていないobjを混ぜていた。そりゃ駄目だわー)

VS.netに、慣れてないせいにしておきます!

>>215
_UNICODE を定義(#define)していない場合の話です。
_UNICODE 定義時は、wchar_t → wchar_t になり、ちゃんと読めます。

217:デフォルトの名無しさん
07/06/12 20:59:10
>>212
> 多言語から利用したいので、たぶん使えないのですよ・・・

kwsk

218:デフォルトの名無しさん
07/06/13 02:56:41
>>217
SqPlusはテンプレートベースの、スタック操作とか減らすためのライブラリというように見えたのですが、
違うのかな?
テンプレートベース=C++べったりなので、そのまま多言語から使うのは難しいという認識です。

いや、よく見ていないのですが・・・
これから見てみます。


219:デフォルトの名無しさん
07/06/13 11:14:11
>>210
遅レスですまんけど、
たんにコンソール出力がUNICODEに対応してないからじゃないのかな
エラー出力をフックして、
コード変更してみたらどうかな

220:デフォルトの名無しさん
07/06/13 17:05:09
>>219
>>216

221:デフォルトの名無しさん
07/06/13 17:06:56
>>216
squirrelの追記。

プロジェクト sq などの、printを使うプロジェクトの場合、文字化けする(コンソールに?????と出力される)ので、
setlocale( LC_ALL, "" );
を最初の方に入れてロケールの設定をしておくこと。



222:デフォルトの名無しさん
07/06/13 17:22:45
setlocaleって内部で何やってんのかね
SetThreadLocaleとかのAPIを呼び出してるのかな

223:デフォルトの名無しさん
07/06/15 11:15:20
luabind使ってる人に質問。引数にunicode文字列を持つC++の関数をLuaから呼び出した
いときってどうやる?

224:デフォルトの名無しさん
07/06/15 12:11:08
>>188
すみません。ちょっと忙しいのでなかなか取り掛かれません。

自分はLuaを使ったことはないし、スクリプトをいじるのも今回が初めてですし、
プログラマとしても経験不足なのは否めないのであまり期待されても困るのですが、
squirrelを使い始めたばかりの人が参考に出来るくらいの情報を提供する自信はあるので、
そのうち必ずやります。


225:デフォルトの名無しさん
07/06/16 01:37:01
>>203
補足。
APIに、externだけでなくて、 __declspec(dllexport)つけとかないと、
DLLとして外部に関数を解放できない。
俺アフォw

- #define SQUIRREL_API extern
+ #define SQUIRREL_API extern __declspec(dllexport)

226:デフォルトの名無しさん
07/06/17 15:29:22
Luaの質問。
Cで定義した変数をLuaのグローバル変数にして、
Lua側で値を変更するとC側でも変更されてるようにならないかな?
userdataかlightuserdataあたりを使うんだろうけど、、、

227:デフォルトの名無しさん
07/06/18 09:38:11
lightuserdataをdoubleへのポインタだと決めてかかって
無理やりluaの実数書き込んだり読んだりできるようにluaを書き換えるのは
大した手間じゃないと思うぞ

228:デフォルトの名無しさん
07/06/19 16:55:22
>>227
何の話?

229:デフォルトの名無しさん
07/06/20 23:38:23
なんか股間がザーメン臭いんだけど

230:デフォルトの名無しさん
07/06/21 00:10:56
>>229
遺精か。あんまり頻繁にあるようなら病院逝けよ。お大事に。

231:デフォルトの名無しさん
07/06/21 00:30:35
真性マゾルートだと一切触れずにいける様になるらしい

232:デフォルトの名無しさん
07/06/26 19:09:55
月と栗鼠だったのかorz

233:デフォルトの名無しさん
07/06/26 19:15:33
誤爆

234:デフォルトの名無しさん
07/06/26 19:34:06
Lua、LL魂で紹介されるらしいね

235:デフォルトの名無しさん
07/06/28 21:53:59
Luaって何て読むんですか?

ぅあ?


236:デフォルトの名無しさん
07/06/28 21:58:04
>>235
ルア

237:デフォルトの名無しさん
07/06/28 21:58:44
ポルトガル語で月って意味らしいし
英語だとルナだから ルアじゃない?

238:デフォルトの名無しさん
07/06/28 22:06:53
>>232
誤爆じゃねーじゃん

239:デフォルトの名無しさん
07/06/28 22:30:30
「ぅあ」ワラタ


240:デフォルトの名無しさん
07/06/28 22:54:58
すいませんそのまま打ったらぅあなのでなんてよむのか分からなくて

241:デフォルトの名無しさん
07/06/29 00:08:09
「ぅあ」は良いなw

242:デフォルトの名無しさん
07/06/29 14:58:30
萌えるな

243:デフォルトの名無しさん
07/06/29 18:25:03

プログラミング言語ぅあ その4



244:デフォルトの名無しさん
07/06/29 21:14:15
Luaの呼び方は「ぅあ」であることが決定された瞬間だな。

245:デフォルトの名無しさん
07/06/29 21:19:09
瞬間はいいが、次スレなんてどんだけ先だよw

246:デフォルトの名無しさん
07/06/29 21:28:27
>>245
あと2~3年だな

247:デフォルトの名無しさん
07/06/29 22:27:28
ぅあって、単なる配列も整数のインデックスなのに辞書みたいに毎回ハッシュを
計算するって本当ですか?
あとインデックスが0じゃなくて1から始まるらしいんですけど、何故なんでしょう・・・
この点が無ければ、スクリプト言語で今のところ最有力候補なんですが・・・

248:デフォルトの名無しさん
07/06/29 23:00:05
>247
配列とハッシュ表が区別されない同一のデータ構造なのは本当。
でも、ふつうに配列と使っているときには、配列用のパートにつっこまれてハッシュなんか計算しないよ。
つまり効率が気になるようなら、そこは効率わるくならないようになっている
と考えてよい。

なぜ1から始まるかは知らん。


249:デフォルトの名無しさん
07/06/30 08:13:12
1から始まるぐらいで嫌ならぅぁあ向いてないよ

250:デフォルトの名無しさん
07/06/30 11:21:38
>>247
その辺を改良したのがsquirrelなんじゃね?
squirrelもなんかよみにくね?

251:デフォルトの名無しさん
07/06/30 16:17:40
よみにくね? 

    ?

252:デフォルトの名無しさん
07/06/30 19:16:39
よみにいな

じゃあすくいっれるの読み方も>>235に考えてもらおうぜ

253:デフォルトの名無しさん
07/06/30 22:07:23
>>248-250
どうもありがとうございます。配列の件よく分かりました。

あとSquirrelってのは知りませんでした・・・ちゃんとスレ読んでなくてすみません
Squirrel、いいですね、検討してみます

254:デフォルトの名無しさん
07/07/01 13:26:38
>>227
超遅くてごめんレスありがとう。そんなすごいこと可能なら検討してみる。
でも、ぅあ書き換えるってかなりの手間じゃないかな、、、

255:デフォルトの名無しさん
07/07/01 13:58:45
書き換える、の対象を勘違いしてないか?

256:デフォルトの名無しさん
07/07/02 02:35:07
Squirelの感想の続きが聞きたい

257:デフォルトの名無しさん
07/07/02 08:41:18
>>256
別の人でよければ
GCで時間くわれないからゲームで重宝してます。


258:デフォルトの名無しさん
07/07/02 08:42:02
あとついでに、
squirrel2.1.2 の動きがあるね

259:デフォルトの名無しさん
07/07/02 23:24:14
そんなの屁でもないぜ

260:デフォルトの名無しさん
07/07/02 23:25:18
誤爆

261:デフォルトの名無しさん
07/07/02 23:27:27
warata

262:デフォルトの名無しさん
07/07/07 16:34:44
あげますよ

263:デフォルトの名無しさん
07/07/07 16:44:26
阻止

264:デフォルトの名無しさん
07/07/10 11:37:13
誰か
VC++2k3での使い方
頼む

265:264
07/07/10 12:22:55
一週間ぐらい悩んでたのに、質問書いた途端に事故解決した

プロジェクト作ってサンプルソース加える

本家でdownload binaries (ここで違うサイトへ飛ぶ) download lua-----vc6_lib.zipをダウンロード
プロジェクトのフォルダに解凍したもの突っ込む

includeのフォルダの中身をソリューションエクスプローラーのヘッダーファイルのところに放り込む
lua5.1.libをソリューションエクスプローラーのリソースファイルのところに放り込む

あとはプロジェクトのプロパティで
全般のマネージ拡張をいいえ
リンカの入力 特定ライブラリの無視をlibcmtd

これで実行できた

マネージ拡張の部分変えなくてもコンパイルとリンクは普通に通るから何が原因か訳分からなかった
チラシの裏だったかもしれないがとりあえず

266:デフォルトの名無しさん
07/07/13 20:41:43
ゲーム用スクリプトとしては有名らしいけど
使ってる国内の市販ゲームってほんとうにあるの?

267:デフォルトの名無しさん
07/07/13 20:53:24
知るか

268:デフォルトの名無しさん
07/07/14 01:13:39
>266
国内では知らないが
海外含めればFarCryとかRagnarokOnline(ホムンクルス用)か?

269:デフォルトの名無しさん
07/07/14 12:48:59
1つ質問

組込言語を使う場合、
・全ての処理を記述する
・部分的に処理を記述する(敵の移動ルーチンなど)
どっちが良いのかな?

270:デフォルトの名無しさん
07/07/14 13:01:16
>>269
・分離が必要な部分のみを記述する(敵の移動ルーチンなど)

271:デフォルトの名無しさん
07/07/14 13:29:28
RigidChipsに組み込まれたLUAでFFTを実装しているんだが
なんかうまくいかない

参考にしているCソースのFFTは基本が再帰呼び出しなんだが
ポインタなぞ使えないし
色々やってみたが、ナンカ Arithmeric fireldなんとかって出てエラーになりよる


もう頭が沸騰しそうだぉ

272:デフォルトの名無しさん
07/07/14 14:41:09
質問です。

C側からLua内のテーブルにアクセスする場合
URLリンク(tgws.fromc.jp)
↑を使うと「table.member.value」のような形の値にはアクセスできますが
table[1].value のような配列形のテーブルに入っている値にはアクセスできません。
実現する方法はありますか?

273:デフォルトの名無しさん
07/07/14 16:14:39
>>272
そのURLのどこを参考にしてるのかわからんけど・・・
キーの値としてpushstringしてるところをpushnumberにすればいいんじゃないの?


274:デフォルトの名無しさん
07/07/14 18:57:10
>>269
ケースバイケースじゃね?
全部スクリプトでいいならその方がらくできそうだし

275:デフォルトの名無しさん
07/07/14 19:08:19
LuaとRubyって何か似てますね

276:デフォルトの名無しさん
07/07/14 21:43:31
そうかなあ。

277:デフォルトの名無しさん
07/07/14 22:47:13
endくらいだろ

278:デフォルトの名無しさん
07/07/14 23:54:44
JavaScriptのほうが似てるという噂

279:デフォルトの名無しさん
07/07/15 00:48:46
Squirrelなら、何となくJavaScriptに似てなくもないが、ぅあは・・・

280:デフォルトの名無しさん
07/07/15 00:49:57
Rubyはいろんな言語からのパクリンだから

281:デフォルトの名無しさん
07/07/15 00:59:04
色々な言語のパクリじゃない言語なんて無いですけどね。
Luaもパクリンしまくりですよ。

282:デフォルトの名無しさん
07/07/15 01:08:20
>>279
構文にしか目がいかないヘタレ発見

283:デフォルトの名無しさん
07/07/15 01:12:02
>>281
いや、Rubyのパクリ方は酷い
オリジナリティなんてない
他の言語と比較するなんておこがましい

284:デフォルトの名無しさん
07/07/15 01:16:34
別に酷くても良いんじゃない
上手くアセンブル出来ていて、それが有用ならオリジナリティなんて要らないでしょ

俺はまともにスレッドを扱える様になるまで使う気は無いけど

285:デフォルトの名無しさん
07/07/15 01:21:17
>>283
具体的に何がどう酷いの?
どうせパクリ元の言語なんて知らずに見聞だけで言ってるんでしょ?

プログラミング言語の歴史を少しでも知ってたら、
「パクるなんて酷い」なんてとてもいえないんだがね。
おこがましいのは無知なお前。

286:デフォルトの名無しさん
07/07/15 01:27:03
どちらかと言うと、パクりつつけなしているのが酷いような

287:デフォルトの名無しさん
07/07/15 01:59:36
パクリ=Ruby厨が集まるキーワードです

288:デフォルトの名無しさん
07/07/15 02:11:01
反論できなくなるとレッテルを貼ってごまかします。

289:デフォルトの名無しさん
07/07/15 02:19:04
良く分からんが >>288 的には、誰が誰に反論すべき局面だったんだ?

290:デフォルトの名無しさん
07/07/15 02:22:10
自分だってわかってるからそうやってレスしてんでしょ?

291:デフォルトの名無しさん
07/07/15 02:23:39
パクリパクリ言うなら、C#の方がひどいだろ
Delphiパクった上に、J++までパクッたあげく文法は、C似だし
最近は、関数型言語まで朴楼としている


292:デフォルトの名無しさん
07/07/15 02:28:11
プログラミング言語の世界において、
パクリとかは関係無いし、どーでもいいことだってことを理解しないと前に進めません。

Rubyをパクった言語もいくつも生まれています。

293:デフォルトの名無しさん
07/07/15 02:30:02
>>290
だから自分って誰だよ...
君のレスだけ迷子になってるっぽかったから聞いてあげたのに。

294:デフォルトの名無しさん
07/07/15 02:34:28
>>293
はいはい、自分じゃないと思うならいちいち反応しなくていいよw
バカだなw

お前は2chでそうやっていちいち迷子のレスを案内してやってのかいw

295:デフォルトの名無しさん
07/07/15 02:41:18
以後、ru○yの話題は禁止


296:デフォルトの名無しさん
07/07/15 02:47:15
>>289
すまん。見てたが良くわからないから
偉い人が降臨するのを待った方がいいと思った。

でもローカル変数はenvironmentが持ってるわけじゃないし
(Function Prototypeが持ってるぽい)
他の関数はスコープの外だから無理だと思うよ。
table:functionの形式にしてselfに持たせるのはどう?

297:デフォルトの名無しさん
07/07/15 03:31:15
>>294
>お前は2chでそうやっていちいち迷子のレスを案内してやってのかいw

見ていて可哀想だなと思った時だけだよ。

298:デフォルトの名無しさん
07/07/15 11:58:49
>>297
かわいそうなのはお前なんだけどなw

299:デフォルトの名無しさん
07/07/15 12:44:33
ムjもID出ればいいのにな。
毎行wつくのがうざwww

300:デフォルトの名無しさん
07/07/15 12:50:26
すまん。見てたが良くわからないから
偉い人が降臨するのを待った方がいいと思った。

301:デフォルトの名無しさん
07/07/15 13:02:21
>296,300
どうして >126 がコピペされているんだろう。
126を書いたので気になる。間違ってるならそう言ってくれよう。

302:デフォルトの名無しさん
07/07/15 13:29:46
すまん。見てたが良くわからない

303:デフォルトの名無しさん
07/07/15 15:00:56
>>298
そんな無理に頑張らなくても、もう終わりで良いんじゃない?

304:デフォルトの名無しさん
07/07/15 15:04:58
お前らこんな人口の少ないスレでなにやってんだよ

305:デフォルトの名無しさん
07/07/15 15:18:50
>>303
お前が必死に引き伸ばしてるんだろうが。バカだな・・・。

306:デフォルトの名無しさん
07/07/15 15:22:39
>>305
バカだと思ったらレスしなきゃ良いんじゃね?
w 付けるのも止められたんだしw

307:デフォルトの名無しさん
07/07/15 15:36:48
Ruby>>>>>>>>。。。。Lua

308:デフォルトの名無しさん
07/07/15 16:32:24
久しぶりに二桁未読があって楽しみに開いたらやっぱりか…
ちょっと期待しちゃった俺がばかだった( ´・ω・)

309:デフォルトの名無しさん
07/07/15 16:59:03
>>275-307まで脳内削除

310:デフォルトの名無しさん
07/07/15 17:17:56
RUBYYYYYYYYYYYYYYY!!!!!!!!!!!

311:デフォルトの名無しさん
07/07/15 17:43:06
これからはXtalの時代でしょ

312:デフォルトの名無しさん
07/07/15 17:46:26
もう俺言語はいいよ
バグあったら最悪。大抵デバッグで詰まるし
結局緊急時とかは既成のCとか使っちゃうわけだし?



313:デフォルトの名無しさん
07/07/15 17:54:56
>>306
バカかお前。

お前がまず「もう終わりで良いんじゃない?」と思ったんだから、
レスしなきゃいいだろうがバーカ。


314:デフォルトの名無しさん
07/07/15 18:07:59
バカしか書けんのか、この荒らしは...
虚しいのう...

315:デフォルトの名無しさん
07/07/15 18:11:42
バカなお前のために、俺の語彙力を発揮しろと?

というか、バカなんだから理解できないだろ?

316:デフォルトの名無しさん
07/07/15 18:13:01
>>313
ここはぅあのスレですよ。喧嘩をしたいのなら他所でやって頂けませんか。

317:デフォルトの名無しさん
07/07/15 18:14:21
>>315
あまりにも程度が低過ぎてワラタ。お前面白いからもっと頑張れw

318:デフォルトの名無しさん
07/07/15 18:14:27
もう終わりで良いんじゃない、と言った本人がダラダラと続けてるからムリ

319:デフォルトの名無しさん
07/07/15 18:15:39
>>317
お前もガンバレよ、そのネット難民の生活をなw

320:デフォルトの名無しさん
07/07/15 18:16:57
うわー、レッテル貼られたw
何だっけ? レッテル貼るのは反論出来ない時のごまかしなんだっけかw

321:デフォルトの名無しさん
07/07/15 18:17:44
これが2ch名物、"悔しいからお互いにレスし続ける合戦"ですか。

低脳二人がこの合戦にはまると、まさにエンドレスサマー

322:デフォルトの名無しさん
07/07/15 18:18:53
>>320
えw
お前レッテルの意味わかってるの?w

323:デフォルトの名無しさん
07/07/15 18:21:30
スマソ。はしゃぎ過ぎたわ。あとは誰か適当に相手してあげて。
ちょっと面白かったわ。

324:デフォルトの名無しさん
07/07/15 18:21:54
そろそろ「夏か…」と言い出す夏厨厨も参加して、
事態はますます混迷を深めていきます。

325:デフォルトの名無しさん
07/07/15 18:31:09
もう夏か・・・

326:デフォルトの名無しさん
07/07/15 18:32:03
>>323
まぁよくがんばったよ。

散々やっときながら、"ちょっと面白かったわ"と、
"俺は余裕だった、ちょっとアラシをからかってやっただけ"
という演出をするところがなかなか将来有望。

そんな演出を入れてみても、
傍から見るとどっちもアラシにしか見えないんだけどね。

327:デフォルトの名無しさん
07/07/15 18:33:41
↑傍観者気取りでた~www

328:デフォルトの名無しさん
07/07/15 18:35:21
スマソはどうした?

329:デフォルトの名無しさん
07/07/15 18:40:45
相手を特定したがる割に、匿名を嫌うわけでもないのが始末に終えない
匿名の全体主義こそすべて

330:デフォルトの名無しさん
07/07/15 19:27:00
>>328
俺は傍観してるよ。>>327 は誰だか知らん。

331:デフォルトの名無しさん
07/07/15 22:17:16
Luby

332:デフォルトの名無しさん
07/07/15 22:24:40
ぅび

333:デフォルトの名無しさん
07/07/16 01:07:47
あぁ、とうとうこのスレにもキチガイがきたか…。はやく別のとこいってくれねーかな。

334:デフォルトの名無しさん
07/07/16 23:52:40
結論 同一人物or魂の双子

335:デフォルトの名無しさん
07/07/17 00:44:33
RubyとLuaが?

336:デフォルトの名無しさん
07/07/17 00:55:29
>>283
rubyのは オ マ ー ジ ュ な
パクリとオマージュは紙一重だけど
rubyのはオマージュだと言える
だいたいパクリで成り立ってる言語なんてあるのか

337:デフォルトの名無しさん
07/07/17 01:23:44
Java

338:デフォルトの名無しさん
07/07/17 01:26:20
ところで、squirrelの記事を書いてくれると言った>>166はどうしたのかね?

339:デフォルトの名無しさん
07/07/17 01:48:10
>>336
パクりで成り立ってない言語なんてあるのか
の間違いじゃないの?
まあ俺が言ってるのはその「オマージュ」なんだろうけど

340:デフォルトの名無しさん
07/07/17 12:04:38
どうでもいいからお前らLuaの大域変数の初期値与える方法教えろよ!
具体的に言うとあるゲーム(説明のために簡単にブロック崩しにしておく)の初期値

ユーザ側でスクリプトを作ることが出来るゲーム(カルネジのような)を作ろうと思ってるんだが
ステージごとに初期位置可変なのでLua側に大域変数として全部与えてLuaから必要な変数だけ使う形にしたい。けどどう実現するべきか分からない
上から出来たら簡単だろうなーと思う順に言うと
1 C側からLuaに初期値を与えることが出来る関数がある
2 ユーザ型とかいうの使って色々やると値を作れる
3 変数読む為だけのCの関数を作る

341:デフォルトの名無しさん
07/07/17 16:44:11
質問なんだけど
 lua_getfield( L, -1, "test" );

 lua_pushstring( L, "test" );
 lua_gettable( L, -2 );
って何が違うの?

342:デフォルトの名無しさん
07/07/17 21:00:19
Squirrelムズイな・・・というか、Lua系というか。

>>166さんをマジで期待したいぜ・・・


343:デフォルトの名無しさん
07/07/18 14:51:43
>>341
どっちも同じ。
テーブルからキーが文字列の値を取り出すことは
頻繁にあるから前者が用意されているのよ。

344:デフォルトの名無しさん
07/07/18 20:24:00
>>342
何が難しい?

345:デフォルトの名無しさん
07/07/18 22:08:00
Ruby好きはLuaが好き、
Java好きはSquirrelが好きって感じだね

346:デフォルトの名無しさん
07/07/18 23:44:03
C++好きはXtalが好きと言われるくらいにXtalが発展してくれるといいんだけどなぁ

347:デフォルトの名無しさん
07/07/19 02:49:10
>>345
Lua好きがRuby好きとは限らない罠

348:デフォルトの名無しさん
07/07/19 04:28:49
>>344
ホスト言語からの大域変数の取得でいきなり、つまづいた
今はできたけど・・・

APIリファレンスは、日本語のものがあって助かるんだけど、
リファレンスの説明だけじゃ、わかんなくて、本家にもAPIの使用例が全然ないので、
これ、何に使うのってことが一杯・・・
何かするにも手探り状態


もっとも肝心なのは、関数呼び出しとか、変数の取得などの効果的なラッピングの方法なんだけど。
まさか、ホスト側でSquirrel APIそのまま使うわけにもいくまい。
C++じゃないんで、SqurrelPlusなどつかえなくて(参考にはしてるが、なかなかにきっかい)

>>345
Ruby好きだけど、Squirrelの方が文法は好きだよ

349:デフォルトの名無しさん
07/07/19 08:08:19
Luaは速いけどRubyは遅いからちょっと違うかな

350:デフォルトの名無しさん
07/07/19 08:18:33
RubyはS。
ぅあはM。

に決まってんだろ

351:デフォルトの名無しさん
07/07/19 22:29:43
luaでFFTを実装しようと思うんだが
言語使用が違うからCやjavaから単純に移植というわけにはいかないので
どなたかC2LUAやらjava2luaのようなトランスレーターを知っていたら
是非教えて貰いたいのだけど

352:デフォルトの名無しさん
07/07/20 02:55:30
普通、トランスレーターはわざわざ遅くなる方向には作らんよ。
少し考えれば判る事だろ。
それとFFTがFINAL FANTASY TACTICSだとかいう
逆上脊髄反射ネタも禁止な。

353:デフォルトの名無しさん
07/07/20 04:03:01
URLリンク(www.kurims.kyoto-u.ac.jp)
にある再帰版のFFTならluaに移植できるんじゃない?

354:デフォルトの名無しさん
07/07/20 07:13:51
そういう方面はバインディング書くのが妥当かなー

355:デフォルトの名無しさん
07/07/20 07:35:02
foo.f.bindenv(foo)

これ汚ねえなー
デリゲート渡したいだけなのに、何だよbindenvって

356:デフォルトの名無しさん
07/07/20 22:21:27
せっかくなんでFFTルーチン手直ししてみた。
ネタ元はRigidChipsスレみたいなのでこっちに書き込み。
>>スレリンク(gameama板:498番)

実装が間違ってないとして・・・
64点なら1万回繰り返して4秒程度だったので(Core2Duo)
実用も可能そう。

luaソース:URLリンク(hammm.dw.land.to)

357:デフォルトの名無しさん
07/07/23 02:35:57
Perl好きだけどLuaの方が親近感は沸く

358:デフォルトの名無しさん
07/07/23 02:36:33
ぅあー助けて

359:デフォルトの名無しさん
07/07/24 11:53:01
>>346
Xtalいいよね。
早く1.0にならないかなぁ

360:デフォルトの名無しさん
07/07/24 18:39:57
>>359
1.0になってもバグフィックスぐらいで殆ど機能変わらないと思うぞ。
てか早く1.0になって欲しかったら沢山使ってバグ報告しようぜ。

361:デフォルトの名無しさん
07/07/24 19:12:45
Xtalは仕様が変態的で面白いんだが実装が首傾げたくなるんだよなぁ
"1" == 1はnullが返って1 == "1"はエラーとか。
前者がC++からsend使ってて
後者がXsrcで存在しないString::op_eq_r_Intを呼んでるせいだと思うんだが。

362:デフォルトの名無しさん
07/07/25 07:22:08
PC初心者でも弄り易くというぅあの思想が好きだ。

363:デフォルトの名無しさん
07/07/25 19:14:56
Luaは学習用に使えるサンプルやチュートリアルが少なすぎるな

364:デフォルトの名無しさん
07/07/25 23:15:37
lua-wikiのチュートリアルやらsample-codeやら見たけど
なかなか面白い

Pascalの文法に近いので、Pascalのサンプルやチュートリアルをluaでも動くようにしたらいいのではないだろうか
googleのソースコード検索で探してみたが、あまりヒットしなかった

365:デフォルトの名無しさん
07/07/25 23:46:40
ところでLuaのコルーチンで途中から別の関数に切り替えるのってどうすればいい?
例えばFunc0っていう関数の途中でyieldしてC++側に制御戻した後、
次にresumeするとFunc1という関数の最初から始まるようにする感じ。

単純にC++からの関数呼び出しでやると、yieldのところでエラー出てしまい、その後resumeしても戻らないんだが・・・。

366:デフォルトの名無しさん
07/07/26 01:54:57
やりたいことがいまいち不明だけど yield のあとに return Func1() って書くという意味ではないのかな。

367:デフォルトの名無しさん
07/07/26 02:14:50
lua_tostringで得られたポインタは、解放しなくていいんでしょうか?

368:デフォルトの名無しさん
07/07/26 13:09:04
>>367

チュートリアルの、lua_tolstringのところに

 Because Lua has garbage collection, there is no guarantee that the pointer returned by lua_tolstring will be valid after the corresponding value is removed from the stack.

ってあるから、ガベージコレクタで解放されるものだと思っています。

369:デフォルトの名無しさん
07/07/26 23:57:05
>>366
Luaのスクリプト側で次にresumeして戻る位置を決めるんじゃなくて、C++側から切り替えたい場合どうすればいいのかな、と。
ちょっと記述不足だった。すまん。

370:デフォルトの名無しさん
07/07/27 13:53:53
スクリプトでできることはすべてC側からもできるよ

371:チラシの裏
07/07/27 20:51:33
LuaをC++で使うときは
lua.hの代わりに、lua.hppをインクルードする、っと

372:デフォルトの名無しさん
07/07/28 19:30:45
UNICODEに対応していれば、ぅあ.hでもおk

373:デフォルトの名無しさん
07/08/01 16:40:05
Squirrelに関して質問。

SqPlusのソースを呼んでいるのですが、
SquirrelObjectで使っている、sq_addref というAPIがあり、
リファレンスによると、参照カウンタのインクリメントとあるのですが、
これって、つまり、C++側で作成した SquirrelObject で束縛?するためでしょうか?
sq_addref を sq_release しない限りは、squirrelが勝手に開放しないということで
あってるでしょうか?

374:デフォルトの名無しさん
07/08/01 16:41:13
読みにくくてすまそ。

SqPlusのソースを呼んでいるのですが、
SquirrelObjectで使っている、sq_addref というAPIがあります。
リファレンスによると、参照カウンタのインクリメントとあるのです。

これは、つまり、C++側で作成した SquirrelObject で HSQOBJECT を束縛?するためでしょうか?
sq_addref を sq_release しない限りは、squirrelが勝手に開放しないということで
あってるでしょうか?

375:デフォルトの名無しさん
07/08/01 19:17:53
参照カウンタのインクリメントは参照カウンタのインクリメントだよ
けどその理解で多分間違ってないと思う


376:デフォルトの名無しさん
07/08/01 19:39:20
URLリンク(ll.jus.or.jp)

377:デフォルトの名無しさん
07/08/01 21:08:24
URLリンク(ja.wikipedia.org)

- sq_addrefで参照カウンタが+1
- sq_releaseで参照カウンタが-1 (0となったらsq_resetobjectが呼ばれる)


378:デフォルトの名無しさん
07/08/01 22:04:59
サンクス。

あ、いや、参照カウンタ知らないわけではないすw
HSQOBJECTを保持するときは、こうやって参照カウンタをいじるのがその流儀なのね、思っただけなので。



379:デフォルトの名無しさん
07/08/02 16:53:20
Squirrelの質問です。
SqPlusの SquirrelVM.cpp の SquirrelVM::RunScript を見ています。

sq_gettopでスタック位置を確認しながら、見ていたのですが、
この関数、スタック操作が、間違ってませんか?
sq_callが成功した時点で、二つスタックが残っているので、
sq_popで2つポップしないといけないはず・・・。

バージョンは、ersion 2.1.1 stable
(でもHISTORYみてたら、
-sq_call() doesn't pop the closure (just the params) って書いてあるんだよなあ)

SquirrelObject SquirrelVM::RunScript(const SquirrelObject &o,SquirrelObject *_this)
{
  SquirrelObject ret;
  sq_pushobject(_VM,o._o); //スタックに残る
  if(_this) {
    sq_pushobject(_VM,_this->_o); //引数1
  }
  else {
    sq_pushroottable(_VM); //引数1
  }
  if(SQ_SUCCEEDED(sq_call(_VM,1,SQTrue,SQ_CALL_RAISE_ERROR))) {
// 成功したら、スタックに戻り値が残る
    ret.AttachToStackObject(-1);
    sq_pop(_VM,1); // sq_pop(_VM,2);では?
    return ret;
  }
  sq_pop(_VM,1); // 失敗したら、スタックに
  throw SquirrelError();
  
}

380:デフォルトの名無しさん
07/08/02 16:55:10
  sq_pop(_VM,1); // 失敗したら、スタックに1つだけ残っている
  throw SquirrelError();
  
}

なんで、そう思ったかというと、
testSqPlus2.cppが残っているはずのスタック(戻り値)を全然考慮してないからなんですけど

381:デフォルトの名無しさん
07/08/02 17:03:52
ごめんちょっと勘違い

バージョンとHISTORYは、SqPlusじゃなくて、Squirrelのですね。
SqPlusのバージョンは、stable 25でした。

382:デフォルトの名無しさん
07/08/02 18:30:48
URLリンク(squirrel-lang.org)

383:デフォルトの名無しさん
07/08/02 18:48:57
>>382
どっちも日本人なのか・・・

384:デフォルトの名無しさん
07/08/02 19:09:04
>>382
同じバグかYO!\(^o^)/

サンクス。
おれの判断は正しかったようだ。

つか、公式フォーラムくらい検索しろ > 俺

コミッターもメンテナーにも日本人居るのなw

385:デフォルトの名無しさん
07/08/03 04:06:58
生のSquirrelでなくSqPlus使うと
コード大きくなたり重くなったりするの?

386:デフォルトの名無しさん
07/08/03 07:27:17
もともと重いからあまり関係ないような

387:デフォルトの名無しさん
07/08/04 21:27:01
LuaLua魂オワタ

388:デフォルトの名無しさん
07/08/04 21:37:39
>>387
参加したのか?

389:デフォルトの名無しさん
07/08/04 22:18:34
ぅあぅあ

390:デフォルトの名無しさん
07/08/04 22:58:17
行った。
・上野氏(みんな読んでるLuaマニュアルの訳者)によるLua紹介。
 「遺伝子関連のプログラムを組む上で最も都合が良かった」
・Luaの速度がXtalとPnutsから比較対象にされてた
・Xtalは頑張って作ってる印象。作者ナイスキャラ
・Squirrelは上野氏が一言触れた程度

その他はプレゼン中にチャットログ(Lingr)が流れる奴とか、嘘だらけのmatzプレゼンとか、いろいろ。
全体的には演者のレベルが結構高かった印象。
体調が最悪じゃなければなかなか良かった。

391:デフォルトの名無しさん
07/08/05 03:55:44
Xtaの彼はテンパっちゃったのか「切迫」を正しくない使い方で
連発してたね。気持ちはわかるがもうちょっとおちつけとw


392:デフォルトの名無しさん
07/08/05 19:33:36
>・Luaの速度がXtalとPnutsから比較対象にされてた
Luaメジャーじゃん?と思った

393:デフォルトの名無しさん
07/08/06 03:09:03
測るだけに

394:デフォルトの名無しさん
07/08/06 08:06:31
>>393
山田君ざぶとん1枚あげて!

395:デフォルトの名無しさん
07/08/06 22:48:18
Lightweight Language Spirit
URLリンク(ll.jus.or.jp)

これかー
LuaLuaっていうからわからんだじゃねーか

Luaだけじゃねえw
つか、Luaの話すくねえw

396:デフォルトの名無しさん
07/08/06 23:57:53
Lua 自体の話は少ないけど、色んなところで触れられてた。>>390 参照

397:デフォルトの名無しさん
07/08/07 02:37:50
> 原著第5版
テクスチャへの描画とか、実際に使う際の普遍的なチップスとかって
載ってますのん?

そういうのは、Game Programming Gems買えって事かな?(そろえたら、赤本よりたけええけどよぉおぉ)

398:デフォルトの名無しさん
07/08/07 02:38:25
誤爆 orz

399:デフォルトの名無しさん
07/08/07 04:06:38
Game Programming Gems といえば
6巻でLuaが扱われてるよね。
読んでないけど、どうなんだろう

400:デフォルトの名無しさん
07/08/08 01:12:02
LL魂、まとめ見てたけど、Cleanとか、Javaとか、OCamlはLLじゃねえw
すでに、適用範囲広がってるな。
普通に、L魂でいいんじゃないのか?

401:デフォルトの名無しさん
07/08/08 01:27:34
lightのL?
ぅあのL?

402:デフォルトの名無しさん
07/08/08 01:55:24
LanguageのLのつもりで書いた > L魂

403:デフォルトの名無しさん
07/08/08 03:01:53
>>400
確かだ一回目でHaskellが取り上げられてるはずだが?
すでにどころか最初から適用範囲も何もあったもんじゃなかったんじゃねえの。



404:デフォルトの名無しさん
07/08/08 04:15:12
>>400
うむ、Cleanの説明で「速い!」って言ってるの見て、これはカテゴリ違うよなーとは思った。
言語まわりの新しい動きをおさえつつ、中心軸はlightweightに置くって感じで理解している・・・

Javaに関してはJythonとかJRubyとかの絡みが主かと。
今後スクリプト言語が動くプラットフォームとして、JavaなのかDLRなのか、みたいな。

そういう流れでは、JLuaとかIronLuaはでないのかと。
lua-lのほう見るとつくってる人は居るっぽいな。

405:デフォルトの名無しさん
07/08/08 04:31:46
IronSequirrel超希望

406:デフォルトの名無しさん
07/08/09 00:24:37
Lua魂開催しよう!!

407:デフォルトの名無しさん
07/08/09 14:48:53
参加者1名とかで終わりそう

408:デフォルトの名無しさん
07/08/10 23:53:06
要するにOff会じゃないのか?


409:デフォルトの名無しさん
07/08/11 10:52:37
>>407は来てくれるってことだね!

410:デフォルトの名無しさん
07/08/11 13:11:25
>>407が参加したら主催者と合わせて参加者2名になっちゃうでしょ

411:デフォルトの名無しさん
07/08/11 18:57:01
主催者すら来ないOff、ってのもそれはそれで魅力的だけどな


412:デフォルトの名無しさん
07/08/13 03:00:30
それはもう主催者って呼び方が適当じゃないなw
企画者とか。

413:デフォルトの名無しさん
07/08/19 21:03:14
>166
もう三ヶ月経ってますよ。ちょっと焦らしすぎじゃーないですかね?

414:デフォルトの名無しさん
07/08/19 21:38:34
お前ら他人の作った糞言語使って嬉しいか
おれは我慢ならん

415:デフォルトの名無しさん
07/08/19 22:07:07
C++だってJavaだってC#だって他人が作った言語なんだが、お前は使わないのか?

これらの言語が糞じゃなくてぅあが糞だというのなら、それはお前の主観であって
他人に押し付けるものではないよ

416:デフォルトの名無しさん
07/08/19 22:14:12
糞言語かどうかは俺が決める事であって、
C++やJavaやC#がそうだとは一言も言ってないが

417:デフォルトの名無しさん
07/08/19 22:16:14
糞言語判定委員乙

418:デフォルトの名無しさん
07/08/19 22:22:01
他人のレスは初めの一行しか読まないのな

419:デフォルトの名無しさん
07/08/19 22:25:06
>>416は明らかにレスを読んでないし、
恐らく普段から人の話を聞かない自己中な人間なんだろうね。

糞言語判定委員乙

420:デフォルトの名無しさん
07/08/19 22:46:34
決め付けは良くない。

421:デフォルトの名無しさん
07/08/19 22:59:14
↓糞言語番付

422:デフォルトの名無しさん
07/08/19 23:05:42
1.糞言語かどうかは俺が決める事
2.糞言語かどうかは俺が決める事
3.糞言語かどうかは俺が決める事
4.糞言語かどうかは俺が決める事
5.糞言語かどうかは俺が決める事

決め付は良くない。

423:デフォルトの名無しさん
07/08/19 23:09:17
糞言語かどうかは俺が決める事であって、決め付けは良くない。

424:デフォルトの名無しさん
07/08/19 23:25:44
いや俺が決めるやるってば.決め付けは良くない.

425:424
07/08/19 23:27:04
日本語がおかしいかどうかも俺が決める.

426:デフォルトの名無しさん
07/08/19 23:52:53
俺がおかしいかどうかは…orz

427:デフォルトの名無しさん
07/08/20 00:02:59
俺が糞かどうかは日本語がおかしいかどうかで決まった。

428:デフォルトの名無しさん
07/08/20 01:02:36
俺が糞かどうかはお前が決める事であって、
お前が糞だとは一言も言ってないが

429:デフォルトの名無しさん
07/08/20 08:06:52
日本語は糞言語じゃないよ

430:デフォルトの名無しさん
07/08/20 08:25:17
日本語は糞言語だって土屋賢二が言ってた

431:デフォルトの名無しさん
07/08/20 08:27:26
LightWeight的観点からすれば日本語は糞

432:デフォルトの名無しさん
07/08/20 08:33:55
ついでにRubyは糞

433:デフォルトの名無しさん
07/08/20 09:29:10
スレが伸びてると思って楽しみにしてきてみれば
またこれか
学習しろ俺

434:デフォルトの名無しさん
07/08/20 14:18:58
まあお前らはそうやって糞言語を決めつけてればいいさ
その代わりPerlたんは俺の嫁だからな

435:デフォルトの名無しさん
07/08/20 23:00:02
         ∧_∧   ┌──────
       ◯( ´∀` )◯ < 僕は、LISPちゃん!
        \    /  └──────
       _/ __ \_
      (_/   \_)
           lll

436:デフォルトの名無しさん
07/08/20 23:13:00
Cで書いてあるのが良言語でC++で書いてるのが糞言語。この分類で9割方
当たる。

437:デフォルトの名無しさん
07/08/20 23:25:12
どこがどう糞なのか書いてくれると言語談義に花が咲くのに

438:デフォルトの名無しさん
07/08/21 00:14:12
C++はいろんな機関で策定されてきた標準ライブラリにのみ価値があり、
それ以外の自家製オナニーライブラリは糞と言っていい。
Cで書き直せグズ

439:デフォルトの名無しさん
07/08/21 00:49:14
boostとかほんとゴミだね

440:デフォルトの名無しさん
07/08/21 02:20:19
↓MFCはおまえの嫁

441:デフォルトの名無しさん
07/08/21 02:49:19
    / ̄ ̄ ̄ ̄\
    /      ::  ヽ
  /     \   / |
(∂|      | ・  ・丿 |
 ヽ|     ""   "" |
   |      ___   |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   \    /__/ /  < やっぱぅあはすげえや!
   /ヽ       /\   \_________________

442:166
07/08/22 18:11:01
squirrelの解説書きました
ごめん、もうめんどくさくなってすっぽかすつもりでした
かなり投げやりですがとりあえず約束は守りましたよ~


443:デフォルトの名無しさん
07/08/22 21:08:02
>>442
URLを張ってくれ

444:デフォルトの名無しさん
07/08/22 22:14:06
wiki

445:デフォルトの名無しさん
07/08/22 23:31:20
ジェネレータが役に立たない理由が気になる.
何をどう直すつもりなのかも.

446:デフォルトの名無しさん
07/08/23 00:18:17
>>445
その辺をちょっと書き足しました

447:デフォルトの名無しさん
07/08/23 00:53:40
速度にナシつけるならもうちょっと裏付けを示そうよ
delegateの使い方が無茶苦茶だよ
threadあたりは突込みどころが多すぎてもう

448:デフォルトの名無しさん
07/08/23 11:11:51
>>447
速度に関しては確かにはっきりと言えることじゃないですね
delegateは非常駐っぽいことをやる方法がこれしか思いつかなかったので…
突っ込みどころあるなら具体的に言ってもらえると助かります。個人的にそれを期待して書いてみたというのもあるので

449:デフォルトの名無しさん
07/08/23 11:27:58
俺も期待してる

450:デフォルトの名無しさん
07/08/23 23:20:45
どおおおんだけええええええ
としかリアクションが思い浮かばない

451:デフォルトの名無しさん
07/08/23 23:25:17
>速度にナシつけるならもうちょっと裏付けを示そうよ
ナシって、
>その使い方ならゲームでも大丈夫でしょうが、
>スクリプトでガリガリ計算を行うようだと速度面で問題になってくると思います。
この部分か?他に見当たらないが。

これは当然の話で、裏づけも糞もないだろ、と思う。

452:デフォルトの名無しさん
07/08/23 23:43:10
言ってることがどんなに真だろうが
実際のデータがなかったら何も言っていないのといっしょだよこういう話は

453:デフォルトの名無しさん
07/08/23 23:47:00
>>452
はいはい。お前は口を出すとマイナスにしかならないから黙っててねこういう話は

454:デフォルトの名無しさん
07/08/24 00:13:42
>>453
>>452が何をいってるのかちゃんと理解できてるか?
キレてるのだけはわかるんだが
黙ってろとかどんだけだよ

455:デフォルトの名無しさん
07/08/24 00:20:08
どおおおんだけええええええ

456:デフォルトの名無しさん
07/08/24 01:25:58
まあいろいろと突っ込まれるのは覚悟してました
Squirrelのことだったらまだしもそれ以前に用語の使い方がおかしかったりとか
そういう指摘もあるだろうなあ、と
それはもう未熟っぷりを晒す覚悟でしたのでいいのですが、
Squirrelに関する間違いはここで出して欲しいです。それをまとめたいので。
特に>>448さんのdelegateに関しては具体的に理由を聞きたいです
常駐、非常駐的なことをするのって他に方法あるんですかね?
個人的にそこら辺は死活問題なんですよね

457:デフォルトの名無しさん
07/08/24 01:26:54
安価447だったw

458:デフォルトの名無しさん
07/08/24 01:46:54
つーかめんどくさいとか、投げやりとか書いてるし、
最初から真面目にやろうとしてないじゃん。

スレは荒れるし、入門者が間違った知識覚える恐れもあるし、
やる気無いんだったら別にやらなくていいから、変なこと書かないでくれ。

459:デフォルトの名無しさん
07/08/24 01:48:57
>>454
なにキレてんの?

460:デフォルトの名無しさん
07/08/24 01:50:07
>>458
間違いを指摘するやる気もないなら、お前が黙ってろって話だと思うよ

461:デフォルトの名無しさん
07/08/24 01:54:45
>>460
黙ってろとかどんだけだよ

>>458
書かないでくれとかどんだけだよ

どおおおんだけええええええ

462:デフォルトの名無しさん
07/08/24 02:04:02
どんだけとかどんだけだよ

463:デフォルトの名無しさん
07/08/24 02:13:18
>>461
どんだけ~言われたのが相当気に障ったのか相当気に入ったのか知らないけど
書きたいだけならどっか他のとこで発散してきてくれると助かる

464:デフォルトの名無しさん
07/08/24 02:28:00
このスレ定期的に小学生の口ゲンカみたいなやりとりがあるけど
luaってそういう言語だったっけ
複数手前のスクリプトのステートメントを参照できる変数があって
それを一部書き換えてevalできるとか
すごいプログラムがかけそうだが

465:デフォルトの名無しさん
07/08/24 02:47:24
>>463
キレてんのはお前だろ。どっかいってね。

466:デフォルトの名無しさん
07/08/24 03:49:14
>>456
常駐、非常駐的なことってのがよくわからないんだけど
いらなくなったら消すテーブルの名前をあらかじめ決めておいて
スクリプトの中でいらなくなったら消すものはそのテーブル内に定義しておいて
そのテーブルをいらなくなったら消す
じゃだめなの?

467:デフォルトの名無しさん
07/08/24 07:54:03
オブジェクト指向のスクリプト言語が遅いのはほぼ定説だと思うが

468:デフォルトの名無しさん
07/08/24 17:56:15
>>466
リファレンスにある関数登録みたいなやり方でテーブルを登録するってことですか

そうかー、普通そうするのか

469:デフォルトの名無しさん
07/08/24 18:07:59
でもそれって、GCやrefcountを阻害するだけじゃない?


470:デフォルトの名無しさん
07/08/25 00:12:03
>>468
どうも納得されてるみたいだけど
常駐、非常駐的なことってのが未だに謎なので少し説明してよ
>リファレンスにある関数登録みたいなやり方
ってどこのこと?

あまりにニッチな要求に応えなくちゃならんならスクリプトでどうにかしようとするより
squirrelのソースコードいじるほうが利口な場合もあるかもしれないよ?

471:デフォルトの名無しさん
07/08/25 00:41:37
>いらなくなったら消す
いるものは残して、いらないものは消す。おっしゃってる通りのことをやりたいだけです。
ルートテーブルに全部のスクリプト読み込んでたら、そういう区別ができないじゃないですか

>>リファレンスにある関数登録みたいなやり方
>ってどこのこと?
SQFUNCTION型の関数をルートテーブルに登録するやつみたいなやり方…、じゃないんですか?

472:デフォルトの名無しさん
07/08/25 01:46:07
>>471
APIでやるならそのとおり

↓みたいなスクリプトをルートテーブルをpushしたあとdofileしちゃってもいいし
tmptable <-
{
 a = function(v) { return v + 1; },
 v1 = 0,
 v2 = 3.1415
};

473:デフォルトの名無しさん
07/08/27 11:16:30
>>472
166はコンパイラを削ってつかっている予感

常駐の意味がよくわからないけど、
がんばって使ってる感がいいね


474:デフォルトの名無しさん
07/08/29 22:09:09
IronLua じゃなくて Nua かよ(w
URLリンク(www.codeplex.com)

475:デフォルトの名無しさん
07/08/29 23:09:00
ぬあ?

476:デフォルトの名無しさん
07/08/30 01:12:36
あえて外人っぽく発音すればヌワだが

477:デフォルトの名無しさん
07/08/30 01:22:53
にょわーっ

478:デフォルトの名無しさん
07/08/30 20:47:36
Nuaで検索するとFate系ばっかだな

479:デフォルトの名無しさん
07/09/01 13:13:08
>>166さんの文章ってどこ?

Squirrel - Lua/組み込み系言語 Wiki*
URLリンク(wikiwiki.jp)

こっちにもないんだけど・・・roz

480:デフォルトの名無しさん
07/09/01 13:18:28
とりあえず張られてるリンクを探してみるとか
そういうこと考えないのか?

481:デフォルトの名無しさん
07/09/01 13:41:26
>>480
お!はてなのやる気のないゲームプログラマさんのページか!
㌧クスだぜ
じっくりよむぜ

482:デフォルトの名無しさん
07/09/02 21:09:16
質問

lua_State *L = lua_open();
int* hoge = new int;
lua_register(L, "hoge", hogehoge);
luaL_dofile( L, "hoge.lua");

この時、関数hogehoge内で変数hogeをいじりたいのですが、
どうすればいいのでしょうか?
グローバルに置くとかしか解決方法がないのならあきらめますが…

483:デフォルトの名無しさん
07/09/03 16:01:58
>>466
思ったんですが、そのやり方で登録した関数はスクリプト側から呼び出せないんじゃないでしょうか


484:デフォルトの名無しさん
07/09/04 11:57:00
API はまだよく知らないんですが、ローカル変数をほかの関数からいじるには、
その関数に変数の参照を渡す必要があります。
たぶんテーブルで囲んであげればいいです。Lua のコードで書くとこんな感じ。

function hogehoge(box)
box[1] = 456
end

local hoge = {123}
hogehoge(hoge) -- ここで hoge の内容が変わる

485:デフォルトの名無しさん
07/09/04 15:04:00
Generic Pascal Lua Library
URLリンク(www.eonclash.com)

486:デフォルトの名無しさん
07/09/04 19:15:48
>>485
DelphiとFPCをサポートしてる?

487:デフォルトの名無しさん
07/09/04 20:50:51
>>482
lua_register(L, "hoge", hogehoge);

lua_pushlightuserdata(L, static_cast<void*>(hoge));
lua_pushcclosure(L, hogehoge, 1);
lua_setglobal(L, "hoge");
に変えればいんじゃね?

hogehogeの中身は
int hogehoge(lua_State *L)
{
 int* hoge = static_cast<int*>(lua_touserdata(L, lua_upvalueindex(1)));
 // hogeを使っていろいろ
}

あと、hogeはどこでdeleteするの?
delete後にhogehogeを呼ばれたらアウト

488:デフォルトの名無しさん
07/09/11 02:21:22
luabindのこれってバグ?

object.hpp:256 ---------
template<class LHS, class RHS>
typename enable_binary<bool,LHS,RHS>::type
operator!=(LHS const& lhs, RHS const& rhs)
{
 return !(lhs < rhs); // '<' => '==' の間違い?
}
---------
luabinder の意見求む!!


489:デフォルトの名無しさん
07/09/18 15:27:05
age

490:デフォルトの名無しさん
07/09/18 23:28:09
ぅあ

491:デフォルトの名無しさん
07/09/19 21:23:46
ぅあ

492:デフォルトの名無しさん
07/09/22 20:39:47
ょゅぅょゅぅ

493:デフォルトの名無しさん
07/09/23 19:05:00
|ナ|ナ|ナ

494:デフォルトの名無しさん
07/09/24 00:30:35
っょぃっょぃ

495:デフォルトの名無しさん
07/09/24 00:37:35
ょゎぃょゎぃ

ぅあ

496:デフォルトの名無しさん
07/09/28 17:42:45
   ドゴォォォ
    ∞        ぅゎ ょぅι゛ょ っょぃ
   ┃( '-')  、(;´д`) 
   ┣ノ、 )= 三 )n ) Σ   
      〉  / / <  

497:デフォルトの名無しさん
07/10/14 12:47:04
皆さんLuaインタプリタを何でコンパイルしてる?

C言語として
=> lua_gettable等がlongjmpかますので
  C++と一緒に使うのは相当つらい。

C++言語として
=> 上記問題は解決する(longjmpでは無く
  throwつかうから)がluaとリンクするプログラム
  は全てC++でコンパイルする羽目になる

C++言語として&LUA_APIをextern "C"として宣言
=> 割合ましだが、相変わらずLuaとリンクする
  プログラムは-fexceptions等をつけてコンパイル
  する必要あり。

意見よろ

498:デフォルトの名無しさん
07/10/14 13:27:27
つDLL

499:デフォルトの名無しさん
07/10/14 14:09:07
俺は
>C++言語として&LUA_APIをextern "C"として宣言

Cのライブラリを使う予定がない場合はextern "C"無しでもいいかも。
LuaのソースコードがそのままC++でコンパイルできると知った時はちょっと感動したもんだ。

500:497
07/10/14 14:43:32
>>499
やっぱそれが妥当ですかねぇ。

ただ、Cのライブラリ使う場合Cのライブラリを-fexceptions付き
でコンパイルしないといけないので(lua->Cライブラリ->luaが起こる
場合)、ソースが手に入ることが前提になるんだよね。
linux&gccな環境でソースが手に入らないことはまれだろうけど。


501:デフォルトの名無しさん
07/10/14 15:38:22
そもそもCには例外処理が言語に組み込まれてないんだけど、 -fexception つけると
何が変わるの?

502:497
07/10/14 16:26:57
>>501
えーっと、gccの話ね。(VCにも似たオプションがあったはず)
関数呼び出しが”C++<1:try> => C<2> => C++<3:throw>” となる場合
<2>の部分のスタックをまき戻す為の情報を付加しているんだと
思う。自信ないけど。
これが無いと例外発生時にAbortしてしまう。

>>499の例で言うと、
lua(C++) => C言語ライブラリ => lua_gettable(...)
なんて場合、lua_gettable内で発生した例外が
C言語ライブラリ内を通ることになる。


503:デフォルトの名無しさん
07/10/14 16:57:07
>>502
つけてもつけなくても素通りするだけで変わらないと思ってたけど、
つけないと abort しちゃうのか。

URLリンク(gcc.gnu.org)
-fexceptions
"... However, you may need to enable this option when compiling C code that needs to interoperate properly with exception handlers written in C++. ..."

なんかぼかして書いてあるけど、そういうことね。

ありがと。

504:デフォルトの名無しさん
07/10/24 19:54:40
hoshu

505:デフォルトの名無しさん
07/10/27 13:51:35
luaファイルで標準ライブラリの関数(math.randomとか)を使った関数を定義
しC++側からその関数を呼び出すとlua_pcallのところで失敗します。きちん
とluaopen_math()なども呼び出しているのですが・・・
同じ経験がある人とかいませんか?

506:デフォルトの名無しさん
07/10/27 16:48:44
>>505
lua_pcallの戻り値とエラーメッセージは?
それを確認すると解決の糸口が見つかると思う。

507:デフォルトの名無しさん
07/10/27 17:29:12
lua_pcallの戻り値は2なんで実行時エラーの模様です。デバッガで追ってみると
スタックからpopするところでエラーが出ていました。引数はきちんと
スタックにつんでいるので問題ないと思うんですが・・・
標準ライブラリを使わない関数とかは普通に実行できるんで、全く理由が
分かりません。

508:デフォルトの名無しさん
07/10/27 17:55:59
再現するソースを見せるんだ

509:507
07/10/27 18:26:57
//関数呼び出し部分
lua_getglobal(m_L, "hoge");
lua_pcall(m_L, 0, 1, 0); //ここでエラー
int ret = static_cast<int>(lua_tonumber(m_L, -1));

//luaファイルで定義した関数
function hoge
return math.random(100);
end

luaL_loadfile()は呼び出し済みです。

510:506
07/10/27 19:03:01
>>507
戻り値が0以外の時は文字列型のエラーメッセージが
スタックのトップに置かれているからそれを見れ。

511:デフォルトの名無しさん
07/10/27 19:52:02
>>509
luaopen_math呼んで無いじゃん。
呼んでる部分を含めた再現ソースを見せなさい。

512:507
07/10/27 22:31:55
>>510
スタックトップのエラーメッセージを調べたら引数が足りないというエラー
でした。マニュアルにはmath.randomの定義は以下のように書いてあったので
普通に通るもんだと思っていたんですが・・・
「引数無しで呼ばれると、math.random は [0,1) の範囲の実数の疑似乱数を
返す。数値 n を渡すと、math.random は [1,n] の範囲の整数の疑似乱数を
返す。 2つの引数 l と u を渡して呼んだときは、 math.random は [l,u]
の範囲の整数の疑似乱数を返す。」
引数を2個で渡すとエラーは出なくなったんですが、常に0が返ってきます。
引数0個だと正常に動作します。何なんでしょうね。

>>511
luaopen_mathは呼んでいます。

513:デフォルトの名無しさん
07/10/27 23:22:03
>>512
再現する最小限のソースを全て晒したら?
省略する奴に限って、省略したところに問題があるのはよくある話だから。

514:デフォルトの名無しさん
07/11/02 01:34:46
ミニマムコードを上げろー

515:デフォルトの名無しさん
07/11/02 03:54:43
このスレ的にはTJS2の組み込みってどうなの?

516:デフォルトの名無しさん
07/11/02 04:49:28
スレ違い

517:デフォルトの名無しさん
07/11/02 08:13:59
え?べつにいいんじゃないの
LLでしょTJS2って

518:デフォルトの名無しさん
07/11/02 08:19:06
pLua (Lua wrapper for FPC, Lazarus, and Delphi)
URLリンク(eonclash.com)

519:デフォルトの名無しさん
07/11/02 15:32:46
>>517
スレタイ嫁
ここはLL全般じゃなくてぅあのスレだ。

つっても過疎ってるから俺は構わないけど。

520:デフォルトの名無しさん
07/11/02 18:55:19
List[1]={"name","addr","phone"}
List[2]={"name","addr","phone"}
List[n]={"name","addr","phone"}

このような記述のList.luaがあるとして、これをrequireした後に書き出しすると、

List[4]={"name","addr","phone"}
List[1]={"name","addr","phone"}
List[3]={"name","addr","phone"}
List[2]={"name","addr","phone"}

のように、順序が崩れてしまいます。
テーブルのソートとはどのように行うのでしょうか?

521:デフォルトの名無しさん
07/11/02 19:04:32
>>520
1から始まる数値キーなら
for i,v in ipairs(List) do ... end
で回せばキーの順序はずれないと思うんだけどな。

実際ソートするならこれだけど。
table.sort(table, function(a,b) return a.x < b.x end)
みたいな。

ただこれでソートするにしても、テーブルは配列状(キーは1から始まる数値)である必要がある。

522:デフォルトの名無しさん
07/11/02 19:07:27
>>521
ありがとうございます。

現在のところ、

List[2]={"name","addr","phone"}
List[3]={"name","addr","phone"}
List[n]={"name","addr","phone"}

などのように1から始まる保証は無く、かつ数値が2, 3, 5, 6, 8, ...のように
飛び番になる可能性もあります。
実際のところ、処理上は問題は出ないのですが、
ログを取った際の可読性の問題でソート可能であればしたいのです。

523:デフォルトの名無しさん
07/11/02 19:22:39
>>522

Listとは別に、

sort_table[1]={no=5,"name","addr","phone"}
sort_table[2]={no=1,"name","addr","phone"}
sort_table[3]={no=13,"name","addr","phone"}
....

って形に詰めなおして>>521みたいにnoでソートすればおk

524:デフォルトの名無しさん
07/11/02 23:05:56
>>519
前スレ嫁。ここはLL全般のスレだ。

お前が構おうが構うまいがな。

525:デフォルトの名無しさん
07/11/02 23:27:58
>>524
お前が構おうが構うまいがここはスレタイ通りLuaのスレだ。
ここが何のスレかを知るのになぜ前スレを読む必要がある?

LL全般について議論したいのならお前がLLスレを立てればいいだけのこと。

526:デフォルトの名無しさん
07/11/02 23:45:50
>>524-525
前スレみるまでもなく>>8-11辺りでわかるんじゃ?
スレも半分超えてるのになんで今更突然……。

527:デフォルトの名無しさん
07/11/03 01:00:15
ぅあだけでもいっぱいいっぱいなのに
LL一般扱ってたらスレがいくらあっても足りないぜ

528:デフォルトの名無しさん
07/11/03 05:06:28
>>525
はいはい、新参が知ったかすんな。


>>527
何が一杯一杯なの?

つうか、お前過疎ってるから構わないって言った癖に意味不明すぎんな。

529:デフォルトの名無しさん
07/11/03 08:40:49
1年経で500レス程度だからLL全般スレでも良さげだな。
次スレ(いつになるかわからんけど)のスレタイは変えたほうが良いかもね。

530:デフォルトの名無しさん
07/11/03 08:48:29
情報が錯綜するからLuaがらみの話題だけでいいよ。
勝手に連立政権にされちゃ迷惑だ。

531:デフォルトの名無しさん
07/11/03 10:53:29
せいぜい Luaとその仲間 ぐらいかな。

LL特集になぜかLuaは入れてもらえないことが多いんだこれが

532:デフォルトの名無しさん
07/11/03 11:07:19
なんでだろう?
Webサーバとの組み合わせを指向してないからかな?

533:デフォルトの名無しさん
07/11/03 11:28:57
>>519
違う。
組み込み言語全般のスレ。
過去ログ嫁

スレタイは、前回、組み込み言語にしろって言ったのに、
Luaだけにしやがっただけで

534:デフォルトの名無しさん
07/11/03 11:35:56
「俺様はそうしろと言ったのに無視しやがって」

535:デフォルトの名無しさん
07/11/03 11:39:37
>>534
ワロタw
まさしくその通りw

536:デフォルトの名無しさん
07/11/03 11:59:15
>>534
そうですw

537:デフォルトの名無しさん
07/11/03 12:51:30
前スレでもLuaの話題なんてたいしてなかったんで、LL系の話題は全般取り扱うことになったの。
このスレ用のwikiもURLはluaだけど、LLならOKってなってるでしょ。
URLリンク(wikiwiki.jp)


「情報が錯綜する」ってバカですか。
錯綜するほど情報が出てないでしょ。
むしろ組み込み言語の情報が集まった方がいい。

>>534=535=536
そうじゃない。前スレではLL全般ということで同意がとれていていた。


538:デフォルトの名無しさん
07/11/03 12:55:10
>>537
そんなに煽りに反応しなくて良いよ。

539:デフォルトの名無しさん
07/11/03 12:56:14
前スレの終わり辺りではLL全般のスレにしようって流れだったんだけど、
なんだかんだでスレタイは変わらなかったんだよ。
前スレDAT落ちしてる上に、1年以上も前の話だから、
忘れてる人も多いだろうし、最近来た人が知らないのはしょうがない。

540:デフォルトの名無しさん
07/11/03 12:56:41
ちなみに俺は533ではない。

てか、ここ一年未満の新参が増えて、古参はluaをもう見放したのか?

541:デフォルトの名無しさん
07/11/03 13:13:34
squirrelが気になってます


542:デフォルトの名無しさん
07/11/03 15:21:49
>>540
ノシ 前スレからいます。

テンプレがあまり良くないよね。
前スレの終り頃はゴタゴタしてて急だったから立ててくれた人を責められないけど。

人も集まってるみたいだしテンプレを考えるにはいい機会かも。
できたら>11のWikiに書いておくと。

543:デフォルトの名無しさん
07/11/04 21:18:36
LL全般スレになったらlua専用スレ立てればいいだけじゃんw
民主主義は多数決で決まるんだよ、ばかがw

544:デフォルトの名無しさん
07/11/04 22:29:07
多数決も取ってないのによく言えるね、ばかがw

545:デフォルトの名無しさん
07/11/04 23:50:22
というか、たぶんLua専用する理由ってなに?
このLL全般でやってる現在でさえスローペースなんだよ? 全然意味がわからない。

546:デフォルトの名無しさん
07/11/04 23:52:22
日本語で言え俺orz

えー、Lua専用にしようという意見があるみたいなんですが、
別にレスも多いわけではないしそういった話が出る理由がわかりません。

……なんか、ごめん……。

547:デフォルトの名無しさん
07/11/05 00:06:05
Lua専用にするっていうか,別に総合スレをLuaスレにしようって言ってるわけじゃなし.
今Lua専用なんだから格別の理由がなければそのままだろ.
過疎スレは過疎スレなりに3スレまで来てるんだし
わざわざ総合にするって話が出る理由がわかりません.

548:デフォルトの名無しさん
07/11/05 00:16:03
別にLL総合スレを立てて、Luaスレが寂れて落ちるようなら
統合と言うことでいいんじゃない?
現状うまくいってるところを、わざわざ乱すこともないと思う。

549:デフォルトの名無しさん
07/11/05 00:17:56
元々スレタイはLuaだけど、内容的には総合スレ同然だと思うが。

550:デフォルトの名無しさん
07/11/05 01:23:03
そこの認識だよね。
ここが『Lua専用』だと思ってる奴って前スレとか持ち出すまでもなくこのスレ読んでないんじゃないかと。

551:デフォルトの名無しさん
07/11/05 01:34:36
687 :1:2006/03/16(木) 16:08:48
とりあえず、Wikiでも作ってみようかと思うんだが必要?

694 :デフォルトの名無しさん:2006/03/17(金) 09:57:30
このスレのWikiを作ろうかって話なんだから
看板はLuaで一応Luaの情報メインだけど
アプリ組み込み系なら多少の脱線はあり、ぐらいでいいだろ。
メジャーな言語は他所でやってくれ。

695 ::2006/03/17(金) 17:49:21
LightWeightLanguageがでかすぎるから。
やっぱ組み込み向けscriptつーことで

701 :デフォルトの名無しさん:2006/03/18(土) 21:36:56
なしてそこまでLightWeightLanguageでまとめたがるのか
明らかにLua wikiの方がわかりやすいタイトルと思うのだが

703 :デフォルトの名無しさん:2006/03/19(日) 02:18:56
このスレが、LightWeightLanguageの情報OKってなったからだろ。

LuaだけでWikiほんとに必要か?
マニュアルだけで結構十分じゃない?w

このスレの情報の出具合からいっても、
Wikiつくっても寂れるの見えてない?


↑前スレですでに総合スレにする流れになってたし、
そもそも前スレでも総合的に扱ってたはず。
このスレの最初のほうにも書いてあるし。

552:デフォルトの名無しさん
07/11/05 08:40:28
>>547-548
お前、これまでの話聴いてなかったのか?

553:デフォルトの名無しさん
07/11/05 09:30:03
>>547-548
・・・
ほんとにもう・・・乱してるのがおまえらだよ にわか

554:デフォルトの名無しさん
07/11/05 13:32:10
LuaLuaいってるやつは
上でさんざんでているsquirrelはなんだと思っているんだろう

555:デフォルトの名無しさん
07/11/05 18:26:14
これとか?
URLリンク(sourceforge.net)

検索ついでにテンプレ用にsquirrel関連を拾っておくか
The programming language Squirrel
URLリンク(www.squirrel-lang.org)
URLリンク(sourceforge.net)
SqPlus URLリンク(sourceforge.net)
Squirrel Shell URLリンク(sourceforge.net)

556:デフォルトの名無しさん
07/11/05 20:42:18
>>554
"squirrel"でこのスレを検索すれば、
lua専用スレじゃないということは、前スレを見るまでも無くあきらかだな。

557:デフォルトの名無しさん
07/11/06 01:52:37
SquirrelはLuaからの派生だからどちみちここで良いのでは。

558:デフォルトの名無しさん
07/11/06 02:00:57
別にluaからforkしたわけじゃないんで、派生とはいえない けど、
squirrelはこのスレでいいのは事実

559:デフォルトの名無しさん
07/11/10 06:44:52
次スレタイトル案
【Lua】LightWeightLanguage統合【squirrel】
【Lua】組み込み言語統合【squirrel】

560:デフォルトの名無しさん
07/11/10 07:04:42
>>243に一票

561:デフォルトの名無しさん
07/11/10 07:22:32
Squirrelの情報欲しい人の為にもスレタイにSquirrelは欲しい気がする
そうすりゃSquirrelスレが立つ心配も無さそうだしな

…ところで、次スレの話はまだ早すぎないか?
何だか、自分超元気なのに次期国王の話を聞かされる王様の気分だ

562:デフォルトの名無しさん
07/11/10 07:48:54
ぅあで喜んではしゃいでたのはやっぱりニワカか。

なんか違和感あったんだよな。

563:デフォルトの名無しさん
07/11/10 08:19:44
Squirrel重すぎ

564:デフォルトの名無しさん
07/11/10 09:02:58
ぎりぎりになって決まってなくて結局いまのまま……みたいなのは避けたい。

565:デフォルトの名無しさん
07/11/10 09:48:25
>>559
なかなかいいんじゃないかな

>>562
このスレがLuaで機能してるから他の言語くるな、なんて
質問しかしないような奴がいいそうなこったな

566:デフォルトの名無しさん
07/11/10 11:07:01
そしてPerl, Ruby, Python, PHP, JavaScriptで埋め尽くされる、と


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