Xcode の iOSシミュレーターでブラウザがうまく使えなかった件
おもむろにiOSのアプリ開発なんかに手を出して、iOSシミュレーターのsafariをいじってると時々こんな感じの画面がでてきてつながらない。
動作環境
顛末
動作環境に eset のバージョンが書いてあるところから察する通り、原因はこいつだった。
設定 -> Webアクセス保護 -> 設定... と飛んでいって、HTTPプロトコルで使用するポート から 80 と 8080 を消してみるとうまく接続できた。
所感
どうも https にはアクセスできるけど、http にはアクセスできないみたいだった。
当初、シミュレーター自体がそういう仕様なのかと思い込もうとしてたので危なかった(笑)
これで小一時間はまってしまった。。。
先人の方々には感謝です。
参考URL
vagrant 自分用コマンドなどまとめ
ドットインストール見て、vagrant やそれを使った仮想環境作りについて学んだのでその個人的なメモ。
- homebrew 経由で virtualbox とvagrant を入れておく
$ brew cask install virtualbox $ brew cask install vagrant
$ vagrant box add [name_of_box] [欲しいボックスのURL]
-> URL はここ A list of base boxes for Vagrant - Vagrantbox.es から
- 入れた box を確認
$ vagrant box list
- box を消したいときは
$ vagrant box remove [name_of_box]
- 専用のディレクトリを作って cd する
$ mkdir [name_of_directory] $ cd [name_of_directory] $ vagrant init [name_of_box]
- 設定ファイルである Vagrantfile 編集する
-> しなくても動くことは動く。
-> コメントアウトしてあるところを読めばなんとなくわかるかと。
起動停止関連
- 起動
$ vagrant up
- ssh で接続
$ vagrant ssh
- スリープ
$ vagrant suspend
- スリープから復帰
$ vagrant resume
- 終了
$ vagrant halt
- 再起動
$ vagrant reload
- 状態確認
$ vagrant status
- 仮想マシンの削除 (-> 設定ファイルや box(≒テンプレート) は消えない。
vagrant up
すればまた作れる)
$ vagrant destroy
$ sudo ln -fs /vagrant /var/www/html
ssh 接続後
- webサーバーインストール
$ sudo yum -y install httpd $ sudo service httpd start $ sudo chkconfig httpd on <- 起動時にサーバー立ち上げる $ sudo service iptables stop ファイアーウォール切る $ sudo chkconfig iptables off <- 起動時に
[plugin] sahara の使い方
$ vagrant sandbox on $ vagrant sandbox status $ vagrant ssh ~なんらかの作業~ $ vagrant suspend $ vagrant sandbox rollback on にした時の状態に戻る $ vagrant sandbox commit $ vagrant sandbox off
参考URL
ruby でヒアドキュメントするさいに - つけると(・∀・)イイ!!
migration ファイルなどで SQL文を直接書きたいときにヒアドキュメントを使うというケースが考えられるけど、そのときには <<-
のように -
をつけるとシンタックスハイライトとかされたり色々便利。
こんな感じ。
. . . reversible do |dir| dir.up do execute <<-SQL insert into facility_phone_numbers(facility_id, phone_number, description, main) select id, phone_number, phone_number_description, 1 from facilities where phone_number <> '' and phone_number is not null SQL end end
所感
勉強になった。
rspec で raise_error を expect する時に
備忘録
rspec でバリデーションエラーが発生することをテストしたい場合、
expect(@facility.phone_numbers.create!(phone_number: '000-0000-00a1', main: true)).to raise_error(ActiveRecord::RecordInvalid)
ではなくて、
expect {@facility.phone_numbers.create!(phone_number: '000-0000-00a1', main: true)}.to raise_error(ActiveRecord::RecordInvalid)
としないといけない。
つまり、 expect
を ()
ではなくて、 {}
で囲まないといけない。
所感
考えてみれば ()
だと単純に create!
が失敗してるのでその時点でテストは終了してるから {}
のブロックで囲んでその結果を expect
しなければならないんだなあ。
参考URL
Google Chrome で白黒印刷したい時は
なんか以前と操作方法変わった・・・? ちょっとわかりづらかったのでメモ。
動作環境
- Mac OS X 10.9.5
- Google Chrome 41.0.2272.89 (64-bit)
手順
⌘ + p で印刷プレビューを出して、「システムダイアログを使用して印刷」をクリック
「レイアウト」の部分を
「品位と用紙の種類」に変えて、モノクロ印刷にチェック
所感
品位て。
カラムが blank のやつを抜き出した時のメモ
Rails でとあるテーブルの中の特定のカラムが空(≒blank)のものだけを抜き出したいときは、
Facility.where("phone_number <> ''") # または Facility.where.not(phone_number: [nil, ''])
みたいにするといいっぽい。
ちなみに、 null のものを抜き出したいときは、
Facility.arel_table[:phone_number].not_eq(nil) # または Facility.where("phone_number IS NOT NULL")
とする。
参考URL
Homebrew でいれた 古いバージョンの mecab が mecab-ruby といい感じにならない
以前書いた記事 古いバージョンの mecab を homebrew でいれたのでメモ とちょっとしたエラー対処 - gotagota日記 にある通り、 Homebrew で少し古めの mecab をいれたのですが、どうも mecab-ruby とうまいこといってない。
こんな感じのエラーが出ました。( PATH/TO/
の部分は各自の環境によって様々です)
dyld: lazy symbol binding failed: Symbol not found: __ZN5MeCab12getLastErrorEv Referenced from: /PATH/TO/MeCab.bundle Expected in: flat namespace
いろいろ調べました結果、これはライブラリの参照先が間違ってる場合におこるようです。
そこで、上のエラーメッセージにあります、 Referenced from:
のうしろにあるパスをまるっとコピーして以下のコマンドに渡します。
$ otool -L /PATH/TO/MeCab.bundle
自分の場合は以下のように出ました。
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) /usr/lib/libmecab.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
このうち、 mecab とはいっている /usr/lib/libmecab.1.0.0.dylib
は次で使うのでメモっておいてください。
次に
$ sudo install_name_tool -change "/usr/lib/libmecab.1.0.0.dylib" /usr/local/lib/libmecab.2.dylib /PATH/TO/MeCab.bundle
として、本来使いたいパスを通します。
ここで、初めて出てきた /usr/local/lib/libmecab.2.dylib
ですが、これが本来使いたいパスです。
つまりこのコマンドの構文は
sudo install_name_tool -change "古いパス" 新しいパス 適用したいファイル
といった感じです。