『美男高校地球防衛部LOVE!LOVE!』『アンジュ・ヴィエルジュ』
それぞれ別のアニメですが、共に1話目から入浴シーンでした。
アニメを見やすくするために、少し見やすくする効果。私はこれをアニメのシンタックスシュガーと勝手に呼んでいますが、いわゆる ドラえもんでいうところのしずかちゃんの入浴シーンや、エスパーまみのヌードデッサンで、昨今のアニメは必ずといっていいほど、入浴シーンが出てきますね。
ただそれを挟むのは、話が落ち着いたところで、大バトルが始まる前とか、そろそろマンネリだから水着でも挟むか、とか狙いがあったように思えるのですが、この2つのアニメは初回から入浴シーンです。(まあ、『美男〜』の方は、前作があるっぽいので、1話目にもってくるのは、なんとかわかる気がしますが)
『美男〜』の方は、女子向け。『アンジュ』は男子向けです。どちらが面白いかというと、断然『美男〜』の方です。美男子がいちゃいちゃしているところは、面白くてしょうがないです。
お風呂といえば、また子供の頃の話になりますが、お風呂でのアカスリは、必ずやるものと思っていました。アカスリをしないと、完全に綺麗になったことにならないという固定観念で育ちました。今では毎日のアカスリは肌に悪いらしいので、もうしていません。手洗いも洗い過ぎるとバリア効果のある菌まで落ちてしまうとのこと。洗いすぎは必要なものを落としてしまうこともあるので、気を付けなければなりません。
今回はsqlite3です。sqlite3では他のRDB同様に、バキュームでデータベースの垢になってしまっている削除データが完全削除できます。まずはsqlite3のソースを取得してビルドするところからです。
~$ wget http://www.sqlite.org/2016/sqlite-autoconf-3130000.tar.gz ~$ ls sqlite-autoconf-3130000.tar.gz ~$ tar xzf sqlite-autoconf-3130000.tar.gz ~/sqlite-autoconf-3130000$ cd sqlite-autoconf-3130000 ~/sqlite-autoconf-3130000$ ./configure ~/sqlite-autoconf-3130000$ make ~/sqlite-autoconf-3130000$ ./sqlite3 --version 3.13.0 2016-05-18 10:57:30 fc49f556e48970561d7ab6a2f24fdd7d9eb81ff2 ~/sqlite-autoconf-3130000$ sudo make install
インストールしたコマンドが先ほどのビルド時に確認したコマンドと一致しているか確認。
~$ sqlite3 --version 3.13.0 2016-05-18 10:57:30 fc49f556e48970561d7ab6a2f24fdd7d9eb81ff2 ~$
一致しているようです。
sqlite3コマンドで、どのようにファイルができるか確認してみましょう。sqlite3コマンドを使う前のカレントディレクトリは、(.から始まる隠しファイルを覗いて)以下のようにファイルが何もないものとします。
~$ ls ~$
sqlite3コマンドを使ってみます。引数には作成するデータベース名を指定します。testdbとしました。
~$ sqlite3 testdb SQLite version 3.13.0 2016-05-18 10:57:30 Enter ".help" for usage hints. sqlite> .exit ~$ ls ~$
sqlite3でデータベース名を指定して起動後、すぐに、.exitで終了してみました。特にファイルは生成されていません。
次はテーブルを作成してみます。
~$ sqlite3 testdb SQLite version 3.13.0 2016-05-18 10:57:30 Enter ".help" for usage hints. sqlite> create table table1(id,name); sqlite> .exit ~$ ls testdb ~$
テーブルを作成して、.exitで終了すると、 testdbというファイルが生成されていました。メモリダンプしてみます。
~$ hd testdb | tee no1.dump 00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.| 00000010 10 00 01 01 00 40 20 20 00 00 00 01 00 00 00 02 |.....@ ........| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 |................| 00000060 00 2d f9 88 0d 00 00 00 01 0f ca 00 0f ca 00 00 |.-..............| 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000fc0 00 00 00 00 00 00 00 00 00 00 34 01 06 17 19 19 |..........4.....| 00000fd0 01 45 74 61 62 6c 65 74 61 62 6c 65 31 74 61 62 |.Etabletable1tab| 00000fe0 6c 65 31 02 43 52 45 41 54 45 20 54 41 42 4c 45 |le1.CREATE TABLE| 00000ff0 20 74 61 62 6c 65 31 28 69 64 2c 6e 61 6d 65 29 | table1(id,name)| 00001000 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 |................| 00001010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00002000 ~$
次にテーブルにレコードを追加してみましょう。.tablesコマンドでテーブルの一覧、PRAGMA TABLE_INFO(テーブル名)で、列情報を確認することができます。
~$ sqlite3 testdb SQLite version 3.13.0 2016-05-18 10:57:30 Enter ".help" for usage hints. sqlite> .tables table1 sqlite> pragma table_info(table1); 0|id||0||0 1|name||0||0 sqlite> insert into table1(id,name) values(1, 'Apple'); sqlite> .exit ~$ hd testdb | tee no2.dump 00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.| 00000010 10 00 01 01 00 40 20 20 00 00 00 02 00 00 00 02 |.....@ ........| 00000020 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 |................| 00000060 00 2d f9 88 0d 00 00 00 01 0f ca 00 0f ca 00 00 |.-..............| 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000fc0 00 00 00 00 00 00 00 00 00 00 34 01 06 17 19 19 |..........4.....| 00000fd0 01 45 74 61 62 6c 65 74 61 62 6c 65 31 74 61 62 |.Etabletable1tab| 00000fe0 6c 65 31 02 43 52 45 41 54 45 20 54 41 42 4c 45 |le1.CREATE TABLE| 00000ff0 20 74 61 62 6c 65 31 28 69 64 2c 6e 61 6d 65 29 | table1(id,name)| 00001000 0d 00 00 00 01 0f f6 00 0f f6 00 00 00 00 00 00 |................| 00001010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00001ff0 00 00 00 00 00 00 08 01 03 09 17 41 70 70 6c 65 |...........Apple| 00002000 ~$
差分を見ると、追加されたレコードと、ヘッダの情報に変化が現れているようです。
~$ diff no1.dump no2.dump 2c2 < 00000010 10 00 01 01 00 40 20 20 00 00 00 01 00 00 00 02 |.....@ ........| --- > 00000010 10 00 01 01 00 40 20 20 00 00 00 02 00 00 00 02 |.....@ ........| 6c6 < 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 |................| --- > 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 |................| 14c14 < 00001000 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 |................| --- > 00001000 0d 00 00 00 01 0f f6 00 0f f6 00 00 00 00 00 00 |................| 16a17 > 00001ff0 00 00 00 00 00 00 08 01 03 09 17 41 70 70 6c 65 |...........Apple| ~$
先ほど追加したレコードを削除してみましょう。
~$ sqlite3 testdb SQLite version 3.13.0 2016-05-18 10:57:30 Enter ".help" for usage hints. sqlite> .tables table1 sqlite> select * from table1; 1|Apple sqlite> delete from table1 where id=1; sqlite> select * from table1; sqlite> .exit ~$
testdbファイルがどのような変化を見せるでしょうか。サイズの差分を確認します。
~$ ls -l no[23].dump -rw-r--r-- 1 takk takk 1198 7月 24 13:22 no2.dump -rw-r--r-- 1 takk takk 1198 7月 24 14:11 no3.dump ~$
メモリダンプ結果の比較となりますが、サイズに変化はないようです。これは、deleteでレコード削除をしても、完全な削除ではないことを意味します。
RDBは削除したデータの復活ができますので、sqlite3も同様ですね。では、完全に削除してみます。
~$ sqlite3 testdb SQLite version 3.13.0 2016-05-18 10:57:30 Enter ".help" for usage hints. sqlite> .tables table1 sqlite> select * from table1; sqlite> vacuum; sqlite> .exit ~$
メモリダンプすると、Appleの文字列が消えていますので、レコードは完全に削除されてます。さらにダンプログの比較をするとサイズも小さくなっています。
~$ hd testdb | tee no4.dump 00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.| 00000010 10 00 01 01 00 40 20 20 00 00 00 04 00 00 00 02 |.....@ ........| 00000020 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 04 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 |................| 00000060 00 2d f9 88 0d 00 00 00 01 0f ca 00 0f ca 00 00 |.-..............| 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000fc0 00 00 00 00 00 00 00 00 00 00 34 01 06 17 19 19 |..........4.....| 00000fd0 01 45 74 61 62 6c 65 74 61 62 6c 65 31 74 61 62 |.Etabletable1tab| 00000fe0 6c 65 31 02 43 52 45 41 54 45 20 54 41 42 4c 45 |le1.CREATE TABLE| 00000ff0 20 74 61 62 6c 65 31 28 69 64 2c 6e 61 6d 65 29 | table1(id,name)| 00001000 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 |................| 00001010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00002000 ~$ ls -l no[34].dump -rw-r--r-- 1 takk takk 1198 7月 24 14:11 no3.dump -rw-r--r-- 1 takk takk 1119 7月 24 14:21 no4.dump ~$
レコードは完全に削除されているようです。
しかし、テーブル作成直後の空レコードのダンプ結果を比べると、やはり差があるようです。
~$ diff no[14].dump 2,3c2,3 < 00000010 10 00 01 01 00 40 20 20 00 00 00 01 00 00 00 02 |.....@ ........| < 00000020 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 |................| --- > 00000010 10 00 01 01 00 40 20 20 00 00 00 04 00 00 00 02 |.....@ ........| > 00000020 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 04 |................| 6c6 < 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 |................| --- > 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 |................| ~$
次はテーブルごと削除します。
takk@deb83:~$ sqlite3 testdb SQLite version 3.13.0 2016-05-18 10:57:30 Enter ".help" for usage hints. sqlite> .schema CREATE TABLE table1(id,name); sqlite> drop table table1; sqlite> .schema sqlite> create table table1(id,name); sqlite> .exit takk@deb83:~$
~$ hd testdb > no5.dump ~$ diff no[15].dump 2,3c2,3 < 00000010 10 00 01 01 00 40 20 20 00 00 00 01 00 00 00 02 |.....@ ........| < 00000020 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 |................| --- > 00000010 10 00 01 01 00 40 20 20 00 00 00 06 00 00 00 02 |.....@ ........| > 00000020 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 04 |................| 6c6 < 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 |................| --- > 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 |................| ~$
テーブルを完全に削除して、新規に作成したとしても情報は残るようです。sqlite3での垢すりは、VACUUMぐらいにとどめておいた方が良いですね。
コメント