プログラミング言語 L ..
[2ch|▼Menu]
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で埋め尽くされる、と

567:デフォルトの名無しさん
07/11/10 11:51:30
566 ニワカ乙

568:デフォルトの名無しさん
07/11/10 12:28:24
守備範囲は
・アプリ組み込み用
・軽量小規模言語
・他にスレがない
あたりかな。巷のLLとはちょっと違う気がする。
LL自体定義があるのかよくわからないが。

569:デフォルトの名無しさん
07/11/10 13:11:20
>>568
ニワカ乙

570:デフォルトの名無しさん
07/11/10 13:43:20
>>568
そんなとこだろうな というか
ずっとそんなスレのつもりだった

571:デフォルトの名無しさん
07/11/10 14:09:13
LLだと、RubyやPythonも入るからな・・・
いや、組み込む話題については、歓迎かも知れんけど

572:デフォルトの名無しさん
07/11/10 14:19:33
JavaScriptも当然入るな。
PHPは組み込みあったっけ。

573:デフォルトの名無しさん
07/11/10 15:45:11
>>571
そっち系の話題は向こうのスレじゃあんま出ないしな。
いや、もちろん出してもスレ違い扱いされたりはしないだろうが。

574:デフォルトの名無しさん
07/11/10 23:40:43
>568 の箇条書きをもとに
>571-573 のニュアンスを加えて文章にしてみた。

[[
アプリケーション組み込み用の小規模言語についてのスレです。
話題の中心はLua、Squirrelですが他の言語もOK。
]]

575:デフォルトの名無しさん
07/11/10 23:46:17
1に何書こうが誰も読みゃしないのでスレタイに注意を払うべき

576:デフォルトの名無しさん
07/11/11 03:59:09
>>559
> 【Lua】組み込み言語統合【squirrel】
に一票

577:デフォルトの名無しさん
07/11/11 06:37:50
スレタイとは全然関係ないことなのですが、いくつか質問があります。
よろしくお願いします。

1,luaの実行を内部から一時停止、外部から再開する方法にcoroutine以外のやり方はありますか?
2,luaの実行を外部から一時停止&再開することはできますか?
3,フックされた関数からluaを一時停止させることはできますか?

578:577
07/11/11 07:45:09
スレタイとは関係あります
「スレタイ変更とは関係ありません」でした><

579:デフォルトの名無しさん
07/11/12 20:12:36
>>577
1、2はファイバorスレッドorプロセスが絡む話なの?
そうであればやり様はいくらでも有る。実行コンテキストを
変えずにという意味であれば他に方法は無いと思う。
3、”フックされた関数”=>”Luaから呼ばれたC言語の関数”という
意味であればlua_yieldを使うかcocoを使うか。


580:デフォルトの名無しさん
07/11/14 01:03:42
>>579
フック関数からyieldできるなんて意外でした。
ありがとうございます。

581:デフォルトの名無しさん
07/11/14 15:41:09
C側から実行されたluaプログラムを
gdbやvcのような環境でデバッグできませんか?

582:デフォルトの名無しさん
07/11/14 16:11:03
できない

だけど、Lua専用IDEからならできるよ
Decoaだっけ

583:デフォルトの名無しさん
07/11/14 23:55:43
>>581
Decodaは割合評判いいらしいね。

他に名前聞いたものとしては
VSLua(有料)
LuaEdit(無料・微妙というか未完成)

wxLuaにもビジュアルデバッガついてたような気がするけど、embed環境で動かせるかどうかは不明。

584:デフォルトの名無しさん
07/11/17 19:26:16
>>592
>>593
Decodaいいですね。組み込みで使いたかったです。
LuaEditも試してみたのですが、luaをdllにする必要があるのと、
そのdllのバージョンを合わせるのが大変で途中でやめてしまいました。
luaの自作ライブラリをdllにしてしまった方が早そうな感じです。
どもでした。

585:デフォルトの名無しさん
07/11/17 19:36:03
>>592>>593の人よろしく

586:デフォルトの名無しさん
07/11/17 21:47:01
ループの先頭に戻るという処理は、
continueでしょうか、nextでしょうか?

URLリンク(uri.sakura.ne.jp)
この辺を参考にしているのですが、breakなどしか見当たらなくて困っています。

587:デフォルトの名無しさん
07/11/17 22:15:10
>>586
何故か無い

588:デフォルトの名無しさん
07/11/17 22:32:33
continueないんだよねー
海外でもこの話題ちらほら見かけるけど。何故無いのかは知らない。

"continue" construct in Lua loops
URLリンク(lua-users.lua.org)

589:デフォルトの名無しさん
07/11/17 23:11:01
なるほど、Luaには存在しないんですね。。
レスありがとうございました。

590:デフォルトの名無しさん
07/11/18 05:35:00
新しいバージョンが出ると誰かがcontinueパッチを作ってるはず

591:デフォルトの名無しさん
07/11/18 14:31:58
continueが必要なループはイテレータのようにfunction作成してreturnしてる。
breakも必要なときは返値で判定。

592:デフォルトの名無しさん
07/11/18 15:05:18
breakはまだしも、continueをreturnで代用?
コード汚そう。

593:デフォルトの名無しさん
07/11/18 15:55:19
prototype.jsのeachのようになるからそんなでもない。


594:デフォルトの名無しさん
07/11/18 15:57:24
いちおう言っておくと「だからcontinueいらない」って話ではなく。
continueあったほうがそりゃ素直に書けるしなあ。

595:デフォルトの名無しさん
07/11/18 18:31:11
>>593
汚いじゃん

596:デフォルトの名無しさん
07/11/18 18:35:45
>>593
最悪レベルの汚さだと思う

597:デフォルトの名無しさん
07/11/20 00:10:47
Lua本(゚∀゚)コター!!
URLリンク(staff.aist.go.jp)

