[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
System.Data.SQLiteを用いたDBプログラミング。
DBから値を取得するには、DataReaderとDataAdapterを用いた方法があるが、DataReaderを使った取得方法の自分メモ。
Dim SQLString As String Dim MyConnectionString As String = "data source={0}" Dim MySQLiteConnection As New SQLiteConnection MyConnectionString = String.Format(MyConnectionString, _ System.IO.Path.Combine(My.Application.Info.DirectoryPath, "Hoge.db")) Try MySQLiteConnection.ConnectionString = MyConnectionString MySQLiteConnection.Open() Debug.Print("DB Open") SQLString = "SELECT * FROM EMP" Dim MySQLiteCommand As New SQLiteCommand(SQLString, MySQLiteConnection) Debug.Print(SQLString) Dim MySQLiteDataReader As SQLiteDataReader MySQLiteDataReader = MySQLiteCommand.ExecuteReader() Dim i As Integer = 0 Do While MySQLiteDataReader.Read Me.BoardDataGridView.Rows.Add() Me.BoardDataGridView.Rows(i).Cells(0).Value = MySQLiteDataReader.GetValue(0) Me.BoardDataGridView.Rows(i).Cells(1).Value = MySQLiteDataReader.GetValue(1) i = i + 1 Loop Catch ex As Exception MessageBox.Show(ex.Message, "DB Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally MySQLiteConnection.Close() Debug.Print("DB Close") End Try
実際には、参考URLにあるように、Usingを用いたものの方が望ましいようだ。
Usingステートメントで簡単、確実にファイルをクローズ - @IT
VisualStudioにて、DBファイルを追加するには、次URLにあるように、データソースを追加した後、プロジェクトに既存項目追加で設定する。
[C#][SQLite]System.Data.SQLiteを試してみた
VSのデータソースからDataGrid追加を用いれば、上ソースのように、自分でDataGridに行を設定する必要がなく楽である。
(どちらの方が、パフォーマンス優位かは不明)
参考:
SQLiteを使ったWindowsアプリを作成する
VB.Netでソート2 - FloralCompany.log
直交変換として有名なフーリエ変換は、変換核として三角関数を用いる。
一方、ウォルシュ・アダマール変換(Walsh Hadamard Transform: 以下WHT)は、矩形関数を変換核として用いる。
アルゴリズムを最後に述べるが、矩形関数を用いるため、定数倍を除いてWHTは加減算のみとなり、実際はフーリエ変換等より高速に処理を行うことができる。
そのため、一時期は熱心に研究された。
しかし、昨今のハードウェアの進歩により、今日ではそれほど魅力的ではなくなっている。
それでも、幾らかは利用価値はあるし、知識の一つとしても損は無いと思える。
また、WHTはインターネット上で調べても、あまり資料が発見できない。
よって、少しでも必要とするものの助けになれば幸いである。
画像の圧縮等を行い、その変換後の画像がどれ程劣化したかを客観的に評価する指標の一つにPSNR(Peak Signal-to-Noise Ratio)というものがある。
式にすると以下のようになる。
単位はデシベル[dB]
MAXは元画像がとりうる最大画素値のことである。
また、この式の中であらわされるMSEとは平均二乗誤差(Mean Squere Error)のことであり、以下の式になる。
m, nが画像の縦、横のサイズ。
Xが元画像、X'が劣化画像を示す。
平均二乗誤差 = ((原画の輝度 - デコード後の輝度) ^ 2) の総和 / 画素数
PSNR = 10 * log(255*255 / 平均二乗誤差)
引用:PSNRとは - Mov日記 - Fraternity7
一般に高画質とされるのは35~40dB以上とされている。
また0.2dB違えば、主観的にみても変化があるとされる。
参考:tobinaka's forum • トピック表示 - 画質指標 PSNR, SSIM と psy 的オプションと
CやJavaなど大抵のプログラミング言語では自然対数eや10を底としたlogメソッドしか用意されていない。
これを任意の底で計算できるようにするには、次の変換公式を用いる。
C: #include<math.h> //真数 - x, 底 - base double logn(double x, double base) { return log(x) / log(base); }
テンプレートを作っていて、IEではmax-widthが使えないことに気づいた。
調べてみると、次のようなページが見つかった。
[CSS]IEで、min-widthやmax-widthを実現する方法 | コリス
CSS内でJavaScriptを実行することで、CSSの内容を変えているようだ。
実際には、*htmlハックを用いて、IE以外では読めないようにする。
以下、テンプレートで実際に書いたCSS
#mainBlock { text-align: left; width: 90%; min-width: 600px; max-width: 920px; margin: 10 auto; border: 1px solid silver; } *html #mainBlock{ width:expression(document.body.clientWidth < 602? "600px" : document.body.clientWidth > 922? "920px" : "90%"); }
最小幅を600px、最大幅を920pxとしている。
また、最後の90%は前条件以外の場合適応される値であるため、#mainBlockのwidthと同じにしている。