wkhtmltopdfをmac osx(marvericks)にインストールする

railsにpdf生成のgem ‘wicked_pdf’をインストールしたのですが、うまく行かず。
なぜかというと公式では同時にwkhtmltopdf-binaryというgemをインストールする事で根本のライブラリであるwkhtmltopdfが入るのですが、このバージョンが低いのです。

gemでいれると0.9系です(2014年10月1日現在)が最新では0.12系でした。

Homebrewを使おうという事にはなるのですがこれも皆無。

結局こちらの記事通りにやって解決しました。

http://seankibler.com/installing-wkhtmltopdf-on-mbp-osx-mavericks-109

1:

git clone --recursive https://github.com/wkhtmltopdf/wkhtmltopdf.git

2:

$ ./build_osx.sh

このコンパイルがすごく長いです。1時間くらいかかったかもしれません。

3:

$ sudo make install

これでインストール完了です。

$ which wkhtmltopdf
/Users/username/.rvm/gems/ruby-2.1.3/bin/wkhtmltopdf

あれ?まだgem見てるな。

$ bundle exec gem uninstall wkthmltopdf-binary
##Gemfileのwkhtmltopdf-binaryを消す
#gem 'wkhtmltopdf-binary' < delete

 

$ wkhtmltopdf -V
Name:
  wkhtmltopdf 0.12.1 (with patched qt)

ちゃんと 0.12.1を見るようになりました。

 

 

jQuery.validationプラグインでとても複雑なバリデーションを行う

jQuery.validationプラグインのハックテクニックをご紹介します。

http://jqueryvalidation.org/

jQuery.validationプラグインはフォームのバリデーションを簡単に行う事ができ、プロジェクトでとても重宝しているプラグインの1つです。

ただし、複雑なバリデーションを行おうとするとなかなか難しいです。

1つのインプットデータ、あるいは複数のチェックボックスなどをひとまとめにしたものに対してバリデーションを行う場合はプラグインの守備範囲なのですが、以下のような場合に急に難しくなります。

1:1つのフォームが他のフォームの内容に複雑に関係するバリデーション

例えば「3つあるラジオボックスの1つ目をチェックした時はアルファベットのみ、二つ目をチェックした時でかつ別のチェックボックスをチェックした時はひらがなのみ」など

2:フォームの内容ではなく画面の状態などをバリデーションしたい場合や
3:BackboneJSなどでデータを保持している場合

データ入力にリッチなUIを実装しようとするとフォームだけでは難しくなります。そこでデータをjsonなどで保持することになりますが、フォームの内容とjsonの内容の両方に対してバリデーションし、エラーの表示をjQuery.validationで統一しようとする場合、どうしてもbeforeValidationイベントが欲しくなりますが存在しません。http://jqueryvalidation.org/validate/

下記CoffeeScriptですが、まずaddMethodでメソッドを追加します。

beforeValidation ->
 #something code
$.validator.addMethod 'beforeValidation' (value, element, param) ->
  beforeValidation() #スコープに注意
  return true #常にtrueを返す

そしてダミーのinputタグを用意する

 <input name="beforeValidation" type="hidden" />

#readyのあとで
 options = {
   rules: {
     'beforeValidation': {#このルールを必ず初めに記述する
       beforeValidation: true
     }
   }
 }
 $form.validate(options)

jQuery.validationプラグインがフォームをvalidateする際に必ずbeforeValidationを初めに行ってくれるので、実質beforeValidationイベントがトリガーできます。

ここでjsonのデータをチェックして、ゴニョゴニョしてします。

例えばエラーを表示する為だけにinput[type=”hidden”]を用意し、エラーがみつかったら値を空に、エラーが無ければ”ok”とか適当な値を入れて、requiredをあらかじめrulesに入れておけばOKです。

アンパンマンは最高と思う

漫画やアニメなどは”教材としてもすばらしいもの”がありますが、アンパンマンは侮れません。

アンパンマンをよく知らない人にちょっと知ってほしいことがあります。

アンパンマンは子供が理解しやすい単純なキャラクターやストーリーが軸になっていて、夢や希望や正義を示してくれます。でもアンパンマンには次のようなキャラクターがいます。

複雑なキャラクター1:ロールパンナちゃん

アンパンマンの妹分のメロンパンナのお姉ちゃんです。ジャムおじさんによって作られましたがその際にバイキンマンに悪いエキスを入れられて「よい心」と「悪い心」を持ってしまいました。
そのため一緒には住めず、離れたところで一人孤独に暮らしています。

複雑なキャラクター2:ちびオオカミくんとゴミラ

詳しい事情は省きますが、どちらも自分の意思に反して巨大化・凶暴化してしまう。そのことを恥じて悔いるちびオオカミくんやゴミラに対してアンパンマンたちはどう接するかを教えてくれる。

正義が曖昧に設定されているのがアンパンマンなのです。

幼稚園から小学校低学年ぐらいでは、男の子だと戦隊モノ、女の子だとプリキュア。分かりやすい「善と悪」を表現したコンテンツが好まれます。

それらを利用した大人たちの「商業主義」は嫌悪感を抱くほどに節操がなくなりました。

アンパンマンのグッズは確かに高いなーとは思います。

それでもアンパンマンのキャラクターやストーリーの作り方には、それを作る大人の分別や願いが込められているように感じるのです。

ここでやなせたかしさんの言葉をすこし紹介します。

正義のための戦いなんてどこにもないのだ。正義は或る日突然逆転する。正義は信じがたい

それを前提としてこのような言葉も残しています。

困っている人、飢えている人に食べ物を差し出す行為は、立場が変わっても国が違っても「正しいこと」には変わりません。絶対的な正義なのです

