Twitter Facebook github

Beanstalkでデプロイ対象のファイルを柔軟に制御

前回 AWS Elastic Beanstalk を EB CLI からデプロイする方法について書きました。

この続きとして、今回はデプロイ対象のファイルを柔軟に制御する方法です。

gitと連携した eb deploy を実行した場合、Beanstalk環境にデプロイされるファイルもgitでステージされているファイルとなります。
この場合、.gitignore が存在すると、そのルールに従ってEB CLIがパッケージングを行います。

既存の問題点

何も設定せずとも .gitignore を参照してくれるのは便利な反面、困ったことも起こり得ます。
例えばデータベースへの接続情報やパスワードのソルトなど、セキュリティ上の観点などでgitの管理対象外にしているファイルが実際は存在するのではないでしょうか?

こうしたファイルは実行時には同時にパッケージングしてBeanstalk上にデプロイする必要があるため、gitignoreに含まれている故に無視されてしまっては困ります。

そこで便利なのが .ebignore です

Read More »

Elastic Beanstalk にEB CLIから簡単デプロイ

ごぶさたです。
今趣味で作っているプロダクトのテスト環境を、AWS Elastic Beanstakで実装してみたので備忘録をば。

Beanstalk でのデプロイメント

AWS Elastic Beanstalk (以下EB) で構築した環境へデプロイするには、ソースコード一式をzipに固めたソースバンドルファイルを作成し、マネジメントコンソール等からアップロードします。
この方法ではデプロイの度に手作業でzipアーカイブを作成しなくてはならず、CI環境を構築した自動化を行わない限り、毎回のデプロイに待ち時間が発生してしまいます。

もっと簡単にデプロイするために、今回は gitとEB CLIを使ったデプロイメントを紹介します。

gitを使ったデプロイといえば、SalesforceのHeroku等もPaaSとして有名なのですが、まさにソースバンドルのバージョン管理等も似た感覚で利用できます。Herokuと違い、直接インスタンスへのSSHも可能なので何か問題が発生したときも簡単に対応できます。

Read More »

Laravel 5.2 で withErrors が動作しない時は

かなりハマって悔しかったので備忘録。

現象

LaravelのAuth周りを使ってログイン機能を実装中、ログイン失敗時のフラッシュメッセージとして動かす予定だった withErrors が正常に動かない現象が起こりました。
具体的には AuthenticatesUsers クラスにある sendFailedLoginResponse メソッドがコールされたとき、ログイン失敗を示すメッセージがリダイレクト後のページで取得できず、
$errors 変数にはデータバッグは存在するものの、値が空の状態になりました。

結論

先に結論を書くと、webミドルウェアが二重適用していたことが原因でした。

php artisan route:list を実行すると定義されているルーティング一覧を確認できますが、
そのミドルウェア欄には web,web,auth のように web が二度呼ばれていることが分かりました。
Read More »

GitHubのプライベートリポジトリが無制限に!

といっても有料プランで、無料プランではプライベートリポジトリはまだ作成することはできません。。

個人的にはめちゃくちゃ嬉しいアップデートなので、みなさんにも使ってほしくて簡単に紹介します!

新しい料金体系?

2016年5月11日から、個人の有料プランにあるプライベートリポジトリの個数制限が撤廃され、有料プランを契約することで無制限に利用できるようになりました。

公式のプレスリリースはこちらです!

Introducing unlimited private repositories
https://github.com/blog/2164-introducing-unlimited-private-repositories

それではアカウントの種類ごとに紹介したいと思います。

個人プランはかなりお得!

GitHubでプライベートなリポジトリを使用したい場合、有料プランを契約する必要がありますが、料金は個人アカウントと、法人(Organization)アカウントで料金体系が異なります。

従来の個人アカウントは、持てるプライベートリポジトリの数に応じて次のような料金体系でした。

Read More »

AWSで Windows インスタンスを使うときのハマリポイント

最近、24時間起動しておきたいスタンドアロンなWindowsアプリがあり、自宅マシンの代わりにAWS上でWindowsインスタンスを使用することにしました。基本的には日常的に使用している手元のMacから使いやすいように設定しました。

Windowsインスタンスにはリモートデスクトップを使ってアクセスすることになるのですが、これが曲者で・・・。日常的に使いやすいようにカスタムしていこうと思います。

Macの場合、App Storeから Microsoft Remote Desktop アプリを使います。執筆時点のバージョンは 8.0.31 です。

日本語のアプリが文字化けする

これは投資に使っているMetaTraderというチャートツールですが、思いっきり化けます。英語版があれば別にいいのですが、国産のアプリなんかで日本語版しか提供されていないと地獄を見ます。

Read More »

ImageMagick の脆弱性 CVE-2016–3714 について

先日2016年5月3日ごろ、ImageMagickの重大な脆弱性(CVE-2016-3714 ほか)情報が公開されました。この脆弱性は ImageTragick と名付けられています。

