nDiki : SQLite

SQLite

パブリックドメインな、SQL データベースエンジンを提供する C ライブラリ。

  • ACID トランザクションをサポートしている。
  • Version 2 では型がない。

メモ

データベーススキーマを確認する:

 sqlite dbfile 'select * from sqlite_master'

テーブル一覧

 sqlite dbfile "select name from sqlite_master where type='table'"
 sqlite dbfile .tables

関連情報

2006年6月19日 (月)

DBIx::Class + SQLite といえども CREATE TABLE は必要か

DBIx::Class + SQLite でお手軽に」と思ったが、考えてみればテーブルの作成は必要なんだよな。

SQLite はファイルベースのデータベースで、指定したファイルが無ければ新規に作られるんだけれど、さすがにテーブルは自分で作る必要があるわけで。

WiKicker を使うのに sqlite コマンドラインツールの用意を要求するのは避けたいので、専用の管理スクリプトを提供することにする。

なんだかんだいって工数がかかるな。

[ 6月19日全て ]

2006年7月22日 (土)

Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合

入社してから社内情報共有の一環として

といろいろ手をつけてきた。 次に狙っているのは SBS である。

Wiki社内 Blog に書くほどではないけれどメモ程度にブックマークしておきたい URL を、気軽に晒せるようにするのが目的。

はてなブックマークのような公開サービスは

  • タグ・コメント・傾向などが外に出るのはよろしくない
  • あるいは、それを気にして活用されない
  • そもそも社内リソースについてはブックマークできない

という点から、今回は利用できない。

ということで社内に SBS を設置したい考えている。

最初は Scuttle にしてみようと思ったのだが、PHP ベースであるのと MySQL を使うというところで気遅れしている。 いや SQLite でもいけそうらしいということで、実は Debian でちょっと試そうとしたのだが、テーブル作成の SQLMySQL 用で、これを修正するのが面倒なので断念。

次に Perl + SQLite で動く Rubric を試してみることにした。

Rubric 0.140

Rubric は CPAN にあがっているので CPAN.pm から install Rubric でインストールできる。 モジュールをインストールしたら、セットアップ。

  1. CGI プログラムを動かすディレクトリを決める (以下 $RUBRIC)
  2. Rubric tarball の bin/rubric.cgi を $RUBRIC/ にコピーし、必要なら #! を修正する。
  3. Rubric tarball の templates ディレクトリを $RUBRIC/ にコピーする。
  4. Rubric tarball の style/rubric.css を $RUBRIC/ にコピーする。
  5. Rubric tarball の etc/rubric.yml を $RUBRIC/ にコピーして環境に合わせて編集する。
  6. データベースを初期化する。0.140 には makedb.pl が同梱されていないので、0.13_01 の bin/makedb.pl を参考に perl -MRubric::DBI::Setup -e 'Rubric::DBI::Setup->setup_tables' で初期化する。ちなみに 0.140 付属の rubric コマンドで rubric db -s してみたが、これはうまく動かなかった。
  7. 必要に応じて .htaccess を作成・編集し rubric.cgi を CGI プログラムとして実行できるようにする。またその他アクセスされたくないファイルを deny するようにしておく。

これで OK。

rubric.cgi にアクセスしページが表示されればひとまず成功。 メニューの「register」から、ユーザ登録する。 確認用のメールが届くはずだが、面倒くさいのでこれを待たずに

 rubric user -a ユーザ名

でアクティベートする。

Rubric の HTML フォームからのブックマーキングは成功し、うまく動いているようである。 ただし、日本語の処理はどうもよくない。 title や description が化ける。 惜しい。

基本的には UTF-8 ベースでうまくいきそうなのだが、どこかで化けるようだ。 ちょっと手を入れれば直るかなと思ったが、化けるところと化けないところとがあるので逆に直す場所が多そうなので今日はやめておくことにした。

とりあえず Rubric はおいておいて、他のものも試してみることにするか。

[ 7月22日全て ]

2008年3月15日 (土)

近谷研 OB 飲み会

rimage:/nDiki/Flickr/2334358849.jpg

やまだ君が声をかけてくれた飲み会に参加。 宮寺先生、福田先生、やまだ君、田中丸君、花田君、自分の6人。

待ち合わせ場所の連絡が無かったので、とりあえず電気街口に行ったら落ち合えた(実は連絡はきちんとしてもらっていたのだけれど、メールサーバ障害で届いていなかった)。

場所は矢まと秋葉原店。座敷で壁で仕切られたテーブルなので、他を気にせずに会話できたのは良かったが、ドリンクがくるのが遅かったのが×。

話題

