読者です 読者をやめる 読者になる 読者になる

production.log

ピクスタ株式会社でエンジニアのマネージャーをやっている星直史のブログです。

技術

AWS Rekognitionで画像内の物体名を取得する方法

概要 AWS re:Invent 2016で発表された新機能の中にAWS Rekognitionという画像内の物体、シーン、および顔を検出するサービスが発表されました。 今更感ありますが、Rekognitionで画像内の物体名を取得する方法を書きます。 Lambdaでの処理 'use strict'; con…

【ServerlessFramework】lambdaでgmを使って画像加工をする方法

概要 ServerlessFrameworkにおいて、Lambdaで画像加工をする場合、Imagemagickかgm(GraphicsMagick)を使用することになります。 AWS公式ドキュメントではgmを使用しているので、今回はgmを使用してサムネイル作成処理について、書こうと思います。 ハマりど…

RedashでAWS DynamoDBに対してDQLを発行しデータ取得する方法

概要 表題の通りです。 RedashでDynamoDBからデータ取得する場合DQLという、SQLライクな書き方でデータを取得することになります。 今回はDynamoのIndexを指定して絞り込みを行う際に、ちょいハマりしたので、メモとして記録します。 AWS DynamoDBの設定 テ…

自前で立てたRedash(0.12.0+b2449)を最新1.0.3にupgradeする方法

概要 Redashが0.12.0の時に、AWS AMIから立ち上げたのですが、 この度、メジャーバージョンアップしたので、手動でupgradeした時のメモです。 手順もなにも、ドキュメントがあるのでその通りにやるだけですが、 コマンド実行する際に設定を変更する必要があ…

【ServerlessFramework】DynamoDB Streamsでデータの更新をトリガーにLambdaを動かす方法。

概要 表題の通り、DynamoDB Streamsでデータの更新をトリガーにLambdaを動かす方法について説明します。 AWSマネジメントコンソール上でのDynamoDB Streamsの有効化 まず、AWSマネジメントコンソールでStreamsを有効化する必要があります。 DynamoDB > Table…

【ServerlessFramework】S3のオブジェクト格納をトリガーにLambdaを動かす方法

概要 S3に何かしらのオブジェクトを配置したことをトリガーにLambdaを動かす設定について紹介します。 runtimeはnode.jsです。 lambdaの処理を書く lambdaにはトリガーが正常に動いていることだけを確認すれば良いので、 console.log("hello")とだけ書いてお…

【ServerlessFramework】AWS LambdaとCognitoで作るセキュアなS3へのオブジェクト格納

概要 ユーザーがアップロードした画像データをS3に保存するケースにおいて Serverless Frameworkを使用して、AWS API Gateway 経由しLambdaで処理をするときに、 Cognitoで認証したユーザーのIAMをSTSを使用してS3にPUTするときの説明です。 今日は上記の図…

Serverless Framework 1.10.2でAWS IAM変数(${cognito-identity.amazonaws.com:sub})を使用する場合の設定

概要 標題の通りですが、Serverless Framework 1.10.2において、serverless.ymlにAWS IAM変数(${cognito-identity.amazonaws.com:sub}など)を使用する場合、 フレームワークの挙動として${文字列}の値を設定した変数に置き換えようとする動きをするので、そ…

ファイル内の改行を置換するコマンド

2ファイル間で重複する / しない 行を出力する方法 こちらの操作をするときに、セットで、ファイル内の改行を置換するコマンドを調べることがあるので、 メモ程度に残しておく。 $ cat hogehoge.text 1 2 3 4 5 上記のファイルを1,2,3,4,5と出力したい場合の…

2ファイル間で重複する / しない 行を出力する方法

タイトルの通り、何気に結構使う処理だけど都度調べているからメモとして残す。 a.text と b.textが以下の内容の時、1と 2,3,4,5を出力したい場合 $ cat a.text 1 2 3 4 5 $ cat b.text 2 3 4 5 $ sort {a,b}.text | uniq -u # ユニークな行を出力 $ sort {a…

@t_wada さんの「Mac の開発環境構築を自動化する (2015 年初旬編)」をAnsible ベストプラクティスに則り書き換えてみた