598:デフォルトの名無しさん
07/11/20 00:47:15
コタワァ*:.。..。.:*・゚(n‘∀‘)η゚・*:.。..。.:* ミ ☆

599:デフォルトの名無しさん
07/11/20 01:21:05
しかも今年中の予定か。
実現したら自分へのクリスマスプレゼントにする……っ!

600:デフォルトの名無しさん
07/11/20 01:26:39
なにかの死亡フラグに見えた

601:デフォルトの名無しさん
07/11/20 15:30:26
日本語解説書期待age

602:デフォルトの名無しさん
07/11/21 08:30:15
かつてPascalにもbreak、continueなくて、
まあそれでも別に困らんかったから、
改造してまで付けるほどでもないなワシは

603:デフォルトの名無しさん
07/11/21 23:13:33
SJISのソース内にリテラルを埋め込む際の文字化けについて悩んでいるのですが、
文字化けする2バイト文字の一覧のようなものってどこかに載っていないでしょうか?

604:デフォルトの名無しさん
07/11/22 00:40:33
>>603
文字化けはエスケープシーケンスのせい。
"abc"じゃなくて[[abc]]使うといい。

605:デフォルトの名無しさん
07/11/30 11:15:33
やったー 予約始まってるよー^^/

入門Luaプログラミング
URLリンク(www.amazon.co.jp)


606:デフォルトの名無しさん
07/11/30 12:58:19
一ヶ月後か
期待age

607:デフォルトの名無しさん
07/11/30 14:01:17
URLリンク(www.nicovideo.jp)

608:デフォルトの名無しさん
07/12/08 15:22:14
hoshu

609:デフォルトの名無しさん
07/12/08 16:49:38
squirrelのリファレンスマニュアルの日本語訳ページが404な件

610:デフォルトの名無しさん
07/12/08 23:14:42
Google cache からまだ一応読めるね。

そういえば以前にも一回読めなくなったときがあったけど、
そのときはサイト全体が読めなかった。

611:デフォルトの名無しさん
07/12/09 09:57:13
>>609
うあーー
ac.jpなのを忘れてた orz
保存しとけばよかった

つーか、ac.jpの人って、卒業したら消えるんだよな・・・大抵

612:デフォルトの名無しさん
07/12/09 10:09:16
9月でD論通ってるから卒業か

613:デフォルトの名無しさん
07/12/09 15:36:33
>>609
googleキャッシュかInternet archive行けばまだ間に合う


614:デフォルトの名無しさん
07/12/16 01:31:14
hoshu

615:デフォルトの名無しさん
07/12/18 17:31:29
あるlua_Stateのクローンが作りたいのですが、
グローバルステートを含めすべての内容をコピーすることは可能ですか?

616:デフォルトの名無しさん
07/12/21 01:33:58
squirrelの質問です。
スレッドで使って下の関数をコールするとsuspendでC++側に処理を返したときに
a、bのデータが壊れてしまいます。

function CallSuspend(i, j, k, l, m, n, o)
{
local a = 23;
local b = 32;

while(1)
{
suspend();
print("i = " + i + "\n");
print("j = " + j + "\n");
print("k = " + k + "\n");
print("l = " + l + "\n");
print("a = " + a + "\n");
print("b = " + b + "\n");
break;
}

}


617:616
07/12/21 01:40:57
どうやらsq_call関数で関数実行後にスタックをポップしている部分でデータが壊れているようです。
suspendはwakeupでまたスクリプトを起動するのだから、引数の数だけポップする意味がわかりません。
これはバグなのでしょうか?
ちなみに自分の使っているsquirrelのバージョンは2.1.1です。


SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror)
{
    SQObjectPtr res;
    if(v->Call(v->GetUp(-(params+1)),params,v->_top-params,res,raiseerror?true:false)){
        v->Pop(params);//pop closure and args ←※ここ
        if(retval){
            v->Push(res); return SQ_OK;
        }
        return SQ_OK;
    }
    else {
        v->Pop(params);
        return SQ_ERROR;
    }
    if(!v->_suspended)
        v->Pop(params);
    return sq_throwerror(v,_SC("call failed"));
}




618:デフォルトの名無しさん
07/12/21 10:05:07
いきなりソース覗きこんでバグだバグだ騒ぐ前にまずはちゃんとマニュアルを読めよ…

619:デフォルトの名無しさん
07/12/21 10:54:35
>>618
どういうことですか?
知っていることがあるなら教えてください。お願いします。

620:デフォルトの名無しさん
07/12/21 11:04:12
リファレンスのsq_callの説明にはこう書いてありました。

>この関数はすべての引数をpopし、スタック上のこのクロージャを取り除く。
>もしretvalがtrueであるなら、クロージャの戻り値がpush される。
>もし関数実行がsq_suspendvmによって中断されたなら、クロージャと引数はスタックから自動的にpopされない。

しかし、自分が実際に追ってみた限りではsuspendでsq_callを抜けた後に引数をポップする処理は実行されています。
それがlocal a,bを破壊しているようなのです。


621:デフォルトの名無しさん
07/12/21 22:08:56
バグじゃないっつーの
とりあえずなにがしたいのか書こうよ
「これはバグですか?」じゃ作者に失礼すぎるぞ
てめーを卑下しまくる前にちょっとは他人のことを考えようよ

622:デフォルトの名無しさん
07/12/21 22:20:18
>>621
616の関数を実行して無事に終了したいだけです。
suspendで処理がC++に帰った後、sq_wakeupvmでスクリプトを再実行したらstackからlocal a,bが消えていて
printでnullを参照してしまうという問題を解決したいんです。


