アーカイブ

投稿者のアーカイブ

Xcode 9.1でProvisioning Profileを更新する。 このエントリーを含むはてなブックマーク はてなブックマーク - Xcode 9.1でProvisioning Profileを更新する。

2017 年 11 月 17 日 コメントはありません

https://developer.apple.com/ でUDIDを追加したのだけれど、「Automatically manage signing」がONになっている場合に更新する方法が分からなかったのでメモ。

「~/Library/MobileDevice/Provisioning\ Profiles」にあるファイルを消すと、すぐに自動で再作成してくれる。

これで動いたのだけれど、正式な更新方法が分からない、まま。

カテゴリー: iOS タグ:

callbackで止める。filterで止める。 このエントリーを含むはてなブックマーク はてなブックマーク - callbackで止める。filterで止める。

2017 年 10 月 18 日 Comments off

ActiveRecord::Callbacks

If the before_validation callback throws :abort, the process will be aborted and ActiveRecord::Base#save will return false.

ActiveRecordのコールバックでは:abortを投げるように変わっているけれど、ActionControllerのフィルターがどうなっていたのか分からなかったので調べたメモ。

Action Controller Overview — Ruby on Rails Guides

If a “before” filter renders or redirects, the action will not run.

APIリファレンスで見つからなかったので、ガイドの方から見つけてきた。

カテゴリー: Rails タグ:

integerのidをbigintにするやつ。 このエントリーを含むはてなブックマーク はてなブックマーク - integerのidをbigintにするやつ。

2017 年 10 月 17 日 Comments off


使わなかったのですが、せっかく書いたので貼っておきますね。

カテゴリー: Rails タグ:

trueとfalseの話。 このエントリーを含むはてなブックマーク はてなブックマーク - trueとfalseの話。

2017 年 9 月 27 日 Comments off

Rubyのtrueとfalseの話 – Qiitaこの本を作るためにいろいろ質問して理解したことのうち、『真』であることとtrueが違う、『偽』とfalseについても同様、という話が個人的に一番衝撃的だったかもしれません。

おそらく分かってはいたものの明確に意識したことはなくて、「あっ、そうだ。」という気持ちだった。

Rubyのtrueとfalseの話 – Qiitatruthy とか falsy って呼び方をしたりもしますね

`be` matchers – Built in matchers – RSpec Expectations – RSpec – Relish

expect(obj).to be_truthy # passes if obj is truthy (not nil or false)
expect(obj).to be_falsey # passes if obj is falsy (nil or false)

あ、そうだ。

カテゴリー: Ruby タグ:

macOSのインストールメディアを作る。 このエントリーを含むはてなブックマーク はてなブックマーク - macOSのインストールメディアを作る。

2017 年 9 月 27 日 Comments off

Create a bootable installer for macOS – Apple SupportWith macOS High Sierra, Sierra, El Capitan, Yosemite, or Mavericks, you can use a USB flash drive or other storage media as a startup disk from which to install the Mac operating system.

毎回ググって辿り着いている気がするのでメモ。

カテゴリー: Mac タグ:

nginxとRackとX-Accel-Mappingと。その2 このエントリーを含むはてなブックマーク はてなブックマーク - nginxとRackとX-Accel-Mappingと。その2

2017 年 8 月 15 日 Comments off

GitHubからの通知メールがいくつかまとめて来てたため見逃してしまっていたのですが、この前Rackに投げたPRがマージされていました。

手元でパッチを当てていたので、嬉しい。詳細については↓に書いています。

nginxとRackとX-Accel-Mappingと。 » サイキョウライン
まず、課題となっている場所はここで、いまの実装はこんな感じ。

カテゴリー: Rails, Ruby タグ:

nginxとRackとX-Accel-Mappingと。 このエントリーを含むはてなブックマーク はてなブックマーク - nginxとRackとX-Accel-Mappingと。

2017 年 7 月 3 日 Comments off

Rack

https://github.com/rack/rack/blob/master/lib/rack/sendfile.rb#L149
まず、課題となっている場所はここで、いまの実装はこんな感じ。

