Sukoshi. Fuzoroi

某フリーPGの技術っぽいブログ。

Lightroom で スマートプレビューが真っ黒(El Capitan + Lightroom 2015.2 + Nikon D800 Raw)

El Capitan + Lightroom 2015.2 + Nikon D800 Raw の組み合わせで読み込み時にスマートプレビューを作成する設定になっていると、下記画像のようにすべて真っ黒になってしまいます。

f:id:saya_c:20151008203952p:plain

真っ黒のままだと現像メニューにいっても今度は真っ青になってまったく使えません。こまった…

暫定対策として「自動階調」機能を適用させる(command + U)と普通に表示できることが判明しましたが…、どうなんだろうコレ。Camera Raw がいけないのかな…。

Mac OSX El Capitan アップデート後の Homebrew

意気揚々と朝一でアップデートした El Capitan ! 一通り普段使いをしている限りはまったく問題ありませんでした。…といってもネット見たり、ちょっとRubyMine起動したりしてただけですが ;;

だけど、はてブを見ていたところ Homebrew はなにかしないといけないっぽい。とりあえず brew doctor を叩いてみたところ…

$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Warning: The /usr/local directory is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. Some versions of the
"InstantOn" component of Airfoil are known to do this.

You should probably change the ownership and permissions of /usr/local
back to your user account.

Warning: You are using OS X 10.11.
We do not provide support for this pre-release version.
You may encounter build failures or other breakage.

Warning: Your Homebrew is outdated.
You haven't updated for at least 24 hours. This is a long time in brewland!
To update Homebrew, run `brew update`.

このような感じで Warning が出ていました。 どうやら /usr/local のパーミッションが変更になったらしい。

というわけで、下記の公式ページをみてコマンド一発パーミッション変更。

github.com

$ sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local

その後、brew update をして

$ brew update
$ brew doctor
Your system is ready to brew.

みごと Warning が消えました。これでOKかな〜

Mac OSX El Capitan のインストールUSBメモリを作ってみた

El Capitan がダウンロードできるようになったのでさっそくインストール用USBメモリを作成してみました。

参考にさせて戴いたのはこちらのサイトです。

hacklifeinfo.com

まずは中身を消してもいいUSBメモリを用意して、ディスクユーティリティでフォーマットします。 名前はなんでもいいですが、ここでは参考にした記事にならってUSBと付けました。

USBメモリの名前は後述のコマンド内でパス指定に使用するので覚えておきましょう。

フォーマットが済んだらターミナルを立ち上げて下記のコマンドを入力します。

$ sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB/ --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app --nointeraction

上のコマンド中の中でUSBメモリのパス指定をする下記の部分は、先ほどフォーマットした際に付けた名前に変えてください。

--volume /Volumes/USB/ 

この記事にならってUSBと付けたなら変更なしでOKです。

コマンド実行するとログインパスワードをきいてくるので入力します。

$ sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB/ --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app --nointeraction
Password:
Erasing Disk: 0%... 10%... 20%... 30%...100%...
Copying installer files to disk...
Copy complete.
Making disk bootable...
Copying boot files...
Copy complete.
Done.

Done ってでればOK。作成後のサイズが 6.09GB なのでコピーにはしばらく時間かかります。

Ruby Mechanize で セッションCookie を保存する方法

Ruby の Mechanize Ver.2.7.3 でセッションの Cookie を保存できなくてハマってました。

コードを追ったところ save_as メソッドの場合は第2引数にオプションを渡してあげればいいみたいです。

agent.cookie_jar.save_as cookie_path_or_io, {:session => true}

このsession オプションがデフォルトでは false なので、セッション関連の Cookie が保存されなかったんですね。

他にも書き出しフォーマットを変更する :format オプションもあります。

agent.cookie_jar.save_as cookie_path_or_io, {:format => :yaml}

でも他に何で書き出すんだろう…謎。

ちなみに Mechanize::CookieJar#save_as 実装自体は HTTP::CookieJar#save を使っているみたいです。

参考:Class: HTTP::CookieJar — Documentation for http-cookie (1.0.2)

さらにちなみにファイルに保存したcookieの内容を読み出すのは

agent.cookie_jar.load cookie_path_or_io

です。

capybara-webkit で javascript の alert の中味をチェックするときの注意

capybara-webkit でjsがらみのテストをするときにちょっとハマったので情報共有します。環境は Capybara, capybara-webkit, RSpec です。

例えば、フォームのバリデーションをjs側でも行っていて、エラーをアラートダイアログなどで出力する仕様のテストがあったとします。

アラートダイアログの文章は capybara-webkit の場合、下記のメソッドで取得できます。

page.driver.browser.alert_messages

この返り値は配列になっているので、例えば、2回テストを行った場合、2回目のアラートメッセージは配列の2番目 page.driver.browser.alert_messages[1] に入っています。

このことを知らなかったのでプチハマリしました…

あと、jsは非同期タイミングで走りますので、ダイアログが出る前にテストが走ってしまわないように、アサーションの前に sleep など入れて、少しまってやる必要があります。

なお、アラートダイアログの場合は、ダイアログが出ている(と思われる)状態から続けて次のテストにうつるときも、OKボタンを押すという動作を記述しなくても大丈夫なようです。

サンプルコードを下記に掲載します。

    it '8文字未満のパスワードの更新に失敗する' do
      fill_in 'NewPassword',  with: @password_less_than_8char
      fill_in 'NewPassword2', with: @password_less_than_8char
      click_button 'パスワード変更'

      sleep 1
      expect(page.driver.browser.alert_messages[0]).to match(/ログインエラー/)

    end

    it '小文字のみのパスワードの更新に失敗する' do
      fill_in 'NewPassword',  with: @password_lower_case
      fill_in 'NewPassword2', with: @password_lower_case
      click_button 'パスワード変更'

      sleep 1
      expect(page.driver.browser.alert_messages[1]).to match(/ログインエラー/)

    end

PhpStorm の File Template で php変数($xxx) をそのまま出力したい時の対処法

結論

$var を ${DS}var とすれば「$var」という文字列で出力できる

理由

テンプレート中の$xxx はphp変数ではなくてテンプレート変数として解釈されるので、$をエスケープしてやる。$をそのまま出力するのは ${DS} として事前定義されている。

参考

上記の ${DS} 以外にも事前定義されている便利なテンプレート変数があるので下記を参照してみてください。

PhpStorm 8.0.2 Web Help / File Template Variables https://www.jetbrains.com/phpstorm/help/file-template-variables.html

気象庁「特別警報・警報・注意報や天気予報の発表区域]で定義されている二次細分区(市町村域)のうち町域レベルで分割されている区域を抽出するSQL

住所jp の下記URL からダウンロードできる全国住所データ(2014年12月10日版)に準拠しています。 http://jusyo.jp/sql/new.php

分割の根拠としたデータは 2014年12月現在のものです。

気象庁|予報用語 特別警報・警報・注意報や天気予報の発表区域 http://www.jma.go.jp/jma/kishou/know/yougo_hp/shichoson_ichiran.html