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

UUUM攻殻機動隊

UUUMのエンジニアによる技術ブログです

wercker で Bitbucket のプライベートリポジトリをビルド!

新人エンジニアのハトネコエです。

UUUMでは毎週月曜日に社内勉強会をしていて、今週の担当は私なのですが、
昨日月曜日は台風のためお休みしましたので残念ながらおこなえず……

いえ、ごめんなさい!
実は土日かけて勉強会の準備してましたけどスライドはまだできてません!

土日は新幹線やホテルで、そして月曜は一日中、翌朝4時頃までがっつりやっていたのですが、
まだ発表できる段階まで至っていません。

これはテーマの決定をミスった気が……。

予定より軽めのテーマに変えることも考えつつ、
今日はその下準備の中で得たものを記事にしてみます。

個人開発はお金がない!

お金がないです。

でもソースは git で管理したい!

最近は GitHub の価格体系が変わり、
プライベートリポジトリをいくつ使用しても個人だと月800円程度、学生だと0円! と、とても安くなりました。
(以前はプライベートリポジトリの個数で月の料金が変わっていました)

とはいえ、Bitbucket のプライベートリポジトリは無料ですから、
個人開発やスタートアップ企業で使用しているところは多いことでしょう。

GitHub じゃないから Circle CI は使えないけど、カンタンなCIツールを使いたい!

そんなワガママを叶えてくれるのが、wercker です。

続きを読む

Railsの風が吹いたら確認したい、Rubyのモジュールシステム

こんにちは、入社して3ヶ月くらい経ちましたnakahashiです。

六本木のポケモンGOプレイヤーは気前がよく、職場周辺のポケストップはいつも花びらが舞っているので、キャッキャウフフな生活を過ごしています。

さて、UUUM攻殻機動隊では、最近Railsの風が吹き始めています。業務でRubyをどっぷり使い込んだことは個人的にはないので、言語の基本を見なおしているところです。

Rubyの基礎を勉強するにあたり非常に重要な、Rubyのモジュールシステムについてまとめてみました。

続きを読む

【小ネタ】Rails5でlogrageの出力にbacktraceを足す

nazoです。

Rails でログを出力する際に、書式とかをプラガブルに設定できる lograge という gem があるのですが、デフォルトで backtrace(スタックトレース) を含めてくれなくて困っていました。

従来はモンキーパッチで結構苦しい対応を迫られていたようですが、Rails5 から、payload に例外オブジェクトがそのまま入るようになった ので、

  config.lograge.custom_options = lambda do |event|
    { backtrace: event.payload[:exception_object].try(:backtrace) }
  end

で簡単に backtrace を挿入できるようになりました。便利ですね。

Angularfire2でつくるリアルタイムWEBアプリ

こんにちは、エンジニアのタナカです。

本日の社内勉強会ではFirebaseクライアントライブラリのAngularfire2を紹介させていただきました。
一昨年にGoogleに買収されて有名になったmBaasのFirebaseですが、社内でも意外と使ったことが無い人が多いようです。 無料でも利用できるので、個人での開発にもピッタリだと思います!

無料で利用できる範囲は以下のとおりですが、結構太っ腹な設定だと思います。

f:id:tnuuu:20160801112513p:plain

https://firebase.google.com/pricing/

リアルタイムWEBアプリについて

チャットアプリのSlackが有名なので皆さんご存知だと思いますが、以下の特徴があります。

続きを読む

徳丸本から学ぶクロスサイト・スクリプティング基礎

どうも、えんじにあのやまぐちです。

今回の内容ですが、前回に引き続き「安全なWebアプリケーションの作り方」からクロスサイト・スクリプティングの基礎を題材に社内勉強会で発表したので少しだけ書こうと思います。

http://www.amazon.co.jp/exec/obidos/ASIN/4797361190/bz2jp-22/ref=nosim/www.amazon.co.jp

クロスサイト・スクリプティング (XSS)

XSSは外部からの入力に対して表示が変化する箇所がある場合に発生します。
攻撃者が用意したスクリプトがサイト利用者のブラウザ上で実行
されることにより、クッキー値が盗まれ利用者がなりすましの被害に遭う、サイト利用者の権限でWebアプリケーションの機能を悪用される、といったことが起きてしまいます。
また、WEBサイト上に偽の入力フォームを表示され、フィッシングにより利用者の個人情報を盗まれるといったこともあります。

攻撃手法

  • クッキー値の盗み出し
  • JavaScriptによる攻撃
  • 画面の書き換え

クッキー値盗み出しの流れ
罠サイトのiframe内に脆弱なサイトを表示
脆弱なサイトはXSSによりクッキー値をクエリ文字列につけて遷移
情報収集ページは受け取ったクッキー値をメールで攻撃者に送信

続きを読む

開発合宿に行ってきました

f:id:harada_d:20160720005107p:plain
はじめましてメディアユニットのだ〜はらです。

今回はUUUM攻殻機動隊blogにお邪魔します。

7/15(金)~7/16(土)にUUUM攻殻機動隊とメディアユニットで温泉旅行開発合宿に行ってきました!

場所は東京から車で2時間弱、湯河原にある「おんやど恵」という旅館です。 ここの旅館に決めた理由は主にこちらです。
・都会から2時間程の距離
・wi-fi環境
・24時間使える大きめな会議室
温泉

はい、温泉は絶対条件でした(笑)

旅館紹介

今回お世話になった旅館を簡単に紹介します。

続きを読む

不具合から見る go の database/sql の挙動

nazoです。

先日、とある go で書かれたWebサーバーで、too many open files が出て死ぬ、という問題が発生しました。今回はその点に関して調査した内容を紹介したいと思います。

調査内容と結果

too many open files は、言うまでもなく、ファイルの開きすぎで出るエラーですが、 lsof してみたところ、 can't identify protocol 状態のものが大量に存在していました。ソケットが正常に閉じられずに放置されていたようです。

さらに調査をしていると、トランザクションの BeginCommit をコメントアウトすると発生しなくなることが判明し、そこから以下のバグが発見できました。(gorm を使用しています。また実際のコードとは違います)

続きを読む