過去の日記

2012-11-01 [長年日記]

10月の読書メーター

読んだ本の数:12冊
読んだページ数:3381ページ
ナイス数:12ナイス

OUT OF CONTROL (ハヤカワ文庫JA)OUT OF CONTROL (ハヤカワ文庫JA)感想
「まあこ」と「箱」は異形コレクションで既読。「箱」は題名だけでストーリーラインを思い出せる程度に印象が残っていた。やっぱり面白い。「まあこ」は取り出して読むと面白いのだけど、異形コレクションの中では……。そういや全体的に今ひとつの巻だったかも。「メトセラとプラスチックと太陽の臓器」が面白い。「OUT OF CONTROL」はすごくよくできていて、何度も読める作品なんじゃないかという予感。「スタンド・アウト」は興味深い。「デストピア」は半端。「日本改暦事情」は今となっては"天地明察を読め!"という気分。
読了日:10月31日 著者:冲方 丁

2000年のゲーム・キッズ(上) (星海社文庫)2000年のゲーム・キッズ(上) (星海社文庫)
読了日:10月22日 著者:渡辺 浩弐,竹

暗黒太陽の浮気娘 (ミステリアス・プレス文庫―ハヤカワ文庫 (10))暗黒太陽の浮気娘 (ミステリアス・プレス文庫―ハヤカワ文庫 (10))感想
話の筋として知ってはいたけど、D&Dのプレイングの最中に犯人をあぶりだすミステリって……変。SFファン(作中表現を尊重してオタクとは書かない)の生態が楽しい。今は有名な《プラン9・フロム・アウタースペース》が《外宇宙からの第九次侵略計画》として名前だけ登場。ここのやりとり「あら、見なきゃだめよ! 信じられないくらいひどいんだから」は可笑しい。(《マウス・オブ・マッドネス》でモーテルのテレビに映っていた)《ロボット・モンスター》は《怪物ロボット》だったり。D&Dのプレイ中に出てきた変化(へんげ)ってなに?
読了日:10月19日 著者:シャーリン・マクラム

カンナ 京都の霊前 (講談社ノベルス)カンナ 京都の霊前 (講談社ノベルス)感想
あっさりとした解決。QEDの、日本史の話をしていたと思ったらミステリの謎に繋がってました、というフォーマットに縛られていない分こちらの方が好き。日本史の話で盛り上がってお仕舞いでokなので。
読了日:10月15日 著者:高田 崇史

カンナ 出雲の顕在 (講談社ノベルス)カンナ 出雲の顕在 (講談社ノベルス)
読了日:10月15日 著者:高田 崇史

カンナ 天満の葬列 (講談社ノベルス)カンナ 天満の葬列 (講談社ノベルス)感想
道真公の生前が悪霊のイメージからはほど遠いというのは永井路子の悪霊列伝などでも既知。悪霊列伝では寺社の権力(?)争いに求めていたかなー。こちらの解釈の方が面白い。
読了日:10月15日 著者:高田 崇史

カンナ 鎌倉の血陣 (講談社ノベルス)カンナ 鎌倉の血陣 (講談社ノベルス)
読了日:10月14日 著者:高田 崇史

カンナ 戸隠の殺皆 (講談社ノベルス)カンナ 戸隠の殺皆 (講談社ノベルス)
読了日:10月14日 著者:高田 崇史

カンナ 奥州の覇者 (講談社ノベルス)カンナ 奥州の覇者 (講談社ノベルス)
読了日:10月12日 著者:高田 崇史

カンナ 吉野の暗闘 (講談社ノベルス)カンナ 吉野の暗闘 (講談社ノベルス)
読了日:10月10日 著者:高田 崇史

クトゥルフ神話への招待 ~遊星からの物体X (扶桑社ミステリー)クトゥルフ神話への招待 ~遊星からの物体X (扶桑社ミステリー)
読了日:10月9日 著者:J・W・キャンベルJr.,H・P・ラヴクラフト,ラムジー・キャンベル

復興の書店復興の書店感想
もう震災関連の書籍は読まなくても、と思っていたがこんなものを見つけた日には手に取らずにいられない。p40「生活に必要な食料や水を買い求めるためにスーパーに並んだ人たちが、同じようにその足で書店にも並んでいるんですよ」本屋の開店も、新刊の配本も、図書館の再開も、みな待ち遠しかった。本屋さんは私にとっての日常の象徴だった。この本を読んで、あらためてそう思う。一頁堂書店さんが、みんな全くの素人というのは意外だった。巻頭の地図が位置がよく把握できるのでよかった。
読了日:10月8日 著者:稲泉 連


2012-10-31 [長年日記]

tDiary3.2.0をマージ

コンフリクトなかった。


2012-10-29 [長年日記]

sinatra-activerecordを使ってマイグレーションを作る [tech][Ruby]

ための最低限の手続きのメモ。要Ruby1.9系(多分)。


bundlerを使う。

sudo gem install bundler


適当なフォルダを使う。

mkdir apptest
cd apptest


Gemfileを作る。

source 'https://rubygems.org'

ruby '1.9.3'

gem 'sinatra-activerecord', :require => 'sinatra/activerecord'
gem 'rake'

これだけ? これだけ*1*2


bundle install。依存関係からActiveRecordなんかが入る。

mkdir vendor
bundle install --path vendor/bundle


Rakefileを作る。

require 'sinatra/activerecord/rake'

