ActiveRecord::Store 便利

 ActiveRecord で、条件によってカラムが変わったりするのを serialize した列にテキトウにぶっ込んでおくというありがちな実装の時に、実カラムのように透過的に扱えて validation とかも簡単にかけられる ActiveRecord::Store ちゃん便利。

 例えば、SNSのアカウントを sns_accounts 列に Serialize して入れる場合(普通入れないが…)

ActiveRecord::Store を使わない時

class User
  serialize :sns_accounts, Hash
end

とかして、以下のような感じにします。

user = User.new
user.sns_accounts = {twitter:'ecpplus', github:'ecpplus'}

ActiveRecord::Store を使った時

class User
  store :sns_accounts, accessors: [:twitter, :github]
end

としておけば、下記のような感じに出来ます。

user = User.new
user.twitter = 'ecpplus'
user.github = 'ecpplus'

validation したい時も特に何も考えず、通常の列と同じようにすればOKです。

class User
  store :sns_accounts, accessors: [:twitter, :github]
  validates :twitter, presence:true
  validates :github, presence:true
end

Controller から使う時は、Strong Parameters で permit してあげるのを忘れないであげてね!

params.require(:user).permit(:twitter, :github)
ActiveRecord::Store 便利

git でオレオレ証明書のサーバを使う

https://example.com/LoveLive.git
という、オレオレ証明書なサーバがあったとして、そこから https 経由で git clone とかする方法。

clone

% GIT_SSL_NO_VERIFY=1 git clone https://example.com/LoveLive.git

pull, push とかやるときにいちいち付けるのは面倒なので、.git/config に設定を書いておくと次から要らない。

.git/config

[http]
     sslVerify = false

あと、Basic認証がかかってた場合もいちいち入力するのは大変。OSXだと、キーチェーンに認証情報を保存出来る。さっきのところに追加する形で、

.git/config

[http]
     sslVerify = false
[credential]
    helper = osxkeychain

と書けば1回だけ入力すればOK

git でオレオレ証明書のサーバを使う

築地市場の朝は早い

 月島は結構行ったけど築地は全然行ってない!というのもあって、友達と朝の市場に行ってみようということになったのだけど、日付間違えてぼっちで行くことになったのでぶらぶらしてきた()といっても、明日も行く予定だ。

DSC_0636.jpg

 築地市場&勝鬨橋。深夜は船も行き来してたりするけど、日中は静かな所だわ。まだ日が昇りかけでなんとも言えない光の色をしてる。

 勝鬨橋から行ったんで、波除稲荷神社側から入ってみた。どこが入り口かよくわからないけど、一般っぽい人がたまに歩いてるので、ついてった。外国人観光客が結構いたよ。場内の飲食店が並んでる一角に行くと、すごい並んでた。お寿司屋さんは人気みたい、一部のお店は30人くらい?並んでたよ。まだ6時というのにすごい。
 
 DSC_0638.jpg

 飲食店側は長い列を作って並んでる。お寿司、ラーメン、牛丼、定食、海鮮丼、とかのお店があったよ。

DSC_0640.jpg

 飲食店以外に、店舗もあった。でもそっちに来てるのはプロの人が多かったようだわ。場外に雰囲気似てるかも。

2013-03-26-06.27.47

 定食屋さんで魚のフライ定食食べた。6時から何てものを…。

 お腹いっぱいになったんで、場外もぶらぶらしてきたけど、日中はやってないお店が開いてるのでいつもと変わった雰囲気。場外にもお店たくさんあるけど、混んでるのは場内だったわ。朝しか場内やってないし、せっかく来たから…というのはありそう。6時であんな行列とすると、始発より早い5時頃に行くのがベターな気がする。もっとも、近隣に泊まってる観光客の人も割といそうなのでどっちにしても並ぶ気もする。

DSC_0642.jpg

 モカとキリマンジャロのコーヒー豆買って帰ってきた。ここのお店も割と早い時間にしまっちゃってなかなか買えなかったのよね。

DSC_0692.jpg
DSC_0661.jpg

 月島川は桜がいい感じに咲いてた。朝の散歩は気持ちよす。

