AWS Elastic Beanstalk へ CI からデプロイ時に特定コンフィギレーションをスキップするには

CI サービスから自動的に AWS Elastic Beanstalk にアプリケーションをデプロイしたいときに .ebextensions フォルダに置いたコンフィギレーションファイルをスキップさせたいときがある。 awsebcli の eb deploy コマンドでは、Git リポジトリのカレントブランチの HEAD コミットをアーカイブしてアップロードする。Elastic Beanstalk (以下、EB) の仕様上、EB 環境毎に EC2 インスタンスの設定(.ebextensions)をデプロイ処理時に切り分けるには、container_commands において環境変数を参照して行うしかない。それ以前に走る files や Resources の設定は固定になってしまう。 eb deploy コマンドの --staged オプションを指定すると、Git リポジトリの staged 状態を反映してアーカイブを作成してくれる。 つまり特定の設定ファイルをスキップしたければ git rm .ebextensions/skip.config を行ってから、eb deploy --staged target-eb-env を叩くようにすれば良いのだ。 例えば CI サービスの設定 yaml などに次のように定義する。 - git rm .ebextensions/skip.config - eb deploy --staged target-eb-env 特定の処理を追加したいときは別の場所に設定ファイルを用意しておいて、git mv で .ebextensions フォルダに移動すると良いだろう。 - git mv other-ebextensions/add.config .ebextensions - eb deploy --staged target-eb-env

2015年9月26日 · Toshimitsu Takahashi

iOS 9 のコンテンツブロックで始まる HTTP 2.0 時代の Web 広告

iOS 9 から Safari の Extension 機能としてコンテントブロックの実装が可能になった。 developer.apple.com Web ページ内の特定の HTML 要素を見えなくしたり、特定のURLのロードをブロックする仕組みを Apple は ブラウザ Safari に提供した、それだけである。しかしこれにより Web ページの広告やトラッカーといったJavaScriptの読み込みを遮断する Safari 拡張アプリの実装が可能になることから、実質 Apple が Web 広告を潰しにきたと iOS 9 発表当時から話題になった。 実際 iOS 9 リリースとともに広告・トラッカーをブロックするアプリがストアに並び、ランキングの上位に躍り出ることになった。以前から Apple が Web 広告を蔑ろにしていることは、iOS 5 で Safari に追加したリーダー(Web ページの記事の文章だけにフォーカスする)機能などから伺えた。ただこれは読み込んだページに対して機能することと、ブログなど Safari が記事ページと判断したときだけ有効になるので、広告潰しとして話題になることはなかった。 少し話が逸れるがニュースアプリの SmartNews がリリースされた当初、ネットワークがオフラインでも先読みしてニュース記事の文章だけを表示するという機能が物議を醸したことがあった。その後 SmartNews はメディアと協業していく形で成功している。 ブラウザに広告ブロック機能が追加できることは目新しいことではない。PC ブラウザではアドオン・拡張機能として古くからある。昔から言われているのはこういったアドオンをインストールする人は、そもそも広告を踏むことはないので収入には影響がないという話だ。概ね正しいと思うが、厳密には広告インプレッションは減ってしまう。 これまでと状況が異なるのはブラウザのアドオンマーケットと違い、普通に iPhone を使う人がその存在を認知できる形で提供されることだ。無料アプリであればソムリエな学生の口コミで瞬く間に普及するシナリオは大いにあり得る。ユーザーからすれば広告を消すことにデメリットはない。通信量も減りブラウジングが軽くなるのは事実で、特にバッテリーで動作するスマホには恩恵が大きい。過去に Android もブロックアプリがストアに並んでいたが、広告収入がメインの Google は一斉に排除している。 もし無視できないほど広告ブロックアプリが普及したらどうなるのか。iOS の Safari は今のネットにおいてトップシェアを誇るため、確実に収益減少に繋がる。その一方で、ブロック機能をオフにしないとサイトの閲覧をさせないようにする方法はある。サイトに広告が表示できたかどうか検証するスクリプトを直接ページに埋め込み、ブロックされた場合にコンテンツを隠すようにできるからだ。コンテンツに自信のあるサイトは、ブロックアプリを排除するか会員制に移行するか選択するだろう。 ちなみにトラッカーまでブロックされるとステルスアクセスになり、Google Analytics でページビューを把握してると単に訪問者が減ったように見える。Web サーバの HTTP アクセスログと照らし合わせないとわからない。 ここで立ち戻って、なぜ広告をブロックしたい状況なのか考える。以下の2点が大きい。 鬱陶しく広告の載せているサイトがある。スマホでは成人向けの広告が一般サイトで表示されることも多い。 広告・トラッカーのスクリプトをクライアントサイドでロード・処理しているため、ユーザー負担が大きい。 一方でサイト運営者はなぜ広告を掲載するのか大きく分けると以下の2つだ。 ...

