VirtualBoxのディスクイメージ(vdi)をKVMのディスクイメージ(qcow2)に変換す る

VirtualBoxのディスクイメージ(vdi)をKVMのディスクイメージ(qcow2)に変換す る

VirtualBoxを使っていたのですが、KVMも使いたくなったのでディスクイメージを変換してみた。 とは言っても、以下のコマンド一発で変換できたので、特に苦労は無し。 $ qemu-img convert -O qcow2 .VirtualBox/windows7.vdi Documents/windows7.qcow2 qemu便利だな。。

2010-07-24 · 1 分 · Masayuki Igawa
SQLiteでprepared statementとBLOBを使って構造体を保存(C言語)その2 #sqlite

SQLiteでprepared statementとBLOBを使って構造体を保存(C言語)その2 #sqlite

と言うわけで、前回に続き今回は、前回作成したDBファイルをsqlite3コマンドで見てみます。 以下の様に構造体はBLOBで格納したのですが、最初のメンバーはsqlite3コマンドで見られます。 Oracleではちょっと考えられませんが、この辺がsqliteらしいとこでしょうか。 $ sqlite3 test.dbSQLite version 3.6.22Enter ".help" for instructionsEnter SQL statements terminated with a ";"sqlite> select * from member;0|Isono Katsuo1|Isono Wakame2|Huguta Tarao3|Huguta Masuo4|Huguta Sazaesqlite>

2010-06-19 · 1 分 · Masayuki Igawa
SQLiteでprepared statementとBLOBを使って構造体を保存(C言語)その1 #sqlite

SQLiteでprepared statementとBLOBを使って構造体を保存(C言語)その1 #sqlite

SQLiteのC言語APIを使ってprepared statementで、BLOBを使ってみます。 基本的には、以下のサイトに書いてある方法ですが、日本語で書いてみることにします。 http://www.sqlite.org/capi3ref.html#sqlite3_stmt sqlite3_prepare_v2()(あるいはそれに類するもの)を使って、sqlite3_stmtのオブジェクトを作る。 sqlite3_bind_*() インターフェースを使ってパラメータに値をBind。 sqlite3_step()を使ってSQL実行。(sqlite3_step()は何回でも実行できる) sqlite3_reset()を使ってstatementをリセットして、step 2に戻る。これは何度でもできるし、やらなくても良い。 sqlite3_finalize()を使ってオブジェクトを破棄する。 というわけで、いきなりサンプルコードw 便利だなーと思ったのは、sqlite3_errmsg()関数。dbを引数にすると、 $ gcc -o sqlite_test sqlite_test.c -lsqlite3 $ chmod 000 test.db と、DBファイルを読み書き出来ないようにして、実行すると、 $ ./sqlite_test open error:14, unable to open database file と、何でエラーになったのかが表示されます。 さらに、このDBファイルをsqlite3コマンドで見たときの話は次回のエントリに書きたいと思います。 #include #include #include #include struct human { char name[256]; int age; int height; int sex; }; int main(int argc, char *argv[]) { struct human human[5] = { { "Isono Katsuo", 32, 168, 0 }, { "Isono Wakame", 29, 158, 1 }, { "Huguta Tarao", 20, 180, 0 }, { "Huguta Masuo", 52, 178, 0 }, { "Huguta Sazae", 48, 161, 1 } }; sqlite3 *db; sqlite3_stmt *dropStmt = NULL; sqlite3_stmt *createStmt = NULL; sqlite3_stmt *selectStmt = NULL; sqlite3_stmt *insertStmt = NULL; char *drop_tbl_sql = "drop table member"; char *create_tbl_sql = "create table member" "(id INTEGER PRIMARY KEY," "human BLOB NOT NULL )"; char *insert_tbl_sql = "INSERT INTO member (id, human) values (?, ?)"; char *select_tbl_sql = "select human from member where id = ?"; char *pzTail; int rc = 0; int exitcode = 0; rc = sqlite3_open("test.db", &db); //rc = sqlite3_open(":memory:", &db); if (rc != SQLITE_OK) { printf("open error:%d, %s\n", rc, sqlite3_errmsg(db)); exitcode = 1; goto end; } /* cleanup. ignore error. */ sqlite3_prepare_v2(db, drop_tbl_sql, -1, &dropStmt, NULL); sqlite3_step(dropStmt); rc = sqlite3_prepare_v2(db, create_tbl_sql, -1, &createStmt, NULL); if (rc != SQLITE_OK) { printf("create error:%d, %s\n", rc, sqlite3_errmsg(db)); exitcode = 1; goto end; } rc = sqlite3_step(createStmt); if (rc != SQLITE_DONE) { printf("create error:%d, %s\n", rc, sqlite3_errmsg(db)); exitcode = 1; goto end; } rc = sqlite3_prepare_v2(db, insert_tbl_sql, -1, &insertStmt, NULL); if (rc != SQLITE_OK) { printf("insert error:%d, %s\n", rc, sqlite3_errmsg(db)); exitcode = 1; goto end; } rc = sqlite3_prepare_v2(db, select_tbl_sql, -1, &selectStmt, NULL); if (rc != SQLITE_OK) { printf("select error:%d, %s\n", rc, sqlite3_errmsg(db)); exitcode = 1; goto end; } int i = 0; for (i = 0; i < 5; i++) { sqlite3_reset(insertStmt); sqlite3_bind_int(insertStmt, 1, i); sqlite3_bind_blob(insertStmt, 2, &human[i], sizeof(struct human), SQLITE_STATIC); rc = sqlite3_step(insertStmt); if (rc != SQLITE_DONE) { printf("insert error:%d, %s\n", rc, sqlite3_errmsg(db)); exitcode = 1; goto end; } } printf("-------------------------------------\n"); for (i = 0; i < 5; i++) { sqlite3_reset(selectStmt); sqlite3_bind_int(selectStmt, 1, i); rc = sqlite3_step(selectStmt); //printf("select result:%d\n", rc); if (rc == SQLITE_ROW) { struct human *t = (struct human*)sqlite3_column_blob(selectStmt, 0); printf("ID: %d\n\t name: %s\n\t age: %d\n\t height: %d\n\t sex: %s\n", i, t->name, t->age, t->height, t->sex == 0 ? "M" : "F"); printf("-------------------------------------\n"); } } end: sqlite3_finalize(selectStmt); sqlite3_finalize(insertStmt); sqlite3_finalize(createStmt); sqlite3_finalize(dropStmt); return exitcode; }