623:デフォルトの名無しさん
07/12/21 22:29:42
>>621
ここは作者の掲示板ではないが、
現象が再現するミニマムコードを掲載して、仕様と挙動が異なっている点を報告したうえで、
それがバグかどうかを質問する、ってのは別に失礼でも何でもないと思うけどな。

624:デフォルトの名無しさん
07/12/21 23:39:26
>>623
これは現象が再現しない断片コードだし、仕様を取り違えてるし
そもそも一定の条件を満たしていると自分では思えるというだけで
相手に失礼ではないなんてまたどこまで自分勝手な理屈だよ
常識的に考えておかしいだろ

625:デフォルトの名無しさん
07/12/21 23:46:38
>>624
>>616は現象が再現しない、って試したの?
あと作者でもないのに、作者に失礼すぎるぞ、なんて言うのも充分に自分勝手な理屈だと思うけどな

626:デフォルトの名無しさん
07/12/21 23:47:13
>>624
もったいぶらないで教えてやれよ。
無駄レスが多すぎる。

627:デフォルトの名無しさん
07/12/21 23:55:38
>>626
残念ながら2chとはそういう場所なのです。

628:デフォルトの名無しさん
07/12/21 23:59:24
とりあえずSquirrelユーザーがキモいというのはわかった
この際原点に戻ろうじゃないか

入門Luaプログラミング
URLリンク(www.amazon.co.jp)

629:デフォルトの名無しさん
07/12/22 00:07:36
仕様取り違えてると分かってるのなら、ここをこう取り違えてるよーって言ってやればいいだけなんじゃないの?
そんな、作者に失礼とか自分勝手とか卑下しまくってるとか言わんでも…

ちなみに俺はよく分からんけど、>>616の動作は期待に反している感じはする。仕様は知らない。

630:デフォルトの名無しさん
07/12/22 00:10:01
>>625
断片だから試せない
>あと作者でもないのに、作者に失礼すぎるぞ、なんて言うのも充分に自分勝手な理屈だと思うけどな
俺作者だよ
当然のことながらsquirrelのじゃないけどね
作ってるものが馬鹿からバグ呼ばわりされたときどんな気持ちになるかは分かってるつもり

631:デフォルトの名無しさん
07/12/22 00:55:43
>>630
試してないのなら「再現しない」などと断定するなよ。

>>617の箇所のコードを書いた人間の身になって考えると、確かに
一部のコードを載せられて「これはバグか?」と言われるのは
面白いものではないだろうし反論したいことも沢山あるだろうが、

質問に対する回答は一切無く、その感情に任せて馬鹿とか自分勝手とかてめー呼ばわり
するだけってのは作者であろうがなかろうが人間性を疑ってしまう。

632:デフォルトの名無しさん
07/12/22 01:22:15
とりあえず問題がおこる「呼び出し側のコード」を書こうぜ>623
そうしないと使い方がおかしいかどうかすらわからん。

予想:引数の数を間違えてる

633:デフォルトの名無しさん
07/12/22 02:02:25
引数の数間違えたら、実行する前に落ちるんじゃないか?

634:デフォルトの名無しさん
07/12/22 02:15:54
引数の数が違ってると関数呼ばれないね

635:デフォルトの名無しさん
07/12/22 02:20:35
とりあえず>>632がsquirrel使ってないってのはわかった

636:デフォルトの名無しさん
07/12/22 02:26:24
>>631
断片で不完全なものは試せるはずがない試せないものは再現するはずがない
再現するかどうか観察しなくても断片で動かないんだから再現するはずない
事実を述べてるにすぎないよ

>質問に対する回答は一切無く
ちょっとずつリードしてあげてるじゃん
すぐに解決策が示されるとでも思ったか?俺の人間性が疑われようが甘えはゆるさん

637:デフォルトの名無しさん
07/12/22 02:58:27
>>636
甘えを許そうが許しまいがお前さんの勝手だが、それをスレ住人に強要するなよ

レス数はとても少ないがここは色んな人間が見てる
自分のポリシーを他人に強要したり、それを守れない人間を罵倒したいのなら自分の掲示板でやれ



638:デフォルトの名無しさん
07/12/22 03:22:11
squirrelよく知らないけど616を参考にしてやってみた

function CallSuspend1(i, j, k, l, m, n, o)
{
  local a = 10;
  local b = 20;
  print("Enter CallSuspend1\n");
  while (1) {
    suspend("abc");
    print("i = " + i + "\n");
    print("j = " + j + "\n");
    print("k = " + k + "\n");
    print("l = " + l + "\n");
    print("a = " + a + "\n");
    print("b = " + b + "\n");
    break;
  }
  print("Leave CallSuspend1\n");
  return "done.";
}

local co = newthread(CallSuspend1);
print("Call CallSuspend1\n");
local ret = co.call(1,2,3,4,5,6,7);
print("ret = " + ret + "\n");
print("Wakeup CallSuspend1\n");
ret = co.wakeup();
print("ret = " + ret + "\n");


639:638
07/12/22 03:23:12
結果

Call CallSuspend1
Enter CallSuspend1
ret = abc
Wakeup CallSuspend1
i = 1
j = 2
k = 3
l = 4
a = (null : 0x00000000)
b = (null : 0x00000000)
Leave CallSuspend1
ret = done.


640:638
07/12/22 03:36:38
617 の ※ここ の部分を
if (!v->_suspended) v->Pop(params);
に変更して同じコードを実行すると

Call CallSuspend1
Enter CallSuspend1
ret = abc
Wakeup CallSuspend1
i = 1
j = 2
k = 3
l = 4
a = 10
b = 20
Leave CallSuspend1
ret = done.



641:デフォルトの名無しさん
07/12/22 03:46:14
>>638
ありがとう!
やっぱり他の人がやってもそうなるんですかー
638さんはスクリプトから実行しているようですが、
自分はC++から呼び出して実行してました。

