ブックマーク的メモ
OS XやiOSでグラフを描くときに使えそうなframwork
Chrome で Syntax Highlighter for WordPress が効かない
WordPress のプラグイン、Syntax Highlighter for WordPress はAmazonアフィのiframeと相性が悪いようだ。同じページにアフィがあると、Syntax Highlighter が効かなくなるようだ。確認できたのは Chrome だけだけど。
REXMLの文字エスケープに関するバグ
REXMLを使用してXMLを作成するとき、Elementに子ノードを追加する場合にadd_elementを使用し、同時に属性値も追加していた。しかし何故か&がエスケープされなかった。’はエスケープされるけど。以下コードで調べてみたら、add_elementで属性追加するとエスケープされないけど、add_attributeで追加するとエスケープされることが分かった。
require 'rexml/document' value = "<>&\'\"" sample = REXML::Element.new("a") sample.add_element("b", {"attr" => value}) c_tag = sample.add_element("c") c_tag.add_attribute("attr",value) xml = "" formatter = REXML::Formatters::Pretty.new formatter.compact = true formatter.write(sample, xml) puts xml
実行結果
<a> <b attr='<>&'"'/> <c attr='<>&'"'/> </a>
なぜ?
動作環境 Ruby 1.8.7
Mac Blu-ray Player はまだ買うな
MacでBlu-ray環境が整った・・・というにはBlu-rayが再生できないとですよね。Macでは長らくBlu-rayを再生する方法がなかったのだけど、昨年ついにプレイヤーが登場しました。
いまのところ選択肢はこれしかないようです。
しかしこれを購入してみたものの、、、ブルーレイレコーダなどで作成したBlu-rayは再生できないことが判明しました。実家から送られてきた水曜どうでしょうの最新版がMacでみれないよ。。もちろん市販されている映画などのBlu-rayは再生できるので、それが目的の人は購入しても問題ありません。
実際の再生はというと、初期のMacBook Airなどではパワーが足りずブチブチきれて、最終的にはフリーズ。CPUはIntelCore2Duo2.4GHz以上が推奨とのこと。MacBook Pro(Late2008)にライセンスをいれかえて再生したところ、こちらは途切れずに再生できました。
ちなみにブルーレイレコーダで作成したBlu-rayが再生できない件についてサポートに問い合わせてみましたが、現在海外の開発元に確認をとっているらしいです。期待。。。
MacにおけるBlu-ray環境
MacでBlu-ray環境ってあまり聞かないですよね。というのもジョブズがBlu-rayを嫌っていたらしく、今後もMacBookなどにドライブが搭載されることはおそらくないでしょう。ハードディスク安いんだから買い足せばいいじゃんという話もありますけど、20GBぐらいの頻繁に見ないようなデータをさくっと保存するにはBlu-rayがいいだろってことで、I-O DATAのBRD-U8DMを購入。MacはBlu-rayドライブのマウントはできるので、そのままでもデータを書き込めますが、念のためライティングソフトも購入。BD-Rも安くなりましたね。一枚100円以下。
データの整理もできて満足満足。
whenever の使い方
Railsアプリケーションで定期的に何かを実行したいという場合、wheneverを使用するという選択肢があるかと思います。wheneverは要するにLinuxのcronの設定をrubyから行えるというもの。environment.rbの設定も引き継いだrubyスクリプトを実行できるので、DBへのアクセスも簡単。
まずはインストール。
sudo gem install whenever
Railsディレクトリで
wheneverize
を実行すると ./config/schedule.rb が作成される。このファイルにcron設定を書く。
schedule.rbの中には書き方のサンプルがあるので多分大丈夫。たとえば sample.rb ってスクリプトを1時間毎00分に動かしたいときは
every 1.hours, :at => 0 do set :output, {:error => 'log/error.log', :standard => 'log/cron.log'} runner './sample.rb' end
runner は ./script/runner のこと。
cron設定を反映するには
whenever --update-crontab
内容を確認するには
crontab -l
logをみて No such file or directory のエラーが出ている場合、runnerに書かれてるrubyのパスが間違っている場合があります。デフォルトが #!/usr/bin/env ruby となっているので、環境に合わせてパスを修正する必要があります。
iPhoneでmixiにOAuth認証のサンプル
随分と前になるけれど、mixiが個人にもAPIを公開しました。
iPhoneアプリの場合だと、公開された中のmixi Graph APIを使用する形になり、このAPIが提供する機能を使用するにはmixiに対してOAuth認証を行って、アクセストークンを取得する必要があります。
で、アクセストークンを取得するまでを作ってみた。githubに公開してます。
mixiOAuth
ユーザに認可させる部分はUIWebViewで。UIWebViewのDelegateでレスポンスのURLをつかまえて、クエリからAuthorization Codeを取り出します。そしてHTTPURLConnectionでPOSTし、レスポンスをjson frameworkを使ってparse、リフレッシュトークンとアクセストークンを取得します。
コードはなるべく"iOS開発におけるパターンによるオートマティズム" (木下 誠)にのっとって書いてるつもりなんだけど、まとまらないなぁ難しい。