2010-06-19 · 2 分 · Masayuki Igawa
Xperiaソフトウェアアップデートした(R1EA025)

Xperiaソフトウェアアップデートした(R1EA025)

[POBox Touchが「2.0」に進化:ドコモ、「Xperia」の正式アップデートを開始——まずはPC経由で ITmedia +D モバイル](http://plusd.itmedia.co.jp/mobile/articles/1006/09/news086.html) via kwout http://kwout.com/cutout/8/st/3x/5az_bor.js Xperiaソフトウェアアップデートが再開されたので、アップデートしました。 POBoxのフリック入力は、iPhoneのソレよりも良い感じですね。 私の場合、フリックする方向と、入力される文字の対応が体に染み込んでないので、 POBoxの表示方式(押したキーの上側に候補が表示される方式)が、いい感じです。 [POBox Touchが「2.0」に進化:ドコモ、「Xperia」の正式アップデートを開始——まずはPC経由で ITmedia +D モバイル](http://plusd.itmedia.co.jp/mobile/articles/1006/09/news086.html) via kwout http://kwout.com/cutout/7/xj/qn/ife_bor.js また、タッチパネルの感度が向上しているということなので、ちょっと期待してます。 PC経由か、あるいは、Xperia単体でのアップデートも可能になっています。 Xperia単体で手動でアップデートする場合は、 「設定」→「端末情報」→「ソフトウェア更新」 で出来ると思います。 参考リンク: http://www.sonyericsson.co.jp/support/software/updateservice/ http://japanese.engadget.com/2010/06/09/xperia/ http://plusd.itmedia.co.jp/mobile/articles/1006/09/news086.html http://av.watch.impress.co.jp/docs/news/20100609_373193.html http://ameblo.jp/moon-age/entry-10559165157.html http://saya.s145.xrea.com/archives/2010/06/xperia_4.html http://h-scp10.blog.so-net.ne.jp/2010-06-10 http://d.hatena.ne.jp/Sapphire/20100610/1276175119

2010-06-11 · 1 分 · Masayuki Igawa
Vimから投稿するテスト

Vimから投稿するテスト

http://mattn.kaoriya.net/software/vim/20070831122307.htm の記事を参考に、vimから投稿してみます。

2009-11-21 · 1 分 · Masayuki Igawa
KernelOrgBotを作ってみた

KernelOrgBotを作ってみた

Twitterで「KernelOrgBot」なるものを作ってみた。 http://twitter.com/KernelOrgBot ちょっと探してみた限りでは、それっぽいものが無かったので。 ただ、「作った」とは言っても… https://twitterfeed.com/ で、 http://kernel.org/kdist/rss.xml を読み込ませて、30分毎にチェックする設定にしたぐらいです。 もうすでに、3人の方がフォローしてくれているらしい。 スゴい。 こっちから、フォローして良いものかどうか迷ったが、 フォローしてみることにする。

2009-09-08 · 1 分 · Masayuki Igawa
Linux(Ubuntu)で、Objective-C

Linux(Ubuntu)で、Objective-C

iPhoneアプリを作るなら、Objective-Cという言語を知っておく必要が ありそうなので、とりあえず、LinuxでObjective-Cをやってみる。 参考にしている書籍は、以下。 http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=hughundercons-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4797346809 私は、とりあえず、図書館で借りました。 が、図書館に無かったり、近くに図書館が内容な場合は、上記からご購入ください :-) Apple製品専用言語なのかと思ったが、ググったら、Linuxでも動きそうだったので、 挑戦してみる。 以下、その内容。 まずは、Objective-Cの環境をインストール。 Linux で Objective C を走らせてみた の記事を参照して、以下の様にインストール。 $ sudo aptitude install gobjc パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 拡張状態情報を読み込んでいます パッケージの状態を初期化しています... 完了 拡張状態情報を書き込んでいます... 完了 以下の新規パッケージがインストールされます: gobjc gobjc-4.3{a} libobjc2{a} 0 個のパッケージを更新、 3 個を新たにインストール、 0 個を削除予定、1 個が更新されていない。 3700kB のアーカイブを取得する必要があります。 展開後に 9478kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] Y 拡張状態情報を書き込んでいます... 完了 取得:1 http://jp.archive.ubuntu.com jaunty/main libobjc2 4.3.3-5ubuntu4 [160kB] 取得:2 http://jp.archive.ubuntu.com jaunty/main gobjc-4.3 4.3.3-5ubuntu4 [3538kB] 取得:3 http://jp.archive.ubuntu.com jaunty/main gobjc 4:4.3.3-1ubuntu1 [894B] 3700kB を 2s 秒でダウンロードしました (1552kB/s) 未選択パッケージ libobjc2 を選択しています。 (データベースを読み込んでいます ... 現在 250930 個のファイルとディレクトリがインストールされています。) (.../libobjc2_4.3.3-5ubuntu4_amd64.deb から) libobjc2 を展開しています... 未選択パッケージ gobjc-4.3 を選択しています。 (.../gobjc-4.3_4.3.3-5ubuntu4_amd64.deb から) gobjc-4.3 を展開しています... 未選択パッケージ gobjc を選択しています。 (.../gobjc_4%3a4.3.3-1ubuntu1_amd64.deb から) gobjc を展開しています... libobjc2 (4.3.3-5ubuntu4) を設定しています ... gobjc-4.3 (4.3.3-5ubuntu4) を設定しています ... gobjc (4:4.3.3-1ubuntu1) を設定しています ... libc6 のトリガを処理しています ... ldconfig deferred processing now taking place パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 拡張状態情報を読み込んでいます パッケージの状態を初期化しています... 完了 拡張状態情報を書き込んでいます... 完了 で、まずは、お約束Hello Worldからw(インターネットはどれくらい"Hello World"であふれているのだろうか..) ...

