smartyで変数を定義

smarty内部で変数を定義。
assignを使う。ここではiを設定して一個ずつ増やしている。xoopsなので{ }じゃなくて<{ }>を使っている。

VC6でデバッグビルドでは動くのにリリースビルドだと動かない場合

リリースビルドでもデバッグ情報をある程度付け足してビルドすることができるのでその方法。

1、メニューの「ビルド」「構成」からリリースビルドの構成を元に新しい構成を作成する。

2、プロジェクトの設定の、「C/C++」でデバッグ情報を「プログラムデータベースを使用」にする。「リンク」で、「デバッグ情報を生成する」をチェックする。

3、実行してエラーが出てくれれば、行番号などのある程度の情報はわかる。

上の方法でエラーが出てくれないとき。

1、リリースビルドのプロジェクトの設定の「リンク」で「MAPファイル生成」をチェックし、ビルドすると拡張子MAPのファイルができる。このファイルは関数のアドレス情報がわかる。

2、実行してエラーを再現して、エラーの起きたアドレスを調べる。以下の場合ならアドレスは0x401106になる。

err

3、MAPファイルからこのアドレスがどの関数かを調べる。左の数値ではなく右のほうの400000あたりから始まる数値。

4、頑張ればコールスタックも調べられる。

phpMyAdminでrootでパスワードなしで使う

初期状態のmysqlサーバ(rootパスワードなし)をphpMyAdminからアクセスするための、config.inc.phpの設定。

nopasswordとAllowNoPasswordRoot,AllowNoPasswordをtrueにする。

sambaのoplock

最近のsambaのアップデートで通信がやたらと遅くなる現象が発生した。原因はoplock(なんらかのファイルロック機構と思われる)がクライアントが正常終了しない場合、かなりの時間残ってしまうことのようだ。oplockはユーザ毎に持つようだが、sambaへのアクセスを同じユーザにしている場合この問題が発生しやすいようだ。

oplockを無効にすることでとりあえず回避。oplockの設定はディレクトリごとにできる。

smb.conf

.NET2.0のWebBrowserでHTMLを解析

WebBrowserNavigateメソッドは非同期で動くので、コールしたあとすぐにはページが読み込まれておらず解析できない。そこでReadyStateCompleteになるまで待てば解析できる。まつにはDoEventを使う。

タグの数を数えるプログラム(C#)

XOOPSのモジュールを作ってみる

ApacheとかXOOPSはインストールされているものとする。

ここでスケルトンを作成できるので作ってmodulesディレクトリの下におく。ここではモジュール名はbunkoにした。そしてこのモジュールを管理画面からインストールする。成功したらトップページのメニューにBUNKOが追加されるので、クリックして実行できた。

bunko1

一般ユーザ(非登録ユーザ)で実行できないので、以下のようにしてアクセス可能にする。

bunko2

あとは作っていくわけだがこれもなかなか難しい。デフォルトのindex.phpは以下のようになっている。

bunko_index.htmlはtemplatesディレクトリにあるファイルを指定している。これがテンプレートになっていて、このファイルの中で使われる変数の定義をしているのがassignの行だろう。_XD_TITLEはlanguageで定義されている。つまりbunko_index.htmlがMVCのビューに相当して、index.phpがモデルとコントローラになるのか?

このスケルトンにはデータベース関係が含まれていないので、少し書いてみたい。mysqlディレクトリにあるmysql.sqlはこのモジュールのインストール時に実行され、必要なデータベースが作られると思われる。まずmysql.sqlを以下のように編集する。

次にxoops_version.phpの以下の行のコメントをはずしてからモジュールの再インストールを行ってみる。

bunko3

fc6515_bunkodata ができた。

このテーブルにアクセスしてみる。ここではあらかじめデータを入れておき読み込みのみを考える。入ってるデータは以下。
bunko4

まずbunko_index.htmlを以下のようにする。

<{で始まってるのはsmartyの文法なのか?まあいいや。 次にindex.phpを以下のようにする。

templateを編集した場合は、モジュールのアップデートをしなければならないのでアップデートしてから以下のようにできた。 bunko5

最後にはユーザによる処理分けについて。
これは$xoopsUserというのを使うらしい。これが定義されていなければ未登録ユーザ。定義されていればいろいろ情報を持ってこれる。
これを使って以下のようにできた。

bunko_index.html

index.php

bunko6
難しかった。

★ここにあるソースのライセンスはGPLを継承。

Cygwinのソースコードを取ってくる

CygwinはWindowsで動くUNIXのコマンドラインツール。

Cygwinのソースコードを取ってくる。
$ cvs -d :pserver:anoncvs@cygwin.com:/cvs/src login
Logging in to :pserver:anoncvs@cygwin.com:2401/cvs/src
CVS password:anoncvs

$ cvs -d :pserver:anoncvs@cygwin.com:/cvs/src co winsup
U src/.cvsignore
U src/COPYING
U src/COPYING3
U src/COPYING.LIB
U src/COPYING3.LIB
U src/COPYING.NEWLIB
U src/COPYING.LIBGLOSS
U src/ChangeLog
U src/MAINTAINERS
U src/Makefile.def
.........

参照

C++ std::set 覚書

std::setは要素を格納する。重複なし。順番気にしない。

FUTUクラスを作るのが難しい。ここでも適当に作った。

Adobe Flex 3.3を使ってなにかを作るまで

用語の整理。
最終成果物は拡張子swfのファイル。
swfはFlash Player上で動かせる。
ActionScript:用いるプログラミング言語
MXML:XMLで書く、UIコントロールのレイアウト情報
Flex:開発環境と実行環境全体のことか?実体はActionScriptのクラスライブラリ+SDK(コンパイラとか)+Flash Playerも含む?

ここからflex_sdk_3.zip(121M)をダウンロードして解凍。

ここを参考に以下のファイル MyFirst.mxmlを作る。

これをflexsdkのbinフォルダにあるmxmlcコンパイラでコンパイルすればいいらしいのでやってみる。

MyFirst.swfができた。このファイルをIEへD&Dしてみる。
ieswf
動いた。結構簡単にできた。

次にこのswfファイルをこのサーバのルートにアップロードして、以下の記述を加えてみた。






これも簡単にできた。

次にコードを書いてみる。コードもmxmlに書く。CDATAの中に書く。
その前に少し寄り道してコンパイラの動作について。XMLはすべて最初にActionScriptに変換されて、それがswfバイトコードにコンパイルされるらしい。コンパイラオプションに–keep-generated-actionscript をつけると生成されたActionScriptができるみたいなので、やってみるとgeneratedという名前のフォルダができてその中にいっぱいファイルができた。そのファイルからIDであろう文字列myButtonで検索するといろいろ出てきたが、以下のようなものがあった。

MyFirstがアプリケーションクラスになって、myButtonがその中の変数になるようだ。

コードの話に戻って、ここではボタンがクリックされたら”Hello World”をメッセージボックスみたいなので出すコードを考えてみる。以下のようにできた(途中省略)。

swfのファイル名をMyFirst2.swfにしてアップロードして実験してみる。

動いた。