プログラム
個人でささやかにWebサービスを運営されている方向けにImpasというAPIサービスを作りました。 http://impas-hideack.sqale.jp/ このサービスは「twitter上でのツイート数、facebook上でのいいね数、はてなブックマークでのブックマーク数で簡単にランキング…
New relic New relicはパフォーマンス監視サービスでRackアプリケーションの場合、用意されたnewrelic_rpmというGemをインストールするのみでNew relicが用意するダッシュボードでページが表示されるまでのパフォーマンスの詳細な内訳(Ruby自体の処理時間、D…
APIサーバへcurlコマンドでPOSTリクエストし、そのリクエストBODYに任意のJSON文字列を指定したい場合の方法を2回調べたのでメモしておく。 curl -X POST -d '{"url":"http://remp.jp"}' http://hoge.jp/api/registration いい加減覚えよう…。
ストーリーボードをSqale(http://sqale.jp )へ運用を移管したのは以前簡単にここにも書きましたが、一度どういった技術を使っているのかまとめがてら整理してみます。 実装 現在、実装周りでは、 アプリケーションフレームワーク: Padrino データベース: Mon…
Padrinoでpadrino console使うと標準ではirbが立ち上がりますが、これをPryに切り替えたい場合、Gemfileに以下の内容を追加するだけですぐに使えました。 #Gemfileに以下の2行を追加 gem "pry" gem "pry-padrino" 試してみる。 $ padrino console => Loading…
SQL的に select sum(file_size) from Pictures where user_id=10; といって書く様な処理をmongoidでさせるのどうすればいいのかと調べたのでメモ。 愚直に、 size = Picture.where(user_id: 10).sum(:file_size) でよいのですね。そのまんま。
Padrino (Padrino v. 0.10.6) でORMをmongoidに指定した場合 $ padrino g project projectname -t rspec -e erb -d mongoid $ padrino start /usr/local/Cellar/ruby/1.9.3-p125/lib/ruby/gems/1.9.1/gems/bundler-1.2.0.pre/lib/bundler/runtime.rb:68:in `…
padrinoで作っていたrakeタスクを... $ padrino rake tasknameといった具合に実行しようとするとdevelopで実行されていてrakeタスクの中で呼んでいたmongoidがdevelopを向いていて本番用のデータベースを向いて実行されない。 よくよく考えると環境変数設定…
Padrinoでは、rakeタスクを実行したい場合、特にRakefileを配置しなくてもrakeコマンドを付与することで実行することができる。 $ padrino rake (実行したいrakeタスク) rakeタスク自体は、Padrinoの場合、 ~/lib/tasks ~/tasks ~/test ~/spec に配置されれ…
2回調べたのでメモとして記録。 RubyGemsでインストールしたライブラリ等の中身を確認したくなったときに、その場所を確認するには % gem which sinatra /usr/local/Cellar/ruby/1.9.3-p125/lib/ruby/gems/1.9.1/gems/sinatra-1.3.2/lib/sinatra.rbで確認す…
いままでREMPでは、フレームワークにSinatraを使ってAPI等々の実装を行なってきたのですが、機能を足すたびに記述が長くなってしまい、またview等を追加する場合にもスケルトン生成を主導手動で行わければならないといった点があるので、やはり少し大きめの…
bit.lyで短縮されたURLのクリック状況は短縮されたURLの末尾に'+'をつけると知ることができるので、そこからクリック数をスクレイピングしてみようという話。*1 # bitlycun.rb require 'nokogiri' require 'open-uri' url = "https://bit.ly/#{ARGV[0]}+" pa…
REMP Ver.2.5をリリースしました。REMPを利用しているユーザのオンライン状態を確認できるようになり、デスクトップへの通知に対応しました。また操作パフォーマンスも大幅に向上しています。 URL2012-03-25 23:06:27 via web と、twitterではお知らせしたの…
では、実際に現在のREMPの場合において、どの程度メモリ使用量が変化したのかを確認してみました。 Apacheをフロントのリバースプロキシとして、背後にRack用のWebサーバ(Thin or unicorn)を動かすという挙動はかわらないので、Thinとunicornの両方のサーバ…
REMPで今までApacheのリバースプロキシを通してthinサーバでAPIを稼働させていたのですが、稼働時間が長くなるとメモリの利用割合が増える状況が続いていたため、どうしようかと悩んでいたところ会社でmizzyさん(@gosukenator)からunicornだとメモリ利用量が…
自分用メモ。 サーバ上で起動させているThinサーバを再起動させたい場合、 $ thin -C thin.yaml restart と行うと、yamlでthinのプロセスが常駐する様に設定していた場合、一度全部のプロセスを閉じた後、設定数分のプロセスの起動が行われるため、接続が不…
REMP開発中に誤爆して本番環境上の開発者のプレイリストがうっかり意図しない内容に更新してしまうというケースが生じたため、デイリーでとっているmongo DBのバックアップから復旧させてみました。*1 行いたいのは、特定のユーザのプレイリストのみの復旧な…
PUSHERでWebHookができるという記事がブログで紹介されてますよ!と会社で教えてもらったので、試してみました。 先日試してみたwebsocket版の通知とは異なってWebHookなのでユーザが設定する任意のURLに対してPUSHリクエストがあったことをHTTPのPOSTで通知…
Websocket周りを使ってみたいと思っていろいろ試行錯誤をしていたのですが、PUSHERというAPIサービスを利用すると思いの外容易にWebsocketを既存のWebサービスに使えそうなので使ってみました。 (激しい一週遅れ感がありますが…。)例えば既存のWebアプリに…
REMPのAPI周りでキャッシュを使いたくなったので、memcachedを使おうと思ったのだけどRubyで使う場合のクライアントを知らなかったので簡単にまとめ。 Ruby用のmemcacheクライアントはいくつかある様なのだけど、dalliというクライアントが一般的な様なので…
そういえば、REMP(レンプ)というYoutube動画を連続再生できるWebアプリの開発に参加してますー*1。 Mashup Award 7 にも応募したりしましたよ。 動作環境はgoogle chromeがインストールされているPCでfacebookアカウントがあれば利用することができます。 RE…
Solrで検索クエリーを作るときにどうしてもSQLクエリが先に出てしまうので対応をメモ。 クエリーパラメータでいうとqですね。 検索式 MySQL*1 Solr 一致検索 WHERE title="foo" title:foo 全件 (where無し) *:* AND WHERE title="foo" AND price=200 title:f…
続けて、Apache2の設定。ここでは、既にmod_proxyが入っているものとします。 フロントのApache2から複数起動しているThinのサーバに振るためにmod_proxy_balancerを入れます。 Ubuntuであれば、 $ sudo a2enmod proxy_balancer で、mod_proxy_balancerが有…
今、WebアプリケーションのAPIサーバをRubyのフレームワークのSinatraでつくっていて、これを本格的に動かすときにWebサーバをどうしよう。ということになって、Thinが良いらしいという情報を得たので導入してみた。 現状、動いているApacheサーバがあるので…
Rubyでプログラム書いていてWeb系のAPIにHTTPSでアクセスする必要があったので調べた。 RubyでPOSTメソッドを発行するには以下の様に標準添付されているライブラリのnet/httpを利用すればよい。 #接続先ホスト名 hostname = "www.foo.bar" #接続先パス reqpa…
Rubyでnil (空オブジェクト) の判定は nil? で行える。*1 if修飾子で書くと綺麗に書ける。やはりRubyで書くと読みやすいな。 def foo do res = db.find("id" => 1) return 'error' if res.nil? # resが空オブジェクトの場合は 'error' を返却 #ゴニョゴニョ…
休暇中に何らかの全文検索エンジンを入れて触ってみようと決めていたのでGroongaを入れてみた。 特徴 Groongaの特徴は以下の様なところがある。 操作は複数のプロトコルが利用可能 独自プロトコル or HTTP or memcached binaryプロトコル HTTPの場合, GETリ…
Macにhomebrew入れた。 homebrewはMacPortsと同じくパッケージ管理ツールでRubyで記述されている。 たまたま試したいと思っていたプログラムの配布パッケージにhomebrewが用意されていたので使ってみた。 インストール方法 コマンドラインから以下を実行すれ…
PHPでクローラを書くときのライブラリないかな?と探したところ、sourceforgeで見つけたので使ってみた。結構、出来が良くて少し触ってみた感じ便利そうな雰囲気。 PHPCrawl PHPCrawl is a webcrawler/webspider-library written in PHP. It supports filter…
行いたかったのは、jquery.ui.datepicker.mobileで作られたカレンダーの日付をタップ(クリック)された際のそのイベントを検出すること。 jQueryのlive(type, fn)を利用すればよいということがやっとわかった。 bind関数との違いはbind(type,fn)を利用した場…