blog技術系のブログ。RailsとかjQueryとかiPhoneアプリとかAndroidアプリとか。サービスを動かす際の設定や実行方法について書いておく。ApacheやRailsのインストールは完了している前提なので注意。01/01/2007Railsアプリの作成からPumaのインストール通常通りRailsアプリを作成し、GemfileへPumaのgemをインストールするよう記載。tmp/socketsconfig/puma.rb以下の内容でconfig/にpuma.rbを作成する。pumaのログをlog/以下に出力する。trueは追記モード。Daemonizing...起動できた。ApacheをWebサーバとしてPumaへアクセスできるよう設定バーチャルホストを利用している。virtualhost_MYAPP.confはドメイン(Railsアプリ)毎に作成し、puma-confは共通なので一度作成すれば良い。puma-confはpuma.confではないので注意。これは置いてあるディレクトリの性質上.confとすると自動的にIncludeされてしまうためだ。(他の良い方法あればコメントほしい)大元の設定ファイルを含めて3ファイルのInclude関係は以下の通り。ここでは大元のhttpd.confの内容は割愛するが、バーチャルホストを利用すること以外は通常のものと変わりない。conf.d/puma-confvirtualhost_MYAPP.confRailsアプリのアプリケーションサーバ(Puma)へ接続するためのリバースプロキシ設定をバーチャルホストとして設定する。</directory></virtualhost>puma-conf共通で使うpuma-confファイル。パスの変換や静的ファイルはApacheで処理することなどが書かれている。text/htmlApacheを再起動してアクセスしてみるこれら設定ファイルが用意できたら、設定ファイルをテストして問題無ければApacheを再起動する。]これで、ServerNameに設定したmyapp.example.comへブラウザでアクセスしてみて見慣れたRailsアプリのTOPページが表示されればOKだ。Rails4の環境でアプリケーションサーバPumaを利用するための一連の手順を書いてみた。config/puma.rbは同じサーバで動く別アプリとPort番号が被らないように設定すれば使い回しができるようにしてあるので、テンプレートにしてみても良いかもしれない。良い方法などあればコメント等で教えてもらえると嬉しい。Uchiyama返信はじめに昨日、Gunosyは多くのユーザに同じ記事を配信しているのか検証してみたという記事を書いた。ランダムにピックアップしたGunosyユーザの特定の日の配信記事リストから、記事URLを使って重複をカウントし、本当に重複記事数が著しく多かったり、ユーザ間の重複率が批判の通りなのかを検証したものだ。こちらでは、技術ブログなので検証に使ったコードを公開して簡単に解説しよう。今回は、素早く分析するためにフレームワークなどは使わず、捨てる前提のスクリプトを以下の方針で書いた。APIにより、gunosy.com内の公開ユーザ名をリストアップする。APIの制約上、上位100件までしか取得できないことが分かっていたため、ブラウザからAPIにパラメータを変えて10回アクセスし、それぞれの結果を1.jsonから10.jsonとしてローカルに保存した。Developersに書いてある順番通りに作業すれば使えるようになると思うので試してみてほしい。以下のINSERT-YOUR-KEYの部分を自身のKEYに変えてリクエストすると試せると思う。2ページ目以降を取得する際に変更するパラメータはstartだ。https://www.googleapis.com/customsearch/v1?key=INSERT-YOUR-KEY&cx=016434714500670441010:kxhgwdwqsza&q=site:gunosy.com&start=1今回は、1.jsonから10.jsonを含むファイル群を後述のRubyファイルと共にGithubに上げてあるので、試す人はそちらを使うと良いと思う。(ORM)データベースには、MongoDBを利用した。ローカルにMongoDBがインストールされていて、ポート27017(デフォルト設定)で起動していることを前提にしている。endendユーザ名をnameカラムとして保持する。urlメソッドにより、特定の日にユーザへ配信されたGunosy上の記事一覧ページURLを作っている。:destroyendこちらもUserモデルと同様の形式で、配信された記事URLとタイトルを保持している。recommended.rbこれは、UserモデルとArticleモデルを多対多でつなぐためのモデルで、両モデルのIDだけを保持している。本来のKVSの使い方とは違うかもしれないが、自分としては分かりやすいので良くこういった書き方をする。(Import)import.rbこのファイルは以下のように単体で実行すると、既存DBをクリアして事前準備したデータを読み込む。endendそんなに複雑なことはやっていないが、GitHubにも上げた先述の1~10.jsonを順番に読み込み、ユーザ名を抽出して、それぞれの5/5に配信された記事一覧をスクレイピングして取得している。-r”./import”最後にirbを以下のようにimport.rbを読み込んで起動し、各種検証用に数字を確認した。-r"./import"TSVファイルへ結果を書き出す上記の通り起動したirb上で以下のコードを実行すると、articles.tsvにデータが出力される。Excel以外で見るときなどは、.tosjis部分を削除すれば文字コードがUTF-8になるはずだ。endendなお、最後になったがRubyのバージョンは以下である。[x86_64-linux]さて、はてブのホットエントリーデータも入手できたことなので、次回はさらにはてブとGunosyが似ているという点についても調べてみよう。