fc2ブログ

今年もあとわずか

2009.12.29.Tue
うろんです。
今日が冬コミ1日目ですね。
ゆにたりは2日目で受かっていますが、実は今回諸事情で参加ができません。
夏コミで体験版を受け取って、もしかしたら待っててくれた参加者の方々、
隣のサークルさんやコミケット運営さん、
行きたくても落ちたサークルの方々には大変申し訳なく思います。。。
スポンサーサイト



むしろ寒さに慣れてきた(FAM)

2009.12.21.Mon
温度に適応するっつーのも考え物で、自分を追い込む要素が薄くなりちょっと危機感がなくなってきました。
そうなると早く更新する意味もあまりないわけで。
現時点では前回まで使えてた機能の再現を完全にできてないのに「更新しました~」ってのもちょっとあれだなあ、と。
更新しようがしまいがどのみち毎日ペンぷろの制作を続けるから完成が早まるわけでもないし。

てわけで、更新はもうちょっと納得できるところまで復元してからにします。

とうとう雪が降ってきてしまいました・・・(FAM)

2009.12.17.Thu
寒くなる前に仕上げようと思ってましたが、叶わぬ夢でした。
開発段階は起動してのデバッグ作業に移ってきているので終わりは見えてきましたが、睡眠不足と朝の寒さで非常にひもじいです。
我が家のこたつ様に電源を入れるのはアップしてから、と決めてしまったので寒くても我慢してます。
体に危険を感じるくらいの寒さのときは炊飯器の中のご飯を弁当箱の中に入れて湯たんぽ代わりにし、「暖房器具使ってないからセーフ!」ということにしています。
炊き立てご飯で暖を取るバカは他にそうそういないでしょう。
あ、中身のご飯は後でスタッフのみんなでおいしく食べました(意訳:昼飯用に持っていっているので、無駄にはしてません)。


そんなこんなで早く仕上げたい目論見もあったりして今回、更新部分についてりーどみーで軽く触れるのみにしてバカ丁寧なヘルプは書かないことにしました。
あちこち仕様が変わっているし、次回更新する時に説明書つけるときは例のヘルプつけなくなりますし。
まあ、その、完成させるのが最優先だ、ということにしといてください。

犬モフりたい(FAM)

2009.12.10.Thu
ペンぷろ作成に専念するため本を始めいろんなものを断ち始めてはや1月あまり。
別に修羅場ってほど精神が切羽詰った状態で作ってるわけでもないんですが、ペンぷろがいつまでも完成しないだの仕事つまらんだの月頭あたり不運なことが立て続けに起きたりだのでたまったストレスを解消できず、悶々としています。
時間があればいろいろしたいこともあるんですが、そーやって自分を甘やかせていたらずっと完成しないだろうし。

そんなこんなで犬モフりたい病が発動しています。
や、犬でなくても猫でもいいんですが、できればおとなしくて大型でふっさふっさと尻尾を振ってくれる愛らしいゴールデンレトリバー希望。
犬モフりたい病は以前から時たま起きる発作なんですが、今は近くに犬カフェだの猫カフェだのあれば思わず通いつめてしまうくらいきついです。
自分のお財布のことを考えると、そんな危険な店は近くにないほうが望ましいのかもしれないですが。



まあ、それはともかく。
ペンぷろのNスク部分は勢い余って(ほぼ)Luaのみにしました。
や、重要で頻繁に使う変数を全部Luaのテーブルで管理しているんで、いちいちそれをNスクの変数に直すくらいなら全部Luaにしちゃったほうが楽なんですよ。
NスクのLuaと絡ませる部分がかなりスパゲッティな状態で、大幅に修正してまで使う気にならなかったってこともありますが。
そんな感じに書いてきたプログラムも本来は今夜中にはデバッグに移れるはずだったんですが、いろいろとLuaに対して間違った認識のまま書き進めていた部分が見つかり、もう少し遅れそうです。
週明けまでには間に合わないだろうけど来週中には完成するはずです。
・・・他に致命的な失敗やらかしてなければ。


以下、いつもの自分専用メモ。

・#でテーブルの長さは取れるが、要素数をちゃんと返すのは、全てのインデックスが1から連続する整数だけのときのみ。そーいうのではないテーブルの要素数を返すならそれようの関数を自作する必要あり。
・テーブルのインデックスの文字列は全角文字でも半角数字でもできるが、それらはhoge.piyoみたいな形では書けない。アンダーバー(_)はOK。半角数字は冒頭でなければ大丈夫っぽいけど全角文字はどうやってもダメ。内部で展開させる段になってうまくいかずにエラー出るとかそーいうことだろうか。
・テーブルを丸ごとコピーできない。メタテーブル作ってもメタテーブルをいじると元のテーブルの値が変わってしまう。ただのテーブルだったらfor使ってどうこうで簡単だけど、深い階層のテーブルだとちと厄介。できるかもしれんけどあきらめる。普通に使いそうなものなのに実装してないんか。