築地市場の朝は早い

六本木アートナイト

 土曜日の夜に、六本木アートナイト行ってきた。六本木の色んなところで展示とかパフォーマンスやってたり、美術館が開放されてたり、お祭りっぽい雰囲気はある。今年初めてだったので、特に目的なくどんなモノなのかなーって観に行った感じ。

 DSC_0591.jpg

DSC_0597.jpg

 新国立美術館では、カリフォルニア・デザイン 1930-1965 -モダン・リヴィングの起源-が無料開放されてたので覗いてきた。美術館って夜やってないから、夜の美術館に入るというのはなかなかないことかも。カリフォルニアまた行きたい。

 野外にしてある展示は、震災復興に関わるものが多かった気がする。ただ、自分にはレベルが高すぎてピンと来るものがあまり無かったかも。来年もヒマだったら来てみようカナ。これはひどい。小学生並の感想だった。

DSC_0602.jpg

DSC_0604.jpg

DSC_0615.jpg

DSC_0628.jpg

DSC_0629.jpg

六本木アートナイト

自由落下とピノキオ

DSC_0578.jpg

 分島花音さんのライブ、自由落下とピノキオに行って来ました。吉祥寺にある STAR PINE’S CAFE っていうライブハウス。吉祥寺のライブハウスって初めて行ったかも。良いとこでした。花音さんのライブはラフォーレ原宿以来だったんで2年以上ぶりだったよう。

 今日は、ストリングスとパーカッションとピアノ。ヴァイオリン、ヴィオラ、チェロ、パーカッション、ピアノという楽器でした。音好きな楽器ばかりだった。未発表の曲が6,7割っていうことだったのだけども、楽器がストリングスということもあって他の曲も新しいアレンジで楽しかったよ。ライブのタイトルは、ピノキオは操り人形で、自由落下は衛星のように落ちてくけど落ちない地に足がついてないふわふわした状態、というのを曲にしたくてつけたそうです。

 ここでしか聴けない曲ってのはとても贅沢な感じ。もし将来音源化されたとしてもそれはそれで楽しみ。温かいライブでした。またあったら行きたいな。

 CD買ったら直筆サイン色紙もらった。2枚目のファールプレーにくらりw

 タイトル曲の「自由落下とピノキオ」(Ustream)

自由落下とピノキオ

CoreData の O/Rマッパー MagicalRecord を使う

magicalpanda/MagicalRecord

CoreData の ORMである MagicalRecord の導入メモ。

メソッド名は Rails に近い感じです。何より MagicalRecord っていう名前がお気に入りなので使っています。

導入

動作条件は、

MagicalRecord Platform Requirements:

iOS5.x or newer, or Mac OS 10.7 and newer
ARC

とのことです。

CocoaPods が使えます。Podfile に追加してインストール。

Podfile

platform :ios, '6.1'
pod 'MagicalRecord'
% pod install

プロジェクトの .pch ファイル “{プロジェクト名}-Prefix.pch” で MagicalRecord を読み込みます。

{プロジェクト名}-Prefix.pch

#import <availability .h>
 
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
 
#ifdef __OBJC__
    #import <uikit /UIKit.h>
    #import <foundation /Foundation.h>
 
    #define MR_SHORTHAND
    #import "CoreData+MagicalRecord.h"
#endif

こんな感じで読みこめばOKです。MR_SHORTHAND を追加すると、短いメソッド名が使えるようになります。

次に、Build Phases の設定から、Link Binary With Libraries へ CoreData.framework を追加します。
Link Binary With Libraries

最後に、ApplicationDelegate.m の起動処理あたりで、初期化処理を呼べば準備は完了です。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // 初期化処理
    [MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"nakamoto.sql"];
    return YES:
}

使い方

オブジェクトの保存

CoreData でのモデルの作り方は通常と同様です。Photo(photoId: Integer32, comment: String, tag: String) とかテキトウに作って試してみます。

NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
 
