WindowsでRails3+sqlite3の環境作成時にハマったこと
sqlite3 というライブラリのmswin版はVC6でビルドされたものしかないようなので、VS2005でビルドされたruby1.9系では使えないようだ。
ということで、
- ruby1.8.7+Rails3で、普通に gem install sqlite3 をする
- ruby1.9系+Rails3の場合、sqlite3を野良ビルドする
- cygwin+ruby1.9系+Rails3で、普通に gem install sqlite3 をする
ということになるのかも。
と書きつつ、私はruby1.8.7で即妥協したので、sqlite3の野良ビルドも、cygwinも試していません。
つまり、1つめ以外は予想です。
以下は、ruby1.9.2+Rails3+sqlite3の環境を作ってハマった時の様子。
インストールは正常に終了するが、実際に使おうとするとエラーが起きる。
うーん。。。rails3をwindowsに導入しているのだが、sqlite3のパスを通しているのに、 Could not find sqlite3-1.3.3-x86-mswin32 in any of the sources というエラーが出る。。。
http://rubygems.org/gems/sqlite3/versions を見たらx86-mswin32-60はあるがx86-mswin32はなかった。-60というはVC6のことかと予想すると、winのruby1.9ではsqlite3の導入はできないのかもしれない。
自転車@伊豆高原
つぶやいて記録していたものをまとめておく。
- 5/5 夕方 (晴)
- 伊豆高原(大室山ルート) - ルートラボ http://yj.pn/02sj4h
- http://twitter.com/#!/tarya2/status/66065850024722432
- 24分, 7.1km
- 登って降りるだけのルート
- 5/6 朝 (曇)
- 伊豆高原(一碧湖ルート) - ルートラボ http://yj.pn/J16oeY
- http://twitter.com/#!/tarya2/status/66285714324729856
- 50分, 15.4km
- 一碧湖は思ったより普通だった。神社参拝した。
- 5/6 昼 (晴)
- 伊豆高原(ナガヤ買い出しルート) - ルートラボ http://yj.pn/Y7rnWY
- http://twitter.com/#!/tarya2/status/66375718451429376
- 22分, 5.1km
- ずっと上り坂。最後の坂は斜度10%くらいだと思うが、2kg以上の荷物を背負っていたというのもあり、心が折れた。
- 5/7 夕方 (曇:雨上がり)
- 伊豆高原(激坂コース) - ルートラボ http://yj.pn/WTgaIo
- http://twitter.com/#!/tarya2/status/66812358772789248
- 16分, 2.7km
- 14%くらいの坂。前かがみにならないと前輪が浮き上がる。膝が少し痛くなった。激坂はちょっと好きにはなれそうにないかも。
- 5/8 朝 (快晴)
- 伊豆高原(松川湖ルート) - ルートラボ http://yj.pn/Whb125
- http://twitter.com/#!/tarya2/status/67204610451963904
- 90分, 26.8km(観光あり)
- 気持ち良いコースだった。路面の舗装がずっとよいし、坂もほどほど。芝桜が咲いていれば最高だったな。
合計: 202分, 57.1km
こやってみると、結構疲れている割に余り走っていないな。
むしろ疲れているのは坂のせい、というのは間違いないだろうが。
しかし、自転車のこぎがいがあって楽しかった。
ちなみに、お土産は松川湖の帰りに「伊豆のうさぎ」で購入。→ http://www.mapple.net/spots/G02201260204.htm
店の看板が可愛いし、店員さんは親切だし、お菓子も美味しかった。
ルービックキューブ記録2
いまいち調子が乗らなかった。
得物を変えた。
http://tribox.cart.fc2.com/ca2/328/p-r2-s/
下手すると回しているときにキューブが取れかねないが、素早く回せてGood。
ルービックキューブの滑りを良くした
最近ルービックキューブに少しだけハマっています。
以前も1回だけやったことがあったのですが、そのときは自力で2回ほど6面揃えただけで満足してやめてしまったのです。
しかし最近、会社の席の近くになぜかルービックキューブが置かれるようになり、触り始めるとやっぱり面白いので再開したという経緯なのです。
(ちなみに知恵の輪とかも置かれているが、こちらはあまりハマりませんでした。)
流石に自力で揃えるのは面倒なので、ネットで調べたのですが、スピードキューブというものがあることに気づきました。
世の中には素早く6面揃える人たちがいますが、だいたい方法は似ていて、パターンをたくさん覚えこんでいるというだけのようです。
ということで、一般人である私も練習すれば1分以内には揃えられるようになりそうなので、まずはそれを目標に始めました。
練習方法: http://www.pori2.net/LBL/practice.html
そして、反復練習を開始したのですが、ちょくちょくひっかかるのが大変煩わしく、そしてこのように煩わしいままに練習を続けるのは効率悪いし、ストレスも溜まりそうだと思い、今回滑りを良くよくすることを思い立ったのでした。
ターゲットにしたのは昔使っていたルービックキューブです。
色あせて赤色が白色になっていたり、シールが剥がれていたりして、どうせ使えないので失敗してもいいと思ったためです。
滑りを良くする方法は2つあるそうです。(組み合わせてもOK)
- 研磨剤を使う方法
- 潤滑材を使う方法
参考:http://www.planet-puzzle.com/faq/lub_sand.html
今回組み合わせて最高に滑りの良いものを作ろうと思って、以下の2つを購入しました。
ただし、結局潤滑材は使いませんでした。研磨剤だけで十分満足するほど滑りがよくなったのです。
また、ついでに色も張替えようと思い、以下のシートも購入しました。
- カラーステッカーキット: http://www.stlab.jp/csk/
サイズが2つあるのですが、15.5mmの少し小さいものを選ぶのがコツのようです。(貼るとき、少し中心がずれても致命的になりにくい)
ということで、前座が長くなってしまいましたが、以下が作業の流れです。
まず、古いルービックキューブの色をはぎ、ルービックキューブのエッジキューブを取り外し、研磨剤をたっぷり挿入。
ここで、一度にたくさんは挿入できないので、「エッジキューブを取り外して、研磨剤を挿入」→「はめて回す」を繰り返しました。
そのうちキューブの隙間から研磨剤が漏れ始めるので、そうすると挿入終了。
研磨剤を入れてからは、1週間くらいアニメをみたり暇なときにぐるぐる回していました。
これにより、ルービックキューブを使っていて引っ掛かりのあるところが削られ滑らかになるそうです。
(今回、恐らく全部で5時間くらいはぐるぐるしていたような気がします。)
ステッカーは、結構慎重に貼らないとずれてしまいます。
今回、一番最初に貼った白色の中心が少しずれてしまったのが心残りでした。
先ほど早速6面揃えてみましたが、すごく使いやすくて感動しました。
ということで、また楽しいルービックキューブの反復練習が始まります。
(追記)
潤滑材を付けると回転させるにに必要な力が減ってスムーズに回転できるようになりました。
- 研磨剤:引っ掛かりをなくす
- 潤滑材:滑りを良くする
ということなのかと思います。
Classの特異クラス
疑問:クラスメソッドのメソッド探索では、最終地点はClassだというが、Classの特異メソッドはどういう位置づけか?
「メタプログラミングRuby」では直接書かれていたわけではないので確かめてみた。
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2010/08/28
- メディア: 大型本
- 購入: 18人 クリック: 533回
- この商品を含むブログ (125件) を見る
メタプログラミングRubyに書かれていた図は以下のような感じだった。
- "c"は、カレントクラス
- "s"は、スーパークラス
- "#"は、特異クラス
- 緑の矢印は、以下のサンプルコードでのメソッド探索経路
- Classの特異メソッドを作っても、経路の最終地点はClassに収束するというのが面白い。
class Class def hoge puts "Class:hoge" end def hoge_not_eigen puts "Class:hoge_not_eigen" end class << self def hoge puts "EigenClass:hoge" end def hoge_eigen_only puts "EigenClass:hoge_eigen_only" end end end class MyClass end class << MyClass def hoge_my puts "ClassA:hoge_my" end end # (1)の経路を試すメソッド呼び出し MyClass.hoge MyClass.hoge_not_eigen puts MyClass.method_defined?(:hoge_eigen_only) MyClass.hoge_my puts "" # (2)の経路を試すメソッド呼び出し class << MyClass hoge hoge_not_eigen hoge_eigen_only end
標準出力は以下。
Class:hoge Class:hoge_not_eigen false ClassA:hoge_my EigenClass:hoge Class:hoge_not_eigen EigenClass:hoge_eigen_only
しかし、本当のところ、#Classのスーパークラスは図のように単純ではなくて、
#Class → #Module → #Object → #BasicObject → Class
となっている。(ruby 1.9.1p378 で確認)
ただし、通常#Object, #BasicObjectはすでに探索済みなので気にする必要はないので図からは省略した。
(恐らく「メタプログラミングRuby」の図もClassの上階層は省略しているのだと思われる)
class Class p superclass p superclass.superclass p superclass.superclass.superclass p superclass.superclass.superclass.superclass puts "" class << self p superclass p superclass.superclass p superclass.superclass.superclass p superclass.superclass.superclass.superclass end end puts "" class MyClass class << self p superclass p superclass.superclass p superclass.superclass.superclass end end
Module Object BasicObject nil #<Class:Module> #<Class:Object> #<Class:BasicObject> Class #<Class:Object> #<Class:BasicObject> Class