undefined method `mtime' for nil:NilClass(i18n-js)
RailsでJavaScriptの国際化をするライブラリは今のところi18n-jsが有名です。
暫く使っていなかったのだけど、久しぶりに使う機会がきたのでgithubを見てみたら便利になってた。なんとassetsを有効にしている環境なら以下の2行を追加するだけで動いてくれるらしい。
//= require i18n //= require i18n/translations
早速やってみた(Rails3.2.12)ら「undefined method `mtime' for nil:NilClass」というエラーが発生。調べてみると"rake i18n:js:setup"でconfigファイルを作ってやれば動くとのこと。
・・で、configファイルを作ったら無事動きました。ちなみにtranslations fileを指定したりする必要は無いようです。前回使った時はtranslations fileがgrepの時にひっかかりまくってうざかったんですよね。それが無くなるだけでかなり快適。
Rails + Sass + Compass環境でTwitterBootstrapのvariablesを変更する
【注意】この情報古いっす。bootstrap-sassのgithub見てください。もっと簡単にできます。
bootstrapの公式サイトには Customize variablesというページがあって、これを変更する事によって色などを変更したbootstrapをダウンロードできます。これをRailsで変更したいという時にどうするか。
環境は、Railsが3.1.12で、gemは bootstrap-sass, compass-railsを使用しているものとします。
bootstrap-sassではこのファイルで全てのvariablesが宣言されているので、これを上書きしえてしまえばいいわけです。
ファイル構成
以下の様な構成でファイルを作成します。
app/assets/stylesheets/ ├── application.css.scss ├── bootstrap │ └── _variables.scss # variablesを定義する場所 ├── bootstrap_load.css.scss # bootstrap読み込み用 └── layout.css.scss # 独自の定義など
各ファイルの内容
app/assets/stylesheets/bootstrap/_variables.scss
$tableBackground: #fff; // 例えば@tableBackgroundを上書きしたいならこんな感じ。
app/assets/stylesheets/application.css.scss
@import "compass";
app/assets/stylesheets/bootstrap_load.css.scss
@import "bootstrap/variables"; // _variables.scssで変数を上書きしている @import "bootstrap"; @import "bootstrap-responsive";
app/assets/stylesheets/layout.css.scss
// 独自に定義したスタイルを書く
大体こんな感じ。app/assets/stylesheets/bootstrap/_variables.scssはsass-railsと同じディレクトリ構成にしておいた方が分かりやすくていいかなと思ってこうやってます。bootstrap-sassが推奨のテンプレをgenerateしてくれるといいんだけどなあ。
Haml 4.0 has been released!!
Haml4.0でた。
http://blog.haml.info/post/42998475354/haml-4-0-has-been-released
CHANGELOGはしっかり読んでないけど、一個だけサンプルコードが書いてあって、これは個人的に嬉しかったな。
Haml now flattens deeply nested data attribute hashes. For example: .foo{:data => {:a => "b", :c => {:d => "e", :f => "g"}}} would render to: <div class='foo' data-a='b' data-c-d='e' data-c-f='g'></div>
いい。
はてなブログのiPhoneアプリ
iPod touch 欲しい! id:hatenablog
落としてみたけど、なかなか良い感じ。
ブログはPCで書くからいいやと思っていたけど、そういえば下書きの記事はちょいちょいスマホから書き足せると便利だと感じた。
iPhone4Sのバンパー系ケースに使えるUSBケーブルのスペーサー
【iPhone4S/4対応】iphone ケース プレミアム BLADE Black/Red
- 出版社/メーカー: Tiger Design
- メディア: エレクトロニクス
- この商品を含むブログを見る
今までiPhone4SのケースはEdyを入れられるものを使っていたんだけど、Edyは定期入れに入れる事にしてバンパー系のケースを買いました。Bladeってやつでなかなか良かったんだけど、これを付けてしまうと充電する時にApple純正のUSBケーブルじゃないと刺さらない事に気付く。
100均のiPhone用USBケーブルが使えなくなるのは困るので、スペーサーを探したところ、2000円以上するものが有名で確実そうだったが、自宅用・外出用・職場用に買ったら6000円を超えてしまう。さすがにそれはないだろって事で安いのを探したら手頃なのを発見。
30pinスペーサーII for iPhone/iPad ホワイト
- 出版社/メーカー: ネクストゼロワン
- メディア: エレクトロニクス
- この商品を含むブログを見る
これです。現時点で1個270円。純正ケーブルと同じ幅で充電出来ました!さんざんネットでググったんだけど、Blade使ってて充電できたってレビューが見つからなかったので、刺さってよかったです。
ELECOM iPhone4/4S 対応 スマートフォン用ヘッドホン延長ケーブル 4極 S型 0.1m ブラック MPA-EHPS01BK
- 出版社/メーカー: エレコム
- 発売日: 2010/12/21
- メディア: エレクトロニクス
- 購入: 4人 クリック: 17回
- この商品を含むブログを見る
イヤフォンジャックも普通の形状のものは刺さらなくなったので、延長ケーブルを購入。バンパーケースを買うと金がかかるなあ。
Webアプリケーションのモデル設計
Forkwell12月17日(月)のニュースレターから引用。
Forkwellでもご多分に漏れず、モデル設計を最初にしっかりと考えこんで作りました。
特に、なるべくコードレベルでシンプルに、少ないコードで行きたい、と考えていました。
例えば単一テーブル継承(STI)やポリモーフィズムなどを利用して可能な限りシンプルに作ったり、
ひとつ変更すれば関連するモデルが更新されるようなフックを仕掛けたり、といったところです。ところが、これらには罠があります。
それは、開発した当人たちにとってはわかりやすくても、途中からジョインした人たちはパッと見
良くわからない(=読みにくい)、というところです。
現にForkwellチームの中では、
「あー、そうやってたの。わかんなかった」
「いやいやそれはちょっと」
という悲しい光景が繰り広げられるという結果になってしまいました。なので、今ではForkwellはポリモーフィズムなどの技術はなるべく使わず、素直に必要なモデルを
必要なだけ作ってやるという方式を取ることにしています。
それがいいですね。その時点では素晴らしい設計であっても、運用していくうちに当時の設計思想には当てはめられない機能を実装しなければならない状況になったり、プロジェクトの途中からアサインしたエンジニアが認識できなくて変な実装をしてしまったりといった事はよくあります。
モデル・ER図・テーブル定義をざっと見ただけで大体の実装をイメージできてしまうぐらいが丁度いいのではと思ってます。程度によりますが、冗長的な実装になっても人数が増えてきた場合にコンフリクトしにくくなるとか、急な増員をした場合でも理解しやすければすぐに即戦力になってくれるなどメリットもある。
まあ、技術を知ってると使ってみたいってのはわかりますけどね。
Raspberyy Pi が着た!
やっと届いた!基盤剥き出しのままだと壊れそうなので、一緒に買ったケースとセットで届きました!
おお、これがラズベリーパイか。
さっそくケースに入れる。
SDカードをMacに差し込み、ディスクユーティリティでFAT32にフォーマット!
http://www.raspberrypi.org/downloads からOSのイメージファイルをDLし、
さっそくOSのインストール作業に入ります。
% cd Dowonloads % wget http://downloads.raspberrypi.org/images/raspbian/2012-10-28-wheezy-raspbian/2012-10-28-wheezy-raspbian.zip % unzip 2012-10-28-wheezy-raspbian/2012-10-28-wheezy-raspbian.zip % df -h # フォーマット時にRASPBERRYPIって名前でフォーマットしておいた Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk0s2 233Gi 152Gi 81Gi 66% 39943338 21126102 65% / devfs 204Ki 204Ki 0Bi 100% 706 0 100% /dev map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home localhost:/5Jo_iyPWVoa5ot0q80v3Xl 233Gi 233Gi 0Bi 100% 0 0 100% /Volumes/MobileBackups /dev/disk1s2 149Gi 135Gi 14Gi 91% 35391953 3596793 91% /Volumes/MacBookAir2012 pogoplugfs@ppfs0 4.7Gi 1.8Gi 2.8Gi 40% 512000 512000 50% /Volumes/Pogoplug Cloud pogoplugfs@ppfs1 1.8Gi 4.4Mi 1.8Gi 1% 512000 512000 50% /Volumes/Generic STORAGE DEVICE pogoplugfs@ppfs2 698Gi 136Gi 563Gi 20% 512000 512000 50% /Volumes/ST750LX0 03-1AC154 pogoplugfs@ppfs4 7.1Gi 44Mi 7.1Gi 1% 512000 512000 50% /Volumes/Unnamed /dev/disk2s2 931Gi 474Gi 458Gi 51% 124148684 119957982 51% /Volumes/WD10JPVT /dev/disk3s1 30Gi 2.1Mi 30Gi 1% 0 0 100% /Volumes/RASPBERRYPI % sudo diskutil unmount /Volumes/RASPBERRYPI/ Volume RASPBERRYPI on disk3s1 unmounted % sudo time dd bs=1m if=2012-10-28-wheezy-raspbian.img of=/dev/rdisk3 1850+0 records in 1850+0 records out 1939865600 bytes transferred in 116.998239 secs (16580297 bytes/sec) 117.00 real 0.00 user 1.03 sys % df -h Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk0s2 233Gi 154Gi 79Gi 67% 40476586 20592854 66% / devfs 205Ki 205Ki 0Bi 100% 710 0 100% /dev map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home localhost:/5Jo_iyPWVoa5ot0q80v3Xl 233Gi 233Gi 0Bi 100% 0 0 100% /Volumes/MobileBackups /dev/disk1s2 149Gi 135Gi 14Gi 91% 35391953 3596793 91% /Volumes/MacBookAir2012 pogoplugfs@ppfs0 4.7Gi 1.8Gi 2.8Gi 40% 512000 512000 50% /Volumes/Pogoplug Cloud pogoplugfs@ppfs1 1.8Gi 4.4Mi 1.8Gi 1% 512000 512000 50% /Volumes/Generic STORAGE DEVICE pogoplugfs@ppfs2 698Gi 136Gi 563Gi 20% 512000 512000 50% /Volumes/ST750LX0 03-1AC154 pogoplugfs@ppfs4 7.1Gi 44Mi 7.1Gi 1% 512000 512000 50% /Volumes/Unnamed /dev/disk2s2 931Gi 474Gi 458Gi 51% 124148684 119957982 51% /Volumes/WD10JPVT /dev/disk3s1 56Mi 17Mi 39Mi 30% 512 0 100% /Volumes/Untitled % % sudo diskutil unmount /Volumes/Untitled/ Volume (null) on disk3s1 unmounted
よし完了!で、ラズベリーパイ初回の起動画面で衝撃の事件が・・・なんとHHKのスペース↑エンターを認識しない。
数カ月ぶりにWindowsで動作確認しても問題なく動くのに。。
しょうがないのでミニキーボードを発注。
- 出版社/メーカー: AOTECH
- メディア: エレクトロニクス
- この商品を含むブログを見る
届いてから初期の設定を終了し、rebootしたらSDカードの空き容量をフォーマット(初期のインストールでは2Gしか使用できない。初回起動時の設定画面で空いている部分も使えるようにするオプションがあるのでそれを押した。)するのに40分はかかった。。ちなみにSDは32Gです。
Transcend SDHCカード 32GB Class10 永久保証 [フラストレーションフリーパッケージ (FFP)] TS32GSDHC10E
- 出版社/メーカー: トランセンド・ジャパン
- メディア: Personal Computers
- 購入: 51人 クリック: 57回
- この商品を含むブログ (2件) を見る
再起動後、やっとデスクトップを見られた。。
問題は何に使うかですね。安かったから買ったけど、目的がない。本来は学習用のものみたいだけど。
[参考サイト]
RPi Easy SD Card Setup - eLinux.org http://elinux.org/RPi_Easy_SD_Card_Setup#Copying_an_image_to_the_SD_card_in_Mac.C2.A0OS.C2.A0X_.28mostly_graphical_interface.29