>>640
自分も同じ方法で対処するしかないのかなと思ってました。
これって結局仕様なんですか?


642:638
07/12/22 03:48:05
call と違う順番で wakeup してみる

function CallSuspend2(i, j, k, l, m) {
  local a = 10;
  local b = 20;
  print("Enter CallSuspend2\n");
  while (1) {
    suspend("abc");
    print("i = " + i + "\n");
    print("j = " + j + "\n");
    print("k = " + k + "\n");
    print("l = " + l + "\n");
    print("m = " + m + "\n");
    print("a = " + a + "\n");
    print("b = " + b + "\n");
    break;
  }
  print("Leave CallSuspend2\n");
  return "done.";
}
local co1 = newthread(CallSuspend2);
local co2 = newthread(CallSuspend2);
local co3 = newthread(CallSuspend2);
print("Call CallSuspend2\n");
co1.call(1,2,3,4,5);
co2.call(10,20,30,40,50);
co3.call(100,200,300,400,500);
co2.wakeup();
co1.wakeup();
co3.wakeup();


643:638
07/12/22 03:49:23
結果

Call CallSuspend2
Enter CallSuspend2
Enter CallSuspend2
Enter CallSuspend2
i = 10
j = 20
k = 30
l = 40
m = 50
a = 10
b = 20
Leave CallSuspend2
i = 1
j = 2
k = 3
l = 4
m = 5
a = 10
b = 20
Leave CallSuspend2
i = 100
j = 200
k = 300
l = 400
m = 500
a = 10
b = 20
Leave CallSuspend2


644:641
07/12/22 03:49:29
あ、それと今さらなんですが>>616のコードでwhileしてるのって意味ないんですよね
いろいろ試してる過程の残骸ですので無視して下さい

645:638
07/12/22 04:05:19
sq_call が sq_throwerror を呼び出す前に
if (!v->_suspended) v->Pop(params);
でsuspendしているときはスタックを整えていないことから考えるとバグかも


646:デフォルトの名無しさん
07/12/22 04:06:59
>>644
Squirrel全然分からん(昔Hello World試したくらい) けど、勉強がてら俺も>>616試したら同じ結果になった。

ちなみに引数の数を 7つから変更(呼び出し元も変更)していくと、
3つになったところでbが正常になり、2つになるとaもbも正常になった。

これが仕様だとすると何か根本的根本的に使い方間違ってんのかな?
sq_call とか sq_wakeupvm とかの引数とか色々変えてみたけど、勉強がてらなんでまだよく分からん。
整理できたら多少空気読みつつ晒してみる

647:デフォルトの名無しさん
07/12/22 04:08:59
>>630で吹いた。ギャグだとしたら高度だ。

648:デフォルトの名無しさん
07/12/22 04:10:37
>>645
あまりバグバグ言うとまた五月蝿くなるからやめとけ

649:632
07/12/22 04:13:48
すまん、ばりばりつかってるんだが適当ぶっこいたんだ。

おわびにってことで俺もしらべてたんだが、既に638 で結論でてた…

function test(i,j,k,l,m) {
local a = 10;
local b = 20;
for (a=0;a<10;a++) {
suspend();
print("a=" + a + "\n");
print("b=" + b + "\n");
}
print("done");
}

a <- newthread(test);
a.call(1,2,3,4,5);
while (a.getstatus() == "suspended") {
a.wakeup();
}

こんなかんじのコードで簡単に再現できる。test の引数の数を減らすと
ローカル変数が破壊されなくて止まらなくなるので、sq_call での引数の解放でローカル変数を
破壊してるという、641の推測は正しいと思う。どういった修正が適切かは断言できないけど、
バグなのは間違いないので、本家に報告したほうがよさそう。

自分の手元でこの種のスレッドの suspend を使ったコードはいたるところにあるんだが
なんでいままでトラブルなかったんだろう、とおもってコードを見直したら、
パラメータは bindenv したオブジェクトのメンバ経由で渡してて、引数を全くつかってなかったよ^^;

650:デフォルトの名無しさん
07/12/22 04:15:59
>>646
まさにまさに!

自分もまさか4つ以上引数を渡すのはダメとかそういう仕様じゃないよな?
でもこんなイージーなバグがあるわけないよな?

てな具合にずっと悩んでたんです!

651:デフォルトの名無しさん
07/12/22 04:26:04
>>649-650
だからバグだバグだと騒ぐなと

652:デフォルトの名無しさん
07/12/22 04:42:00
君もこんな過疎地でオタ共を統率して悦に入ってないでニュー速だかvipだかにでもお行きなさいよ

653:デフォルトの名無しさん
07/12/22 04:47:46
あー読んでてやっと分かった。
スタック上にローカル変数があろうが無かろうが、suspend時点でのスタック変数を引数の数だけ問答無用で開放してしまうのか。
なんで>>646みたいに現象は引数の数に変化を受けると。

で、単に使い方が悪いのかバグなのかは不明だけど、
squirrelのコードを>>640の通りに変更すれば少なくとも、この問題は解決、と。

654:649
07/12/22 04:56:40
とりあえず下手な英語だが本家にバグとして報告しといたよ。たぶんそのうち適切な対策とってくれるだろう。

655:デフォルトの名無しさん
07/12/22 05:08:02
ほげげ氏・・・w
ところどころ動詞やらが可笑しいけど伝わるな
Unknown table ってのは内部用のローカル変数のテーブルか何かなのかね?

他のスレも見てみたけど本家のフォーラムって意外と閲覧数少ないんだな・・・

656:デフォルトの名無しさん
07/12/22 09:53:25
squirrelは別のとこでやれよ

657:デフォルトの名無しさん
07/12/22 10:28:10
Luaの本はまだなのか。

