A5:SQL Mk-2

開発のこと、日々のこと

2017/11/06
から 松原正和
0件のコメント

A5:SQL Mk-2のサイトにhttpsを導入した話。

Googleさんの方向から?サイトをhttps化しろとの圧力が高くなってきていた気がしたので?(本当に気がしただけ)A5:SQL Mk-2のサイトもhttps化してみました。

 

証明書にはLet’s Encryptを使わせていただきました。タダです。ありがとうございます。貧乏人の強い味方です。

 

最初はパッケージ版を導入しようとしたのですが、なぜかインストールしてもcertbotコマンドが見つからない?ので、wgetで導入しました。

 

ただ、それでもやっぱりcertbot-autoコマンドで設定しようとして途中でエラーになるので、おっかしいなあと思っていたのですが、単にファイアウォールで443ポートが塞がれていただけでした。ubuntuはファイアウォールがデフォルトで設定されないので、後からファイアウォール設定したのすっかり忘れてました。

 

あとは、https化した後あたりからWordPressが謎の速度低下を起こしてしまいました。何やってもすんなりうまくいかない。環境が一つしかないので、あらかじめこの辺のテストができないんです…。

 

結局https化が原因かどうかはよくわからなかったのですが、WordPressのアンチスパムのプラグインを止めたところ、速度は改善しました。別のアンチスパムプラグインを探さなきゃね。

 

2017/11/05
から 松原正和
0件のコメント

A5:SQL Mk-2 の開発にgit導入した話。

A5:SQL Mk-2の開発にgitを導入してみました。
…白状すると、今まで A5:SQL Mk-2の開発にバージョン管理システム使ってませんでした。
まあ、一人で開発してたし、ビルドするごとにソース全体のアーカイブを行うバッチを組んでいたので何とかなっていたのです。実際、これまでここ10年来のほぼ全てのベータ版を含む600回近いリリースのソースコードを差分ではなくアーカイブの形で残しています。
23GBほどあったけど、まあ、最近のストレージは容量も大きいので。
ただ、最近はノートPCも導入して今後は2台で開発したりもしたりするし、今のままもいかんだろうということで。差分も追えなくはないけどまあ、大変です。

…ところで、Delphiの開発環境(RAD Studio)、git使うとエラーが出たりしません?。一応、embarcadero.comみてgitセットアップしてみたのだけどなあ。とりあえず、コマンドラインから頑張って凌ぐか。…勉強になるし。

gitサーバーの方は、tech.farendとかgit-scm.comとか見ながらセットアップさせていただきました。

2017/08/13
から 松原正和
0件のコメント

A5:SQL Mk-2、MongoDB対応…まだまだ

A5:SQL Mk-2の最新のベータ版でMongoDBへの対応を開始してみました。

MongoDBのクライアントライブラリが64bitモードでしかビルドできない(らしい)制限から、64bit版A5:SQL Mk-2でのみの対応です。

機能的にもまだ、接続してクエリーができるくらいです。

 

内部的には、Devart社のUniDACを経由してMongoDBへ接続しています。ただ、UniDACも、最新のバージョンでMongoDBに対応し始めたところなので、少々動作が怪しげ。

ほんとうは、

db.user.find()

みたいな感じで実行したいのだけれど、どうも、db.runCommand()への引数の形でしか受け入れてくれない模様です。

使えるコマンドは、こちらを参考にしてください。

ただ、evalコマンドを使おうとして、JavaScriptを渡そうとすると、メモリアクセス違反になったりして、なんだかなという感じ。

まだまだこれから。使えるようになるかな?。

 

 

2017/07/17
から 松原正和
0件のコメント

ださい。

A5:SQL Mk-2でテーブルの条件を指定して開くとき、ソート順を指定して開くことができるようにしてみました。

…でも、ダサいです。とってもださいです。

(まあ、この画面に限ったことではないですが)

まあ、A5:SQL Mk-2を使っている人は、自分にデザインセンスが無いのはすでに分かっていると思うのでOKです。

2017/07/17
から 松原正和
1件のコメント

古いDelphiのプロジェクトでモーダルダイアログが前面表示ウィンドウに隠れて操作できなくなる時

A5:SQL Mk-2でいつからか起こっていた、少し怪しげな動き。

少し前のA5:SQL Mk-2で、前面表示のウィンドウ(コンソール画面とか、ER図のプロパティとか)があるときに、モーダルダイアログを表示すると、モーダルダイアログが前面ウィンドウの後ろに隠れて、前面表示のウィンドウも操作できなくなって、なにも操作できなくなるとかみたいな不具合がありました。