Ansibleでmacの環境構築する際、t-wada さんの「Mac の開発環境構築を自動化する (2015 年初旬編)」を参考したのですが、Ansible Best Practicesに沿っていなかったので、書き直してみました。

Rubyで使われるコロンの意味を調べてみた

概要 Rubyを初めて触ったときに、(当時の自分が触っていた)C#とJAVAではコロンが使われておらず、 これはどのような意味なのかがよく話からたかったので、まとめてみました。 :symbol "symbol" こちらの違いについてまとめます。 Rubyにおけるコロンの意味と…

homebrewでinstallしたcurlがbrew cask install時のTLS1.2ではOSX標準のcurlが邪魔をしてうまく反映されなかった時の対処法

概要 homebrewでinstallしたTLS 1.2 接続できるcurlがbrew installでTLS1.2接続しなければならないパッケージのinstall時に、OSX標準のcurlを見に行ってしまい、うまくinstallできなかったので、その対処方法を書きます。 具体的には、brew cask install sou…

homebrewでinstlalしたOpenSSLが反映されず、OSX標準のOpenSSLが使用されてしまう場合の対象方法

概要 OSX標準のOpenSSLが古く、tls1.2で通信できず、curlが失敗する事案が発生してしまいました。 対処方法を調べても、 `brew update brew upgrade openssl brew link openssl --force で治りました^^ という記事が多かったのですが、上記の対応でもopens…

AWSアカウント開設直後 & EC2インスタンス立ち上げ直後に最低限行うべきこと

概要 以前からクラウド破産クラウド破産と耳に入ってはいたが、個人で利用しているAWSアカウントはほぼノーガードでした。 また、ピクスタの来期AWS予算を策定していく中で、こんな金額がいきなり身に降りかかってきたら生命保険に入ることを考えてしまうだ…

Re:dashのインストールから定期実行までの手順と使用感のまとめ

前回までの記事でWebサービスのデータ解析をする上で必要なデータソースから取り込む手順を書きました。今回は、それを定期的に実行する設定の手順と使用感などをまとめます。

GoogleAnalyticsからGoogleスプレッドシートに自動でデータを取得する

前回の記事では、Googleスプレッドシートの値をRe:dashに取り込む方法を紹介しました。 今回は、GoogleAnalyticsのデータをGoogleスプレッドシートに取り込む手順を紹介しようと思います。

Googleスプレッドシートの値をRe:dashに取り込む

Re:dashではDataSourceにGoogleスプレッドシートを指定することができます。Googleスプレッドシートからデータを取り込む場合、GoogleAPIConsoleからAPI Keyを発行するなど、手順が多かったので、今回の記事でまとめようと思います。

Re:dashでデータソースとしてMysqlを追加する

前回の記事でRe:dashを使えるようにしましたので、今回はDataSourceとしてMysqlを追加してみます。

データ可視化, 共有プラットフォームとして人気のRe:dashをAWS EC2で試してみるまでの手順

うちの会社では社内のユーザーがMysqlのデータから何らかの数値をグラフで確認する画面やGoogle Analyticsの数値をGoogle スプレッドシートに貼り付けてグラフ化するということが数多くあります。正直Railsで実装するとなると、viewまで書かなければならなく…

エンジニア版 人を動かすだと感じた TeamGeekを読みました。

最近はコードより人とやりとりすることが多くなってきたので、TeadmGeekを読んでみました。今回はその感想を書きたいと思います。

Solr 4.10.4でSolrCloudを試してみました。

ピクスタの開発部で開発合宿を開催したので、Solr4からの新機能であるSolrCloudを試してみました。

Solr 4.10.4でレプリケーション(master-slave構成)を試してみました。

Solr4.10.4でレプリケーション(master-slave構成)について学びました。ピクスタの開発合宿のネタとしてやってみました。

Solr 4.10.4で分散インデクシングを試してみました。

Solr 4から登場したSolrCloudを今更ながら試してみることにしました。 今回の記事では分散インデクシング(Sharding)について触れようと思います。

「ついていきたい」と思われるリーダーになる51の考え方 を読みました。

ひょんなことから、リーダーポジションになり、色々勉強してきたのですが、いわゆる"理想の上司"的な人物像について書かれている本が多く、少し懐疑的になっていました。そんな時に「ついていきたい」と思われるリーダーになる51の考え方という本を読んだの…

上司のルール を読みました。

ひょんなことから、リーダーポジションについたので、まずは、理想のリーダー像を学ぶことを目的に上司のルールという本を読みました。今回はその感想を書きます。

人を動かす を読みました。

色々な人と接する機会が増えたので、今更ながら人を動かすを読みました。今回はその感想を書きます。

CircleCIで回しているRspecのテストを40%高速化しました

CircleCIで回しているRspecのテストを40%高速化しましたので、手順を紹介します。

スクラムのプランニングで見積もりと計画がうまくいかなかった時に参考になった本を紹介します

スクラムのプランニングで見積もりと計画がうまくいかなかった時に参考になった本を紹介します。 「アジャイルな見積もりと計画づくり」という書籍を読んだ感想をまとめました。

スクラムのレトロスペクティブをもっと掘り下げて学ぶときに参考になった本を紹介します

スクラムのレトロスペクティブをもっと掘り下げて学ぶときに参考になった本を紹介します。 「アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き」という書籍を読んでの感想をまとめました。

Xcode7 で Buildしたときにyou must rebuild it with bitcode enabledと 出てしまう場合の回避方法

概要 Xcode7 で Buildした際に does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7 といわれ…

rbenvを使用したrubyのバージョン管理と最新状態に保つ方法

概要 rbenvのインストールと設定 rubyのバージョンの最新を取得 rbenv インストール $ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv $ mkdir -p ~/.rbenv/plugins $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugi…

Amazon CloudSearch における適切なスケーリングオプション(Scaling Options)を紹介します

概要 Amazon CloudSearch における適切なスケーリングオプションの設定を紹介します。 設定できる項目は下記の通りです。 インスタンスタイプ レプリケーション数 パーティション数 以下、公式ドキュメントより引用 ドメインのスケーリングオプションを設定…

スクラムのレトロスペクティブをKPTで振り返りするときに参考になった本を紹介します

スクラムを導入してなんとか1スプリントが終わったばかりなのですが、 レトロスペクティブ(振り返り)の具体的な進め方がわからなかったので、 「これだけ!KPT」という本を読んだらスムーズに進行できたので、 紹介しようと思います。 KPTをするの時のバイブ…

これからスクラムを始める人へのお勧め本を紹介します

ひょんなことから、会社でスクラムを使って開発をすることになり、スクラム関連の本を読み漁ったので、 これを機会にお勧め書籍を紹介します。 アジャイル手法 アジャイルサムライ アジャイル開発手法についてまとめた本。 これを読んだ時は、スクラムの存在…

Red Hatにberkshelfを入れようとした際に発生するエラー回避方法

背景 こちらを参考にchef, knife-solo, berkshelfをインストールしようとしたときに、berkshelfがエラーでインストールできなかったので、 その回避方法を書く。 対象サーバー AWS EC2インスタンス:RHEL-6.5_GA-x86_64-4-Hourly2 (ami-35106f34) 実行コマン…

Railsアプリケーションにおいて、ファイルアップロードする際のウイルスチェックをClamAVで実装する

背景 手軽にファイルアップロード機能を実装するときにCarrierwaveをよく使うんですが、 ひょんなことから、アップロードされたファイルのウイルスチェックをする必要がでてきたので、 チェックするまでの手順を、ClamAVのインストールとチェック方法を主に…

EC2上でrails4.2.1のWebrickを起動後、tcp port 3000番でアクセスできなかった時の対応

概要 新たなサービスを立ち上げるならRubyもRailsも最新が良いよね〜ということで、 Ruby 2.2.2 Rails 4.2.1 で環境を作り、Webrickを起動してhttp://#{ip}:3000でアクセスしよ〜と思ったところ、 なぜか、アクセスできなかったので、その時の対応方法を書き…

ActiveRecordのコールバックにハマったでござる

無限ループに泣く class Hoge < ActiveRecord::Base before_update :update_hoge!, if: :fuga_changed? private def update_hoge! hoge = true save! end end Hoge.find(1).update_attributes!(fuga: true) コールバックが発火しない class Hoge < ActiveRec…

meshlabでオブジェクトを回転 / 移動させたい時の操作

やりたいこと 3Dオブジェクトの初期表示時は中心が定まっていない場合があるため、 回転 / 移動処理で任意の向きに調整させる。 オブジェクトを回転させる メニュバーより、下記の通り選択 Filters => Normals, Curvatures and Orientation => Transform: Ro…

EC2上で動作するRails 4系アプリでRapidSSLを使ってhttps設定をするときの手順

ひょんなことからhttps設定することになったので、その手順をメモ書き程度に 1.何はともあれ証明書の購入 購入はどのサイトでも良いけど、自分は↓こちらを使いました。 SSLストア 2. CSRを作成 証明書購入をしたら、証明書を有効にするためにCSRという、認証…

メタプログラミングについて、動画でわかりやすく解説する。

色んなサイトで調べても、結局メタプロってなんなん? どうやって書くん? ってなることが多かったので、自分で解説動画を作ってみた。

AWSでEC2を立ち上げてからWebに公開するまでの手順をまとめてみた。※OpsWorks未使用

タイトルの通り、このたび1からEC2インスタンスを立ち上げて、Webサイトを立ち上げることになったので、公開するまで(passengerで動作するまで)にインストールするものをまとめてみました。 gist11095099 t1.microでインストール作業をすると恐ろしく時間が…

RailsからJavaScriptにデータを渡すgonではまった。

RailsからJavascriptにデータを渡すgonというgemをRails3.0を使用したシステム使ってたはまったのでメモついでに。 ※最新バージョンは5.0.4 gonはcontroller側で gon.valiable_name = "hogehoge" と書くと、js側でも alert(gon.valiable_name) と記述できる…

ActiveMerchant(Paypal決済)の定期購読をキャンセルする方法。

ActiveMerchant(Paypal決済)の定期購読をキャンセルする方法はものすごく簡単。 一番簡単なのはPaypalの管理画面から手動でキャンセルする方法だけど、 ユーザ / PaypalAPIを通してキャンセルするには下記の方法がある。 gist9211591 account_idはgateway…

ActiveMerchant(Paypal決済)で円決済を行う場合の注意点

ActiveMerchant(Paypal決済)で円決済を行う場合の処理を書いていたんだけど、どうもSandBoxのステータスを見ると、入力した金額の百分の一になってしまうので、調べてみると、 ActiveMerchantでは金額の入力をセント単位で扱うため、日本円にする場合は*10…

Blenderで作成したデータをjson形式で出力する方法

Blenderでモデリングをした後に、json形式で出力すればプログラムからも用意に扱えるはずと思い、探してみました。 必要なもの Blender本体( http://www.blender.org/download/ ) エクスポータ( https://github.com/mrdoob/three.js ) 手順 1.なにはともあ…

Apache バーチャルホストの設定で2つのサイトを1つのVPSにまとめた

2つサイトを運営していますが、インフラ構成が VPS2台・・・・・・4,500円 / 月 DBサーバ1台・・・1,500円 / 月 月額6,000円と、薄給のボクにとっては結構痛いので、VPS1台にMysqlを入れて、DBサーバーを解約 && 2つのサイトを1つのVPSにまとめることにしま…

【Rails】Carrierwaveで画像リサイズ時、iPhone/iPadで縦写真用に撮影した画像が横になってしまう時の対応【gem】

Choistyle では、ユーザが登録した画像をCarrierwaveを使用して、S3に保存しています。 Carriawaveでは画像の形式チェックやリサイズなどなど、最適化処理をするわけなのですが、 iPhoneで縦写真を処理する場合になぜか横向きのままになってしまいます。 今…

HTML5 Conference 2013 - セッションを回る順番を決めてみた

2013年11月30日(土)にHTML5 Conference 2013が開催されます。わっしょい! 僕は運良く ズサー⊂(゚Д゚⊂⌒`つ≡≡≡ できたので、聴いておきたいセッションを、しおり的にまとめてみた。 ※セッション単位に何するかって感じで。 【13:00 - 13:45】 真面目なアニメーシ…