658:デフォルトの名無しさん
07/12/22 11:48:48
>>656
前スレ&現行スレ嫁

659:デフォルトの名無しさん
07/12/22 15:55:02
次スレから >>1 嫁にできるよう頼む

660:デフォルトの名無しさん
07/12/22 23:29:26
作者対応速いな
URLリンク(squirrel-lang.org)

661:デフォルトの名無しさん
07/12/23 00:00:33
相変わらず閲覧数少ねえーーw

結論としてはやっぱりバグで、修正方法は>>640の通りだったと。
発見された>>616氏、本家に報告されたほげげ氏、その他検証された方々乙でした。



662:デフォルトの名無しさん
07/12/23 00:03:02
>>660
報告乙

663:デフォルトの名無しさん
07/12/23 00:05:59
>>661
621のこと忘れてるぞ
椰子の煽りがなければ住人もここまで迅速に動かなかっただろう

664:デフォルトの名無しさん
07/12/23 00:09:11
自演乙

665:デフォルトの名無しさん
07/12/24 03:36:26
Lua本もう出てたんだ。ProgrammingInLua持ってるけど買う意義あるかな。

666:デフォルトの名無しさん
07/12/24 06:09:14
おおほんとだ出てるな
A5、256ページで\2310ってちょっと高くないかな、、、こんなもんか
買った人レビュー希望

667:デフォルトの名無しさん
07/12/24 07:01:02
>>666
値段はまあ普通だろうね
マイナー言語の一種だし・・・
Erlang入門なんて同じ値段で200ページしかない。
ともかく日本語で出たことが快挙


668:デフォルトの名無しさん
07/12/24 11:33:56
>>666
入門書としてはこれくらいの長さのほうがとっつきやすいかも。
Lua触るの初めてでしたが、読みやすくて、なかなかよかったです。

奥付みてみたら、2008年1月3日初版第一刷発行とか書いてあってワラタ


669:デフォルトの名無しさん
07/12/24 11:47:05
雑誌の「発行日」の記載って、なぜみんな
実際の発売日よりも1ヶ月くらい未来の日付になっているのでしょうか?
URLリンク(q.hatena.ne.jp)

670:デフォルトの名無しさん
07/12/25 00:55:20
Lua本届いたー
第一部が基本文法。標準ライブラリとか。さくっと読める
第二部がアルゴリズム実装しながらその他機能。結構いろいろ詰まってる。
第三部がC言語との連携その他。

入門ならこの厚さがちょうど手頃でいいかも。

671:デフォルトの名無しさん
07/12/25 01:17:43
入門だけか。
実際に使い出して結構経つ俺には、どのぐらい役に立つのかなぁ。

672:デフォルトの名無しさん
07/12/25 05:18:46
>>670
第三部ってどの程度ページある?
ここがある程度詳しく書かれているなら買ってみてもいいかなあ

673:デフォルトの名無しさん
07/12/25 13:28:19
>>672
第三部の内訳
第9章 Luaを拡張してみる - 13
第10章 Luaのモダンな機能 - 15
第11章 C言語との連携 - 13
第12章 Luaの組込み - 10

674:デフォルトの名無しさん
07/12/25 14:21:04
>>673
詳しい情報さんきゅ
帰ったら注文するわ

675:デフォルトの名無しさん
07/12/31 01:59:29
Squirrelの日本語リファレンス復活しとる

676:デフォルトの名無しさん
07/12/31 02:29:49
結構前から復活してる
というより見られなくなってたのはほんの短期間だった

floatのスペルミスはどうにかならないかなあ

677:デフォルトの名無しさん
07/12/31 02:33:56
いや、落ちて戻って繰り返してるし、またいつなくなるか
分からんから、見たかった人は今のうちに見ておくのが良いかと。

678:デフォルトの名無しさん
07/12/31 02:40:16
そうなのか。
保存しとこう。

679:デフォルトの名無しさん
07/12/31 07:40:09
サーバー落ちてただけのようですね。
でもac.jpですから、今のうちということですな

680:デフォルトの名無しさん
07/12/31 15:23:23
あれ、博士課程を修了したからHPも消えた、って話じゃなかった?
かなり長い間見れなかったような気がするんだが。
まあどっちだっていいんだけど。

681:デフォルトの名無しさん
08/01/01 00:52:15
ぅあけましておめでとう!

682:デフォルトの名無しさん
08/01/02 02:20:12
ぅあけおめ!

683:デフォルトの名無しさん
08/01/02 02:40:09
あけおめ!
今年も、組み込み言語が流行るといいな!

684:デフォルトの名無しさん
08/01/09 20:52:06
asdfasfasdfasdfasdf

685:デフォルトの名無しさん
08/01/10 09:07:06
>Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
>test.cpp:
>Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
>Error: 外部シンボル '_luaL_newstate' が未解決(D:\P\BORLANDC\TEST.OBJ が参照)
>Error: 外部シンボル '_luaL_loadfile' が未解決(D:\P\BORLANDC\TEST.OBJ が参照)
>(以下略)

こんな感じでリンクできないんですがどうしたらいいですか。
パスは通ってると思うんです。lua 5.1.2です。

686:デフォルトの名無しさん
08/01/10 10:45:48
>>685
勘だけどextern "C" かな。src/lua.hの代わりにetc/lua.hppを使ってみるとか。

687:685
08/01/10 16:12:22
extern "C"は使ってるんですけどねえ。うーむ

688:デフォルトの名無しさん
08/01/10 21:31:19
再現するコードを貼りたまえ。

689:685
08/01/10 21:46:05
#include <stdio.h>

extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}

main(){
double z;
lua_State *L = lua_open();
lua_dofile(L, "add.lua");
}



690:685
08/01/10 21:47:08
testなのでこれだけなんです。