技術形の話は、以前に比べて Web アプリケーション系の話が増えたなあと実感。

[ 3月15日全て ]

2010年2月4日 (木)

今日のさえずり - Twitter 割引を実施する大井町のすし処さいしょ

2010年02月04日

  • 09:20 I just unlocked the "Local" badge on @foursquare! http://4sq.com/bJ0BUJ
  • 09:41 I'm at 秋葉原駅 (秋葉原駅, 千代田区) w/ 2 others. http://4sq.com/68fhHr
  • 09:51 I'm at 東神田金子ビル (東京都千代田区東神田3-1-2, Tokyo). http://4sq.com/cPcCEo
  • 10:04 I just unlocked the "Adventurer" badge on @foursquare! http://4sq.com/bXkVZ6
  • 10:04 I'm at 株式会社レクサー・リサーチ (東京都千代田区東神田3-1-2, 東京都). http://4sq.com/aMt7Pd
  • 11:33 今組んでいるプログラムに SQLite を組み込んで in-memory database でオープンして内部データ保持するのに使いたいと、ふと思った。
  • 12:04 牛丼テイクアウト。 (@ なか卯 神田佐久間町店) http://4sq.com/9tdwTs
  • 12:06 牛丼(昼食) 350円。なか卯。
  • 12:31 2010年2月3日の歩行: 4791歩、3.71km、40分、5.56km/h、消費 187.3kcal、脂肪燃焼 26.8g、2.7エクササイズ。
  • 12:34 あ、朝アレブラ飲み忘れている。今飲んでおこう。
  • 12:47 Twitter 割引を実施する大井町のすし処さいしょ @SushiSaisho 今日はどれぐらい混むのかな。 http://bit.ly/dudAUL
  • 13:13 warotter(ワロッター) の Twitter bot かフィードが欲しい。 http://warotter.com/
  • 16:43 Twitter 割引を実施する大井町のすし処さいしょ @SushiSaisho 17:00 ディナータイムオープン。もうちらほら向かっている人いるのかな。
  • 16:55 RT @SushiSaisho: それでは I'ts a show time!!! 一度言ってみたかった…。
  • 17:29 RT @kazzwatabe: 中継終了! 食べるのに集中します! 大井町の「すし処 さいしょ」でTwitter割引で寿司食べてまう!
  • 17:38 8,000 台の @otsune 氏出発。 #SushiSaisho RT @otsune: 大井町「すし処 さいしょ」 htttp://twitter.com/SushiSaisho に向けてそろそろ出る
  • 17:44 I'm at セブン-イレブン神田佐久間町店 (東京都千代田区神田佐久間町4-16, 東京都). http://4sq.com/cEfW1k
  • 17:47 ふんわりメロンパン(おやつ) 105円。
  • 17:53 6,000 台の @twitt 氏出発。 #SushiSaisho RT @twitt: 大井町「すし処 さいしょ」 htttp://twitter.com/SushiSaisho に向けてそろそろ出る
  • 18:02 1,000 台の @mu_mu_ 氏到着。 #SushiSaisho RT @mu_mu_: I'm at すし処さいしょ (東京都品川区大井4-13-14, 東京都). http://4sq.com/dyPxFc
  • 18:09 すし処さいしょに @mihochannel 氏到着。 #SushiSaisho RT @mihochannel: さいしょ到着〜 http://movapic.com/...
  • 18:33 2,000 台の @popona 氏到着済み。 RT #SushiSaisho @popona: すし処さいしょ@大井町なう http://movapic.com/...
  • 18:43 @popona うらやましい (メロンパンを食べつつ)。
  • 18:49 2,000 台の @clione 氏到着。 #SushiSaisho RT @clione: さいしょ 到着!入店できました! http://twitpic.com/11b86u
  • 19:06 RT @kazzwatabe: Twitter割引の「すし処 さいしょ」離脱なう。にぎり(竹)、穴子、ツブ貝、いくらを食べて4910円の会計が2130円に! 大将(@SushiSaisho)ごちそうさまでした! #sushisaisho
  • 19:52 皆帰った。今日はひとり。
  • 19:57 Dropboxモバイル向け Web サイトがあるよというお知らせ。 http://m.dropbox.com
  • 20:21 何もしていないのに目の前で SO905iCS が勝手にリブート。
  • 20:23 夕方までに書き切ったロジック部分の C++ ソースコードから呼んでいる、とりあえず宣言だけしているメソッドを片っ端から実装中。半分ぼーっとしていても手が動く。
  • 20:30 未定義メソッドつぶした。次デバッグ
  • 20:52 #SushiSaisho RT @miyawaki: 8人並んでいます。RT @miyawaki ツイッター値引き実施中の @SushiSaisho に向かいます! 混んでいるのかなぁ。。。 http://bit.ly/agdCKz
  • 21:02 動いたのでボチボチ帰る。
  • 21:09 RT @meso: ちなみに、大井町在住で食べ歩きが趣味の僕の中では、大井町の寿司屋ランキング一位は断然いこい寿司。異論は認める。
  • 21:22 これから大井町に向かう(すし屋には行かないけど)。
  • 21:27 I'm at 秋葉原駅 (秋葉原駅, 千代田区) w/ 5 others. http://4sq.com/68fhHr
  • 21:48 I'm at 大井町駅 (大井町駅, 品川区). http://4sq.com/78yaMI
  • 25:05 foursquare やってて思い出したのでのぞいてみたら、携帯用すれ違い系サービスの loc8r (ロケイター) α版サービスが2010年2月1日(月)をもってひっそり終了してた。 http://loc8r.jp/
  • 25:26 foursquare の venue 登録のコツわかった気がする。例えば City, State/Country に「千代田区, 東京都」としたら、Address にはその後の町名から書かないと座標取得に失敗するっぽい。
