【Lua】組み込み系言語総合 その6【Squirrel】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/03/10(日) 15:10:32.28使われるプログラミング言語についてのスレッドです
まとめ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/
0570デフォルトの名無しさん
2014/11/04(火) 09:05:41.39ID:bzlUuRTbサロゲートペアってUTF-8なら、単なる「バイト数が多いマルチバイト1文字」じゃなかった?
UTF-8を適切に扱えるライブラリを探せば良いのでは?
UTF-16ベースで、1文字=1wcharで処理するものはダメだね。
0571デフォルトの名無しさん
2014/11/04(火) 09:14:34.96ID:lCpWe+1kWINAPIまたはWINDOWSアプリに渡す場合だけ変換するってのが無難だろう。
0572デフォルトの名無しさん
2014/11/04(火) 12:26:39.85ID:JSkttuhxそれが正式な仕様なんだけど、
世の中にはUTF16をべたにUTF8展開しただけ、
というファイルがあふれてて、UTF-8的に二文字になってることのが多くていかんともしがたいのん
0573デフォルトの名無しさん
2014/11/04(火) 13:23:26.98ID:99dxtSJ/0574デフォルトの名無しさん
2014/11/04(火) 16:39:35.13ID:8lAd+EdW0575デフォルトの名無しさん
2014/11/04(火) 18:02:59.37ID:OadM+d9h0576デフォルトの名無しさん
2014/11/04(火) 18:40:40.27ID:lCpWe+1kWindowsのwstringと互換だからホストから見て扱いやすいという判断でないの?
Windows用のC++のランタイムがサロゲート対応できてないわけだし。
それはそれとして
自分的にはUTF16とUTF8の変換はコストが低いと考えている。
なんでかというと、マルチバイトのアプリケーションが末尾AのAPIを呼んだ時に
カーネル側での変換の対象になっていると考えるし、
それでいて今まで問題になっていないから。
0577デフォルトの名無しさん
2014/11/05(水) 07:35:22.74ID:9E/cXL42Windows氏ね
0578デフォルトの名無しさん
2014/11/05(水) 14:55:13.19ID:C/jbA3HR0579デフォルトの名無しさん
2014/11/05(水) 17:30:58.35ID:5alChkxaただ、既存のコマンドとかの整合性が問題。
0580デフォルトの名無しさん
2014/11/05(水) 17:32:35.49ID:9E/cXL42Windows氏ね
0581デフォルトの名無しさん
2014/11/05(水) 21:07:16.47ID:pM6wUNVX特定のプラットフォームに「氏ね」言う奴がマルチプラットフォーム語るか。
0582デフォルトの名無しさん
2014/11/05(水) 21:42:16.61ID:5alChkxaMacユーザーは宗教で使っている。
Linux/bsdユーザーはソースコードを蹂躙するために使っている。
0583デフォルトの名無しさん
2014/11/05(水) 23:18:38.50ID:hGDSCPPHよっぽど実際的な問題だと思うんだが
0584デフォルトの名無しさん
2014/11/05(水) 23:28:46.45ID:5iseFbl10585デフォルトの名無しさん
2014/11/06(木) 11:07:16.22ID:ElrQPnL20586デフォルトの名無しさん
2014/11/06(木) 11:37:03.69ID:5j6hC+wL0587デフォルトの名無しさん
2014/11/06(木) 12:48:03.08ID:QHCs9rG10588デフォルトの名無しさん
2014/11/06(木) 16:09:06.32ID:M2Yo7uIT0589デフォルトの名無しさん
2014/11/06(木) 16:14:45.84ID:pZw/zM7a0590デフォルトの名無しさん
2014/11/06(木) 22:56:57.44ID:Lo7NS+Dzここらへんは5.4とかからかなあ。
そうするとC++でコンパイルしつつ外付けで
boost_regex.matchというような関数を用意しろって感じかなあ。
↓これだもんね。
static int singlematch (MatchState *ms, const char *s, const char *p,
const char *ep) {
if (s >= ms->src_end)
return 0;
else {
int c = uchar(*s);
switch (*p) {
case '.': return 1; /* matches any char */
case L_ESC: return match_class(c, uchar(*(p+1)));
case '[': return matchbracketclass(c, p, ep-1);
default: return (uchar(*p) == c);
}
}
}
0591デフォルトの名無しさん
2014/11/07(金) 07:19:30.78ID:m1y+JxyjUTF-8だからこそsinglematchでもなんとか実用になるんじゃないかな?
utf8.charpattern も一応は用意はされているし。
もちろん、string.reverseとか使えないのもあるけど。
0592デフォルトの名無しさん
2014/11/07(金) 08:11:23.32ID:TOsxLUmk日本人は余計なことばかりしやがるよな、とかいわれてんだろうな
0593デフォルトの名無しさん
2014/11/07(金) 12:46:24.98ID:s2pGHogx0594デフォルトの名無しさん
2014/11/08(土) 17:07:11.07ID:OPiyaoeS0595デフォルトの名無しさん
2014/11/12(水) 00:46:15.46ID:0RjVbG4l他に画像を探す方法はないでしょうか?
0596デフォルトの名無しさん
2014/12/10(水) 00:35:14.86ID:If47AJ4g0597デフォルトの名無しさん
2014/12/10(水) 09:29:30.82ID:5IiOJn2a開発チームのルールの面で使わせないケースはありそうだ
0598デフォルトの名無しさん
2014/12/11(木) 12:44:17.85ID:vUqbLqkUboostが使えない環境じゃなくて、色々な都合でboost使っちゃダメな環境があるわけか…
0599デフォルトの名無しさん
2014/12/15(月) 08:18:50.09ID:njR4rCHR0600デフォルトの名無しさん
2014/12/19(金) 02:51:01.25ID:ouKpIS27c#のnamespaceやstaticなクラスをバインドするにはどうすればいいのでしょうか?
関数であれば以下のように登録できたのですが、
lua.Globals["Log"] = (Action<string>)UnityEngine.Debug.Log;
UnityEngineのようなnamespaceを渡し、
script内で UnityEngine.GameObject.Find("obj")
みたいに使いたいのですが
0601デフォルトの名無しさん
2014/12/22(月) 00:19:17.53ID:ZmRaQmm9ざっと眺めてみたけど
その程度の事は同じように出来る
ただ
foo()
foo(int)
foo(string)
などのオーバーロードはどうするのかが疑問
動的に型チェックして振り分けてとかだと正直使い物にならないと思う
0602デフォルトの名無しさん
2014/12/22(月) 01:19:08.37ID:D1rmXNgC使いながらマニュアル読んで使い方が分かってきました。
オーバーロードに対応してないクラスは扱うことができませんでした。
いくつか制約があるようです。
C#のオブジェクトを簡単にluaから使えるのかと思ったら、
そう簡単にはいかないのですかね。
そういうのはラッパークラスを用意して、
MoonSharpを意識した設計しないといけないようです。
つい新しいものに手を出したけど、他のC#系のluaはどんな感じなのかしら
0603デフォルトの名無しさん
2014/12/22(月) 01:19:52.78ID:D1rmXNgCオーバーロードに対応してませんでした。
0604デフォルトの名無しさん
2014/12/26(金) 08:14:14.37ID:aFXoC3vZ0605デフォルトの名無しさん
2015/01/03(土) 21:35:53.41ID:x6OMspk00606デフォルトの名無しさん
2015/01/03(土) 22:19:20.82ID:FqikSySO0607デフォルトの名無しさん
2015/01/03(土) 23:14:01.09ID:KF2R3l6fというかあったら困る
0608デフォルトの名無しさん
2015/01/04(日) 02:23:10.16ID:AdLaa9R20609デフォルトの名無しさん
2015/01/04(日) 06:44:30.95ID:FkvmMkr7新C-APIの lua_rotate() が地味に便利。
0610デフォルトの名無しさん
2015/01/04(日) 08:29:47.65ID:LjhOLja4>>559
0611デフォルトの名無しさん
2015/01/08(木) 07:02:44.50ID:HB0/eqgI0612デフォルトの名無しさん
2015/01/13(火) 08:21:09.63ID:rG5Z7jyu0613デフォルトの名無しさん
2015/01/14(水) 08:19:11.90ID:G/8s1bPT0614デフォルトの名無しさん
2015/01/19(月) 13:17:04.98ID:i0MAuzuq組み込みも js で十分な気がしてきた。
0615デフォルトの名無しさん
2015/01/19(月) 19:23:58.96ID:ax3bxEw/0616デフォルトの名無しさん
2015/01/19(月) 20:11:10.33ID:i0MAuzuq>>615
ハンドル (voidポインタ) 経由。 グローバル変数のテーブルもCから操作できる。
API は v8 と似ているけど、さらに簡略化されている感じ。
Luaとは違ってスタック操作を意識する必要は無い。 Cスタックを舐める系のGCっぽい。
C関数や、生データをファイナライザ付きでスクリプトに登録もできるし、
スクリプトの変数をCからキープしたいときの AddRef() もある。
後発なだけあって、いい感じに整理されているように見えるよ。
0617デフォルトの名無しさん
2015/01/19(月) 22:22:42.69ID:XVOLeUIAみんなLuaと比較した情報は出すけど何個もある代案同士で比較した情報がまだ出ない
だからまだ時期が悪いかなと思う
0618デフォルトの名無しさん
2015/01/20(火) 06:19:15.63ID:MIZOkYTq0619デフォルトの名無しさん
2015/01/20(火) 07:11:39.79ID:Qwim/1/Yの2つが大きいいんじゃないの? 止められるんなら止めたいでしょ。
もちろん、Luaはスタック操作が明示的だからこそ、移植性が高いんだけど。
>>617
参照カウントはあくまでCからのキープ用で、スクリプト内だけならマーク&スイープ系のGCのはず。
0620デフォルトの名無しさん
2015/01/20(火) 17:48:36.34ID:MIZOkYTqスクリプト側からは死んでるようにみえる値を
C側では使ってるから生きてるよ、ということにするには
参照カウントよりもLuaL_refの方が考え方として分かりやすいと思うけど。
0621デフォルトの名無しさん
2015/01/20(火) 18:44:09.44ID:GWZYH+JOLuaは知らないけど
V8ではC++関数のスコープから抜けた時点でJavaScriptのオブジェクトを解放出来るようになっている
だからV8ではC++関数内で使ったオブジェクトが中々解放されなくなるという事はない
関数を終えてもずっと保持したい場合はPersistentにコピーするようになっている
0622デフォルトの名無しさん
2015/01/20(火) 18:56:01.81ID:MIZOkYTq0623デフォルトの名無しさん
2015/01/20(火) 19:33:29.39ID:Qwim/1/Y自分はどうもオブジェクトそのものではなくCookieを保持している感に戸惑ったが、
気になるならラッパーを一枚噛ませば十分だしな。
0624デフォルトの名無しさん
2015/01/22(木) 18:40:30.34ID:dZXZ9W3g0625デフォルトの名無しさん
2015/01/22(木) 19:34:31.74ID:QfKlzsaMIDispatchをVARIANT経由でJavaScript側に公開できることがわかった。
COMの資産を手間無く使えるので、その手の再利用が必要な場合は便利かもしれない。
なお、WebBrowserコントロールが使っていると思われるスクリプト環境はさすがに取得できないようだ。
無理やり連携されるなら window.external を介してこれも IDispatch 経由でやり取りすることになる。
悪くない。 Microsoft も .NET とか捨てて、JsRTとTypeSciptで行けばいいんじゃないかな・・・?
0626デフォルトの名無しさん
2015/01/26(月) 19:41:40.28ID:+446CocfSquirrel 3.1 RC1
Released January 10, 2015
さっき気付いた。
0627デフォルトの名無しさん
2015/01/26(月) 20:46:44.47ID:5nfZyfP40628デフォルトの名無しさん
2015/01/26(月) 21:34:59.26ID:Sajs+zmm0629デフォルトの名無しさん
2015/01/28(水) 05:31:27.96ID:SR5teQWH0630デフォルトの名無しさん
2015/01/28(水) 23:18:45.09ID:arg2MK+/0631デフォルトの名無しさん
2015/01/29(木) 08:12:30.79ID:FQssNh0T0632デフォルトの名無しさん
2015/01/29(木) 08:16:42.32ID:vMBFyrLx0633デフォルトの名無しさん
2015/01/29(木) 08:43:48.85ID:FQssNh0T0634デフォルトの名無しさん
2015/02/01(日) 00:18:48.30ID:ARaZzTfJlua部分はともかく独自追加した所のデバッグやってるんだろうか
findimage使った瞬間に落ちる、サンプルのスクリプトを使っても落ちる…
0635デフォルトの名無しさん
2015/02/03(火) 08:45:44.97ID:AqPQb7sPObjectScript
https://github.com/unitpoint/objectscript
http://objectscript.org/
http://www.codeproject.com/Articles/466907/ObjectScript-A-new-programming-language
Luaっぽい作りで構文はC/JavaScript系で、Squirrelとキャラが被ってる。
単純な整数計算ベンチの速度だと Lua : Squirrel : ObjectScript = 3 : 2 : 1 (遅い) くらい。
実行バイナリのサイズは Lua : Squirrel : ObjectScript = 2 : 3 : 4 (でかい) くらい。
安定性や採用事例はよくわかんない。ちなみにCachéとは何の関係も無い。
0636デフォルトの名無しさん
2015/02/04(水) 06:17:03.56ID:Eqb0TJqD0637デフォルトの名無しさん
2015/02/07(土) 10:47:45.90ID:3mcYxCt20638デフォルトの名無しさん
2015/02/07(土) 11:10:55.67ID:kuZAKFeALuaの話? いちおう組み込み系全般のスレなので……
標準では用意されていない。 言語機能系の追加ライブラリを使えば良いんじゃない?
まぁ、自作しても for ループを廻せば済むけど。
- stdlib : http://lua-stdlib.github.io/lua-stdlib/modules/std.table.html#keys
- Underscore.lua : http://mirven.github.io/underscore.lua/#keys
0639デフォルトの名無しさん
2015/02/08(日) 11:46:47.96ID:8cE0HyuH0640デフォルトの名無しさん
2015/02/08(日) 12:28:55.31ID:5UGjVIn50641デフォルトの名無しさん
2015/02/08(日) 17:36:40.20ID:zqGmBD5H0642デフォルトの名無しさん
2015/02/16(月) 22:29:33.28ID:JBQ+Owrp0643デフォルトの名無しさん
2015/02/16(月) 22:40:47.19ID:yzFhOePDLuaからファイルを作っているなら os.date(書式) .. ".txt" でファイル名を生成すれば良いのでは
0644デフォルトの名無しさん
2015/02/16(月) 23:48:51.20ID:JBQ+Owrp0645デフォルトの名無しさん
2015/02/19(木) 19:51:04.59ID:Qw0v9eHu自作計算プログラム用のスクリプトとしてTclを組み込んで使ってきたけど、
Luaってもう仕様安定してるの?
浮動小数点の実装はちゃんとバイナリ?
0646デフォルトの名無しさん
2015/02/19(木) 20:22:48.55ID:YKDWyqEz本体の仕様は概ね安定している。 他の言語と比べてもそれほど差は無いと思う。
Lua 5.3 では、普通にビルドすると、浮動小数点は double、整数は int64 になる。
内部的な値の表現は タグ + union { double; int64; void* } という素直な実装だよ。
正規表現だけは注意がいるかもしれない。 文字の並びを ( ) で扱えない。
自分は C++ regex を使う別実装を自前で追加してる。
0647デフォルトの名無しさん
2015/02/21(土) 12:07:52.58ID:ftMcKIolありがとう。
awkみたいな実数=文字列みたいなダサ実装じゃないか、さすがに。
ちょっと活用を検討してみます。
0648デフォルトの名無しさん
2015/02/23(月) 19:05:53.37ID:PUEtXCiMメモリ管理の改良とか、キャスト用メソッドの登録方法が変わったとか色々変更あるっぽい。
0649デフォルトの名無しさん
2015/02/23(月) 23:12:44.33ID:2B41jSVI┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0650sage
2015/03/17(火) 22:57:10.71ID:yVREPXol0651デフォルトの名無しさん
2015/03/17(火) 23:14:59.23ID:Wb8shGuwAS3は組み込めないだろ・・・
0652650
2015/03/17(火) 23:25:25.06ID:yVREPXolluaでio.writeでSDカードに書き込めるかと思いきやなんか挙動が怪しい・・
0653デフォルトの名無しさん
2015/04/11(土) 22:52:38.83ID:L0A+zZu9tbl[]
tbl[ "a" ] = data1
tbl[ "b" ] = data2
tbl[ "c" ] = data3
#tblやtable.maxn(tbl)をやっても「0」が帰ってきてしまいます。
ハッシュの場合、格納されている要素数を返すものはないのですかね
ざっと検索して調べた感じそれっぽいのはありませんでした
0654デフォルトの名無しさん
2015/04/11(土) 22:59:40.53ID:L0A+zZu9テーブルtblの持つ要素のキーのうち、正の数値(FIXNUM)であるものの中で最大のものを返します。
tblが正の数値(FIXNUM)のキーの要素を持たない場合は0を返します。
ってかかれてるからpairsで回して数取得するようなやり方しかないかもなあ・・。
0655デフォルトの名無しさん
2015/04/11(土) 23:05:44.47ID:L0A+zZu9何か他により良いやり方があれば教えて下さい
function get_hash_count( hash )
local cnt = 0
for key, value in pairs(hash) do
cnt = cnt + 1
end
return cnt
end
0656デフォルトの名無しさん
2015/04/12(日) 00:40:05.35ID:eLW2DJDrそれが一番速いと思います
luaのテーブルは厳密な要素数を追跡してないのよ
値をスカスカに配置して列挙時に存在チェックする
0657デフォルトの名無しさん
2015/04/12(日) 02:22:26.48ID:ubi9S/woありがとうございます
luaの仕様的に他に良い方法はないのですね
0658デフォルトの名無しさん
2015/04/25(土) 21:53:05.10ID:udlJJGWW組み込み系言語ってファームウェア用かと思ったwww
0659デフォルトの名無しさん
2015/04/27(月) 08:43:41.87ID:9sNRGOg0ソフトにLuaを組み込んでユーザーにLuaスクリプトを作ってもらおうと思っています。
そのLuaスクリプトを他のユーザーにばらまかれるとセキュリティ上危なくなるので困っています。
Luaで書けるファイルIOやネット上のダウンロードなど、危なそうな機能だけ無効化したいのですが可能でしょうか?
分かる方、よろしくお願いします。
0660デフォルトの名無しさん
2015/04/27(月) 09:18:48.10ID:18wKNGsP・不必要な標準モジュールは組み込まない。
・モジュールの中に不必要な関数がある場合は同名の関数を作ってオーバーライドしてしまう。
0661デフォルトの名無しさん
2015/04/27(月) 09:20:47.53ID:18wKNGsP0662デフォルトの名無しさん
2015/04/27(月) 11:51:04.49ID:RhUk/Sb2requireのうち、c系dll読み込みも外す。
0663デフォルトの名無しさん
2015/04/27(月) 14:01:37.37ID:9sNRGOg0>>662
塞ぎ忘れたらとんでもない事になりそうですね。。。
がんばってみます。
ありがとうございました。
0664デフォルトの名無しさん
2015/04/27(月) 18:39:19.42ID:RhUk/Sb2作られてるので、めちゃくちゃ簡単に追加や削除ができるよ。
やり始めたらあまりに簡単でびっくりするとおもう。
最悪上記の消したいlua関数のregisterの処理だけl***lib.c系からコメントアウトした上で、
luaインタプリタを本体アプリにスタティックリンクするだけで、それなりに仕組みを深く理解している人以外はイタズラしにくくなる。
0665デフォルトの名無しさん
2015/04/27(月) 20:13:20.63ID:ByjLANN5io = nil
...
とかを用意して
ユーザースクリプトを読む前にdofile
中身が決まったらdostringでハードコードする
ってのが簡単
0666デフォルトの名無しさん
2015/04/27(月) 23:36:05.71ID:V1hm5/yhUbuntuとかはまだ5.1だったりするのかな
0667デフォルトの名無しさん
2015/05/03(日) 17:51:04.86ID:R+xSVf6mわざわざそんなことするより、読み込み部コメントアウトした方が
簡単だろw
モジュール単位、関数単位で、1行ずつ「追加・削除はご自由に」って
感じで全部列挙されてんだから。
0668デフォルトの名無しさん
2015/05/03(日) 18:10:07.04ID:IVZoCitV何でわざわざ改造せねばならんの?
0669デフォルトの名無しさん
2015/05/03(日) 18:16:54.02ID:hj7OiJXSLua処理系を勝手に改造できる(してもいい)環境でないとそもそもできないね
■ このスレッドは過去ログ倉庫に格納されています