691:デフォルトの名無しさん
08/01/10 21:49:42
Borlandの場合は命名規則と呼び出し規約が違うからではないかと。
VCでコンパイルされたライブラリをリンクするときに良くある問題。
詳しくはぐぐればわかると思う。細かいことは忘れた。


692:デフォルトの名無しさん
08/01/10 22:00:54
ライブラリはちゃんと設定してる?

693:デフォルトの名無しさん
08/01/10 22:09:06
ライブラリをリンクしてないとか

694:デフォルトの名無しさん
08/01/10 22:28:07
lua_dofileって5.1.2になくね?

695:デフォルトの名無しさん
08/01/10 22:39:24
ないよ。
lua_dofileでぐぐれば代替コードが見つかる。

696:デフォルトの名無しさん
08/01/10 22:46:01
685はなんでリンクまでは行ったの?

697:685
08/01/11 01:32:18
そうなんですよ。コンパイルは通ってるように見えるんでincludeは多分見てる。
普段はbccでは簡単なものしか作ってないしライブラリやリンク設定は自信ないですが。
ヘルプ見て作業フォルダにbcc32.cfg,ilink.cfgを作り
-L"libraryパス";"パス"
-I"includeパス"
などとやりました。頭をわざと--Lとやったら
>エラー E2075: コンフィグレーションファイル中の オプションの間違い : --LD:\〜略
とエラーになるので読んでるとは思うんですが。
685ではもう5個くらいlua_関数があって全部おなじようなエラーです。
lua_dofileはぐぐりました。
685にあるようにヘッダ読んで_luaL_loadfileまではいくようです。
lua_openも_luaL_newstateに置き換わってる。
バイナリエディタでLuaLib.libをのぞくと2つとも文字列は見つかるようです。
そこからは俺の実力ではどうにも。

691でしょか。

698:685
08/01/11 01:35:45
訂正 ilink32.cfgです
すんません


699:デフォルトの名無しさん
08/01/11 03:24:27
そう思うんだったら、luaのライブラリもbccで作ればいんじゃね?

700:デフォルトの名無しさん
08/01/11 05:23:44
まさか、VCのlibをBCCでリンクしようとしてないよな?

701:デフォルトの名無しさん
08/01/11 06:57:05
自分でBCC使ってビルドしてないのかよ。
そりゃ無理にきまっとる

702:デフォルトの名無しさん
08/01/11 07:41:10
とりあえずわかったのは、いいやつが多い

703:デフォルトの名無しさん
08/01/11 08:17:26
しょうがないからBCCでLuaをビルドする一番簡単な方法をおしえてやろう。後は適当にやりなさい。

D:\lua-5.1.2\src>rename luac.c luac.c_
D:\lua-5.1.2\src>bcc32 -I. -D_isatty=isatty *.c
(略)
D:\lua-5.1.2\src>rename *.exe lua.exe
D:\lua-5.1.2\src>lua
Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
>

704:685
08/01/11 09:01:59
なるほどいろいろ勉強になります。互換じゃないんですかこういうのは。出直してきます