[ 2月4日全て ]

2010年11月24日 (水)

専用 RubyOpenSSLビルドして Redmine を入れるときの落とし穴

新しい開発プロジェクトでは Git + Redmine を使おうと思う。 で例により使えるのが Red Hat Linux 8.0 サーバなので対応する Ruby やライブラリを含めてソースコードからビルドしてインストールしたのだが、ちょっとハマったのでメモ。

システムにインストールされている OpenSSL を(パッケージがなくアップデートできないので)残したまま、新しい OpenSSL をいれて使うのだが Ruby でこれを使えるようにする方法に辿りつくまで8割の時間を費した。

OpenSSL をインストールする

OpenSSL のデフォルトである /usr/local/ssl へビルドしてインストールする。

 tar zxvf openssl-1.0.0b.tar.gz
 cd openssl-1.0.0b
 ./config shared
 make
 make test
 make intall

何も指定しないと共有ライブラリ(so)がビルド・インストールされないのが落とし穴。

Ruby 1.8.7 をインストール

後は /usr/local/redmine 以下に Redmine に必要なものを入れる。

 tar jxvf ruby-1.8.7-p302.tar.bz2
 cd ruby-1.8.7-p302
 CFLAGS='-I /usr/local/ssl/include' \
   LDFLAGS='-L /usr/local/ssl/lib -Wl,-rpath=/usr/local/ssl/lib' \
   ./configure --prefix=/usr/local/redmine --enable-rpath
 make
 make install

大きな落とし穴は Ruby に含まれている ext/openssl。 OpenSSL 用の共有ライブラリが作られるのだが、いくらやってもこいつが /lib に入っている古い OpenSSL 共有ライブラリの方をリンクしてしまい /usr/local/ssl/lib の方をリンクしてくれない。

configure や make 時に LD_RUN_PATH やら -rpath を指定しても効かないし、ext/Setup で openssl を静的に指定しても駄目だし。

結局 configure.in を眺めて AC_ARG_ENABLE(rpath, ...) があるのを発見して --enable-rpath したところようやく -rpath が共有ライブラリのビルドに反映されるようになった。

30m ぐらいの深さの大きい落とし穴。

RubyGems をインストール

/usr/local/redmine に Ruby が入ったので必要なものを入れていく。 確実にそこの Ruby を使うようにしばらくは /usr/local/redmine/bin 以下を絶対パス指定で作業。

 tar zxvf rubygems-1.3.7.tgz
 cd rubygems-1.3.7/
 /usr/local/redmine/bin/ruby setup.rb

SQLite をインストール

Redmineデータベースは一番お手軽な SQLite を使う。これもインストール。

 tar zxvf sqlite-amalgamation-3.7.3.tar.gz
 cd sqlite-3.7.3
 ./configure --prefix=/usr/local/redmine
 make
 make install

sqlite3-ruby をインストール

Ruby から SQLite を使うためのライブラリをインストール。

 /usr/local/redmine/bin/gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/redmine

SQLite のありかを示す --with-sqlite3-dir を -- の次に指定するというところに気がつくのに浅い落とし穴。

Passenger

Redmine のインストールの説明では Passenger を推奨しているようなので入れてみる。

 /usr/local/redmine/bin/gem install passenger

OK。しかし Apache モジュールを

 /usr/local/redmine/bin/passenger-install-apache2-module

