トップページtech
1002コメント341KB

【Lua】組み込み系言語総合 その6【Squirrel】

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2013/03/10(日) 15:10:32.28
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/

その他の参考URLは>2から

■前スレ
【Lua】組み込み系言語総合 その5【Squirrel】
http://toro.2ch.net/test/read.cgi/tech/1321063450/
■過去スレ
その4 http://hibari.2ch.net/test/read.cgi/tech/1301414458/
その3 http://hibari.2ch.net/test/read.cgi/tech/1272643397/
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
0855デフォルトの名無しさん2016/03/28(月) 03:40:07.32ID:zJAWFm4u
__indexじゃないかな
$ lua
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> pp = require 'pl.pretty'
> mytable={1, 2, 3}
> pp.dump(mytable.test)
nil not a table
> setmetatable(mytable, {__index=function() return ({}) end})
> pp.dump(mytable.test)
{
}
0856デフォルトの名無しさん2016/03/28(月) 04:37:20.45ID:OzjTEsq7
>>854
すまん。
>>855
せやったな。
__newindexは代入したときに無かったらや。
0857デフォルトの名無しさん2016/03/28(月) 12:35:11.30ID:K6EkYblL
nil のメタテーブルって設定できたっけ?
Safe Navigation Operator 的な動作なら、そっちのほうが良いかもしれない。
0858デフォルトの名無しさん2016/03/30(水) 08:03:28.46ID:MvqxUS0K
>>848
プログラマーではない人をターゲットにしていたからだよ。
つまり英語をある程度知ってる人なら内容を理解できるようにってこと。
パスカルを真似ったってよりも日本語ベーシックみたいなものかな。
0859デフォルトの名無しさん2016/03/30(水) 10:21:33.98ID:PJ1J1ZJR
C++というかC言語は構文的には美しくないからな
普及してるからそれが普通に見えるだけで
0860デフォルトの名無しさん2016/03/30(水) 10:50:30.01ID:IKaSwJOV
Luaって ( ) と { } が無いだけで、後はほぼJavaScriptと感じたけどなぁ
Swiftも { } は使うけど ( ) が無いから気持ち悪いんだろうか?
0861デフォルトの名無しさん2016/03/30(水) 11:35:11.53ID:mjOFe187
引数と戻り値が可変長だから
local i, j = f(x, ...)

int i=0, j=0; のような文法をそのまま採用するのは無理
0862デフォルトの名無しさん2016/03/30(水) 13:09:07.35ID:MvqxUS0K
もし i==1 そのとき x=2 そのほか x=3 おわり
うごけ x=x+1 まで x < 10 おわり
0863デフォルトの名無しさん2016/03/30(水) 13:44:09.05ID:UL6gISrg
>>859
そんなノリで「ならおまえが作れよ」でObjective Pascalやら○言語やら
色々出たし確かに文脈としてはCよりマシだったけど結局普及しなかったしな
一旦普及しちまうとIA64やらOSXやら互換性を捨てたモンが代替に成り上がるのは難しいね
過去のソースの流用だけじゃなくてコーダーの慣れとかの問題も含めて

