- blogs:
- cles::blog
ソシャゲの不具合の説明に C++ のソースコード?!
socialgame
sqlite
cpp ドラゴンボールZ ドッカンバトルというソーシャルゲームの障害報告に C++ ソースコードが貼ってあることが話題になっていたのでメモ。
提示されているコードは以下のものですが、主たる原因は sqlite に渡している SQL に ORDER BY がついていないことによるもののようなので、とりあえあず C++ が読めなくても原因は分かります。ただ、一般の人にはこのコードは呪文のようなものなので、コードを公開することにどれだけの意味があるのかというのは疑問が残りますね。変な前例にならなければいいなぁとは思います。
「ドラゴンボールZ ドッカンバトル」一部ガシャの「出現キャラ一覧」及び「出現キャラ提供割合」表示に関する不具合につきまして
sqlite と ROWID
sqlite SQLite を使っていて、主キーがないテーブルで一意にデータを識別する方法がないかと思っていろいろと調べてみました。
Oracle や PostgreSQL で言うところの rowid や oid にあたるものがあれば一撃だなと思ってマニュアルを当たってみたところ、SQLite にも同じようなものが用意されていました。参照するときの名前は rowid でも oid でもどちらでも良いみたいです。下記によると 64bit 長の符号付き整数として自動的に定義されるようですが、負数になるかどうかというのはちょっと謎です。
ROWIDs and the INTEGER PRIMARY KEY - SQLite Query Language: CREATE TABLE
Every row of every SQLite table has a 64-bit signed integer key that uniquely identifies the row within its table. This integer is usually called the "rowid". The rowid value can be accessed using one of the special case-independent names "rowid", "oid", or "_rowid_" in place of a column name. If a table contains a user defined column named "rowid", "oid" or "_rowid_", then that name always refers the explicitly declared column and cannot be used to retrieve the integer rowid value.
以下、動作確認メモ。
[sqlite と ROWID の続きを読む]
Windows 向けの SQLite クライアント
sqlite SQLite の Windows 向けクライアントとしては以前から SQLite Studio を使っていたのですが、Tcl のインストールが必要だったりと、自分が使う以外ではちょっと進めづらいものだったので、導入しやすくてなるべくシンプルな クライアントを探してみました。
この条件だと解凍してすぐ起動することができる SQLite Database Browser が良さそうです。UI は英語ですが、文字コードは UTF-8 に対応しているので、一般的な用途ならば困ることもないでしょう。インポートやエクスポートの機能もあるので、必要に応じて CSV からデータを出し入れすることも簡単にできます。
256-bit AES で暗号化された SQLite
sqlite SQLite について調べていたら、SQLCipher という 256-bit AES で暗号化する機能がついた SQLite を見つけたのでメモ。
パスフレーズをどうやって管理するのかという問題はありますが、データを透過的に暗号化できるのは便利そうです。
Home - SQLCipher - Open Source Full Database Encryption for SQLite
SQLCipher is an SQLite extension that provides transparent 256-bit AES encryption of database files. Pages are encrypted before being written to disk and are decrypted when read back. Due to the small footprint and great performance it’s ideal for protecting embedded application databases and is well suited for mobile development.
以下、インストールメモ。
[256-bit AES で暗号化された SQLite の続きを読む]
Java から SQLite をいじる
java
sqlite Java から SQLite のファイルを更新する方法がないかと思って調べてみたらSQLiteJDBCというドライバを見つけたのでメモ。
JDBC を通して他のデータベースと同じような感覚で SQLite のファイルを操作することができます。
Our SQLiteJDBC library, developed as a part of Xerial project, requires no configuration since all native libraries for Windows, Mac OS X, Linux and pure-java SQLite, which works in any OS enviroment, are assembled into a single JAR (Java Archive) file. The usage is quite simple; Download our sqlite-jdbc library, then append the library (JAR file) to your class path. See the sample code.
このライブラリがちょっと変わっているのは、主要なアーキテクチャのバイナリのライブラリを含んでおり、それ以外のアーキテクチャの場合には Pure Java の実装に切り替わるようになっていることでしょうか。SQLite はデーモンを持たないファイルベースのSQLデータベースなので、通常はCで書かれたライブラリを使ったアクセスすることになります。出力されるDBファイル自体はポータブルですが、このライブラリ自身はOSやアーキテクチャに依存します。このあたりの吸収が微妙に面倒だったりするわけですがこのドライバはその部分の面倒を見てくれるということです。
接続URLとドライバクラスは下記のような感じでした。
SQLite Manager
firefox
sqlite MyBackup Proの DB を解析するために sqlite3 の GUI フロントエンドが必要になったのですが、 PC 移行したばかりで何もツールが入っていなかったので一番手っ取り早く使えそうな SQLite Manager という Firefox のアドオンとして実装されている sqlite3 フロントエンドをインストールしてみました。
SQLite Manager :: Add-ons for Firefox
アドオンなのでちょっとどうなのかなと思っていましたが、非常に簡単にインストールできるだけでなく、機能も十分なものでした。SQLite Studio などと比べても見劣りしないと思います。ということで、 sqlite3 のフロントエンドが急遽必要になった場合にはオススメです。
SQLiteの高速化とトランザクション
ruby
sqlite SQLiteはファイルベースだとINSERTがあまり速くないなと思っていたのですが、ググってみると大量にINSERTを発行したい場合は明示的にトランザクションを使うというのが定番のテクニックだということがわかって愕然としました。SQLiteはAUTOCOMMITだとトランザクションが発生しない訳ではなくて、内部的にはINSERTの度にBEGINとCOMMITが発行されてしまうような仕組みなんでしょうかね。
ファイルベースのベンチマーク (INSERT*100回)
インメモリのベンチマーク (INSERT*100000回)
確かにベンチマークを取ってみると、全然速度が違いますね。インメモリの場合もほんのわずかだけ明示的にトランザクションを指定した方が速いようです。同じマシンでもファイルベースとインメモリでインサート速度が劇的に違うところもなかなか興味深いです。
[SQLiteの高速化とトランザクション の続きを読む]
SQLite Studio
sqlite 先日、汎用のDBフロントエンドをExecute Queryに切り換えたので、ついでにSQLiteのフロントエンドも見直しをすることにしました。
元々、SQLiteをさわりはじめたのがTrac LightningのデフォルトDBだったから理由なので、これまではTrac Lightningに同梱されていたSQLite Database Browserというツールを使っていました。
いろいろ調べて見ると、SQLite Studioと言うツールがSQLにコード補完ができたりとなかなか便利そうなので、しばらくこれを使ってみることにしました。
ただ、動作にはTclが必要なので、Windowsの場合はあらかじめActiveTclをインストールし、環境変数 TCL_LIBRARY を C:\Tcl\lib\tcl8.5*1 のように設定しておかないと起動出来ないことに注意が必要です。
- *1: デフォルトの場所(C:\Tcl)にインストールした場合。
SQLiteをインメモリで使う
ruby
sqlite SQLiteはデータのちょっとした加工や管理に便利なので、最近よく使っているのですが、ファイルの指定を:memory:とすると、インメモリで使うことができるという機能をみつけたので、Rubyからちょっと使ってみました。
For example:[SQLiteをインメモリで使う の続きを読む]
rc = sqlite3_open(":memory:", &db);
When this is done, no disk file is opened. Instead, a new database is created purely in memory. The database ceases to exist as soon as the database connection is closed. Every :memory: database is distinct from every other. So, opening two database connections each with the filename ":memory:" will create two independent in-memory databases.
- sadpkv
- CACHEMANAGER.phpというのはどうだろうかと
- pairb1m
- Lightning のToDoリストを複数のPCで共有できるアドオン
- majodca
- 九州旅行から帰ってきました
- majodca
- 九州旅行から帰ってきました
- hot534
- yum を使って OpenVPN をインストールする
- dresssu3
- NP_Trackbackを騙るトラックバックspamについて
- zippern7o
- NP_SpamBayesJP jp1b
- park81o
- Google Docs をメールフォームとして使う
- fogmpl
- なんで官庁の文章はPDFなんだろうか
- cutjw9
- 即席スライドショーを作る
- frightenlho
- 添付ファイルの容量を表示する「Attachment Sizes」
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(5022)
3 . GitHub が全ての公開リポジトリへのシークレットスキャンを有効に(4164)
4 . 年次の人間ドックへ(4092)
5 . 2023 年分の確定申告完了!(1つめ)(3948)
Academic[574]
Book[155]
Diary[522]
Disaster[101]
Foodlogue[1425]
Game[284]
Goods[805]
Healthcare[341]
Hobby[32]
IT[1195]
Military[343]
misc.[1570]
Mobile[510]
Music[38]
Neta[106]
News[95]
Photo[391]
RealEstate[120]
Security[1178]
SEO Contest[36]
Software[634]
Tips[1886]
Travelogue[1238]
Web[675]
Work[193]