2015年9月25日 · Toshimitsu Takahashi

Ubuntu で GitLab を Omnibus に移行し GitLab CI も使い始める

インストールが大変という定評のあった GitLab ですが、マニュアルインストールとアップグレードで凌いでいました。 GitLab CI を導入しようと試す過程で、サブディレクトリ運用だと OAuth 連携が上手くいかないことがわかりました。 現在はオールインワンのパッケージが提供されているため、下記を使えば簡単に GitLab, GitLab CI を一気に入れることができます。Nginx、PostgreSQL、Redis なども全てまとめて /opt/gitlab に入ります。 GitLab | Download GitLab Community Edition (CE) サーバスペックをアップグレードするついでに上げますが、基本的にバーチャルホストを使うため FQDN を GitLab, GitLab CI で同じにできません。SSL 証明書に関しては、ワイルドカードを持ってないと辛いところです。 GitLab を最新に更新 下記の手順どおりやれば簡単に今は上がります。 gitlabhq/upgrader.md at master · gitlabhq/gitlabhq · GitHub バックアップ $ cd /home/git/gitlab $ sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production サービス停止 $ sudo service gitlab stop アップグレード $ sudo -u git -i $ bundle exec rake gitlab:backup:create RAILS_ENV=production $ cd gitlab $ ruby bin/upgrade.rb GitLab 7 upgrade tool Your version is 7.5.3 Latest available version for GitLab 7 is 7.7.2 Newer GitLab version is available Do you want to upgrade (yes/no)? yes Stash changed files -\> git stash Saved working directory and index state WIP on 7-5-stable: b656b85 Version 7.5.3 HEAD is now at b656b85 Version 7.5.3 -\> OK Get latest code -\> git fetch remote: Counting objects: 7452, done. remote: Compressing objects: 100% (3095/3095), done. remote: Total 7452 (delta 5170), reused 6001 (delta 4268) Receiving objects: 100% (7452/7452), 2.18 MiB | 387.00 KiB/s, done. Resolving deltas: 100% (5170/5170), done. From https://github.com/gitlabhq/gitlabhq (省略) \* \[new tag\] v7.7.2 -> v7.7.2 -\> OK Switch to new version -\> git checkout v7.7.2 Note: checking out 'v7.7.2'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new\_branch\_name HEAD is now at bd98290... Version 7.7.2 -\> OK Install gems -\> bundle Fetching source index from https://rubygems.org/ (省略) Your bundle is complete! Gems in the groups development, test and postgres were not installed. It was installed into ./vendor/bundle -\> OK Migrate DB -\> bundle exec rake db:migrate (省略) -\> OK Recompile assets -\> bundle exec rake assets:clean assets:precompile (省略) -\> OK Clear cache -\> bundle exec rake cache:clear -\> OK Done サービス起動 $ sudo service gitlab start このタイミングで自分の環境では、rbenv で入っていたのが、2.1.3 で 2.1.5 じゃないとエラーが出ました。 /home/git/gitlab/.ruby-version を 2.1.5 に書き換えたら動きました。 ...

2015年2月8日 · Toshimitsu Takahashi

Xcode 6.1 で自家製フレームワークを追加する方法

適当に Xyz.framework を追加するだけでは、コンパイルは通っても起動後に下記のエラーになっていた。 dyld: Library not loaded: @rpath/Xyz.framework/Xyz Referenced from: /Users/xxxx/Library/Developer/CoreSimulator/Devices/xxxx-xxxx-xxxxxx/data/Containers/Bundle/Application/xxxx-xxxx-xxxxxx/Xxxxx.app/Xxxxx Reason: image not found プロジェクト設定の Build Phrases で以下を行う。 Link Binary With Libraries → + → [Add Other…] で生成したフレームワークを選択 Embed Frameworks → Destination を Frameworks に → + → ツリーからフレームワークを選択

2015年1月27日 · Toshimitsu Takahashi

Acer Aspire easyStore H340 に Windows Server 2012 R2 Essentials を入れる