Delphiは昔から、秘密のメインウィンドウというのがあって、どうもこれが悪さをしているのではないかと思ってはいたのですが、どうにも解決策が分かりませんでした。

この秘密のメインウィンドウのせいで、Windows Vista以降で、タスクバー周りの動作も怪しかったのですが、以下のページの対処ではタスクバー周りの動作はともかく、前面表示ウィンドウとモーダルダイアログの問題はおかしいままで、根本対処にはならないようです。

Delphiで、Windows Vista Readyアプリケーションを作る

 

これの対処のために、A5:SQL Mk-2はいろいろトリッキーで対処療法的なコードをたくさん書いてました。モーダルダイアログを表示しているときは、前面表示ウィンドウを一時的に非表示にするとか…。

 

で、今回ようやく対処法を見つけました。プロジェクトのソースで、「Application.MainFormOnTaskBar := True;」と記述することです。新しいDelphiで新しいプロジェクトを作るとこのプロパティはデフォルトでTrueにされるようです。

TApplication.MainFormOnTaskBar プロパティ

これで、タスクバー周りの動作も、前面表示ウィンドウとモーダルダイアログの問題も解決です!!。

副作用として、「このプロパティが MainForm の Z オーダーに影響を与える点に注意してください。 」とあるようです。…多分A5:SQL Mk-2には影響ないはず…。

でも、結構前のDelphiで導入されたプロパティみたい…。Delphi 2007くらい?。10年間気が付いていなかったのですかね…。

 

2017/07/01
から 松原正和
0件のコメント

A5:SQL Mk-2 から Excel 2016 にデータを貼り付けたとき、0001 が 1とかになるとき

A5:SQL Mk-2はselect文の結果セットをExcelに貼り付けると ‘0001’ 等の文字列を ‘1’ (数字)に変換することなく貼り付けることができます。これは内部的にHTMLフォーマットでクリップボードにコピーするためですが、Excel 2016の一部のバージョンでこの機能がうまく動かないことが発覚しました。最新のアップデートでも起こるようです。

こんな感じになってしまいます。

どうも調べてみたところ、この辺が関係ありそうです。

Excel2016の書式設定で数値の文字色を指定したセルを、Word2016にコピーペーストしてもその色が反映されない

クイック実行版(C2R/Click-to-Run)だけの問題かもしれないです。

色々試してみて、16.0.7870.2038だとOKで16.0.7967.2139だとNGらしいです。なので、不具合に当たってしまったら、とりあえず(しばらく)16.0.7870.2038を決め打ちで導入することをお勧めします。

やり方は、上のリンクに書いてありますが、とりあえず以下の通り。

 

1.ファイルメニューからアカウントを選び、「Office 更新プログラム」ボタンで「更新を無効にする」を選択

 

2.コマンドプロンプトを管理者モードで開き、以下2つのコマンドを入力

> cd %programfiles%\Common Files\Microsoft Shared\ClickToRun

> OfficeC2RClient.exe /update user updatetoversion=16.0.7870.2038

 

これで、’0001’が1に変換されずにExcelに貼り付けることができます。

 

 

2017/05/21
から 松原正和
1件のコメント

BINGさんはホッケがお嫌い?

なんか、ふと気が付いてしまったので書いてみます。

BINGさんを使って?(ホッケ)を検索すると全くヒットしません。全力で無かったことにされてしまうようです。

「?の塩焼き」で検索すると、、、

サバにアユにゴキ…衝撃的な異文化が表示された気がしますが見なかったことにします。

まあ、サロゲートペアがうまく処理されないですよってだけの話です。

ちなみにGoogleさんはホッケもいける口みたいです。

ブラウザはChromeとEdge、IEでチェックしてみました。

…BINGさんのクローラーに拾ってもらえるように?タイトルは漢字ではなくカタカナにしておきます。

2017/05/13
から 松原正和
0件のコメント

英語モードでA5:SQL Mk-2を利用する。(Version 2.12系)

A5:SQL Mk-2 Version 2.12.0から英語モードを備えており、OSの言語を判断して自動で日本語と英語を切り替えますが日本語環境で英語表示する方法を説明します。

現状ではオプションなどから表示言語を切り替えることはできません。これは起動時にレジストリまたは設定ファイルを読み込むより早く言語設定が確定されるためです。(今後のバージョンではオプションから切り替えられるようにしたいと考えています)

 

日本語環境で英語表示するには以下の手順を行います。

 

1.A5M2.ENU をA5M2.JPNにリネームする

 

2.A5M2.exe を起動する。

 

3.好きなフォント設定に変更する(好みに応じて)

 

 

英語はかっこいいフォントが多くてうらやましいですね。

