cocoa*life
早起き生活、始めました。
- 2009-08-05 (Wed)
- Life
以前は帰りに英語などをやっていたのですが、どうもそれだと疲れてしまって頭が働かない!ということで、朝にずらしてみました。
最近自分の周りで早起きさんが多いこともあり、少しでも仲間はいた方がいいです。
目標の生活としては
5:00 起床
5:00 – 5:30 モーニング・ページを書く。
5:30 – 6:30 入浴や準備など。
6:30 – 8:00 電車。
8:00 – 10:00 英語等。
という流れにしたいところです。
今のところはまだうまくいっていません。
起きるのが5:30以降だったり、今朝は5:00前に起きたのにもかかわらず、MacBook Proに麦茶をぶっかけてしまい一時起動不能になりモーニング・ページどころではなかったとかですね。
そして、そんな生活を支援すべく「早起き生活」というWebサービスに入り、記録を付け始めました。
milkcocoaの早起き日記 – 早起き生活
blogのサイドバー的なものに1週間分の記録を表示できるものを貼りました。

Powered by 早起き生活
これは朝起きてページを開いて、「いま起きた!」ボタンをクリックすればいいだけなので、楽ちんです。
できるだけ長く続けて、8月2日のように休みの日でも遅く起きるというようなことはできる限りなくしていきたいところ。
ちなみにMacBook Proは1時間半後に無事起動するようになり、内部を開けて少したまっていた水分を拭き取りました。
ぶっかけてあっっと思った1秒後、電源が切れ、液晶がぷーんと音を立てるような感じで電気が落ちて暗くなり、本当にオワタ\(^o^)/と思いました。
- Comments: 0
- Trackbacks: 1
Apple Push Notification Serviceを利用した、iPhone クライアントと、Rubyによるサーバの作成。
[とりあえず表示しましたが、これからコードをアップロードしたり改変していきます。]
先週から、システム部で何か動くものを作って発表するという企画?が始まりました。
プログラムプレゼンテーションを始めてみたら意外に良かった
第一弾は自分だったので、1週間しかなかったので、ちょこっとやればできそうで今までやってみたかったiPhone OS 3.0の目玉機能の一つ、Push Notification Serviceの実装をやってみることにしてみました。
iPhoneクライアントはほぼObjective-Cしかありませんのでそれを使い、サーバはRubyで実装しました。
以下が発表したスライドを少し改変したものになります。
コードは今回はbitbucket.orgにアップロードすることにしました!
コードはこちらになります。
http://bitbucket.org/milkcocoa/apns-test/
ただしサーバのファイルに関しては
- デバイスIDとかの部分はxでマスクしています。
- キーに関してはスライドで指定した方法で記述してください。
[ポイントを書く。]
- Comments: 0
- Trackbacks: 2
mislav-will_paginate pluginを使用したページをRSpecでテストする。
- 2009-07-19 (Sun)
- Ruby
Webアプリケーションでは、たくさんの項目を一覧表示する場合、1ページに全部見せるのではなくpaginate処理をして数ページに分ける場合があります。
たとえばGoogleの検索結果は通常、1ページに10件しか表示されません。
そういうページをRuby on Railsで作成する場合には、mislav-will_paginate pluginというプラグインを使用するということは割とよく知られていることです。
先日もそういうページを作成する必要があり、作成していましたが、RSpecでテストを作成しようとしたところやり方がわからず詰まりました。
そのため、その方法をここに記しておこうと思います。
ドキュメントを読もう!
実はGitHubのpluginのWikiページに最低限必要なことは書いてありました。
気がついていればもっと早く解決していたところでした。
「I’m getting “undefined method `total_pages’” error when rendering in the view!」という部分ですね。
ポイントはpaginateやtotal_pagesというメソッドをstub!で定義してあげることです。
実際のコード
- Controller: ArticlesController
- Model: Article
- title: string
- body: text
Controllerのテスト(の一部)
[$RAILS_ROOT/spec/controllers/articles_controller_spec.rb]
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe ArticlesController do
describe "handling GET /articles" do
before(:each) do
article = mock_model(Article)
article.stub!(:find).and_return([article])
@articles = [article]
@articles.stub!(:total_pages).and_return(1)
@articles.stub!(:paginate).and_return(@articles)
end
def do_get
get(:index)
end
it "should be successful" do
do_get
response.should be_success
end
it "should render index template" do
do_get
response.should render_template('index')
end
it "should find all articles" do
Article.should_receive(:paginate).with(:page => nil, :per_page => 100).and_return(@articles)
do_get
end
it "should assign the found articles for the view" do
do_get
assigns[:articles].should == @articles
end
end
end
ちなみに29行目の:page => nilになっているのは、たぶんassingsとかでparameterを指定していないからこうなるのだと思います。
まだshould_receiveをきちんと理解していないで、まともな説明が書けません。
Viewのテスト(の一部)
[$RAILS_ROOT/spec/views/articles/index.html.erb_spec.rb]
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
describe "/articles/index.html.erb" do
include ArticlesHelper
before(:each) do
article_98 = mock_model(Article)
article_98.stub!(:id).and_return(1)
article_98.stub!(:title).and_return('MyString')
article_98.stub!(:body).and_return('MyText')
article_99 = mock_model(Article)
article_99.stub!(:id).and_return(2)
article_99.stub!(:title).and_return('MyString')
article_99.stub!(:body).and_return('MyText')
@articles = [article_98, article_99]
@articles.stub!(:total_pages).and_return(1)
@articles.stub!(:paginate).and_return(@articles)
assigns[:articles] = @articles
end
it "should render list of articles" do
render "/articles/index.html.erb"
response.should have_tag("tr>td", "MyString", 2)
response.should have_tag("tr>td", "MyText", 2)
end
end
- Comments: 0
- Trackbacks: 0
Mac OS X LeopardでCD-ROMからisoファイルを作成する。
中途半端ではありますがファイルサーバもできたことなので、CD-ROMやDVDなどはできる限りHDDの中に入れておきたいなぁと考えています。
物理メディアはメディアを探すところから始まり、わざわざドライブに入れなくてはならなかったり、速度が遅かったりと面倒です。
そこでCD-ROMからisoファイルを作成することにしました。
目指すはWindowsでも読めるもの。
Windowsから作成してもよいのかもしれませんが、いちいち仮想環境を立ち上げるのは面倒なのでMacでやってみます。
使用するソフトはディスクユーティリティとターミナル。
- isoファイルにしたいCD-ROMをドライブに入れる。
- ディスクユーティリティを起動する。
- ディスクユーティリティの左側でCD-ROMがマウントされていることを確認し、そこをクリック。
- メニューの[ファイル] – [新規] – [〜からディスクイメージ]を選択。
- 「イメージフォーマット」を「DVD/CDマスター」にして、ファイルの保存先を選択する。これで.cdrというファイルが作成される。
- ターミナルで次のコマンドを打つ。
hdiutil makehybrid -iso -joliet -o 出力したいISOファイルの名前.iso cdrのファイル名
Windowsでは有名な仮想CD/DVDドライブであるDAEMON Toolsで読み込んでみたところ、無事に読み込むことができました。
- Comments: 0
- Trackbacks: 0
RubyでArrayの部分集合を作成する。
- 2009-07-10 (Fri)
- Ruby
Arrayの部分集合を作成する必要があったので、作ってみました。
class Array
def subset
rec = Proc.new do |univ|
# subset!でポインタが循環しないようにcloneを使う。
(ret = []) << univ.clone
univ.each do |e|
ret += rec.call(univ - [e])
end
ret
end
rec.call(self).uniq
end
def subset!
self.replace(self.subset)
end
end
他には同じサイズの配列を作成して、その要素を使用するかどうかtrueかfalseのフラグを立てていくという手法もあるようです。
irbで実行するとこうなります。
>> a = %w(1 2 3 4) => ["1", "2", "3", "4"] >> a.subset => [["1", "2", "3", "4"], ["2", "3", "4"], ["3", "4"], ["4"], [], ["3"], ["2", "4"], ["2"], ["2", "3"], ["1", "3", "4"], ["1", "4"], ["1"], ["1", "3"], ["1", "2", "4"], ["1", "2"], ["1", "2", "3"]]
2009/7/20 追記
twitterですばらしい方法を教えていただきました!
ただしRuby 1.8.7で追加されたcombinationというメソッドを使用しているので1.8.7以降限定です。
cf. Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち – (rubikitch loves (Emacs Ruby CUI))
class Array
def subset
(0..self.length).inject([]) do |ret, n|
ret.push(*self.combination(n))
end
end
end
irbでの実行結果。
>> a = %w(1 2 3 4) => ["1", "2", "3", "4"] >> a.subset => [[], ["1"], ["2"], ["3"], ["4"], ["1", "2"], ["1", "3"], ["1", "4"], ["2", "3"], ["2", "4"], ["3", "4"], ["1", "2", "3"], ["1", "2", "4"], ["1", "3", "4"], ["2", "3", "4"], ["1", "2", "3", "4"]]
すごくすっきりしました!
- Comments: 0
- Trackbacks: 0
ずいぶん時間をかけてtwitterの楽しさがわかりました。
- 2009-06-29 (Mon)
- Web
最近、twitterにハマりまくっています。
自分のアカウントはここです。
2年ぐらい前にアカウントを作ったものの、使い方がわからず、放置していました。
でも、最近ようやく楽しくなってきて、よくtwitしています。
何がおもしろいのか?
たぶん新しいことを知ることができるようになったとかそういうことではないかと思いますが、うまいこと説明できません。
あと、以前と比較してフォローする人を選んだということがあるのかもしれません。
ここ数年で、言葉で良さを説明しづらいものが増えてきた気がします。
MacやiPhoneしかり、おいでよどうぶつの森しかり・・・。
これは何を意味しているのでしょうか???
- Comments: 0
- Trackbacks: 0
13-inch MacBook Proを購入しました。
- 2009-06-28 (Sun)
- Apple
自分が使っているコンピュータは2006年5月に発表された初代MacBookです。
これにはメモリを2 GB積むことができて、実際に2 GB積んでいます。
自分は大量のアプリケーションを起動して放置、という使い方をしているため、スワップが発生しまくっていてかなりストレスがたまる状況でした。
以前から、新しいOSであるSnow Leopardが発売されてから新しいものを購入すると決めていたのですが、Snow Leopardが発売されてすぐにインストール、というのは互換性のためなかなかできなさそうな状況になってきたので、先日発表・発売された13-inchのMacBook ProをApple Store Shibuyaで購入しました。
購入したのはCPUが2.53 GHzの方のものです。
USキーボードにしてもらったので、型番がMB991JA/Aという微妙に通常の元は違うものになりました。1
本当はメモリを8 GB積みたいのですが、まだまだ高いので値段が下がるまで待つということに決めています。
ちなみに、8 GBのメモリを積める(公式に)というのは、自分にとって選択の上で重要な基準でした。
質感が本当にいいですね。
いろいろと感動しています。
あまりにもいいので、傷がつかないかと心配になります。2
画面もとても色鮮やかできれいになったのがうれしいです。
が、、、相も変わらずきもい自分の顔が写り込むのにはげんなりしますwww。
使ってみた感想は、メモリがとりあえずスワップしない程度に足りているからか?とにかく快適です。
今使っているMacBookすぐにファンが回り出してうるさくなってしまうのですが、こちらは本当に静かです。
一つ残念なことがあるとすれば、自分の個体だけかもしれませんがイヤホンで音を再生すると無音時にホワイトノイズが乗ることです。
現在、移行作業をちまちまやっているのですが、だいぶん中がごちゃごちゃしてきたので、今回はTimeMachineを使って巻き戻すということはしませんでした。
未来の自分のためにも、せっかくなので移行手順を以下に記していこうと思います。
まだ途中なのでこれからもアップデートを続けていきます。
- ユーザー登録
- アップデートが表示されているので(既にダウンロードは終わっている)インストール
- ファームウェアのアップデート(Bluetooth、SATA)
- MobileMeの登録。
- MobileMeでアドレス帳、カレンダーの転送
- 細かな設定
- システム環境設定
- セキュリティ
- 「一般」 – 「このコンピュータをスリープ状態またはスクリーンセーバから解除するときにパスワードを要求」
- 「ファイアウォール」 – 「特定のサービスおよびアプリケーションにアクセスを設定」
- トラックパッド
- 「スクロールの速さ」を最大に
- 「1本指の操作」
- 「タップでクリック」、「ドラッグ」にチェック
- 「2本指の操作」
- 「セカンダリータップ」にチェック
- キーボードとマウス
- 「キーのリピート速度」- 「速い」
- 「F1、F2などのすべてのキーを標準のファンクションキーとして使用」にチェック
- 「日付と時刻」
- 「時間帯」 ー 「最も近い都市」を「東京 ー 日本」にチェック
- 「時計」 ー 「秒を表示」にチェック
- セキュリティ
- Finder
- 「拡張子を変更する前に警告を表示」のチェックを外す
- 「ゴミ箱を空にする前に警告を表示」のチェックを外す
- Safari
- 「一般」- 「履歴からの削除」を手動(履歴は財産)
- 「自動入力」 – 「自動入力Webフォーム」のチェックをすべて外す
- Terminal
- 既存のMacBookのターミナルの設定を書き出し、コピー
- システム環境設定
- インストール
- フォント
- Bitstream Vera ~
- http://www.dafont.com/search.php?psize=m&q=bitstream+vera
- Bitstream Vera ~
- 辞書
- Ruby, Ruby on Rails, jQuery Dictionaryのインストール
- http://www.priithaamer.com/blog/
- Ruby, Ruby on Rails, jQuery Dictionaryのインストール
- Adobe Illustrator CS3
- あらかじめ移行元でライセンス認証を解除しておく。
- ATOK 2008
- 「ATOK風の入力」でインストール
- カスタマイザで「MS-IME風スタイル」を選択
- 言語環境でことえりのチェックを消す
- Audium
- Dock用のアイコンをダウンロード http://www.adiumxtras.com/index.php?a=search&cat_id=1
- ChemDraw
- Web上で購入したので購入したメールを検索し、リンクからダウンロードすることができる。
- Chromium
- http://build.chromium.org/buildbot/snapshots/chromium-rel-mac/
- ClipMenu
- 「一般」 – 「ログイン時に起動」
- 「一般」 – 「ショートカット」 – 「ClipMenu」をCtrl + Shift + Jに
- 「メニュー」 – 「記憶する履歴の数」を100項目に
- 「メニュー」 – 「インライン表示する項目の数」
- delimport
- v0.2をインストールしてから、v0.3を上書きする。
- v0.2をインストールして、すでに一度起動してしまっていた場合(アクティビティモニタで調べられる)、強制終了し、~/Library/Preferences/org.ianhenderson.delimport.plistを削除、v0.3を上書きした後に、再起動する。
- DivX
- FileMagnet
- Growl
- Extrasにあるgrownotifyを/usr/local/binにコピー
- Google Earth
- iPalette
- iWork ‘09
- LaTeXit
- http://www.cocoalife.net/2007/02/post_121.html
- Lingon
- MacKeyholeTV
- Xcode
- XQuartz
- MacPorts
- sudo port install zsh-devel +mp_completion +pcre
- sudo vi /etc/shells に /opt/local/bin/zsh を追加。
- 「システム環境設定」の「アカウント」の中の自分のアカウントを右クリックし(あらかじめ、左下の鍵マークをクリックすることで「解錠」しておく)、「詳細オプション」 – 「ログインシェル」を /opt/local/bin/zsh にする。
- screen
- http://thug4dev.com/index.php?/archives/217-MacPorts-Screen-4.0.3_3.html
- ruby +mactk +thread_hooks
- rb-rubygems
- sudo gem install nokogiri
- sudo gem install mechanize
- sudo gem install rails
- sudo gem install rspec-rails
- sudo gem install mysql — –with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config
- sudo gem install passenger
- LoadModule passenger_module /opt/local/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so
- PassengerRoot /opt/local/lib/ruby/gems/1.8/gems/passenger-2.2.4
- PassengerRuby /opt/local/bin/ruby
- sudo gem install rb-skypemac
- mercurial +zsh_completion
- sudo port install apache2
- sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
- sudo port install mysql5-server
- sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
- sudo -u mysql mysql_install_db5
- sudo port install ptex +utf8
- sudo port install sshfs-gui
- sudo port install subversion +unicode_path
- sudo port install vim +ruby
- sudo port install zsh-devel +mp_completion +pcre
- RealPlayer
- Papers
- あらかじめアクティベーションを解除しておく。
- Remote Desktop Connection for Mac
- SIMBL
- GreaseKit
- oAutoPagerize
- pbtweet
- SafariReloadButton
- SafariStand
- Action
- SafariRefManage
- SafariTabConfig
- SafariTabMemento
- 「閉じたタブを開き直す」にキーを割り当て
- TerminalColoreopard
- GreaseKit
- Skype
- ~/Library/Applicaiton Support/Skypeに履歴があるのでフォルダを丸ごとコピーする。
- Firefox 3.5
- GreaseMonkey
- Firebug
- FireMobileSimulator
- TextMate
- Railscasts Theme http://railscasts.com/about
- Carbon Emacs
- TabExposé
- Tweetie
- Parallels Desktop for Mac
- Perian
- OmniFocus
- Mailplane
- Omnifocusプラグイン
- Flip4Mac
- Office 2008 for Mac
- http://www.microsoft.com/mac/downloads.mspx
- フォント
- Comments: 0
- Trackbacks: 0
初めてTOEICを受けました。
いよいよ、英語ができるようにならないとまずいなぁと言うことで、5月の末に生まれて初めてTOEICを受けました。
受けた人からは慣れが重要だと聞きました。
今回は、生まれて初めて受けるということで、700点を目標にしました。
その割には5月はだらけて、ほとんど直前にしかやらなかったのですが。。。
やっていたこと。
- 今年の1月からちんたらやっている、この問題集。
英文解釈教室
著者: 伊藤和夫
ページ数: 314ページ
出版社: 研究社
発売日: 1997年6月当初よりはだいぶん遅いのですが今13章が終わりました。
残りは2章です。 - Railscastsを聴く。
- 直前に一度やったのはこの問題集。
新TOEICテストスーパー模試600問
著者: George W. Pifer
ページ数: 496ページ
出版社: アルク
発売日: 2006年12月21日かなり難しくて、いやそれ以上にちゃんとやれば解ける問題に引っかりまくって、予想スコアが600点ぐらいなのが悲しかったです。
ただ、1回やっただけのこの問題集で多くのことを得ました。- リスニングは文の最初がなにから始まっているのか、それによってどう答えるかが決まってくるので、その部分を注意してもしすぎることはないということ。
- 時間が足りないということ。
- 自分は文法問題よりも長文問題の方が点数がよく、この問題集では時間が足りずに長文ができなかったのでかなり損をしていたということ(しかるに本番では長文からやりました)。
本番はなんとか全部解ききることができました。
結果は755点でした。
上記のように700点が目標だったので、初回としてはなかなか嬉しい結果となりました。
解いている途中、模試よりも簡単な気がするなぁと思ってはいましたが、引っかけにはまりまくっているかもしれないと思って今ひとつ自信が持てませんでした。
喜んではいますが、もちろんこれでいいはずがなく、900点越えを目指してがんばっていきます。
最近リスニング能力が落ちたような気がするので、シャドーイングを再開しないといけませんね。
P.S.
誤算は、持って行った消しゴムではなかなかきれいにマークシートを消せなかったこと。
リーディングの最後の方の問題がなかなか消えなくて、マークシートを若干汚してしまいました。
リーディングの方が5点低いのはそのせいかも、なんてねwww。
- Comments: 0
- Trackbacks: 0
「英語順! しゃべれる英文法」を読みました。
抽象的な原理を学ぶことは、一見パターンから外れたものを考えるときに、威力を発揮する。
英語順! しゃべれる英文法
著者: 西巻尚樹
ページ数: 199ページ
出版社: あさ出版
発売日: 2006年11月25日
この本は、I am up for cakes all the time. が「ケーキは別腹」というように、今までの学校文法では解釈が難しいような「簡単な動詞 + 簡単な前置詞」の組み合わせで表現される例文を、どのように解釈したらよいのか?ということについてその考え方、ロジックを教えてくれる。
基本的な動詞は、その動詞自体が持つ意味を抽象的にぼやかしておいて、前置詞のような修飾語を使われると初めて意味が立ち上がってくるように作られている。
このために非常に柔軟であり、かつ膨大なパターンが考えられる。
この場合それを解釈するためのロジックがないと、全部暗記しなければならないようになってしまう。
そこでこの本でそのロジックを学ぼうという触れ込みになっている。
基本的なロジックは次のようなものである。
- 動詞は動詞であるから、主語がどのような状態にあるのかとか、主語が目的語をどうするかとかなどのことを意味している。
- その後ろにある前置詞は、上記動詞による動作がどのように行われるのか?もしくはその動作が行われた結果どうなるのか?などを副詞的に修飾している。
たとえばkeep up withとcatch up with、この二つについては、動詞の違い、つまりkeepはその状態を維持する、catchは捕まえるというところから違いが出てくるということになる。
また共にupは「一定の状態にあがるとか、なる」とかいう意味になるので、keep up withは「〜と一緒にいる状態になることを維持している = 〜についていく」と解釈できるし、catch up withは「〜と一緒にいる状態になることを捕まえる = 〜に追いつく」という風に解釈ができる。
I am up for cakes all the time. の方はというと、わたしは常にケーキに対しては一定の状態(準備ができている状態)であるということになり、ケーキは別腹という風に解釈ができる。
この本を読んでいたら、今まで本当になんにも考えずに覚えていたのだなということがよくわかった。
もちろん完全にロジックで説明し尽くすということは難しく、所々無理矢理感はある。
そう感じるのは、自分が英語の感覚を理解していないということからくるのかもしれないので、これについての判断はまだできないのではないかと考えている。
とりあえず頭の中にこういう風に解釈するのだということを入れておいて、あとはたくさんの例文に触れるようにすると、言語ではなかなか説明できない実際のニュアンスとのギャップを埋めることができるのかもしれない。
薄い本にもかかわらず英文1文1文を考えながら読み進めると、なかなか時間がかかる。
しかしながら練習をするということは、自分の内面に落とし込むためにとても大切で、そこを乗り越えると腑に落ちてくる瞬間が訪れると自分は信じている。
ロジックと練習、これらは車の両輪である。
- Comments: 0
- Trackbacks: 0
「レスラー」を観ました。
渋谷で「レスラー」という映画を観てきました。
シネマライズという映画館ですが、平日学生は1,000円なのがとてもいいですねw。
主人公はミッキー・ローク扮するレスラーのランディ。
いろいろなものを失い、一度はレスリングを離れる。
そこで新たな道を模索するけれども、さらに追い打ちをかけるように、彼の大切な人ことすべてを失ってしまう。
そのとき、彼はもう一度大好きなレスリングにコミットし直す。
山月記の主人公、李陵が言うように「人生は何事もなさぬにはあまりにも長いが、何事かをなすにはあまりにも短い。」のであって、彼にはレスリング、そこにしかもはや自分の道や居場所がないということを人生から思い知らされ、気づいたから。
すべてを失ったとき、本当に大切なものだけが残る。
Steve Jobsが2005年のStanford大学での卒業記念講演で
-
Remembering that I’ll be dead soon is the most important tool I’ve ever encountered to help me make the big choices in life.
Because almost everything — all external expectations, all pride, all fear of embarrassment or failure – these things just fall away in the face of death, leaving only what is truly important.自分がもうすぐ死すべき存在だということを覚えておくことは、わたしが人生で大きな選択をしようとするときに最も重要なものとなった。
というのは、それがすべてだから。
すべての外的な期待、困難や失敗への恐怖、これらは死というものに面したとき、崩れ落ち、本当に大切なものだけが残るのだから。
と語ったことが思い出された。
そんな状態の自分を救えるのは、残念ながら自分だけしかいない。
それは残酷でもあれ、しかしながら自分自身で決めることもできるという希望の光にもなる。
そのことに気がついたとき、ランディも自分を救おうとし、自分の居場所を自分で作り出そうとする。
だからこそ、泣きながらでも走るしかなく、最後まで全力でコミットしぶつかろうとするのだ。
見終わってエンドロールが流れている間、ふと、今の自分に重ね合わせた。
後になってぐっと来た映画だった。
- Comments: 0
- Trackbacks: 0