でインストールしようとすると失敗。Apache の dev 系のファイルがシステムに入っていないので、それはそうだな。しかし Passenger のコマンドは寡黙ではなく何が駄目で何をすべきかきちんと表示してくれるのでわかりやすい。

この落とし穴は、横を通って回避。

Rack のダウングレード

Passenger のインストールで最新の Rack が一緒にインストールされるのだが、Redmine には新しすぎて後の手順でエラーで止まる。 ので、ここで 1.0.1 にダウングレードしておく。

 /usr/local/redmine/bin/gem install rack -v 1.0.1

これは皆が知っている落とし穴。

Redmine をインストール

ようやく Redmine のインストール。 展開するだけ。

 tar zxvf redmine-1.0.3.tar.gz
 mkdir -p /usr/local/redmine/var/lib
 mv redmine-1.0.3 /usr/local/redmin/var/lib/redmine

以下 /usr/local/redmine/var/lib/redmine で作業。

 cd /usr/local/redmine/var/lib/redmine

Redmineデータベース設定をする

config/database.yml を作成する。SQLite を使うように設定。

 production:
   adapter: sqlite3
   database: /home/naney/var/redmine/redmine.db

データベースは定期バックアップのある自分の home 以下に。

 makdir -p ~/var/redmine

Remine のメール設定をする

config/email.yml を作成する。今回は専用の redmine@example.com を作成して、その SMTP サーバ/アカウント経由で送信するようにする。

 production:
   delivery_method: :smtp
   smtp_settings:
     address: smtpserver.example.com
     port: 25
     domain: redmine.example.com
     user_name: "redmine@example.com"
     password: "mypassword"

Redmine の初期化をする

必要なファイルやらデータベースの初期化やらを行う。

 /usr/local/redmine/bin/rake config/initializers/session_store.rb
 /usr/local/redmine/bin/rake db:migrate RAILS_ENV=production
 /usr/local/redmine/bin/rake redmine:load_default_data RAILS_ENV=production

最後のコマンドでは言語を選ぶプロンプトが出るので ja を指定。

Passenger で Redmine を起動する(NG)

Apache 経由ではなく Passenger スタンドアローンで Redmine を使ってみる。

 /usr/local/redmine/bin/passenger start

失敗。途中の処理で rake が見つからないという。

 PATH=/usr/local/redmine/bin:$PATH
 passenger start

やっぱり失敗。自動的にダウンロードした ngix のビルドに失敗しているっぽい。 落とし穴。

WEBrick で Redmine を起動する(OK)

 /usr/local/redmine/bin/ruby script/server webrick -e production

Redmine 的には 本番向けではない WEBrick は無事起動。

 http://インストールしたサーバ:3000/

にブラウザにアクセス。Redmine のページが見えたよオッカサン! admin:admin でログインしてあとは Web ブラウザから設定。 Git リポジトリの連携もすんなり。

やったね。

追記 (2010年12月2日)

WEBrick で使い続けるなら script/server 起動時に -d オプションを指定する(記事)。

[ 11月24日全て ]

2013年9月3日 (火)

今日のさえずり: 求人サイト、ガチャと合成を取り入れればいいのでは

2013年09月03日

[ 9月3日全て ]

2014年2月19日 (水)

いよいよ WiKicker から WikiEngine のコードを抜いて DiKicker のみにする

2002年10月19日から開発を始めてしばらく公開・運用をしていた WikiEngine だけれど最近は WikiEngine そのものは使っていなくて、今はそのコードをベースに作った日記システムDiKicker 部分しか使っていない。DiKicker の方は自分自身で今後も使っていくんだけれど、さすがにいろいろ古いのでそろそろ大改修しようかなと。基盤部分的には

  • Perl 5.005_03Perl 5.6 系との互換処理を捨てる。
  • 文字列処理をバイナリ文字列ベースから(いわゆる UTF8 フラグ界隈的な)テキスト文字列ベースにする。
  • CGI.pm ベースから PSGI ベースへ移行する。
  • 中間管理用のストレージを Berkeley DB から SQLite にする。

などをして今後も使っていけるようにしたい。既に使っていないアプリケーションとしての WikiEngine 部分は移行させていく手間をかける必要はないと思うので、コードを削除していくことにした。WikiForum 立てるなら既にいろいろ他の選択肢があるしね。

CVS での管理もやめて Git 管理に変更。最後の公開 tarball を展開して git init して最初のコミットとし、その後に変更した作業ディレクトリを Git 側の作業ツリーに上乗せしていったんコミット。あらためて最後の公開コードの上に差分を積んでいくつもり。

[ 2月19日全て ]

2015年4月22日 (水)

