A5:SQL Mk-2

開発のこと、日々のこと

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

JJUG CCC 2017 Fall に参加した話(高速なソートアルゴリズムを書こう!!)

11/18 に JJUG CCC 2017 Fall に参加してきました。初参加ですが、「高速なソートアルゴリズムを書こう!!」というセッションをさせていただきました。

緊張はそこまでしていなかったようにも思いますが、説明を時間内にきちんと行うのに精いっぱいで、聞いてくださっている方々の反応とかまで見ていられませんでした。タイムキーパーの方が残り「10分」・「5分」・「1分」とA4くらいの紙で教えてくれていたはずだったのですが、まったく見ている余裕ありませんでした。

「高速なソートアルゴリズムを書こう!!」の内容は、スライドシェアにアップさせていただきました。

発表の内容自体は、初学者でも概ね理解できるように仕立てたつもりでしたが、逆にJJUG CCCに参加されるようなエッジな方々には少々つまらなかったかもしれません。ちょっと空席があったのがトホホです。ちょっと内容が客層に合ってなかったかもですね。

ただ、A5:SQL Mk-2を使ったことある人どのくらいいますか?との問いにはほとんどの方が挙手してくださったのがうれしかったです。励みになりました。

 

その他、気になって聞いたセッション、、、

 

#ccc_e2 OpenJDK 参加入門

…やっぱ敷居高そう。「メーリングリストで気軽に聞いてね。」とのことだったが、英語の壁がまず高いです。

自分のセッションでもちょっと話しましたが、自分のソートアルゴリズムを将来的に OpenJDKに取り込んでもらう野望があるので…。

まだまだ先の話になりそう。

 

#ccc_m10 Javaで使えるもう一つのコンパイル方式 – AOT

AOTコンパイルとは事前コンパイルのこと。

少し前にJava 9で採用されると聞いていたけれど、全然その後話を聞かなかったので、Java 9ではナシになったのかと思ってました。まだ実験的リリースだそうで、Linux 64bit版のみ、ドキュメントもないそうです。

同じ環境(同じメモリ量)でないといけないなど、まだ制約も多いみたいです。

はやくWindowsでも試してみたいですね。自分のMasSort(3-way MergeSort)はJITコンパイルが行われていない、初回呼び出しなどは他のアルゴリズムよりも遅い傾向にあるので、AOTが採用されるとだいぶん話が違ってくるのです。

 

…聞きたかったけど、帰らなければいけなかったので聞けなかった話。

#ccc_c7 CPUから見たG1GC

スライドどこかにアップされないかな…。

 

その他にもいくつかセッション聞いた、自分のセッション前は自分のセッションが気になって頭に入ってこず、自分のセッションの後は気が抜けて頭に入ってきませんでした。…なんだかんだ緊張していたのでしょうね。

あと懇親会…参加したかったな…。(そればっかり)

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

Thinkpad X270 買いました。

LenovoのThinkpad X270 を購入しました。

前回書いた通りJJUG CCC 2017 Fallで登壇するのですが、その時のプレゼンにノートPCが必要だったからです。それだけというわけではないのですが、これからプレゼンみたいなことを増やしていきたいなあと思ったので。

たぶん10年ぶりくらいのノートPCです。安価なWindowsタブレットは持ってましたが、HDMIのような外付けディスプレイがつけられないのでプレゼンでは使えません。サブマシンなので高価なPCも買えません。

キーボードもうるさいほうで、普段はHHKB Professional JPを使っています。ノートPCのパンタグラフキーボードは慣れません。とくに、キートップの真っ平らなノートPCもありますが、タッチタイプしていて、キートップ中心から指がずれて打っていてもわかりにくいので、キートップはくぼみのあるタイプがいいです。

選定基準は以下の通り。

・外部ディスプレイが接続できる(今更D-SUBはちょっと…)

・サブマシンだけど、ちょっと開発もしたい(i5 or i7)

・持ち運びしやすいサイズ(~13インチくらい)

・キーボードがマシなもの

・なるだけ安く(できれば10万円以下)

SurfaceBookなどのウルトラブックも考慮したのですが高いですね。ミニディスプレイポートというのもちょっと…多分プレゼンの機会ごとに異なるでしょうが、標準サイズのHDMIポートが付いているほうが安心かな~とか。

なので、結局LenovoのThinkpad  X270に落ち着きました。キーボードも他社より評価が高く、実際触ってみても、ちょっとの時間ならこれでも打てるかな…といった感じ。

あと、買ってみて気が付いたのですが、指紋認証がなにげに便利です。妻も羨ましがってました。

 

なかなか良いです。

 

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

JJUG CCC 2017 Fallで登壇する話

もっと早く告知するべきだったのでしょうが、来る11/18日、JJUG CCC 2017 Fallにて登壇します。

お題目は「速いソートアルゴリズムを書こう!!」です。

Javaのカンファレンスなので、標準のArrays.sort()メソッドをベンチマーク対象として、クイックソートやマージソートの改良アルゴリズムを提案します。省メモリマージソートというのも。

こう言うの出るの初めてですし、初心者の20分枠で話させていただきます。

自分はRoom Mの15:45~16:05で登壇します。

会場見取り図

 

まだ、参加を受け付けているようですので、聴いてみたいなって方は是非参加してみてください。

 

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さんのクローラーに拾ってもらえるように?タイトルは漢字ではなくカタカナにしておきます。