あらすじ もう購入して6年前ですが、下記の記事で書いた Acer Aspire easyStore H340 という Windows Home Server の4ドライブベイの NAS を使っていました。 Windows Home Server 搭載の Acer Aspire easyStore H340-S1 レビュー - tilfin’s note とうに Windows Home Server 自体は終わってしまったんですが、Drive Extender というこちらも廃止された機能がゆるく便利だったためそのまま使い続けていました。ギガビットイーサのNICであるため速度的な問題がなく、NAT内での利用でセキュリティに不安はそれほどなかった。オールインワンで販売されたNASだったので、コンソールが普通に利用できないためOSインストールすらもハードルが高かったのが理由です。 しかし、流石に色々と厳しくなってきました。Windows Home Server が32ビットのため、 4ベイのHDDがそれぞれ最大2TBまでしか認識できなく、初期のシステムドライブは1TBなので複製機構を利用すると3.5TB(= (1+2+2+2) / 2)で限界になること。Drive Extender をマイクロソフトが捨てているので、新しい大規模ストレージシステムに移行しておかないとと思い、アップグレードを検討することにしました。 この間に Windows Home Server 自体は次のバージョン 2011 が出てそこで打ち止めとなり終了してしまいました。現存する一番近い OS は Windows Server 2012 Essentials の R2 になります。Windows Home Server は Windows Server 2003) ベースのため5世代の差があります。普通はハードから総取り替えするレベルなんですが、この筐体が静音でデザインも気に入っていたのと、メモリを増設すれば動作環境にギリギリ達することができたので、頑張って Windows Server 2012 R2 Essentials を入れてみようと調べ始めました。 ...

2015年1月18日 · Toshimitsu Takahashi

Ubuntu で Unicorn で動かす Redmine を 2.6 にアップデートしたときのメモ

RMagickに必要なパッケージインストール RMagick系のパッケージが要るといわれたので入れておく。 # apt-get install graphicsmagick-libmagick-dev-compat libmagickcore-dev libmagickwand-dev 新しい Redmine の展開 新しい Redmine のパッケージをダウンロードして展開する。 前の場所から以下のファイルをコピーする。 Gemfile.local config.ru config/unicorn.rb config/configuration.yml config/database.yml 以下のディレクトリ内のファイルを移動する。 plugins files public/themes お約束の手順 $ bundle install --path vendor/bundler $ rake generate_secret_token $ RAILS_ENV=production rake db:migrate $ rake db:migrate:upgrade_plugin_migrations RAILS_ENV=production $ rake db:migrate_plugins RAILS_ENV=production $ rake tmp:cache:clear $ rake tmp:sessions:clear 起動 $ bundle exec unicorn_rails -D -E production -c $APP_ROOT/config/unicorn.rb

2014年10月28日 · Toshimitsu Takahashi

Ubuntu で cron でスクリプトをセットするときのパス解決

rbenv や nodebrew で実行プログラムを管理してる場合、ユーザの HOME 下に環境を構築するため .bashrc や .bash_profile などでパスを通します。 しかし、crontab でそのままスクリプトを定義しても、ruby や node にパスが通っておらず動かない。調べたら bash の -l, –login オプションを付ければいいというので、試したがダメ。 Ubuntu の場合デフォルトで置かれる .bashrc の先頭で対話的ログインシェル以外は読み込みを止めてしまう記述があった。よって、それを外すなりその処理の前に PATH を再定義する必要がありました。 考えたあげく、アプリケーションの設定として実行ユーザーの環境設定に依存するのは止めた方が良いと、外出しの設定として PATH を定義するスクリプトソースを各 cron スクリプトの先頭で読ませるようにしました。 1 PATH=$HOME/.rbenv/shims:$HOME/.rbenv/bin:$HOME/.nodebrew/current/bin:$PATH

2014年10月11日 · Toshimitsu Takahashi

Nginx で IE 8.0 以下には jQuery のバージョン 1 を返すようにする