705:デフォルトの名無しさん
08/01/12 13:59:52
xxx.luaとxxx/table.luaから成り立つライブラリがあって、
--xxx.lua
require "xxx"
module("xxx",package.seeall)
function xxx_func()
 table.insert(......

--xxx/table.lua
require "xxx"
module("xxx.table",package.seeall)
xxx_func()

--main.lua
require "xxx.table"

を実行するとxxx.luaのtable.insertがnilになってる。理由はxxx.table
のモジュールで"insert"を探しに行ってしまっている為。
問題はxxx.luaだけで使うと問題が起きずxxx/table.lua経由で
使用すると問題が起きるという事だけど、この問題の本質って
なんだろう?xxx.”table” 見たいな標準ライブラリと同じ名前の
モジュールを作成したこと?

706:デフォルトの名無しさん
08/01/12 16:19:01
>>705
moduleはxxx.luaの環境を自身のモジュールのテーブルに変更する(この場合_G.xxx)。
つまりtable.insertはxxx.table.insertになる。
moduleにpackage.seeallを指定するとxxx.tableが存在しなかった場合に_G.tableを見に行くようになる。
回避策としてはtable.insertを_G.table.insertにすればいいと思うよ。
めんどくさかったらxxx.luaの先頭で
local table=table

それはそうと、そのコードだと外からxxx_funcを使いたい時にxxx.xxx_funcって書く必要があって不便じゃないか?

707:705
08/01/12 16:43:02
>>706
>local table=table
まさにそれをやってとりあえず回避してます。
ただそうなると後からの拡張に備えるならばxxxで呼び出している
_Gの全てのメンバに対してそれをやらないと安全でない事に。
そうなるとpackage.seeallの役割って・・・。


708:デフォルトの名無しさん
08/01/13 00:27:18
>そうなるとpackage.seeallの役割って・・・。
ただの手抜き道具。
安全云々なら

local _G = _G
module("xxx")

でオシマーイ。

709:デフォルトの名無しさん
08/01/14 10:57:54
Squirrel に関数内で使える静的変数ってないのでしょうか?
今は仕方なくグローバルに置いてるのですが。

710:デフォルトの名無しさん
08/01/14 13:40:53
Squirrel 知らんけど、もしクロージャがあればどうにかなるのでは。
Lua だとこんな。
> f = (function ()
local v = 0
return function ()
v = v + 1
return v
end
end)()
> print(v)
nil
> print(f())
1
> print(f())
2
> print(f())
3
> print(v)
nil


711:デフォルトの名無しさん
08/01/14 14:19:30
>>709
URLリンク(muffin.cias.osakafu-u.ac.jp)

ここに静的変数について説明があるけど、これじゃ駄目なのか?

712:デフォルトの名無しさん
08/01/14 15:47:49
レスありがとうございます。

>>710
真似てみて以下のようなコードを書きましたが、
実行時しても、111が出力されました。
function func()
{
v <- 0;
return function() {
return ++v;
}();
}
print(func());
print(func());
print(func());

>>711
クラスのメンバ変数でしか使えなく、さらに書き換えが無理なので、使い勝手が悪そうです。

713:デフォルトの名無しさん
08/01/14 16:12:55
同じくLuaしか知らんからマニュアル見ながら勘で答えるけど
{ local v = 0; function count() { return ++v; }}
こんな感じのことがしたいのかな。Luaなら
do local v = 0; function count() v = v + 1; return v; end; end

714:デフォルトの名無しさん
08/01/14 16:14:01
質問から少し話はそれるけど、
インスタンスを作成すると、そのクラスのスロットの追加変更が効かなくなるってのは
仕様として分かるんだが、静的メンバまで変更不可になるのはどうにかしてしてほしい。

715:デフォルトの名無しさん
08/01/14 16:19:38
えー、それって直訳になってる?
vの初期化がfunc呼出し毎に毎回起こってないかな。
外側のfunctionを適用した結果のreturn function...のfunctionがfuncの値になるんよ。


716:デフォルトの名無しさん
08/01/14 16:24:31
715は712へのレスね。

717:709
08/01/14 16:31:53
>>716
以下のように書き直してみたところうまく動きました。
local v = 0; では駄目で v <- 0; にする必要があるみたいです。
動作原理がいまいちわかっていないので詳しく追ってみます。
local f = (function() {
v <- 0;
return function() {return ++v;}
})();
print(f());
print(f());
print(f());

718:デフォルトの名無しさん
08/01/14 17:16:55
>>717
それグローバル変数 v が確保されてるだけだよ


>>710 の例ぽいことは squirrel なら generator つかえば簡単にできるけど、
それはあくまで「その中に閉じた変数」であって、全体で共有される static 変数じゃない。

用途的にstatic なら、名前に気をつけつつグローバルにおくしかないはず。

719:デフォルトの名無しさん
08/01/14 18:07:21
日本でLua使ってる製品ってなにかある?

720:デフォルトの名無しさん
08/01/14 18:11:45
同人なら割と

721:デフォルトの名無しさん
08/01/14 18:58:14
同人ゲーム?
ノベルはある?

722:デフォルトの名無しさん
08/01/14 19:07:55
関数内の静的変数なんて、C言語使いしか使わん

723:709
08/01/14 19:08:23
>>718
> それグローバル変数 v が確保されてるだけだよ

<- はlocalをつけずに初期化するためだけのものだと思ってました。
もっと勉強しないと駄目ですね。

724:デフォルトの名無しさん
08/01/14 19:32:29
>>722
そりゃ、Cぐらいにしかないからだろ。
あれば使うよ。

725:デフォルトの名無しさん
08/01/14 21:28:01
>>721
> 同人ゲーム?
> ノベルはある?

あるはずなのは知ってるんだが具体名は知らなかったり...

726:デフォルトの名無しさん
08/01/14 21:30:38
>>722
> 関数内の静的変数なんて、C言語使いしか使わん

オブジェクト指向言語のインスタンス変数は多用されるわけだが

727:デフォルトの名無しさん
08/01/14 21:53:52
>>726
そうだよ。
何がいいたいの?

728:デフォルトの名無しさん
08/01/14 22:00:27
Luaなら同人まで含めれば幾つかは見つかりそうだが
Squirrelとなると皆無な余寒

729:デフォルトの名無しさん
08/01/14 22:00:42
ある手続きと変数があって変数名がその手続きにローカルである
↑↓
あるメソッドとメンバがあってメンバ変数名がメソッドが属するオブジェクトにローカルである

こう?

730:デフォルトの名無しさん
08/01/14 22:13:55
今はDS Luaが熱いよな

731:デフォルトの名無しさん
08/01/14 22:24:46
>>725
ありがとう。

732:デフォルトの名無しさん
08/01/15 12:17:55
>>728 商業作品だけど
Alcotの「フェアチャイルド」方面にSquirrelの予感
使ってるのかどうか確信が持てないのだけどね

733:デフォルトの名無しさん
08/01/15 12:57:10
商用でSquirrel使うはまだ早すぎる気がする
>>616みたいなバグがまだどんだけ潜んでるか分からないし

734:デフォルトの名無しさん
08/01/15 13:35:04
ん あれ吉里吉里なんじゃないの > FairChild

735:デフォルトの名無しさん
08/01/15 13:39:15
TJSか

736:685
08/01/16 12:52:20
>>703 出来ました。
ぐぐってmakefileが見つかったけどうまくいかないんで、
tlib lua.lib /C +lapi.obj,lua.lst
tlib lua.lib /C +lauxlib.obj ,lua.lst
tlib lua.lib /C +lbaselib.obj ,lua.lst
(略)

と、luaのsrcすべての.objからmylua.lib作ったんですが、
>ilink32 c0x32.obj cw32.lib import32.lib mylua.lib test.obj
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_luaO_log2' が未解決(...\MYLUA.LIB|ltable が参照)
Error: 外部シンボル '_luaO_nilobject_' が未解決(...\MYLUA.LIB|ltm が参照)
(以下同様)

仕方ないのでgrepしてluaO_がlobject.hに見つかったので(あとturboFloatエラーも検索して)
>ilink32 c0x32.obj lobject.obj test.obj cw32.lib import32.lib mylua.lib
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

>c0x32.exe
8.000000desu

add.luaで3+5、とりあえずは出来ました。ライブラリの作り方おかしいでしょか。

737:デフォルトの名無しさん
08/01/19 15:31:29
Luaでwireshark(Ethereal)をカスタマイズが出来るみたいですな。
ざっと見たところ出来ることとしては
・プロトコル解析処理の追加
・解析結果を利用したカスタムパケットフィルタリング
・統計情報の収集等。
などが出来そうですが、サンプルとか情報少ない・・・。

使ってる人います?

738:デフォルトの名無しさん
08/01/19 15:32:35
あげとこう

739:デフォルトの名無しさん
08/01/19 16:01:56
ti.moo

740:デフォルトの名無しさん
08/01/20 15:13:20
>737
プロトコル解析につかってるよ。
特にバイナリフォーマットのパケットだと解析できた方が便利だよ〜。

741:737
08/01/21 00:03:16
>>740
Dissectorの機能を使用してですか?
wiresharkのリファレンスみただけではどうも
全体像がいまいち分かりにくいです。
どっか纏まったサイトあります?

742:デフォルトの名無しさん
08/01/21 19:44:31
>>732
その方面だと思うんだけど
商業作にはまだと確認しました

URLリンク(sv.kikyou.info)
プラギンはあるんですねー
アドベンチャー系だとコルーチンの使いでがあるところがあるか微妙ですが

743:デフォルトの名無しさん
08/01/21 19:48:09
ほほう

744:デフォルトの名無しさん
08/01/21 21:51:02
そういうソフトでの組み込みスクリプト言語の使い方って
LuaならLuaでシナリオをいわばハードコードするの?

745:デフォルトの名無しさん
08/01/21 21:53:59
それはスクリプトとホストとのインターフェイスの設計次第だろう

746:740
08/01/22 21:48:29
>>741
dissector使ってますよ。
URLリンク(wiki.wireshark.org)
↑を参考にして、あとは試行錯誤の繰り返しですね・・・




747:732
08/01/23 09:59:34
>>742 あーどうもです。確認しました、その方面で合ってます。

748:デフォルトの名無しさん
08/01/23 22:35:01
ファイルサイズ的に軽量な言語でGUI作りたく
DSL見ててmurglaLuaが良いと思ったんですが、
ほかにお勧めのものありますか?

749:デフォルトの名無しさん
08/01/23 22:36:34
murgaluaだった。。。

750:デフォルトの名無しさん
08/01/24 00:11:03
lua-gtkとかLua-Gtkはどう?

751:デフォルトの名無しさん
08/01/24 00:11:43
間違えた
lua_qtとLua-Gtkだ

752:デフォルトの名無しさん
08/01/24 00:15:58
wxPython

753:748
08/01/25 00:12:41
あんがと。
参考にしてみる。ちょっとサイズでかいけど。

754:デフォルトの名無しさん
08/01/25 01:07:07
結果報告よろ

755:748
08/01/25 22:30:19
lua-gtkとmurgaLuaで迷ってる。
現状、なぜかエラーがでて、Lua-gtkが使えてないが、
結構期待が持てる。でもドキュメント類が少ない。。。
まあ、サンプルコード見る限りわかりやすそうではあるが、発展途上って感じもする。
murgaLuaはFLTKベースで、ちょっと癖はあるがGUIBuilderにfuluidとか使える。
あと、検索すると使ってる人結構いるのな。これも結構簡単そう。

lua-qtはqtのない環境なので見てません。
wxPythonはサイズ的に却下。Luaとは桁が違う。

756:デフォルトの名無しさん
08/01/25 23:11:34
そりゃPythonだもんな

757:デフォルトの名無しさん
08/01/26 00:39:27
5.1.3でました

758:デフォルトの名無しさん
08/01/26 00:39:46
>>748
どんなエラー?

Lua-Gtkのドキュメントは全然無いけど、GTK自体のドキュメントは豊富だからそっちを参考にしたほうが良い。
PyGTKやRuby/GTKのドキュメントが読みやすいと思う。

759:デフォルトの名無しさん
08/01/28 20:05:56
こんなんですね。
lua: error loading module 'gtk' from file './gtk.so':
./gtk.so: undefined symbol: gtk_builder_new

760:デフォルトの名無しさん
08/02/03 17:33:52
Squirrelの日本語リファレンスの中の人です。
マニュアルの一番上にも書いていますが、内容を
URLリンク(wikiwiki.jp) に移そうかと思っています。
他によい場所などありますか?

761:デフォルトの名無しさん
08/02/03 20:14:59
>>760
いつもお世話になってます
大学を卒業なされて日本語マニュアル置けなくなったんですか?
自分としては見られればどこでもいいです


762:デフォルトの名無しさん
08/02/04 13:23:47
>>760
おお、おつかれさんです。

そちらでよいかと思われます。

763:デフォルトの名無しさん
08/02/04 13:26:41
>>760みて改めて思ったけど、このスレって、LL以前のさらに小さな組み込み言語用なんだな。
LLスレが軒並み荒れてるのにここが荒れてなくてw 実感した

764:デフォルトの名無しさん
08/02/04 14:35:40
RubyのどこがLightなんだボケェっていう人たちのたまり場です

Wikipedia項目リンク
>ここでいう「軽さ」はプログラマの負担の軽重を指し、実行速度やメモリ消費量に優れているという意味ではない。

知らなかった・・・

765:デフォルトの名無しさん
08/02/04 14:40:24
知らなかったのかよ…


766:デフォルトの名無しさん
08/02/04 15:46:31
Easy Programing Language と言ったほうがいいのでは

767:デフォルトの名無しさん
08/02/04 15:49:12
URLリンク(en.wikipedia.org) には>>764とは逆のこと書いてある気がする。
まあWikipediaが絶対というわけじゃないしな。
あとLuaのページに
>LuaはライブラリとしてC言語を実装している。
って書いてあったんで晒しsage
俺が消してきます


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

5050日前に更新/210 KB
担当:undef