2017/05/13
から 松原正和
0件のコメント

A5:SQL Mk-2で文字エンコーディングを追加する方法

オンラインヘルプに書いてないですが、A5:SQL Mk-2は実行ファイル(A5M2.exe)と同じフォルダに EncodingList.txtを配置することで、SQLファイルなどの読み書きで使うエンコーディングの種類を追加することができます。

EncodingList.txtの書式はCSVで次のように記述します。

コードページ(数字),エンコーディング名称,Default

コードページ(数字)は以下のページなどで調べることができます。

https://msdn.microsoft.com/ja-jp/library/aa288104(v=vs.71).aspx

3つ目の”Default”は固定値で、オプションでファイル読み込み時に優先して判別したいエンコーディングに指定します。そうでない場合、特に指定しなくても構いません。

以下は Johab, ks_c_5601-1987, BIG5, GB2312, Windows-1258を追加し、Johabをデフォルトエンコーディングとして使いたい場合のEncodingList.txtの例です。

1361,Johab (Korean),Default
949,ks_c_5601-1987 (Korean)
950,BIG5 (Chinese)
936,GB2312(Chinese)
1258,Windows-1258 (Viet Nam)

このファイルを保存してA5:SQL Mk-2を起動すると、SQLファイルの保存ダイアログなどで、エンコーディングが次のように指定できます。

Defaultで優先として指定したエンコーディングは、BOM付きUTF-8でないファイルはDefaultで指定したエンコーディングであると判定されるようになります。

※ステータスバーにJohab(Korean)で読み込まれたことが表示されています。

エンコーディングを間違って読み込んだ場合は、ファイルメニューから読み込みしなおしできます。

ちなみに、SQLファイル保存時のデフォルトエンコーディングはオプションダイアログから[SQL]タブで「SQLファイルのデフォルトエンコーディング」で指定します。

ほかにも、BLOB型の表示のエンコーディング指定などでも追加エンコーディングが指定できるようになります。

 

2017/02/13
から 松原正和
0件のコメント

A5:SQL Mk-2 SSHライブラリを更新した話

A5:SQL Mk-2 Version 2.12.0 beta 39から、SSH経由接続で使うためのライブラリをバージョンアップしました。

Devart社のSecureBridge 7.0 → 7.3 です。

Historyに「Elliptic Curve Cryptography cipher suites is supported」とか書いてあったので、ヨッシャECDSAとかED25519の楕円暗号形式とか対応したのかな?と思ってバージョンアップしてみたのですが、楕円暗号対応していたのはTLS(SSL)の方みたいでSSHでは関係ありませんでした。ぜひ、Version 7.4とかでは対応してほしいです。(春くらいに新しいバージョンでるのかな?)

あとは、TLS 1.2対応とか書かれていたのでヨシヨシと思っていたのですが、SSHプロトコルって内部的にTLSを使うわけじゃないのでこれも関係ないですね。この辺少し知識がフワフワしてます。

あと、「Support for the Diffie-Hellman Group and Key Exchange algorithm is added」とか書いてあって、多分SSHの鍵交換も何か進歩したらしいはずだけどよくわからず。

よくわからずといえば、よくあるSSH関連のソフトウエアでは、鍵交換アルゴリズムやら利用可能な暗号化アルゴリズムやらを選択できたり優先順位をつけたりできますが、この辺もやや知識がフワフワしていて、知識不足&ライブラリの使い方がよくわからないなと感じています。データベース接続のソフトウェアでSSHのあまり細かい設定ができても、なんだかなという気もしなくもないですが…。

ただ、少しうれしかったのが、7.2からのようですが、PuTTY形式の鍵ファイルを取り込めるようになったこと。これまでは、PuTTY形式の鍵ファイルを扱うときは、PuTTYに同梱のPLINKに接続して…とかやっていたので、A5:SQL Mk-2の内部で完結するのはありがたいです。

最後に、A5:SQL Mk-2で扱えるSSHの秘密鍵ファイルの形式は、OpenSSH, SecSH, PuTTY の各形式ですが、これらの形式でも扱えたり扱えなかったりするものがあるので、ここに扱える形式を書いておきます。秘密鍵ファイルのヘッダが次のうちのどれかであれば、扱えるはずです。

—–BEGIN RSA PRIVATE KEY—–
—–BEGIN DSA PRIVATE KEY—–
—–BEGIN PRIVATE KEY—–
—–BEGIN ENCRYPTED PRIVATE KEY—–
—- BEGIN SSH2 ENCRYPTED PRIVATE KEY —-
PuTTY-User-Key-File-2               ← Version 2.11系まではPLINK.exeを呼び出して処理します。