次のページに日本語で完結にまとまっているため、是非一読ください。

概要と影響範囲

ImageMagick内で処理する際にコマンドのエスケープが完全でなかったことが原因で、リモートで任意のコードを実行可能になります。

次のmvgファイルを作り、処理させることで再現できます。

Read More »

Laravel の Elixir で TypeScript を使う

こんばんは。つい最近までコートを羽織っていたと思えば、もう随分暖かくなりましたね。

数日前から趣味で新しいウェブアプリを書いていて、折角なので勉強がてら新たにPHPフレームワークのLaravelを採用することにしました。噂には聞いていましたが確かに素晴らしい出来で、今後PHPのプロジェクトでは第一候補としたくなるようなものでした。

検証環境

  • Laravel framework v5.2.31
    • Elixir v3.x

次の3つはグローバルインストール済み

  • TypeScript v1.9.0
  • typings v0.8.1
  • gulp v3.9.1

Elixir でも TypeScript 使いたい!

Laravel には、フロントエンドの開発を支援する Elixir という gulp のラッパーがあります。デフォルトでSassやLessのコンパイル、JSのcombine&minifyとかできるすごいやつ。でもTypeScriptはサポートしてくれないので、自力でがんばる必要があります。(CoffeeScriptは公式サポート対象なんてズルい!)

Read More »

LinkedInからレジュメ用PDFを作るコードを書いた

コードというかスニペットというか。本題まで長いので、時間がない方は段落4.1まで飛ばしてください。

転職したい気持ちが強いわけではないのだけど、ご縁があればと思って、最近声をかけていただいた会社には足を運ぶようにしています。

スカウトだったり、Wantedlyなどで”話を聞きに行きたい”として応募しているのに、履歴書・経歴書を求められるのは…と思うものの、自分が採用の立場なら、お願いしていた情報だと思うので仕方がない気もしています。

今回は転職を考えているけど、忙しくて履歴書・経歴書を作る時間も惜しいという方向けに、LinkedInを使ったレジュメの作成について書いてみます。

LinkedIn って?

LinkedInはユーザー数が2億人を超え、米国などでは一般的なビジネスツールとして活用されています。プライベートはFacebook、ビジネスはLinkedInのように使い分けているという話もよく聞きます。
日本の一般的な履歴書・職務経歴書に記載するような内容をすべてLinkedInのプロフィールに書くことができ、LinkedInを使ったヘッドハンティングや求人に対する応募も可能です。

ただこのサービス、日本では全然流行っていません。。転職を考えている人にはとても良いサービスのように思うのですが、日本のような未だに終身雇用が当然のようになっている文化とはマッチしないのだと思います。それでも転職を考える人にとっては、登録しておくだけ無駄にはならないですし、ビジネスプロフィールを一元管理できるサービスと割り切って使うだけでも十分の価値があると思います。

Read More »

自宅住所のリークを防ぐ! SSIDに _nomap を追加すべき

随分昔に話題になっていたのですが、Twitterで偶然この話題を見つけたので書いてみます。

知らずの内に位置情報を収集されている

Googleは、Android端末や GoogleMaps などを使用しているiPhone端末などから、接続しているWiFiアクセスポイント(以下AP)のMACアドレスとモバイル端末のGPS情報を収集しています。

このデータを用いてAPと位置情報をマッピングするデータベースを構築しており、非GPS搭載端末の位置情報サポートや、位置情報精度向上のために使われています。
(別にこの手法はGoogleが悪者というわけではなく、MicrosoftやAppleをはじめとして、日本ではPlaceEngineなど、広く使われています。)

何が問題なのか

ここでもGoogleのサービスを例に挙げますが、Googleはジオロケーションサービスプロバイダとして、 “Google Maps Geolocation API” というものが提供されています。

問題はこのAPIの一部に対し、APのMACアドレスを与えることで、誤差数十メートルの圏内までAPの位置が特定できることにあります。
これは悪用を考えたとき、例えば遊びに行った友達のMACアドレスを使えば過去に住んでいた場所が特定できる可能性もありますし、引っ越した後も同じAPを使っていれば容易に新しい住所を知ることができます。
より一般的なケースでは、例えば古いAP機器を友人に譲る際に、下記のオプトアウトを実施していないと自宅の住所が知られてしまいます。

Read More »

TypeScriptの string と String の違い

すべてを String で書いてたら、あるときエラーになってしまったので共有します。

エラーの理由

クライアント側のコードをTypeScriptで書いていたとき、SocketIOのライブラリを使っていたところ、次のエラーになりました。

ライブラリの定義を確認すると string の引数を受け取るところに String の変数を与えていることが分かりました。
Stringとstring? あれ、同じじゃないの?なんて思っていたらどうやら違うようです。

エラーの再現コードはこんな感じです。

Read More »