これだけ。


この時点ですでに、

bundle exec rake -T

すると、

rake db:create_migration  # create an ActiveRecord migration in ./db/migrate
rake db:migrate           # migrate the database (use version with VERSION=n)
rake db:rollback          # roll back the migration (use steps with STEP=n)

というタスクが3つ登録済みになる。


ではさっそく、

bundle exec rake db:create_migration

すると、

rake aborted!
No NAME specified. Example usage: `rake db:create_migration NAME=create_users`

と、NAMEを指定してね、って言われる。


なので、

bundle exec rake db:create_migration NAME=create_users

すると、db/migrate ディレクトリが作られて、20121029xxxxxx_create_users.rb なんてファイルができている。

class CreateUsers < ActiveRecord::Migration
  def up
  end

  def down
  end
end

というおなじみ(?)Migration用のファイル。


中身をいれてやる。

class CreateUsers < ActiveRecord::Migration
  def up
    create_table :users do |t|
      t.string :user_id
      t.string :password
      t.timestamps
    end
  end

  def down
    drop_table :users
  end
end

とか作り込んでいく(ここで書いたのはちょう適当)。


で、Migrationを作っていって、

bundle exec rake db:migrate

ってやれば、最新のmigrationまで一気にやってくれる……わけがない。
だってどこのどんな種類のDBに操作するのか書いてないから。


……マイグレーションはできた。実行できないけど。


ここで終わっちゃあんまりなので。
GemfileにDBアクセスに必要なGemを追加。

source :rubygems

ruby '1.9.3'

gem 'sinatra-activerecord', :require => 'sinatra/activerecord'
gem 'rake'
gem 'sqlite3'

楽なsqlite3にしといた。

bundle install

を忘れずに。もちろんその前に apt-get なり、yum なり、brew なり、ports なりでsqlite3(とヘッダ類)をインストールしておかないといけない。


db/connection.rbなんて作っちゃう。

require "logger"

ActiveRecord::Base.establish_connection({
  :adapter   => "sqlite3",
  :database  => "myapp.db",
})

ActiveRecord::Base.logger = Logger.new($stderr)

loggerにまつわる部分も含めて必要なオマジナイ。


Rakefileでrequireする*3

require 'sinatra/activerecord/rake'
require './db/connection'


これで、

bundle exec rake db:migrate

が通るはず。

bundle exec rake db:rollback

すると1段階戻る。
おなじみのマイグレーション機能。


Sinatraアプリの中でもconfigureでdb/connection.rbを読んじゃえばdbアクセスできそうだけど、うまいやり方とは到底思えない*4のでどうしようか……。
GemfileにしろRakefileにしろ、必要な部分が分かるように、最小限にしか書いてないのは説明のため。

ここまでなんとなくやってきたけど、そろそろ sinatra-activerecord のドキュメントでも探しにいきますか……。


追記

https://github.com/janko-m/sinatra-activerecord/blob/master/README.md

使い方が普通に書いてあるわけだが。

*1 rbファイル内で Bundler.require を書かないのならrequireの部分は必要なわけじゃない。

*2 2013-04-01更新 source :rubygems から source 'https://rubygems.org' に変更した。

*3 bundle execで実行する都合上、require_relativeではなくrequireを使った。

*4 Sinatraのモードの概念をスポイルしちゃう。


2012-10-23 [長年日記]

inetdレンタルサーバーにgitを入れるのこと [tech]

viのプラグインをインストールしようと思ったら、httpを指定したgit cloneができないことに気がついた。
元のgitも自分でビルドしたものだったのだけど、この問題はcurlライブラリがないために起きているらしい。
なのでまたビルド。

wget http://curl.haxx.se/download/curl-7.28.0.tar.bz2
tar xvf curl-7.28.0.tar.bz2
cd curl-7.28.0
./configure --prefix=$HOME/local/curl
make
make install

cd

wget http://git-core.googlecode.com/files/git-1.8.0.tar.gz
tar zxvf git-1.8.0.tar.gz
cd git-1.8.0
env CPPFLAGS=-I$HOME/local/curl/include LDFLAGS=-L$HOME/local/curl/lib ./configure --prefix=$HOME/local/git
gmake
gmake install

こんな感じで。
ついでに1.8.0になった。


2012-10-13 [長年日記]

カフェ読み数学ガール 十月 in仙台 [etc]

カフェ読み数学ガール 十月 in仙台 : ATND

でした。

今日読めたのは、

数学ガール/ガロア理論 (数学ガールシリーズ 5)

  • 作者: 結城 浩
  • 出版社/メーカー: SBクリエイティブ
  • 発売: 2012-05-30
  • ASIN: 4797367547
  • メディア: 単行本
  • amazon.co.jp詳細へ

4章でした。
これからどんどん時間的に内容的に厳しくなることでしょう。


宿題。

複素平面の単位円上の数を2つ持ってきて、掛け合わせたらやはり単位円上にあるはず。
極座標で考えれば自明なのだけど、計算して確かめてみよう、と思った。

\((a+bi)(c+di)=(ac-bd)+(bc+ad)i\)
絶対値の2乗は、
\((ac-bd)^2+(bc+ad)^2=a^2c^2-2abcd+b^2d^2+b^2c^2-2abcd+a^2d^2=a^2(c^2+d^2)+b^2(c^2+d^2)=a^2+b^2=1\)

ok。