tmlib のイベント処理について

色々あって、少し Quintus に浮気してた時間もあったんですが、また tmlib に戻って来ました。
それで、前からイマイチよく分かっていなかった「オブジェクトのイベント処理」について、ちょっとだけ前進した部分を書いておこうと思います。

他のプログラミング言語で「コールバック」と言われるイベント処理方式については知っていたんですが、tmlib での「イベント処理」がどうなっているのかは良く分かっていませんでした。
それで、ようやく少しだけ理解できたのが「対象オブジェクトの on メソッドを使う」という事です。
今回は tm.display.StarShape で描いた星を左右に往復させるのに tm.anim.Tween を使ったのですが、往路が終わった後に復路の移動を開始する(tmlib での)方法を見付けるのに四苦八苦した次第です。
続きを読む

MariaDB を Debian6(squeeze) に入れるのが大変だった

知り合いから頼まれて MariaDB を Debian6 に入れたんですが、公式のインストール方法(apt リポジトリ追加 → apt-get update → apt-get install mariadb-server)では最後の方で止まってしまい、悩みました。
というわけで、うろ覚えながら方法をメモしておきたいと思います。

まずは公式の方法でインストールに挑戦します。
そうすると「subprocess installed post-installation script returned error」とかが出てエラー終了するはずです。(出ないで成功した貴方はラッキーですね)
続きを読む

引き続き tmlib の件

ここ何日か続けて tmlib でアクションゲームを作っていました。
その中で気付いた件を列挙しておきたいと思います。

・描画にマイナスの座標が使える
これは大変助かります。表示したいマップ部分の左上を (0,0) にしたい時に、マイナス座標が使えないと、そのための処理を場合分けとして作らないといけません。
でも、tmlib ではマイナス座標にも描けるのでマップに縁取りをしたい時でも直感のままにコーディングできます。
続きを読む

tmlib でひっかかった点

今日二回目の投稿です。
ここ2日ほど tmlib をいじくり回していたので、途中でひっかかった点を残しておこうかと思います。

・サンプルによっては動かない
結構いろんな場所でサンプルが公開されているのですが、tmlib のバージョン次第で動作しない場合があります。
バージョンが明示的に書いてあればいいのですが、無いとどれだか分からないという…
頑張ってクラスのネームスペース移動とかを修正すると動くかもしれません。
続きを読む

gitosis で新しいリポジトリを push する時

はい。相変らず不定期更新です。
今回は gitosis で新リポジトリを作って、そこに push する時に怒られた場合の対処です。

エラーメッセージはこんな感じです。

No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as ‘master’.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to ‘gitosis:repo.git’

で、結論としては「git push -u origin master」で OK です。
(もちろん、origin と master は各自で変更してください)

今回は検索でひっかかった次のサイトを参照しました。
サルでもわかる Git 入門:トラブルシューティング

postgresql のストアドプロシージャを移行する

postgreSQL のデータをスキーマ間で移行する作業の時に調べ回ることになったのでメモ。

プロシージャ(かトリガのどちらか)の一覧は「\df」で取得できる所までは、まあ大丈夫とする。
実際のソースは「SELECT prcsrc FROM pg_proc WHERE prcname = 'procedure_name'」で取得できる。

とは言え、これではソースのみであり、完全な CREATE FUNCTION 文ではない。
そこで pg_dump を利用する。

スキーマをダンプする時にオブジェクトを一緒にダンプするように、次の SQL 文を使う。
pg_dump --schema-only --oids -Fp db_name > filename」(必要なら -h、-U、-p 等も使う)
これで希望の CREATE FUNCTION 文を入手できる。後はエディタでちゃっちゃと編集すればいい。

もしかすると、適当な空のテーブルを作っておいて「-t tablename」を指定すると、余計なスキーマ情報が入らないかもしれない。…と思って試してみたら駄目だった。

あとは psql で入って「\i filename」で読み込めば OK となる。

altJSを始めるにあたって

いい加減 Webアプリに必須になってきた javascript を始めてみようと思ったが、素の JS は色々と面倒だという話を聞いた覚えがあったため、altJS と呼ばれる言語の方が良さそうだと思い、調査してみた。
何箇所かWebをサーフィンしてみて、結局のところ次のページが一番参考になった。

モダンな言語でHTML5を開発しよう! 俯瞰して理解するaltJSの比較 (前篇 – TypeScript, CoffeeScript, Haxe)
続きを読む

vagrant共有フォルダにmvしたらファイルが消えた…

docker をいじっていて、設定ファイルをメインマシンに移そうと思って、ディレクトリを vagrant 共有フォルダの /vagrant に移動したら、ディレクトリまるごと消えた…

幸いなことに、スクロールバッファにテキストが残っていたので何とか復旧できた。

使ったコマンドは「mv docker /vagrant/」だったので、もしかしたら「mv docker /vagrant/docker」としたら期待通りに動作したのかもしれない。

システム境界での作業には十分注意が必要だと痛感した出来事だった…

virtualbox のゲスト Debian で nat ネットワークがつながらなかった件

掲題の通り、virtualbox で nat に設定したネットワークアダプタを用意してインストールすると、再起動後に外部ネットワークに接続できない状態になっていたので、開通させるまでの手順をメモ。

結論から言うと以下の 4手順で完了。

  1. ifconfig eth0 10.0.2.15 netmask 255.255.255.0
  2. route add default gw 10.0.2.2
  3. apt-get install ifupdown
  4. /etc/network/interfaces を編集
    • iface eth0 inet dhcp をコメントアウト
    • iface eth0 inet static
    • address 10.0.2.15
    • netmask 255.255.255.0
    • up route add default gw 10.0.2.2
    • down route del default gw 10.0.2.2

ここに行き着くまでに /etc/default/network をいじったり、何度も /etc/network/interfaces を書き直したり、手動で ip コマンドを叩きまくったりと大変だった…
特に /etc/network/interfaces を有効にするには ifupdown パッケージが入ってないとダメだと分かるまでに、だいぶかかってしまった。

debian の preseed.cfg で躓いた所

昨日に引き続き仮想マシン関連で、インストールを自動化しようと Debian の preseed.cfg をいじった記録。

一番大きな問題は apt のプロキシ設定で、ホスト名だけかと思ったらフル URL を入れる必要があったという話。
具体的には「d-i mirror/http/proxy string http://host:port/」と入れなきゃダメ。(port は apt-cacher-ng なら 3142)

あとはまあ、以下を変更するくらい。

  • d-i debian-installer/locale string ja_JP.UTF-8
  • d-i mirror/http/hostname string ftp.jp.debian.org
  • d-i time/zone string Asia/Tokyo
  • d-i clock-setup/ntp-server string jp.pool.ntp.org
  • d-i base-installer/kernel/image string linux-image-amd64
  • tasksel tasksel/first multiselect standard
  • d-i pkgsel/include string openssh-server

気分と趣味によっては以下も。

  • d-i netcfg/choose_interface select eth0
  • d-i netcfg/get_hostname string preseed-test
  • d-i netcfg/get_domain string vagrant.com
  • d-i apt-setup/non-free boolean true
  • d-i apt-setup/contrib boolean true

それから、「d-i keyboard-configuration/xkb-keymap select us」になっていても再起動後のキーボード設定は日本語になっており、なぜか「loadkeys us」も効かないようなので /etc/default/keyboard で「XKB_LAYOUT=”en”」にして再起動すると直る模様。ちなみに PuTTY とかで SSH 接続した場合は、設定してなくても問題無く英語キーボードで使える。