Katana + log4netによるWeb APIのロギング

ASP.NET MVCRails::Rack::Loggerみたいなことできないかなという話。Katana + log4netでの実装とtipsについて以下述べていきます。

tl;dr

  • Katanaを使ってログ用のカスタムミドルウェアを作る
  • リクエストからの一連の処理を一意に識別するためにGUIDを使う

ASP.NETミドルウェア

ASP.NETRubyでいうRackのようなものであるOwinが搭載されました。

OWINは Open Web Interface for .Netの略で、 Webサーバに依存しないWebアプリを実現するための規格のようです。 この規格を満した開発を実現するため、Microsoft複数コンポーネントを提供しています。 このコンポーネント群をKatana Projectと呼んでいます。

(via yamamotoさん@社内Advent Calendar)

Owin&KatanaによりASP.NETでもRackミドルウェアのようなものが差し込め、認証やロギング周りの実装がいい感じにできるようになりました。

続きを読む

社内アドベントカレンダーradventについて

社内用アドベントカレンダーradventを作ってから色んなことが起きたのでまとめておきます。

tl;dr

  • きっかけは社内SNSから
  • 実際に作って運営してみてわかったこと
  • 軽く発表した
  • 紹介された

radventとは

f:id:koyamay:20150116100819j:plain

nanonanomachine/radvent · GitHub

Qiita様のアドベントカレンダーを社内のイントラネットでできるようにしたRuby on Rails製のアプリです。markdown形式で記事を投稿することができ、リアルタイムプレビューや画像アップロード機能などがあります。Qiita様と違い、日付が過ぎると登録記事が自動公開されます。

続きを読む

RailsのparamsはString

備忘録として。

はまった、というか初めて気づきました。タイトル通りRailsparamsStringなんですね。

事の経緯

以下のようなコントローラーがあったとします。

class ItemsController < ApplicationController
    def new
        @date = params[:date]
    end
end

それに対するspecが以下

require 'rails_helper'

RSpec.describe ItemsController, :type => :controller do
    describe "GET #new" do
        it "assigns the requsted date to @date" do
            get :new, date: 1
            expect(assigns(:date)).to eq 1
        end
    end
end

結果がこちら

f:id:koyamay:20150104212617p:plain

ナンデString!?

そういうもんだった

つまり、

  1. params[:hoge]は文字列で帰ってくる
  2. findメソッドは文字列でも指定することができる

ので普段あまり気づかなかったのですね。rspec書き始めて初めて気づきました。勉強になりました。

Herokuでnpmのキャッシュにはまった

先週末Heroku + Node.jsではまったのでメモしておきます。

tl;dr

  • npmのdependenciesにgitレポジトリを指定したらHerokuのキャッシュではまった
  • heroku/heroku-repoいれたら快適Heroku生活できるようになった
続きを読む

gitでnumstatを利用して総追加行数、総削除行数を取得するワンライナー

上期も終わり開発中のgitリポジトリの情報を採取して遊んでいました。Qiitaでコミット数や総追加行数、総削除行数を取得するワンライナーについての投稿があり活用させて頂いています。ありがたい...!

リンク先のワンライナーでコミット数は正確に計れるのですが、総追加行数と総削除行数がなにかおかしい。なぜか総追加行数が非常に多く計算されていました。

というわけで原因を調べてみました。

続きを読む

Elasticsearch + NESTによるインデックスの操作とCRUD基本

Elasticsearchを.NETで扱うライブラリNESTの基本的な操作についてです。

ドキュメントがあるにはあるのですが、情報が古いため現在では使用することのできない記述なども多いです。そのためテストコードを見るのが確実だと思います。ここではNEST ver.1.1.1のインデックスの操作と、簡単なCRUDについてメモ代わりに記載します。

続きを読む