|
|
|
|
| +ホーム +日記 +プロフィール +オークション +掲示板 +ブックマーク +お買い物一覧 |
|
松のページブログへようこそ!!
自作のソフト紹介やその開発過程のことなど書いていきたいと思っています。 こちらの方も見てやってください。↓
松-boolean's Shopping List
松-booleanの日記 [全252件]
久しぶりのブログ。ふと思い立って、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-dev dlls/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.so A5M2.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でも添付しなかったけど良いのかな?。
久しぶりのブログ A5:SQL Mk-2とGPLの問題で少々悩んだので書いてみたいと思います。 そもそも、A5:SQL Mk-2はGPLではなく、GPLのソースコードを1行でも含んでいるわけではないのですが、ちょっと衝撃的な事実を知りました。 MySQLに接続するために、プロプライエタリアプリケーションからMyODBC(GPLのMySQL用ODBCドライバ)を使うと、Oracle(MySQLの著作権者)ではこれをGPL違反と判断するようです。むしろ、プロプライエタリアプリケーションからの接続を禁止するために、MyODBCはLGPLではなくGPLとなっているようです。(かつてLGPLでしたがGPLへ変更された経緯を持ちます。) 調べてみたところOracle社ではGPLのライブラリコードが実行時に動的リンクであってもプロプライエタリアプリケーションと同じメモリ空間に読み込まれる場合、そのプロプライエタリアプリケーションはGPLライブラリコードと結合されているため派生物であると見なしてGPL違反であると判断するようです。 さらにはMyODBCでいうと、MyODBCドライバの利用時ではなく、MyODBCを利用可能となるプロプライエタリアプリケーションを公開した時点でGPL違反とするようです。この考え方を厳密に適応すると、例えばMicrosoft Officeに付属するMicrosoft QueryもMyODBCを利用することが可能であるためGPL違反となり得ます(!)。 この考え方が妥当であるかどうかは本質的に法律の問題を含み、国ごとに司法に判断をゆだねなければなりませんが、この問題を回避するためA5:SQL Mk-2はOracle社の著作物を含まないMySQL向けの直接接続クライアントライブラリを内蔵することとしました。 ここで法律上のリスクを避けるために、何が結合と見なされ派生物となりGPLの影響を受けるのか調べる必要が出てきました。 GPLの発行元であるFree Software Foundation(以下FSF)の解釈によれば、「二つのモジュールを一つのプログラムに結合すること」は次のように考えられているようです。 -- GPL FAQ 日本語版より引用 --------------- 二つの部分を一つのプログラムに結合する要件とはなんでしょう? これは法的 な質問であり、究極的には裁判官が決めることです。私たちは、適切な基準は コミュニケーションのメカニズム(exec、パイプ、rpc、共有アドレス空間での ファンクションコールなど)とコミュニケーションのセマンティクス(どのよう な種の情報が相互交換されるか)の両方に依ると考えています。 モジュールが同じ実行ファイルに含まれている場合、それらは言うまでもなく 一つのプログラムに結合されています。もしモジュールが共有アドレス空間で いっしょにリンクされて実行されるよう設計されているならば、それらが一つ のプログラムに結合されているのはほぼ間違いないでしょう。 逆に、パイプやソケット、コマンドライン引数は通常二つの分離したプログラ ムの間で使われるコミュニケーションメカニズムです。ですからそれらがコミュ ニケーションのために使われるときには、モジュールは通常別々のプログラム です。しかしコミュニケーションのセマンティクスが親密であったり、複雑な 内部データ構造を交換したりする場合は、それらも二つの部分がより大規模な プログラムに結合されていると考える基準となりうるでしょう。 -- 引用終わり ------------------------------ 要約すると次のように考えられます。 ・同一のメモリ空間にあるかどうか ・コミュニケーションのセマンティクス(どのよう な種の情報が相互交換されるか)に依る OracleがプロプライエタリアプリケーションからMyODBCへ接続することがGPL違反とする根拠は「同一のメモリ空間にあるかどうか」に該当するためと考えられます。ただしこれは何らかの判例に基づくものではないですし、ODBC規格のようなOSの標準機能を介して「間接的に」動的結合されるような場合を想定していないようにも感じられます。 「コミュニケーションのセマンティクス」についてはFSFにおいてすら明確な基準が設けられているわけではなさそうです。「複雑」がどの程度を表すのかを知る術はありません。 独自のMySQL向けクライアントライブラリを内蔵し、MySQLサーバーへ接続を行う行為はFSF(やOracle)の指す「結合」に相当するのかを慎重に判断せねばなりません。 かつてMySQLはクライアント・サーバー間のプロトコルを「GPLプロトコル」と称していたようですが、法的に無理があったと判断したのか現在ではそのような記述は見受けられません(少なくとも自分は見つけていません)。基本的にはプロトコルには著作権は認められないようです。 標準ではないプロトコルを利用し、GPLとプロプライエタリアプリケーションが連携する数少ない事例としてSambaを考察してみます。SambaはMicrosoft Windowsで利用されているSMBプロトコルを利用するGPLプログラムですが、当然通信するのはプロプライエタリであるMicrosoft Windowsです。SambaはMicrosoft Windowsの派生物ではないですし、もちろんMicrosoft WindowsはSambaの派生物ではありません。このことから、ネットワークを介してGPLとプロプライエタリアプリケーションが連携しても、それは結合ではなく派生ではないと見なされると考えることが出来ます。 以上のような考え方でA5:SQL Mk-2から独自のMySQLクライアントライブラリを利用し、MySQLサーバーへ接続する行為はGPL違反に当たらないと判断するに至りました。しかし、これは自分の理解の範囲での考察であり、もしも「間違っている」とか「考慮が足りない」などありましたら、ご連絡頂けたらと思います。 コメントはブログに記述して頂いてもかまいませんし、 松のページ掲示板 または、松のページに記載されるメールアドレス宛へお送り頂いてもかまいません。よろしくお願いします。
2ヶ月半ぶりの日記。 前回、情報処理試験(データベーススペシャリスト)を受け手から全然ブログを書いていなかったのだね。 あの日から2ヶ月半、今日はその情報処理試験の合格発表でした。結果は(なんとか)合格!!でした。大喜び!!。 点数はそれほど芳しくなかったので割愛。午前I、II、午後I、IIそれぞれ後10点ずつ高ければ格好がついたのだけれどな。まあ、試験勉強もロクにしていなかったので合格しただけでも良しとしなければなるまい。どうも今回は試験制度が変わったばかりな事もあって特別合格率が高かったようだ。比較的簡単に合格できたのかもしれない。 色々とIPAの情報処理技術者試験のページを見ていると、「統計情報」なるページを発見。 その中の「年齢別 一覧表」を見てちょっとびっくり。データベーススペシャリスト、11歳で受けてる子がいる!!。まあ、さすがに受かってなかったが。一番年齢の低い合格者は17歳…ってコレ高校生じゃん。34歳が受かって大喜びしてるのがちょっと悲しくなる。しかし高校生でデータベースなんか勉強しても面白くも何ともないだろうに…。ちなみに、17歳のデータベーススペシャリスト合格率は驚異の40%。試験勉強しっかりすれば受かるものだったのか??。 さらに驚いたのは13歳でプロジェクトマネージャ試験を受けてる子がいた!!。もちろん落ちてたけど。しかしなんだ?プロジェクトマネージャが中学生なんてプロジェクトは絶対ヤダぞ?!。 …とりあえず秋はネットワークスペシャリストかな。
すみません、またしても勉強ほとんどしませんでした。そんなんで受かるはずないのに…。 ということで、本日は情報処理技術者試験受けてきました。自分の受けた区分は「データベーススペシャリスト」です。 データベースなら得意だろう?なんて言われますが、業務分析とかいろいろ難しい内容とか出るので毎回ヘトヘトなんです。 今年から資格制度が変わり、午前I・午前II・午後I・午後IIの4つの試験をこなさねばなりません。 午前I・午前IIは、マアマア何とかなったかな?。さすがに午前問題で落ちたくはないです。とか言いつつ、午前Iの一問目からかなりドギマギしました 午後Iは今年は思いのほか難しかった気がします。3問中2問選択で、問2と問3を選択したのですが、問2が非常に難しく感じました。問3は比較的楽に解けました。90分の内、問2に60分、問3に30分くらいの時間配分でしょうか。 午後IIは、去年こっぴどい目に遭ってしまって警戒していたのですが、(勉強しなかった割に)思っていたほどひどい出来ではなかった気がします。2問中1問選択で、問1を選択しました。120分の試験ですが、110分くらいで途中退出しました。 自信のほどは正直ないのですが…どうなるかな?。
この本は、名前にラブがついているとおり、恋愛小説です。 "たっくん" とまゆの物語。 裏表紙の紹介では、 「… 甘美で、時にほろ苦い青春のひとときを瑞々しい筆致で描いた青春小説 - と思いきや、最後から二行目(絶対に先に読まないで!)で、本書は全く違った物語に変貌する。…」 とあります。これに釣られて買ってみたものの、最初は「くだらないドンデン返しだったら承知しねーぞ?」と思っていました。 んで、感想はというと、まあ、良くできています。実は最初、「最後から二行目」を別の意味に(強引に)解釈してしまったのですが、どうも、裏表紙のこともありしっくりこず、いろいろと調べてみると、確かに「実は」とんでもないストーリーでした。 詳しくはネタバレになってしまいますので避けますが、一ついえることは、「課程はどうあれ、この物語で最終的に不幸になった登場人物はいない」ということです。 そういう意味で、ハッピーエンドなのかもしれません。うーん、うーん…。 しかし、最近思うのですが、自分はこの手のミステリって、作者の仕込んだミスリードに必要以上にはまってしまう性格な気がします。作者の種明かしすら踏み倒してそのままミスリードしてしまうと言う。嗚呼。良い子ちゃんな性格なのですよ イニシエーション・ラブ しかし、情報処理試験(データベーススペシャリスト)の勉強せないかんかったのに、こんなの読んでる俺って…。
ちまたで話題の映画、「おくりびと」の原作…というか、元ネタとなった本らしいです。ただ、映画の方でも、「原作」とはなってはおらず、名前も「納棺夫日記」と、よりインパクトのある感じ。 かなり薄めの本ですが、文春文庫からの「増補改訂版」となるに当たってそれでもかなりの量が書き加えられているようです。 じつは、この本の作者の青木新門さんは、自分と同じ富山県の入善町出身なのです。黒部の太陽の話もあったし、ちょっぴり自分内で入善町フィーバー?。 内容は、第一章・第二章・第三章と分かれていて、それにプラスして「『納棺夫日記』を著して」が記されています。 第一章・第二章は、ちょっと日記っぽい構成で、映画での「穢らわしい」という台詞もここで出てきます。 第三章以降は少し趣が変わって、生死というものに関しての作者の考え、思ったことが書き連ねられています。ただ、浄土真宗に根ざした書き方をしているため、ちょっと浄土真宗でない方はちょっと違和感があるかもしれません。万人に勧められる本ではないかもしれません。 自分はまあ、そう敬虔ではないですが一応は北陸の地に生まれ、浄土真宗を多少は身近に感じていたのか、それほど苦なく読むことが出来ました。 ところで、この本には病床に苦しむ正岡子規の言葉が紹介されていました。 「悟りといふ事は如何なる場合にも平気で死ぬる事かと思っていたのは間違ひで、悟りと言ふ事は如何なる場合にも平気で生きて居る事であった」 うん、そうか、自分など平気で死ぬことも平気で生きることも出来てないな。精進。
A5:SQL Mk-2 Version 2.4 beta 5を公開しました。 今回の修正ではデータベースツリーで、これまでのテーブル・ビュー・シノニム・プロシージャ以外のオブジェクトを列挙できるようにしました。 実際に列挙されるオブジェクトの種類はRDBMS製品により様々ですが、インデックス・制約・シーケンス等です。ただし列挙できるだけで、オブジェクトを編集したり何かのプロパティを表示できるわけではないです。とりあえず、SQLエディタが開いているときに、オブジェクト名をダブルクリックすると、キャレット位置にオブジェクト名が挿入されます。 ![]() ただしこの機能は現時点では、Oracle 8i以降, PostgreSQL 7.3以降, DB2 v8.1以降のみの対応となります。Oracleが一番多くの種類のオブジェクトを表示できます(今のところ)。そのほかのRDBMSについては追々…。 他には、ERエディタの線分で、始点と終点に記号をつけることが出来るようになりました。矢印とか丸とか菱形です。もちろん、線の角度に従い、記号の向きも変わります。記号を大きくして、始点か終点をドラッグしてグルグルするとちょっと楽しいかも?。 ![]() ダウンロードはこちらから。 |一覧| |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||