読者です 読者をやめる 読者になる 読者になる

mamori017のブログ

二番煎じ感のある作業記録

DataGridViewにチェックボックスを追加する

DataGridView上にデータベースから取得したデータとチェックボックスを表示させたい場合、 バインドするDataTableにチェックボックス列を追加することで表示できる。

Dim objDataTable As DataTable
Dim objCol As DataColumn

' チェックボックス列を作成
objColumn = New DataColumn("Checkbox",GetType(Boolean))

' DataTableにチェックボックス列を追加
objDataTable.Columns.Add(objColumn)

'データソースにDataTableをセット
objDataGridView.DataSource = objDataTable

' DataGridView再描画
objDataGridView.Refresh()

DataTableにチェックボックスのDataColumnを追加しただけだと、 DataTable上に存在するデータ列に追加されるかたちで配置される。

DataTableのイメージ
ColumnA ColumnB Checkbox
100 2017
101 2016

チェックボックス列の表示位置を変更したい場合はDataColumn.SetOrdinalを使用する。

' 引数は左端から0
objColumn.SetOrdinal(0)
SetOrdinalで列を変更した場合のDataTableのイメージ
Checkbox ColumnA ColumnB
100 2017
101 2016

セルを読み取り専用にする場合はDataGridViewのReadOnlyプロパティをTrueに変更する。 ただし、DataGridViewのReadOnlyプロパティを変更すると、DataGridView上のセルすべてに適用されるため、 チェックボックスの変更のみを有効にしたい場合は、 DataGridViewをRefreshする前に個別にプロパティを変更する。

' 左端列がチェックボックスの場合
For i As Integer = 1 To objDataGridView.ColumnCount - 1
    objDataGridView.Columns(i).ReadOnly = True
Next

Elasticsearchを5.4.0にアップデートしたら起動しなくなった

いつも通りUbuntuのパッケージを更新したらElasticsearchとKibanaが5.4.0にアップデートされてしまった。 更新してしまったものは仕方がないので起動確認したところ、Kibanaはブラウザで表示されるもののElasticsearchが起動しなくなった。

Elasticsearchを手動起動しても[ ok ] Starting elasticsearch (via systemctl): elasticsearch.service.と出力されるだけで、 service --status-allで状況を確認しても起動していない様子。 ログが出ていないか/var/log/elasticsearch/elasticesarch.logを見てみたところ、kuromojiプラグインに関連するエラーが出力されていた。

[2017-05-07T03:26:49,559][ERROR][o.e.b.Bootstrap          ] Exception
java.lang.IllegalArgumentException: plugin [analysis-kuromoji] is incompatible with version [5.4.0]; was designed for version [5.0.0-alpha5]
        at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:146) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Spawner.spawnNativePluginControllers(Spawner.java:86) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:167) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:360) [elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) [elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) [elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) [elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) [elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.cli.Command.main(Command.java:88) [elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.4.0.jar:5.4.0]
[2017-05-07T03:26:49,564][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: plugin [analysis-kuromoji] is incompatible with version [5.4.0]; was designed fo                                                                    r version [5.0.0-alpha5]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:127) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.4.0.jar:5.4.0]
Caused by: java.lang.IllegalArgumentException: plugin [analysis-kuromoji] is incompatible with version [5.4.0]; was designed for version [5.0.0-alpha5]
        at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:146) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Spawner.spawnNativePluginControllers(Spawner.java:86) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:167) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:360) ~[elasticsearch-5.4.0.jar:5.4.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) ~[elasticsearch-5.4.0.jar:5.4.0]
        ... 6 more

インストールされているkuromojiプラグインは5.0.0-alpha5用で5.4.0には対応していない(と書かれている気がする)ようなので、 kuromojiプラグインを最新版に更新する。プラグインの上書きインストールをしようとするとエラーになるので削除後再インストールする。

# 削除
sudo bin/elasticsearch-plugin remove analysis-kuromoji

# インストール
sudo bin/elasticsearch-plugin install analysis-kuromoji

kuromojiプラグインを再インストール後はElasticsearchが起動するようになった。

ASPでSessionオブジェクトから変数名と値を取得する

ASPでSessionオブジェクトから変数名と値を取得する方法。デバッグの時には大抵書いているコード。

Dim strKey

For Each strKey in Session.Contents
  Response.Write(strKey & ":" & Session.Contents(strKey) & "<BR>")
Next