def map_accel_path(env, path)
  if mapping = @mappings.find { |internal,_| internal =~ path }
    path.sub(*mapping)
  elsif mapping = env['HTTP_X_ACCEL_MAPPING']
    internal, external = mapping.split('=', 2).map(&:strip)
    path.sub(/^#{internal}/i, external)
  end
end

nginx

設定はこう。「X-Accel-Mapping」を複数定義している。

server {
  location ~ /foo/(.+) {
    internal;
    alias /path/to/real/foo/$1;
  }

  location ~ /bar/(.+) {
    internal;
    alias /path/to/real/bar/$1;
  }

  location / {
    proxy_set_header X-Sendfile-Type X-Accel-Redirect;
    proxy_set_header X-Accel-Mapping '/path/to/releases/\d{14}/abc/=/foo/';
    proxy_set_header X-Accel-Mapping '/path/to/releases/\d{14}/def/=/bar/';
  }
}

説明

複数の「X-Accel-Mapping」が定義されていると、Rackの「env[‘HTTP_X_ACCEL_MAPPING’]」に渡ってくる時は「, 」(カンマとスペース)で区切られた状態になる。

/path/to/releases/\d{14}/abc/=/foo/, /path/to/releases/\d{14}/def/=/bar/

こうなると、いまのRackの実装ではいきなり「=」でsplitしている(ひとつしか定義されていない前提)ため、結果として「internal」と「external 」はこんな感じになって、正しいパスを返せなくなる。

internal #=> '/path/to/releases/\d{14}/abc/'
external #=> '/foo/, /path/to/releases/\d{14}/def/=/bar/'

対策

そこで、複数の「X-Accel-Mapping」が定義されることも考慮して、この様にしてみた。

def map_accel_path(env, path)
  if mapping = @mappings.find { |internal,_| internal =~ path }
    path.sub(*mapping)
  elsif mapping = env['HTTP_X_ACCEL_MAPPING']
    mapping.split(',').map(&:strip).each do |m|
      internal, external = m.split('=', 2).map(&:strip)
      new_path = path.sub(/^#{internal}/i, external)
      return new_path unless path == new_path
    end
    path
  end
end

これで「X-Accel-Mapping」の数に関わらず、定義したパスを返せるようになった。

ので、PR出してみた。どうかな。
https://github.com/rack/rack/pull/1187

カテゴリー: Rails タグ:

ATOK 2017 for Macの予約が始まった。 このエントリーを含むはてなブックマーク はてなブックマーク - ATOK 2017 for Macの予約が始まった。

2017 年 6 月 2 日 Comments off


した。

カテゴリー: ATOK タグ:

ansible_os_familyの値について。 このエントリーを含むはてなブックマーク はてなブックマーク - ansible_os_familyの値について。

2017 年 5 月 16 日 Comments off

ドキュメント読んでも一覧を見つけられなかったのでソースを読みにいったメモ。定義場所はここ。

ansible/facts.py at devel · ansible/ansible

# A list with OS Family members

今日時点のものなのでリンク先の行は変わるだろうけど、ファイルまでは変わらんだろ、っていう。

カテゴリー: プログラミング一般 タグ:

MacのPostgreSQLをアップグレードする。 このエントリーを含むはてなブックマーク はてなブックマーク - MacのPostgreSQLをアップグレードする。

2017 年 5 月 1 日 Comments off

brew upgrade postgresql したら下記のエラーが出て起動しなくなったので、対応したメモ。

FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.5, which is not compatible with this version 9.6.2.

ログは

% tail `brew --prefix`/var/log/postgres.log

にあるはず。

公式のドキュメントは→https://www.postgresql.jp/document/9.6/html/pgupgrade.html

まず動いているプロセスを停止していまのdataを退避し、代わりに空のdataを作る。

% launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
% mv `brew --prefix`/var/postgres `brew --prefix`/var/postgres_95
% initdb `brew --prefix`/var/postgres -E utf8

退避したdataから新しく作ったdataにコピー。

% pg_upgrade \
  -b `brew --prefix`/Cellar/postgresql/9.5.4_1/bin \
  -B `brew --prefix`/Cellar/postgresql/9.6.2/bin \
  -d `brew --prefix`/var/postgres_95 \
  -D `brew --prefix`/var/postgres

最後に下記のメッセージが出るので、「正常に起動することを確認した後に」それぞれのスクリプトを実行して完了。

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh

起動する。

% launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

インストールのメモはこちら

カテゴリー: Mac, PostgreSQL タグ: