1

久しぶりのブログ。ふと思い立って、LinuxやUNIX環境でWindows アプリケーションを動作させる Wine を使い、A5:SQL Mk-2の動作検証を行った。■試した環境 OS : Ubuntu 11.04 Wine : 1.2.3 ("$ sudo apt-get install wine1.2" でインストール) 記事中では一部1.3系についても言及 A5:SQL Mk-2 : Version 2.6.2, 2.7.0 のベータ版(未公開のナイトリービルドなども含む)■現状の成果 A5:SQL Mk-2を起動し、SQLエディタ・テーブルエディタ・ERエディタを動作させることに成功。フォント設定は利用者が適宜行う必要あり。ERエディタはWine側に対応が必要。OracleとMySQLに対して直接接続にてSQLの実行などが出来ることを確認。 印刷やExcelへの出力(テーブル定義書の出力も含む)などについては未検証。■とりあえず問題点 フォントを設定しないと日本語表示が化ける。 → オプションダイアログより全体のフォントと、SQLエディタのフォントを適宜設定 A5:SQL Mk-2 Version 2.7 系では自動で代替処理するなどもう少し突っ込んだ修正をするかも。 → ER図はER図プロパティから変更。コメントやシェイプオブジェクトのフォントも個別に設定 データベースツリーが正しく動作しない。 → 最新のベータ版で修正 タブを切り替えると表示が乱れる場合がある。 → 最新のベータ版ではある程度改善(不完全?) テーブルエディタを開こうとするとエラー → MDACをインストールすると良い。(Windows 2000と同じ状態) → 最新のA5:SQL Mk-2 ベータ版では必ずしもMDACは必要なくした(Oracle, MySQLなら不要)。 半透明APIがサポートされないらしい? → ノーケア ラベルの改行がされていない → ノーケア ERエディタは表示した瞬間・または少し操作するとフリーズ → Wine 1.2.3も1.3.15もフリーズ → gdiplus.dllをnativeライブラリを利用するように設定するとフリーズしないが、ライセンス的に問題あり?(後述) → WineのgdiplusにてGdipDrawString関数にGDIフォントのリソースリークあり(後述)■Wineのgdiplusについて調査 どうも、文字表示時にリソースリークを起こしている模様。Wine 1.2.3のgdiplusのソースを読んでいくと、GdipDrawStringにリソースリークを起こしているらしき箇所を発見。Wine 1.3.15でも該当は修正されていなかったが、Wine 1.3.25では実装がガラリと変わっており、該当不具合も無くなっている(不具合を修正したのか、実装を変えた時に不具合も勝手に消えたのかは不明)。 Wine 1.3系はまだベータ扱いであるし、Wine 1.2.3を修正してコンパイルし、gdiplusのモジュールだけ手動で更新してみることにする。■Wine 1.2.3のビルドとgdiplusモジュールの入れ替え手順ソースは http://sourceforge.net/projects/wine/files/Source/ から取得。以下で展開$ bzip2 -dc wine-1.2.3.tar.bz2 | tar xvf -Ubuntu標準ではモジュールが足りないらしいのでインストール(やらないと./configureでエラー)$ sudo apt-get install flex$ sudo apt-get install bison$ sudo apt-get install xserver-xorg-dev$ sudo apt-get install libfreetype6-devdlls/gdiplus/graphics.c を修正GdiDrawString()内で以下の行を見つけ出し修正(Wine 1.2.3では3920行目のはず)修正前 DeleteObject(SelectObject(graphics->hdc, CreateFontIndirectW(&lfw)));修正後 DeleteObject(SelectObject(graphics->hdc, gdifont));上記の修正を行ったうえでmakeを行う。特定のDLLだけmakeということも出来るみたいだが、とりあえず普通にmakeしてみる。$ ./configure$ make makeは終わるまで待たなくとも良い。dlls/gdiplus/gdiplus.dll.so が出来たらそれをコピー。古いgdiplus.dll.soは念のため保存。 $ sudo mv /usr/lib/wine/gdiplus.dll.so /usr/lib/wine/gdiplus.dll.so_$ sudo cp dlls/gdiplus/gdiplus.dll.so /usr/lib/wine/gdiplus.dll.soA5M2.exe を起動し、ERエディタでフリーズしないか確認する。 ちなみに、1.3.25はリソースリークはないが、縦方向のAlignがうまく動作しないなどの問題がある。■Microsoft製ライブラリをMicrosoft以外のOSで利用することについて追記 とりあえず、Microsoftさんはいい顔しないだろうなぁと思う。調査したが、自分はYesともNoとも言える立場にないので、以下の記述は単なる個人的な意見。 MDAC 2.8 SP1に付属のmdaceula.rtfでは特に明記されていない。ただし、「本契約書に特に規定されていないすべての権利は、マイクロソフトによって留保されます。」と記載されているのでマイクロソフトがNoといったらNoかもしれない。Yesと言ってくれる可能性は期待できないと思う。 gdiplusの再配布モジュール(KB975337, Platform SDK Redistributable: GDI+)のeula.txtでは「The supplement is identified for use with one or more Microsoft operating system products」と記載されており、さりげなくMicrosoft製のOSのみに限定している気がする。しかし、ライブラリって「サプリメント」なの?。まあ、補助的なソフトウェアだから…?。 winetricks ではMDACもgdiplusも普通に入ってしまう。ライセンス上問題ないと判断している?。 ちなみに、gdiplusの再配布モジュールのeula.txtは、アプリケーションに添付しろとも添付するなとも書かれていない。ほかのソフトウエアで添付されていなかったのでA5:SQL Mk-2でも添付しなかったけど良いのかな?。
2011/08/01
閲覧総数 1895
2

A5:SQL Mk-2にてER図が開けなくなる不具合が発覚しました。 ER図でエンティティのカラムにおいて「デフォルト式」の値に「カンマ」を使うと、ER図ファイルを正しく扱えなくなる不具合です。ERエディタのプロパティ画面より 具体的には、Version 2.2系およびVersion 2.3 beta 1~21では、カラムのデフォルトとコメントの値が正しくなくなる現象が起きます。Version 2.3 beta 22~25ではそれに加えて読み込み時にエラーが発生します。 原因は、a5erファイル内で情報をカラム区切りで扱う箇所があり、カンマをデータとして扱う祭、ダブルクォートで括られていなければならない部分が括られていなかったため、読み込み時に情報の区切り箇所を誤判断して読み込んでしまうためでした。 対処としてVersion 2.3 beta 26を公開しました。さらに近いうちに Version 2.2系のメンテナンスリリースとして Version 2.2.3も公開します。http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/beta/index.html 修正されたバージョンでは読み込めなくなったER図ファイルを読み込むことができます(読み込めない場合もあります)。バージョンアップをされない場合は、デフォルト式としてカンマつきの式を扱わないようにしてください。 また、読み込めなくなったER図は以下の手順でも読み込むことができるようになります。1.ER図ファイル(*.a5er)をテキストエディタで開く2.デフォルト値にカンマを使っているエンティティのカラムを探す3.以下のようにデフォルト式をダブルクォートで括って保存例 (エンティティはファイル中の[Entity]セクションに保存されます)修正前:Field="日付","SALE_DATE","@DATE","NOT NULL",0,to_date(\q29991231\q,\qyyyymmdd\q),"",$FFFFFFFF修正後:Field="日付","SALE_DATE","@DATE","NOT NULL",0,"to_date(\q29991231\q,\qyyyymmdd\q)","",$FFFFFFFF
2008/10/21
閲覧総数 1491
![]()

![]()