2009-08-15 · 2 分 · Masayuki Igawa
iPhone OS 3.0.1アップデート

iPhone OS 3.0.1アップデート

[iPhone OS 3.0.1ソフトウェア・アップデートがリリース SMSの脆弱性を修正 ITmedia News](http://www.itmedia.co.jp/news/articles/0908/01/news009.html) via kwout http://kwout.com/cutout/m/gi/np/mv7_bor.js 「Hidehiro’s Blog」で知ったのですが、 iPhone OS 3.0.1アップデートが出た様です。 iPhone持っている方は、可能な限りアップデートしておいた方が良さそうです。 なぜならば… GIZMODO Japanにあった、 「「世界中のiPhoneがSMS経由で乗っ取れる」セキュリティの脆弱性」という 記事にあった脆弱性の修正のようです。

2009-08-02 · 1 分 · Masayuki Igawa
twitter2mixi.rbの改良は、後回しにしようかな(Twitter対抗、mixi「エコー」 正式サービスに APIも公開へ)

twitter2mixi.rbの改良は、後回しにしようかな(Twitter対抗、mixi「エコー」 正式サービスに APIも公開へ)

「Twitter対抗、mixi「エコー」正式サービスに APIも公開へ」 Twitter対抗、mixi「エコー」正式サービスに APIも公開へ - ITmedia News via kwout http://kwout.com/cutout/7/gk/fz/8pm_bor.js ということらしいです。 今、twitter2mixi.rbというスクリプトをcronで動かして、twitterつぶやきをmixiエコーへ投げているのですが、 このスクリプトは、最新の1件だけ取ってきて、mixiエコーへ投げています。 これを、最新つぶやき全部を取ってきて、全部投げることができるようにしようかなと 思っていたのですが、APIが公開されるのであれば、それを待ってからの方が良いかなと、 思ったり、思わなかったり。

2009-08-01 · 1 分 · Masayuki Igawa
iPhone アプリ開発参考ページ

iPhone アプリ開発参考ページ

自分用のメモ 目指せ!iPhoneアプリ開発エキスパート iPhoneアプリ開発でハマったところ 日本人開発者がつまづかないためのポイント 日本語のiPhoneアプリ開発者支援サイト スタンフォード大のiPhone開発講座iTunesで無償提供

2009-07-09 · 1 分 · Masayuki Igawa