digiKam for WindowsKDE がまるっと入っていた

Windows写真のブラウズとスライドショーでの閲覧に使うソフトウェアを選定中。 Linux でずっと使っている写真管理ソフトウェア digiKam をチェックしたら Windows 版バイナリのインストーラがあったのでインストールしてみた(digiKam-installer-4.9.0-win32.exe)。インストーラが 232MB あって結構大きいなと思ったんだけれどインストールしたら 1GB 以上のインストール容量でさらにびっくり。Konqueror とかも同梱されていたりと KDE の主要なものまるっと入っているっぽい。富豪的

起動すると見慣れた画面。いけそう。ただ Windows 7エクスプローラから写真ファイルを KDE のペインにドラッグ&ドロップでコピーしようとしたら重複確認ダイアログが出て(KDE のアルバムフォルダ側は空の状態)、しかもキャンセルするとコピー元の写真側が OSごみ箱に入れられてしまったりとちょっと危険な挙動をした。digiKam 内でコピー・移動させる分には問題ないので、普通の Windows アプリケーションとの間ではドラッグ&ドロップを気をつければ良さそう。

ということでひとまず第一候補。

フォト ギャラリー (Windows)

ちなみに昨日 Windows Essentials 2012 に入っている「フォト ギャラリー」というソフトウェアも試してみたんだけれど、こいつはタグその他の情報を写真ファイルに直接書き込んで更新してしまうタイプだったので NG だった。元ファイルを書き換えてしまうの嫌い。

ちなみに digiKamSQLite データベースに管理情報を書き込むので元のファイルを書き換えないので良い(オプションで画像ファイルにメタ情報を書き込む運用もできる)。

digiKam for OS X

OS X でも digiKam 使いたいと思っているんだけれど MacPorts での提供になっている。 Homebrew 使い始めているので MacPorts は入れたくないなと思っていてちょっと考え中。

[ 4月22日全て ]

2015年6月1日 (月)

写真管理ソフトウェア digiKamOS X で使えるようになった!

https://www.naney.org/nDiki/2015/06/01/digiKam.jpg

Linux から OS X に乗り換えてから写真管理ソフトウェアをどうするか困っていたんだけれど、 Linux で愛用していた digiKam の バイナリ (4.10.0 の pkg ファイル)が配布され始めたのを知って小躍りして昨日インストールした。ちょっと使っている範囲では問題なく動いている。

もともと公式サイトでは MacPorts でのインストール方法自体は案内されていて OS X では動くようになっていたのだけれど、自分は Homebrew 使っているので MacPorts で入れるの嫌だなあと思っていたので躊躇していたところなので嬉しい。

Adobe Photoshop Lightroom は評判が良いのだけれど高いし Photos (写真)はクラウドに向かっているらしいのでちょっと違うしで、とりあえず Finder で済ませつつどうしようと思っていたところなので良かった。

digiKam写真を置いてある任意の複数ディレクトリをアルバムとして指定して管理できるタイプのソフトウェアで個人的に気に入っている。写真データファイルをファイル名含め勝手に書き換えることもないので安心(設定次第ではメタデータを写真に埋め込むこともできるけれど、通常の設定では SQLite データベースファイル上にメタデータが保存される)。がっつりフォトレタッチしたいとかではなく、デジカメで撮ったたくさんの JPEG ファイルを撮影日で探したりスライドショーをしたりといったことができれば良い人にはお勧めである。

(画像https://www.digikam.org/node/739 掲載の https://www.flickr.com/photos/digikam/17379488119 (Caulier Gilles 氏) より)

[ 6月1日全て ]

2016年10月26日 (水)

ようやく日記システム DiKicker のメンテナンス開始

この日記(nDiki)で使っている自作日記システム DiKicker、開発し始めたのが2003年12月末なのでもう13年物だったりします。ここ最近大きなメンテナンスはしていなかったのですが、まだこの先10年以上使えるように手を入れることにしました。一昨日から着手。

やりたいこと

  • もともと WiKicker (WikiEngine) からの派生で作ったのでが WiKiEngine の方は使わなくなったので、不要なコードを削除したい。共通部分をスーパークラス化してあるけれどもここもまとめたい。
  • WikiName の特別扱いをやめたい。
  • Perl 5.005_03 でも動くように Perl 5.8.0 未満かどうかで処理を変えているけれども、もう 5.005_03 用のコードは消したい。
  • データを Berkeley DB にトリッキーな形で入れているので SQLite あたりに変えて簡単にしたい。
  • 最終的には Go で書き換えたりして。
[ 10月26日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.023443s / load averages: 0.18, 0.24, 0.24