jQuery バージョン 2 から IE 9 未満のサポートが切り捨てられて、実装的にもファイルサイズ的にも軽くなっています。 ただそうは言っても IE 8 以前のアクセスもあるため、サーバ側でブラウザに合わせて、jQuery を切り替えて返してしまおうという設定をしました。 server { (略) modern_browser unlisted; ancient_browser "MSIE 6.0" "MSIE 7.0" "MSIE 8.0"; location ~ ^/statics { root /var/www/html/statics; if ($ancient_browser) { set $oldie_jq O; } if ($request_filename ~* jquery\\.min\\.js) { set $oldie\_jq "${oldie\_jq}K"; } if ($oldie_jq = OK) { rewrite ^(.*)\\/jquery\\.min\\.js$ $1/jquery-1.min.js break; } break; } (略) } modern_browser と ancient_browser はそのままで Nginx としてモダンなブラウザか古いブラウザをセットすることができます。これによって古いブラウザに該当するかどうかを $ancient_browser を評価するだけで行えます。 続いてリクエストファイルが jquery.min.js かどうかを判定しています。if で AND が書けないためトリッキーな変数評価をしています。 ...

2014年9月22日 · Toshimitsu Takahashi

さくら VPS に Linux Mint 17 (Xfce) を入れて VNC でデスクトップを利用する

インターネット上に常時起動しているデスクトップ環境があると色々と重宝します。 さくらインターネットの VPS に Linux Mint 17 をセットアップしたのでそれのメモです。 ISO ダウンロード デスクトップは軽量な方がいいので、Xfce を選択しました。 Linux Mint 17 Qiana のダウンロードページ http://www.linuxmint.com/download.php から Xfce 64bit 版のISOファイルをダウンロード OS インストール さくらのサイトの VPS コントロールパネルからインストール ISO をアップロードするためにアカウントを取得します。sftp 接続して /iso/ にダウンロードした ISO ファイルをアップロードします。 HTML5 版のコンソールを使って Linux Mint をインストールします。 Ubuntuのマニュアルを参考にするといいでしょう。設定箇所はユーザ名、ホスト名、ハードディスクの扱いくらいです。 ネットワーク そのままDHCPでセットアップされているので、手動に変えます。 ネットワーク接続でWired Connection 1 (eth0) の IPv4 を手動で設定します。 Wired Connection 1〜3 (eth0~3) の IPv6 の設定も手動に変えます。そうしないとオート処理が裏で延々走ります。 SSH SSHのポートフォワーディングを使うので SSH サーバを入れます。 # apt-get install ssh-server さらに ufw を activeにして SSHサーバポートを許可します。 VNC VNC サーバをインストールします。 # apt-get install vnc4server Vino の設定をします。 ...

2014年8月16日 · Toshimitsu Takahashi

iOSアプリエンジニア養成読本を共著させていただきました

技術評論社さんから刊行されますiOSアプリエンジニア養成読本[クリエイティブな開発のための技術力/デザイン力/マインドを養う!]を執筆させていただきました。 日頃お世話になっているクラスメソッド株式会社のエンジニアの諏訪さん、平屋さん、平井さんとフリーランスのyumulab 湯村さんとの共著になります。 自分が書いたのは三章立ての巻頭特集**「iOSエンジニアとして食べていくために知っておくべき14の重要スキルと知識 ~Appleの世界で生きるための処世術」**になります。 iOSアプリの開発からリリースまでに必要となるスキルや持っていた方がいい知識を、自分のこれまでの経験を基に網羅的に書いたものになります。 副題にあるとおり、iOSアプリを取り巻く世界はAppleによってコントロールされているため、良くも悪くもその中で巧くやる必要があります。 それらを特に、これからiOSエンジニアを目指す方・1年未満の方、既にやっているけどアプリのリリースをしたことは無い方、iOSの受託開発をしようとしている会社のプロジェクトリーダー・マネージャーの方を念頭に、幅広くそして嵌りやすい点は掘り下げて書かせていただきました。 特集1, 3, 4 についてはクラスメソッドさんのエンジニアの御三方のコメントをご覧下さい。 iOSアプリエンジニア養成読本執筆のお知らせ | Developers.IO 養成読本というサフィックスですが、他の方の特集記事も含めてエキスパートで無い限りは何かしら得るものがある本になっています。 書店でお見かけの際はぜひに手に取っていただけると幸いです。 iOSアプリエンジニア養成読本[クリエイティブな開発のための技術力/デザイン力/マインドを養う! ] (Software Design plus) 作者: ?橋俊光,諏訪悠紀,湯村翼,平屋真吾,平井祐樹 出版社/メーカー: 技術評論社 発売日: 2014/03/20 メディア: 大型本 ※ 自分の苗字を本来のはしごだかで書誌登録してもらったところ、UTF-8の全盛の現代でも文字化けや欠けになる場合があるみたいです。

2014年3月12日 · Toshimitsu Takahashi