復興の状況に言及すること

「美味しんぼ」の内容について波紋が広がっています。

私自身、復興の状況について現場を確かめていないのでよくわかりませんが、仮にそれらを確かめに行ったとしても何かを公共に対し発言するということは極めて難しいのだと思います。

その難しさは

  1. 個人の見解である限り多かれ少なかれ事実と異なるということ
  2. 発言に影響力があればあるほどその「ズレ」の影響も大きくなるということ

にあります。

ポジティブな内容の「ズレ」であれば、市民に事実と異なる安心感を与えてしまいます。
ネガティブな内容の「ズレ」であれば、風評被害や差別を生むきっかけとなる恐れがあります。

情報があふれる中で市民はメディアが発信する内容を鵜呑みにせず、自身でそれを疑い、消化する能力が必要な時代です。
そのような発達した情報の受け取り方を市民に期待するべきだし、教育もそうしていく必要があるし、マスコミもそれを前提に話してほしい。

つまり現実との「ズレ」を各個人で消化しなくてはならない時代だということです。

一人の漫画家が発言したことに対し批判するという現象がおこるのは「個人に大きな影響を与えうる」からです。仮に国民の情報を受け取るスキルがもっと高ければ影響は小さくなります。また発言もしやすくなります。

発言そのものに批判ばかりするのではなく、自身の意見を述べてほしい。
市民が意見を総合して判断する機会をマスコミが作れるように、私たち自身が「何が正しくて何が間違っているのか」を判断できる能力を持たなくてはならないと思います。

多少理想論であることは承知していますが、市民がその能力を放棄するということはプロパガンダや洗脳に翻弄されることを容認することを意味します。
また表現の自由という権利を放棄することにもなります。

fontawesomeとCSSのみでstar ratingを実現する

fontawesomeとCSSのみでstar ratingを実現することができました。

IE9以上が必要です。
※まだIE10以上ではテストしていません。
なにか見つけたら教えていただけるとありがたいです。

http://jsfiddle.net/dyosuke/67XXF/

下記は画像を使用していて大変参考にさせていただきました。

http://jsfiddle.net/LTQrZ/20/

クジラの食肉を主体としたイベントを開催すべきか考えた結果。

これまで特に考えてこなかったのですが、
クジラの肉を私が主催している横浜パパ会に提供してくれるというお話があり、
横浜パパ会でクジラの食肉を主体としたイベントを開催すべきかと考えなければなならないというきっかけができ、
よく考えてみることにしました。

結論としては、そのようなイベントを開催するのは見送ることにしました。

理由としては、国際社会で生きていかなければならない子供たちには
順序立てて丁寧に食を教育していかなければならないと感じたからです。

日本人の多くに「私は自然に生かされている」という感覚があります。
植物も、もちろんクジラも含め、食べる時に感謝し、
自然の一部であること、自然に生かされていることを再確認するのです。

食べる前には「いただきます」と言わせるなど、
子供たちに日本人の食に対する感謝の心をひきつづき伝えたいと思います。

100年前まではそれだけでよかったかもしれませんが、
子供たちは国際社会で生きていかなければなりません。

クジラだけでなく牛や豚、動物自体を食べることに関しても悲しむ人たちがいること。
暴力に訴えて自分の考えを主張する人たちがいること。
他者の考えや文化を尊重しない人たちがいること。
利益至上主義の人たちがいること。

子供たちにはこれらの異なる考えの人々と共に平和に生きてほしい。

相手の気持ちをわかろうとする努力、
わかってもらおうとする粘り強さ、
違うことを許容する心、
暴力にNOという勇気、
真理を読み解く力が必要です。

それらが1つイベントで養われることはありませんし、
問題が複雑すぎて参加者や周囲の人たちにどのように捉えられるか
私の力ではコントロールできないと判断しました。

しかし、子供たちにどのように食育するのかを考えるよいきっかけとなり
お声をかけてくださった方には大変感謝しております。

rails4でacts_as_listをアップデートしたらdefaultのpositionが設定され、topが1になっていた件

acts_as_listをrails3で使っていたのですが、rails4にアップデートする作業中にacts_as_listもアップデートしました。

rspecがエラーを出しまくりましたが、原因はdefaultのpositionが設定され、1になっていたことです。

0を指定すると1より小さいということで強制的に1にされてしまいます。

0にしたかったのでコードを見ていくとConfigurationが。

下記のようにトップのpositionを設定できます。

acts_as_list :scope => :something, top_of_list: 0

 

refinery overrideでzshのエラーが出る件

こちらのサイトrefinery-cmsをつかっているのですが、
突然refinery override で下記のようなエラーがでました。

zsh: no matches found: controller=refinery/hogehoge/*

調べてみるとzshが引っかかっている様子。

zshの設定を.zshrcに下記の記述を加えて変更すればエラーがでなくなりました。

#~/.zshrc
setopt nonomatch

で読み込んでから
source ~/.zshrc

実行

rrefinery:override controller=refinery/hogehoge/*

 

Ruby on Rails bundle install 失敗。原因はmavericsのインストールとXcodeのアップデート

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

ちょっとRailsの新しいプロジェクト(テストプロジェクト)を
作ろうと思ってbundle installを実行したら上記のようなエラーがでました。

原因はXcodeのアップデート後にアプリケーション上で「I agree」を実行しなかったこと。

XcodeをGUIで起動してI agreeしたらエラーがでなくなりました。

情報はこちら

http://blog.tomhennigan.co.uk/post/62238548037/agreeing-to-the-xcode-license-from-the-command-line

I love green!