Photo* photo = [Photo MR_createEntity];
photo.photoId = [NSNumber numberWithInt:"121"];
photo.comment = @"北極たべます";
photo.tag     = @"ramen";
NSError* error;
[photo save:error];

オブジェクトの取得

1つ取得

Photo *photo = [Photo findFirstByAttribute:@"photoId" withValue:[NSNumber numberWithInt:"121"]];

全部取得

NSArray *photos = [Photo findByAttribute:@"tag" withValue:@"ramen"];

更新

NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
Photo *photo = [Photo findFirstByAttribute:@"photoId" withValue:[NSNumber numberWithInt:"121"]];
photo.comment = @"すみません。冷やし味噌にしてもいいですか?";
NSError* error;
[context save:error]

削除

Photo *photo = [Photo findFirstByAttribute:@"photoId" withValue:[NSNumber numberWithInt:"121"]];
[photo deleteEntity];

昔使ってたときは、 save だと上手くいかないパターンがあって saveNestedContexts を使ってたんだけど、今の最新版の 2.1 だと deprecated になってたので save を使っとこう。

CoreData の O/Rマッパー MagicalRecord を使う

今年初めてツーリングに行ってきた

 土曜日にスキーに行ったらポカポカ春みたいだったので、日曜日に今年初めてのツーリングに行ってきた。朝5時くらいに起きたけども、どこ行くかダラダラ考えてたら出発したの7時前くらいになってた。北は寒いかもしれないので、伊豆方面を目指すことにした。家出て何か忘れてるなー、と思ったらレスプロの防塵マスク忘れてた(‘A`) あれ割と花粉症に効くのよね。もっとも、乗る時点でほぼ諦めたほうがいいのだけれども。むしろ毎日してればいい。

 首都高抜けて東名入ったら意外と車走ってた。初めて箱根のターンパイク走ってみたのだけども、山の陰とかに凍結注意ってかいてあるとこが濡れてて本当に凍ってそうで怖かったわ。標高高くなって景色良いという辺りにつく頃には道のわきに雪が残ってて、Pに止まる頃には完全ガクブル状態になってたのと、春の湿度のせいなのかPMなんとかのせいなのか空気が霞んでて何も見えなかったのでさっさと退散した。寒かったけど、道は気持ちよかったヨ。他にもバイクで走ってる人たくさんいた。みんな集団で走ってて、ぼっちツーからすると羨ましい気もちょっとする。でも割と年上の人達ばかりだよね。そのまま伊豆スカイラインに抜けたのだけども、こっちも空気濁りすぎてて景色はほとんど見えなかった。伊豆スカイラインはさすがにたくさん走ってる人いて賑やかだった。

 スカイライン抜けたあたりでもう行く所無くなってテキトウにぶらぶら走ってたら、城ヶ崎海岸の辺りの海岸沿いに桜が咲いてた。城ヶ崎桜というらし。今日はとにかく風が強くて、まったり桜を見るという雰囲気じゃなかったけど今年はじめて桜みたので良かったよ。

DSC_0520.jpg

 花粉か砂埃か目がつらくなってきたので、近くにあったぼら納屋って言う所でお昼ごはん。鯵のひっぱだき丼っていう、朝獲れのアジ食べた。獲れたては美味しい。横の席の人は午前中からお酒飲んでた。

DSC_0540.jpg

 海は綺麗だったけど、空気はもやっとしてる。ボケーっとしてたら後ろでカップルが見てたので退散。ぼっちツーにありがちなこと。あとたまにあるのがカップルに、すみません写真いいッスカ?って言われるアレ。いい度胸。

DSC_0543.jpg

 伊豆の辺りって怪しげな人形の博物館的な看板をたくさん見かけるけど、いつか1つくらい入ってみたい。通りかかったXIV伊豆って小さい頃よく行ってたけど、あそこたまには行ってみたいナ。この辺が風のピークで、バイクが煽られて浮くような感覚になるのと、スタンド付けてても風で倒れるんじゃ?って不安になる現象。そんなんで熱川で温泉に入ろうと思ったのだけども、迷ってるうちに通りすぎてしまったわ。

 途中に、「展望台→」ってあったので横道に入ってみた。よくあるのはバイクで5分くらい走ればポコっと景色の良い高台に出たりするもんだけど、走っても走っても開けた場所に出ないどころか、だんだん道が狭くなってきて、ガタガタした町道になってた。細野高原ってとこだったんだけど、細い道ながら頂上付近までバイクで行ってOKだったので上がってみた。ちょっと脱輪したらそのまま下まで落ちそうで怖かったんだけど、一番上の駐車場まで上がってみた。他にジープが1台いて入れ違いになったんだけど、降りてくときエンジンブレーキがものすごい音してて大変そうだったわ。写真に見える道のようなところを延々と進んでいく感じ。

 元がどうなってたかわからないけど、山の斜面はすすきが生えてるようだった。向こう側に太平洋が広がってるはずなんだけど、空気が霞んでて海は見えなかった。ここは海が見えたら本当に綺麗だろうなー。とは思うけども、常に湿度高そうだし、澄み渡る景色が見えるときはレアそう。あんまり見られないタイプの風景だったので来て良かった。

DSC_0551.jpg

 途中も森の中をくぐって来たのだけど、魔女の森っぽくて怖い。このフラクタル感がなんとも。

DSC_0558.jpg

 山頂に来たら風がものすごかった。ハンググライダーに関する標識が出てたんだけど、こんなところ飛べたら超気持ちよさそう。高いとこ怖いけどな。

 山から下りてちょっと南にいったら、河津で桜まつりっていうのやっててめっちゃ混んでた。あまりに混んでたんでスルーして山を抜けて帰るカーと思ったら、天城超えで大渋滞してた。そのまま延々と下道を走り、三島についたのでうなぎ食べて温泉入って帰ることにした。バイクは南口しか停められないらしい。北口で彷徨ってたら、道を間違えると学校が延々続いてる道に出てなかなか折り返せない罠があった。あと南口駐輪場の入り口わかりづらすぎw アコムの看板を目印に細い道を曲がると行ける。1回150円、安い。

 テキトーに食べログで調べて駅前の不二美っていう鰻屋さんに入ったけど、駅前を歩いてみた感じあんまり鰻屋さん自体が見当たらなかった。鰻久しぶりに食べたよ美味しかった。あとお刺身も分厚くて良い感じだった。

DSC_0564.jpg

DSC_0563.jpg

 ちょっと足りなかったので、向かいにあった らーめん煌 というお店に入った。

DSC_0565.jpg

 店の前に書いてあった塩わさびラーメンというのが気になって食べてみた。静岡ってわさびも有名よね。いつも中本しか食べないから比較対象がアレだが、そのまま1口食べたところさっぱりしてて良い感じ。わさびテキトーに溶かして食べてたら塊食べてむせた。ラーメン食べてほかほか温まったので、温泉をググる。天然温泉極楽湯が近かった、ここ前も行ったんだけど場所が便利すぎなのよね。R1からちょっと入ったところにある。感謝Weekみたいなキャンペーンで安くなってた。温泉入るとき、なんとなく値段で入る時間が左右されてしまう傾向。高めの料金だとなんとなく長湯しちゃう。今回は安くなってた分、早風呂。前行ったとき0時頃でガラガラだったけど、今回は19時前で結構混んでたな。

 温泉であったまって、高速で帰宅。新東名の方が北にある(遠い)のに、入口の標識は新東名の方が先にあって新東名に入らされた。前も同じ道をたどった気も…。新東名のほうが真っ直ぐで広くて走りやすいのでおk。今日最低気温10度ってなってたけど、あれって朝だけだよね。夜は明らかに10度以下になってて凍えながら帰ってきた。罠すぎる。あと首都高汐留出口の信号が長すぎワロタ。あれ海岸通りの方をたくさん流すようになってるはずだから1つ先の銀座で出たほうが早いのでは、という気がする。

 花粉はしんどすぎたけど気持よかったんでおk。今年のGWは1週間くらい四国中国九州あたりをブラブラ出来たらいいなー。

今年初めてツーリングに行ってきた