getbyteの挙動がよろしくない?(FAM)

2009.12.05.Sat
ふとgetbyteの機能はLua単体で実現できるのではないかと思い立ち、調べたり実験したり。
結果、Lua単体では全角(2バイト)文字の文字コードは調べられないっぽいので多分無理、っつーことに。
string.byteの説明で『文字コードの数値は、プラットフォームを超えての可搬性がない』ってのがあって、最初何のことかわからなかったけど、おそらくこのことなんだろーな。


で、これを調べている時に調べる文字列の最初の1文字だけ調べるために「string.sub("調べる文字列",1,1)」と書いてたんですが、これ、全角だと正しい値を返さないんですよね。
Nスクのmidと同じような挙動といえばいいかしら?
最初の1バイト分の文字コードを無理矢理取り出して変換してるんかその辺はよくわからんけど、まあ、使えないってことは確か。

それに気付かずに拙作のスクリプトのgetbyteではcmpに渡す前に文字を「string.sub("調べる文字列",1,1)」という風に最初の1文字だけ取り出していたのできっとうまくいかないこともあるんでないかと(テストプレイした限りではたまたまなかったけど)。
ついでに元のやつだと全角スペースは半角として判定されていたり、「゚」から始まる文字列(「゚」のみなら問題ない)が全角として判定されたりされるっぽいのでその辺を文字コード表を見ながら修正。
・・・と思ったらcmpの比較順だと半角カナあたりがすごい中途半端な場所にあったのでそれを調べるのに四苦八苦。
というわけで、getbyte改。


function getbyte(linestr)
  if linestr=="" then
    return 0
  end

  local rtnint
  local int0=NSGetIntValue(0)
  
  local function getbyte_cmp(cmpstr)
    NSExec('cmp %0,"'..linestr..'","'..cmpstr..'"')
    return NSGetIntValue(0)
  end
  local function getbyte_judge()
    if getbyte_cmp(" ")<0 or (getbyte_cmp("。")>=0 and getbyte_cmp("漾")<0) then
      return 1
    end
    return 2
  end
  
  rtnint=getbyte_judge()
  NSSetIntValue(0,int0)
  return rtnint
end


これで今度こそ大丈夫なはず。ついでにペンぷっとの中のやつも書き換えました。
既に落とした人は落としなおしたほうがいいかも。まあ、実害もまずないだろうけど。
明らかにおかしい結果が出た方がおられましたらお手数ですがBBSなりで連絡してくださるとありがたいです。



例によって自分専用覚え書き。
・Luaの命令文は大文字小文字を区別する。これを知らずにうろ覚えでスクリプトを打っていくとエラーが出るはずがない箇所でエラーが出て苦労する(した)。そういうことを踏まえると、命名規則さえ覚えりゃなんとかなるとはいえ、NスクのLua命令文はやたらと大文字小文字混ぜた物になってるのでこれはどうかと思ったり。ほとんどの命令文は冒頭の「NS」(およびせいぜい次の1文字)だけ大文字にすりゃ十分だと思うんだけど。Lua初心者が挙動を手探りするために多用すると思われる「NSOkBox」なんて短い文字数の中に嫌がらせのように大文字小文字混ざっているし。
・Luaでは文字列がキーのテーブルdummytable["key"]をdummy.keyのように書き換えれるが、dummytable["key1"][kwy2]をdummy.key1["key2"]のように混ざった形で書くことも可能。dummy["key1"].key2も可能。テーブルの変数入れない部分はkey="key"とおいて["key"]と[key]を同値にしようかと企んでいたけど、可変部分は[]でくくり、変数入れない部分は.keyみたいな形で書いたほうがデバッグ時の可読性も格段にあがりそう。

寝てないけどこれから仕事です(FAM)

2009.12.04.Fri
このままだとまたずるずると長引きそうなので無理してがんばりました。
ペンぷっとの心残り部分直した奴できました。
こちらです。

追加機能を列挙
・Luaのスクリプトを送れるようになった
・english(>使う奴)にも対応になった
・スクリプト記入部分のGUI部品を変更(機能が増えて64KB以上にも対応)
・テキスト欄を中ボタンでクリックすると送信できるようになった
・スクリプト行送信できるようになった

こんな感じ。
他はりーどみーを読んでもらうこととして、スクリプト行送信だけちょっと説明。
実行時のカーソル位置で判断して、その前のテキスト文から次のテキスト文までの命令文および次のテキスト文を送信します。
わかりやすくいうと、1クリックで実行される部分を送信、ということで。
実際に使う分には選択行送信とかよりも役に立つと思います。



11月終わり頃から続いていた雑務や些事の類はこれでほとんど片付きました。
今週末からようやくペンぷろった~の開発を再開できます。
その前にしばらく仮眠を取らせていただきます。おやすみなさい。