>>862
ぴゅう太だっけか
今なら[ #define もし if( ] [ #define おわり ) ]とかで凌げるのかね?
0864デフォルトの名無しさん2016/03/30(水) 23:36:59.47ID:/8cK4WLw
Squirrel 3.1 stable
0865デフォルトの名無しさん2016/03/31(木) 01:03:50.28ID:zQkq4gxf
もし 私 が イケメン なら あなた は モテる 違うなら あなた は 爆発 おわり
0866デフォルトの名無しさん2016/03/31(木) 02:59:26.18ID:nACjm5l+
>>860
{}の変わりにdo endがあるでしょう
0867デフォルトの名無しさん2016/03/31(木) 20:47:53.62ID:nkzU0v9F
>>864
1年またぎで RC1 が正式リリースになったのか うっひょーー
0868デフォルトの名無しさん2016/04/01(金) 06:14:44.27ID:rWTRiDhV
RC1からリリースまでの間に一体何があったのか
間が空くと細かいとこ忘れがちだしちょいと心配なリリースではある
0869デフォルトの名無しさん2016/04/07(木) 01:07:47.63ID:dZYAORAr
下記のように、関数群に対して値型の変数を与えるとします。

functionA(value)
functionB(value)
functionC(value)

この時に、値渡しでなく参照渡しにする方法はありますか?
戻り値で返してもらうとかしないと駄目でしょうか?
0870デフォルトの名無しさん2016/04/07(木) 01:37:09.92ID:m5Wmq6v/
>>869
総合スレだから言語を明記してね
Luaだとすると参照渡しはない
戻り値か、テーブルで渡して中身を書き換える

具体的な用途が決まってるなら別解もあるかも
0871デフォルトの名無しさん2016/04/07(木) 01:49:59.00ID:dZYAORAr
失礼、総合でしたか。
言語はluaです。

returnを書き忘れそうなんで、
下記みたいなゲッターセッターのクロージャ渡すことにします。
後で拡張するのも楽そうだし。
ありがとうございます。

local value
function getter_setter(val)
if val != nil then value = val end
return value
end
0872デフォルトの名無しさん2016/04/07(木) 23:57:49.14ID:s1RKY7Zg
>>871
変な理由だな。returnを忘れるぐらいだったら代入とかクロージャの呼び出しを忘れる心配もしなければならなくない?
0873デフォルトの名無しさん2016/04/08(金) 00:31:02.22ID:NMv2dsC8
>>871
参照渡しの主な用途は、複数の返値か、変数の入れ替えだと思うんだが
Luaだと自然な記述でどちらも書けるから必要になったことはないなぁ

その例なら value = val or value みたいな書き方もできるし
0874デフォルトの名無しさん2016/04/08(金) 09:00:43.43ID:QHM1+lud
>>872
必須じゃないからreturnいらないし、呼び出し忘れたってかまわないです。
ただ、生存期間中は使いたい場合があるのです。
0875デフォルトの名無しさん2016/04/08(金) 09:05:33.22ID:Awm5dteq
そもそも基本的なところから勘違いしてるに一票
0876デフォルトの名無しさん2016/04/08(金) 10:02:48.01ID:NMv2dsC8
他人が見たら首をかしげるようなスパゲティ・コードになってそう
0877デフォルトの名無しさん2016/04/08(金) 11:47:10.88ID:tJM0u/og
>>876
もうなってるでしょ >>874 の説明読んでも何言ってるのかさっぱりわかんないし
0878デフォルトの名無しさん2016/04/08(金) 18:15:07.93ID:QKtAKDZQ
err = f()
if err ~= nil then return err end
これを参照渡しのように f(seterr) と書くのは合理的だと思う

人間がみんな合理的に行動すればコミュ力は重要ではないかも
0879デフォルトの名無しさん2016/04/08(金) 21:19:50.62ID:ZsT2Hxo0
>>878
どう合理的なんだ?
seterrのエラーチェックしてないからイコールなコードでもないしどういう利点が有るのか説明してよ。

r=assert(f());
のような書き方出来なくなるし
0880デフォルトの名無しさん2016/04/08(金) 21:32:21.04ID:QKtAKDZQ
インクルードガードのように、中に入ってから#ifndefすれば、外でしなくてもよい
0881デフォルトの名無しさん2016/04/08(金) 22:34:01.66ID:NMv2dsC8
>>880
日本語でおk

JavaScript でいう Promise の reject ハンドラのような意図か?
Luaは例外処理 (try-catch) が書き難いから、その手の用途なら必要性は理解できる。
0882デフォルトの名無しさん2016/04/09(土) 01:02:16.06ID:EFL/mBbR
catchした変数がすぐ消えてなくなるのが困る
何もしないで続行するのは自由だからそれでいいけど
後で念のため再度エラーチェックする自由も欲しい
0883デフォルトの名無しさん2016/04/09(土) 02:22:04.50ID:u1ofpue+
何言ってるのか俺には理解不能だわ…
0884デフォルトの名無しさん2016/04/09(土) 07:21:19.22ID:FoBfIIvs
理解できないのはそういう場面に出くわしたことがないからかと思われ。
0885デフォルトの名無しさん2016/04/09(土) 07:34:56.67ID:u1ofpue+
>>884
そうかもな、どういう場面か具体的なコードで示してくれるとありがたい
合理的なコードならありふれてるよね?

あと例外は複雑になりやすいからGoとかでも例外は排除して多値でエラー返すようにしてる
0886デフォルトの名無しさん2016/04/09(土) 08:25:05.90ID:WDrzc2Wm
>>885
むしろLuaもGoも複数の返値を持てることがポイントだと思う。
{ 本来の返値, エラー? } のペアを返すという発想で、合理的。
「例外」という別口をわざわざ用意しなくて良くなった。

ただ、All or Nothing のトランザクション等、処理事にエラー値の確認が面倒というのも想像できる。
その場合、Luaの流儀なら >>879 の assert のように、エラー値を例外ジャンプに変換する関数で包むべきなんだろうな。
0887デフォルトの名無しさん2016/04/09(土) 08:38:40.76ID:FoBfIIvs
多値で返すのは当然いいのだけれども、
関数が関数テーブルに構造化されている場合、多値を返すと他の関数と戻り値の仕様がごちゃごちゃになってくるので、引数のレベルで疎結合にしておきたい。
0888デフォルトの名無しさん2016/04/09(土) 08:50:59.47ID:EFL/mBbR
Luaがマイナーすぎるおかげで「合理的ならありふれてる」は嘘だとわかった
嘘だとわかる場面に出くわした
0889デフォルトの名無しさん2016/04/09(土) 09:01:44.19ID:WDrzc2Wm
>>887
関数テーブルに構造化されていると言うなら、
引数や返値含め、全ての関数は同じ型であるべきだろう。
それぞれが違うなら、それは構造化ではなく寄せ集めだ。動的型言語に甘えてる。
0890デフォルトの名無しさん2016/04/09(土) 09:19:31.93ID:l8xjVqJC
値を返す関数で失敗時に例外を飛ばすのは、それを呼ぶ側では成功時の記述しか
しなくていいという理由が大きいと思うが。
タプルを返せるのはステータスを参照型の引数に返すよりは合理的だとは思うが
例外の代用になるかというとそれはちょっと違うと思う。
0891デフォルトの名無しさん2016/04/09(土) 09:23:54.21ID:WCRIlqKI
Windows APIみたいに GetLastError 的なものを用意した方が簡単じゃね。
いずれにせよtry-catch-fainalyは標準で欲しいな
0892デフォルトの名無しさん2016/04/09(土) 09:43:40.75ID:EFL/mBbR
>>890
失敗時の記述が不要というのはexitでもできる
スレッドがあるならスレッドを止めてもいい
なので本当の理由は、プロセスやスレッドの起動・再起動が遅すぎるからじゃないか
0893デフォルトの名無しさん2016/04/09(土) 11:18:07.50ID:8JT9QS2I
化石並の言語体系に何を求めているのやら
というかオプソなんだし気に入らないなら修正すりゃええやん
他と互換性なくていいならやりたい放題なんだし、
その修正を公開してメジャーになったとしたらバックポートしてくれるかも知れんでよ
0894デフォルトの名無しさん2016/04/09(土) 11:28:03.33ID:WDrzc2Wm
>>891
旧来の書き方がしたいならばその通りなんだが、
非同期処理が一般的になってきた昨今では、最良かどうかは分からない。
tryブロック内で処理が同期的に完了するとは限らないから。

タプル返しも、error/pcallも、rejectハンドラ渡しもできるから、現状のLuaで十分汎用性はある。
せいぜい構文糖のためにパーサを改造したくなるくらい。
0895デフォルトの名無しさん2016/04/09(土) 12:43:02.89ID:FoBfIIvs
>>889
ただのトレードオフ。
どこを重視するかは自由。
0896デフォルトの名無しさん2016/04/09(土) 13:38:58.58ID:u1ofpue+
>>887
引数にしたら引数の仕様がごちゃごちゃになってくると思うんだけど。
引数を受け取るだけの関数を渡せとなるなら尚更
0897デフォルトの名無しさん2016/04/09(土) 14:08:41.76ID:u1ofpue+
>>888
別にluaに限定する必要ないよ
引数で返すのが合理的に見えるコードであれば
C言語みたいに返値を一つしか返せないからって理由なのは無意味だから外して欲しいけど。

>>890
何もしなかったらそのままアプリが終了するだけじゃん
個人的にはtry catchは要らないかな。Goが例外無くしたのと同じ理由で
0898デフォルトの名無しさん2016/04/11(月) 08:27:07.88ID:k7zVs+aP
>>897
確かにGo的なのでいいかもな。
ttp://www.geocities.jp/m_hiroi/golang/abcgo15.html
足りないのはdeferとrecoverかな?
deferは__gcメタテーブル使えばできそうだけど標準で欲しいな。
recover はわからん。
0899デフォルトの名無しさん2016/04/11(月) 08:58:49.07ID:WTwt1caF
>>898
deferのようなものは例外とは関係無いところが理由で欲しいね
途中returnでclose書くの面倒とかそういう所で
gcに任せてたらいつ実行されるかわからんし

recoverはpcallでいいんじゃないかな
0900デフォルトの名無しさん2016/04/11(月) 09:29:17.60ID:AFQC7gKw
try catch は大域脱出に使うから、無くすなら別途機構が欲しいやね
0901デフォルトの名無しさん2016/04/11(月) 10:19:40.88ID:UaC8pXHz
>>899
Luaのソースを読んでると
スコープを抜けるタイミングでクロージャのupvalueを閉じる処理があるから
その辺りを改造すると、スコープ終了時に何かする機能が追加できる気がした。
0902デフォルトの名無しさん2016/04/12(火) 00:55:24.80ID:JDMXFvBX
PC版は今日発売のdarksouls3もLua使ってるのな
0903デフォルトの名無しさん2016/04/12(火) 01:26:42.97ID:fKt10c2M
たしかクソ1の頃からLuaのクレジットあったぞ
0904デフォルトの名無しさん2016/04/13(水) 22:16:47.11ID:PD+aqUpV
しかもLuaJITじゃなくて本家Luaなんだな
負荷が高いものはCやC++で書けばいいしやっぱ速度はそれ程重要じゃないのな
0905デフォルトの名無しさん2016/04/13(水) 22:23:51.85ID:7YNUgm8C
なにかのエディタで補完を効かすことはできますか?

例えば、メッセージテーブルみたいなのをloadfileで読み込んで使いたいです。
MSG.PLEASE_INPUT_ANY_KEY
0906デフォルトの名無しさん2016/04/14(木) 08:00:44.86ID:PaNxRcDi
>>901
スコープというのはブロック単位のことだと思うんだけど
確かにブロック単位でdeferができれば便利ですな。
個人的にはdeferという単語はイマイチだけど
0907デフォルトの名無しさん2016/04/14(木) 08:31:22.32ID:PaNxRcDi
それとも goto で十分なんだろうか
0908デフォルトの名無しさん2016/04/14(木) 12:08:10.65ID:z7Vrjvws
>>907
何か勘違いしてない?
0909デフォルトの名無しさん2016/04/14(木) 17:46:31.38ID:PaNxRcDi
>>908
なぜ勘違いしてると感じたの?
0910デフォルトの名無しさん2016/04/15(金) 00:30:26.65ID:MuKGbCph
>>909
突然gotoが出てきたから
0911デフォルトの名無しさん2016/04/15(金) 04:18:23.81ID:+t9YcmSi
頭で思ったことを全て言語化してないから唐突な感じになる
でも思ったことをそのまま喋ったら明らかな失言や暴言や嘘も増える
脅迫や詐欺みたいな発言を連発するよりは、少し意味不明な方がマシじゃないか
0912デフォルトの名無しさん2016/04/15(金) 07:45:58.29ID:Hp4CXrU7
>>910
だってさ、たとえば ::finally:: というラベルを作って、
if エラー発生 then goto finaly end とかやればいっしょじゃね?
0913デフォルトの名無しさん2016/04/15(金) 08:24:11.24ID:uS8f5f96
>>912
全然違う。それだと途中でreturn出来ないし、しないように注意しなければいけない。
コーデイング規約でreturnはfinallyラベルの後の一つだけにするって定めるつもり?

それに後処理が必要になるものはそのすぐ近くにそれを書きたいもの。
0914デフォルトの名無しさん2016/04/15(金) 08:41:49.74ID:+t9YcmSi
1. finallyに行きたくなければreturn出来る
2. 行きたくない人などいるはずがないからreturn出来ない
0915デフォルトの名無しさん2016/04/15(金) 09:10:31.83ID:9cTSD0EJ
>>912
「エラー処理をどうするか」なら良いのだけれど、話の流れは
「エラー処理を忘れないようどうするか」だったと思うんだ。

Luaに限れば、必ず後始末したい場合は pcall が必須なのがメンドイ。
0916デフォルトの名無しさん2016/04/15(金) 09:56:06.34ID:Hp4CXrU7
returnの話も、pcallの話も全て理解できるよ。
ただそういうのは織り込み済みの上で gotoで足りると中の人は考えてるのかもしれないなぁ、ということ。
これって勘違いというほどのもの?
0917デフォルトの名無しさん2016/04/16(土) 15:05:29.04ID:ls9rc/e1
そもそもエラー復帰処理を組み込み言語側に書かせるべきなのだろうか?
例えばホスト側が「文字列を丸ごとファイルに書き出す」機能を公開すれば
スクリプト側で「失敗したらファイルを閉じて削除して〜」などと考えず済む。

汎用言語なら細かい粒度のAPIのほうが小回りが利くけど
所詮組み込み言語なんだから「どのように」ではなく「何をしたい」単位で記述させたほうが良い。
0918デフォルトの名無しさん2016/05/01(日) 13:23:19.66ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
0919デフォルトの名無しさん2016/05/15(日) 09:01:08.96ID:WYUaDR6g
luabindオリジナルは更新止まってて5.2すら使えないしfork多すぎてどれ使えばいいか解らん
0920デフォルトの名無しさん2016/05/15(日) 12:38:52.61ID:llz61aSC
プログラマなら自分で作っちゃいなYO!
車輪の再発明?知らんな!
0921デフォルトの名無しさん2016/05/15(日) 12:41:10.00ID:WYUaDR6g
>>920
それだと意味が無いんですよ
0922デフォルトの名無しさん2016/05/15(日) 12:42:54.01ID:ZVMufeYJ
自分の1年前のバインダ引っ張り出したら目を背けたくなるコードで
結局リファクタリングしたなんてこともあったな
効率はともかく他人のコードのリファクタリングも結構勉強になるし
とりあえず無難そうなのを選んで落としてデッドコピーしてみたら?
0923デフォルトの名無しさん2016/05/15(日) 13:13:01.22ID:WYUaDR6g
色々なlua binder使ったときのベンチマーク書いててluabind使うこと自体が目的なんですよね
なので、ぱっと見修正量多いから自分で修正したくないしメンテもしたくないから何処かから引っ張ってこれるのが理想なんですけど
欲を言えば5.1以降全部に対応してたらいいんですが…
0924デフォルトの名無しさん2016/05/15(日) 13:30:11.07ID:iV9cVQst
kaguyaが使いやすそう
0925デフォルトの名無しさん2016/05/17(火) 15:46:15.62ID:WJtZW0Wv
autotouchで音ゲーマクロを組みたいと思ってるんですが
タップからタップまでをusleepで停止させると後半になるにつれ目的の時間から遅れてしまいます
もちろん処理にかかる時間をはusleepから引いています
処理を停止させる命令はusleepの他にはないでしょうか
遅れる原因が何故だか分かりますか?
0926デフォルトの名無しさん2016/05/17(火) 16:16:50.99ID:awF8sDTJ
>>925
とりあえず >>713 に似たような質問があるな。

「目的の時間」と「処理にかかる時間はusleepから引いて」あたりを
詳しく説明してもらわないとコメントのしようがないと思う。
現状の処理が適切かわからないし、むしろ音ゲー側の時間がずれている恐れも。
0927デフォルトの名無しさん2016/05/17(火) 16:37:01.75ID:WJtZW0Wv
>>926
過去にあったんですね、遡ってみます

os.clockでタップ処理にかかる時間を計ってusleepの停止時間からマイナスしてます
0928デフォルトの名無しさん2016/05/17(火) 17:11:06.80ID:aW8j1xwW
>>927
前にも書いたけどos.clockは実際の経過時間ではなくプログラムが使ったCPUの時間を返す
sleepとかで待ってる間は増えないし、例えばそのプログラムで二つのコアが100%使われてる場合は実時間の二倍増える
Cのclock関数で実装されていて、それはLinuxだとclock_gettimeのCLOCK_PROCESS_CPUTIME_IDの返す値が使われてる。
0929デフォルトの名無しさん2016/05/17(火) 17:24:24.06ID:WJtZW0Wv
>>928
タップ処理ににかかる時間を計るのに使ってます
問題の待機時間には使ってないです
コアが2つ使われてたら2倍っていうのは気になりますが前半は目的のタイミングでタップされているので問題ないですかね…
0930デフォルトの名無しさん2016/05/17(火) 17:54:24.20ID:awF8sDTJ
>>929
タップ処理にかかった実時間とCPU時間が等しい保証が無いという意味。
君が欲しいのは「実時間」だが、os.clockは「CPU時間」だから加減算できない。
身長と体重の値を足すようなもの。

(Luaからデフォルトで使える) 標準Cだけだと1秒より良い精度は無理と言われてる。
http://stackoverflow.com/questions/361363/how-to-measure-time-in-milliseconds-using-ansi-c
| There is no ANSI C function that provides better than 1 second time resolution

autotouch APIに高精度タイマーは用意されてないかな?
Lua から clock_gettime 等を呼ぶモジュールを加えるのも難しいか?

なお、Windowsのclockは(あえて)実時間を返すようだ。誤解が多い原因かもしれない。
https://msdn.microsoft.com/library/4e2ess30.aspx
| The elapsed wall-clock time since the start of the process
| Note that this is not strictly conformant with ISO C99
0931デフォルトの名無しさん2016/05/17(火) 20:04:41.45ID:aW8j1xwW
>>930
補足サンキュー
しかしCPU時間返されてもベンチマークぐらいしか使い道ないよね。
でも文句はそれしか用意してない標準Cに言うんだ。Luaは高い移植性のために標準Cから外れる物は極力実装しないんだ
0932デフォルトの名無しさん2016/05/18(水) 08:00:35.07ID:6L3zAH6b
そもそもCPUがきっちりTSS(スレッドってかタスク)への突入から離脱までに使った時間を
コア毎に記録する機能でも積んでなきゃ、
目安になりそうな計測をして加算し続けるくらいしか現実的な手段ないからね

マルチメディアタイマ動かすスレッドを裏側に置いてポーリングするか
別のコンテキストでタイマのタイムアウト毎にスクリプト起動するとかしかないんじゃないかな
(メインのスレッドと同じコンテキストで実行しちゃダメだよ)
0933デフォルトの名無しさん2016/05/18(水) 09:46:49.35ID:k2SHVqf6
clockってプロセッサ使用時間で課金していた時代の名残じゃねーの?
名前に騙されて、古代の課金処理を現代のプログラムで使うからおかしくなるんだよ
0934デフォルトの名無しさん2016/05/18(水) 15:47:48.90ID:bch1M3Ro
返事が遅れてしまいすみません
皆さんありがとうございます
autotouchのAPIになさそうです
autotouchでclock_gettime使ってみます
0935デフォルトの名無しさん2016/05/25(水) 01:28:46.05ID:PQF3VaRV
この業界に限り車輪の再発明はさほど問題でない
あーだこーだ探したり高いライセンスを払うより
1から自分で作ったほうが速い場合も多々ある
0936デフォルトの名無しさん2016/05/26(木) 10:31:37.40ID:lpov0tDn
メモリが潤沢な環境でのゲーム向けに0から作れば
組み込みを意識してVM自体をなるべくROMにおいやったり
定数になるべくデータを追いやったりしてRAMやスタックの消費量抑えたりみたいな細工をする事無く
素直でわかりやすく、高速なコード書き放題だもんな
0937デフォルトの名無しさん2016/05/26(木) 10:49:26.89ID:LqK2D4Ix
自分で作ったほうが速い場合は少ないだろうが
自分で作ったほうが早い場合はありそうだな
0938デフォルトの名無しさん2016/05/26(木) 18:41:47.35ID:iZpcR2mh
ハード面も自分でカスタマイズできるのが最善だけど
なかなかそうはいかないよね
0939デフォルトの名無しさん2016/05/26(木) 22:46:21.63ID:kkdzC4Pz
FPGAがCPUみたいにソケット化して1個単位で買えるようになったらいいなぁ
0940デフォルトの名無しさん2016/05/27(金) 03:25:00.38ID:fvoGjXwU
スレ間違えてない?
0941デフォルトの名無しさん2016/05/31(火) 20:56:31.07ID:J6Jy3eBO
mrubyの事はココでおk?
gr-sakura2ボードが新たに発売されたんでmrubyやろうと思ったら、ライブラリとかv2なっててどうしようかと。

mruby入りスケッチビルド通ったんで焼いてもだんまりだわ。デバッグする方法あるのかな(汗
0942デフォルトの名無しさん2016/06/01(水) 22:16:27.31ID:ItE+il1R
mrubyはここでもいいと思うが
gr-sakuraは別の意味の組み込みじゃなかろうか
0943デフォルトの名無しさん2016/06/07(火) 13:17:30.66ID:Cceun6yB
Lua 5.3.3 released

Luaのメンテナンス・ポリシーだと最新版しかバグ修正されないのね
最近見つかった昔からあるバグでも5.3しか修正版が出ない
diff形式で公開されているから自分でどうにかしろってことか
0944デフォルトの名無しさん2016/06/07(火) 15:13:34.60ID:1jTwDXeQ
どこかのOSみたく互換性無視ってわけじゃないし
0945デフォルトの名無しさん2016/06/11(土) 10:50:09.10ID:8vn3zKAG
グローバル関数ではなく、メンバー関数をc#から呼ぶにはどうしたらいいでしょうか?
function Hoge
 return{
  Foo=function end
 };
end

みたいなクラスです
0946デフォルトの名無しさん2016/06/11(土) 10:50:57.07ID:8vn3zKAG
NLuaを使っています
0947デフォルトの名無しさん2016/06/11(土) 17:55:08.38ID:XziS+43H
使ってないからよくしらんけど
var foo = ...
foo["Foo"]();
とかでいけるんじゃない?
0948デフォルトの名無しさん2016/06/11(土) 18:00:29.69ID:8vn3zKAG
>>947
キャストしてCall呼び出したらいけました
0949デフォルトの名無しさん2016/07/16(土) 14:37:12.17ID:ClCwwHut
CRuby使いだがインタプリタごと配布するにはでかすぎるのでLua5.3.3とmruby1.2.0を試してみた
ひとまずデバッグ用にバイナリ文字列をHexダンプするコードを書いてみる

Lua5.3.3(UPX圧縮後で250,064 Byte)
path = "C:/Windows/system32/calc.exe"
f = io.open(path, "rb")
f:seek("set", 0)
b = f:read(512)
f:close()

io.write("\"" .. path .. "\" / " .. string.len(b).."Byte Dump...\n")
i = 1
l = ""
repeat
w = string.sub(b, i, i + 15)
for c in string.gmatch(w, ".") do
l = l .. string.format("%02X ", string.unpack("B", c))
end
l = l .. string.rep(" ", 3 * (16 - string.len(w)))
l = l .. " "
l = l .. string.gsub(w, "[^\x20-\x7e]", ".")
l = l .. "\n"
i = i + 16
until string.len(b) + 16 < i
io.write(l)
0950デフォルトの名無しさん2016/07/16(土) 14:41:48.88ID:ClCwwHut
・・・mrubyの方が403で張れないんだけどw
0951デフォルトの名無しさん2016/07/19(火) 21:09:20.86ID:5Ru68Qww
require("hoge");
func=function()end;

hoge={
func=function()end
};
の違いって何ですか?
0952デフォルトの名無しさん2016/07/19(火) 22:10:30.90ID:Uci7C8fw
言語が書かれてないけどLuaということにして話を進めると

hogeというモジュールを読み込む
funcというグローバル変数に何もしない関数を代入する

funcという何もしない関数をもつテーブルを作成しhogeというグローバル変数に代入する
0953デフォルトの名無しさん2016/07/19(火) 22:35:55.44ID:5Ru68Qww
つまりモジュールが読み込まれると、

func=function()end;
hoge={func=func};

をするって事?
0954デフォルトの名無しさん2016/07/19(火) 22:51:15.91ID:Uci7C8fw
require(’module_name’)としたとき何を行うかはその読み込んだモジュールしだい
最近のものはグローバル環境を汚すのを嫌って勝手に代入せずテーブルを返すのが推奨されているから
module=require(’modname’)
って書く
レス数が950を超えています。1000を超えると書き込みができなくなります。