タグ

ブックマーク / higelog.brassworks.jp (9)

  • 久々にチーム開発したのでメモ - ひげろぐ

    昨年秋頃から年明けにかけてRailsで顧客のサービスをひとつ作った 久々のチーム開発で。チーム人数は3名。 せっかくなので使ったツールややり方などを備忘録的に残しておく。次いつまたチーム開発する機会があるのか知らんけど。 実践したこと プルリクベースの開発 Webサービス開発現場から / 近頃の開発のやり方 ・・・ Github と Pull Request とコードレビュー 上記のやり方が面白そうだったので試してみた。 Githubを使っていれば拍子抜けするほど簡単に流れに乗ることができた。 Git力が足りないので最初は少し大変だったが、馴れてくると細かくブランチを切ってフィーチャーごとに対応するということが開発のテンポを良くしてくれた。 コードレビューはイージーミスによるバグや既存のコードと大きく流れの違うコードが混ざるのを未然にい止める事ができたりと、一定の成果はあった。 一方でい

  • ウェブアプリの負荷テストについてのメモ - ひげろぐ

    負荷テストってどうやってやったらいいんだろう? って長年思いつつ、適当にabとかで負荷かけてとりあえずDone、みたいなことでお茶を濁してきたわけだけど、最近のプロジェクトで腰を据えてやる機会があり一定の知見を得たのでメモっておく。 手順と心がけるべきいくつかの事柄について。 手順 かける負荷の規模を決める シナリオを作る ツールを準備する 負荷テスト対象のサーバーを準備する 負荷をかける側のマシンを準備する データを準備する 負荷テストを走らせる 計測結果を記録する かける負荷の規模を決める 並列度とシナリオのループ回数くらいを決めておく。 1000並列で5000ループ、みたいな。 パフォーマンスの目標値があればそれをそのまま使うか、目安にできる。 シナリオを作る ユーザーの実際の動きを想定した画面遷移のシナリオを作る。 これはURLのリストでよい。(リダイレクトなどは考慮すること) 負

  • Unicornのダウンタイムなし再起動は考え無しに使うと危険 - ひげろぐ

    UnicornのプロセスにUSR2シグナルを送ると古いプロセスを残しつつ新しいプロセスが起ち上がるので、ダウンタイムが発生しない。 というのはUnicornの利点の一つとして数えられているが、実は罠なんじゃないだろうかと思い始めた。 USR2を送った直後の状態でプロセスのリストを見ると以下のようになる。(行が長いのでプロセス名の部分だけ抜粋) akahige:# ps aux |grep unico unicorn_rails master -E production -D --path /hoge-app -l0.0.0.0:8080 unicorn_rails worker[0] -E production -D --path /hoge-app -l0.0.0.0:8080 unicorn_rails master (old) -E production -D --path /hog

  • Rubyで使えるMarkdownパーサー - ひげろぐ

    なぜだか知らないけどたくさんある。 Markup processors in The Ruby Toolbox RDiscountとBlueClothが定番で、Redcarpet(GitHub-Markupで内部的に使われているもの)が元気なニューフェイスといったところか。 違いは速度と拡張記法のサポート具合なのかな。 Markdownはシンプルだけどその分できることは限られているので独自拡張のニーズや実装がいくつもあるようだ。 拡張自体はどこかに仕様があるのか、それとも各ライブラリが勝手にやっているのかちょっと追いかけられていない。 気に入った拡張記法をサポートしているかどうかが選択のポイントか。 速度は速いに越したことはないが、個人ユースではそんなに気にする必要はないように思う。 BlueCloth BlueClothが古くからあるものなので、後発のものもBlueCloth互換のAPI

  • Rails3.1でAjaxを使う - ひげろぐ

    よく理解できていなかったのでチュートリアル的に整理した。 まずはチュートリアル用のアプリを新規作成して、コントローラーを一つ作る。 rails new ajax_tutorial cd ajax_tutorial rails g controller sandbox index update_time Ajaxなフォームやリンクを作成する form_forやlink_toといったヘルパーのオプションに:remote => trueを加えるとボタンを押した時やリンクをクリックした時のリクエストが非同期リクエストになる。 app/views/sandbox/index.html.erb <h1>Sandbox#index</h1> <%= link_to('update time', {:action => 'update_time'}, :id => 'update-time-link',

  • Railsじゃなくてもマイグレーションを使えるStandaloneMigration - ひげろぐ

    Rails等のフレームワークを使っていないプロジェクトでマイグレーションを使いたい時にはStandaloneMigrationが使える。(Ruby以外のプロジェクトでも使える。動かすにはもちろん要Rubyだけど) thuss/standalone-migrations – GitHub これを使わなくてもActiveRecordを使って自前でいろいろ書けばできるが、そういういろいろの面倒を見てくれるので楽ができる。 インストール gem install standalone-migrations 又はbundlerを使ってもいい。 というか環境を移すことを考えるとbundlerを使ったほうがいいですよね。 Rakefileの修正 以下のコードを追記。 begin require 'tasks/standalone_migrations' rescue LoadError => e puts

  • RubyでHTMLタグ除去 - ひげろぐ

    Railsでsanitizeやstrip_tagsといったメソッドが存在するが、ビューのヘルパーとして定義されているので、どこでも使えるものではない。 これをコントローラーやモデルの中で何とかして使うこともできるようだが、同等の機能を提供するSanitizeというgemがあるのでこちらを使った方が楽だ。 導入 gemで入れる。 gem install sanitize 使い方 すべてのタグを削除する Sanitize.clean(html_string)でhtml_string内のタグを削除する。 irbで試してみる。 :001 > require 'sanitize' => true :002 > html_string = "<h1>hello clean world</h1>" => "<h1>hello clean world</h1>" :003 > Sanitize.clean

  • Jasmine TitaniumをGithubで公開しました - ひげろぐ

    akahigeg/jasmine-titanium – GitHub お得意のヤク毛刈りの延長でまとめたものをついでなので公開してみました。 fork歓迎です。 specs.shを見ると分かりますがけっこう強引な手段で実現しているので、あまりお行儀のいい感じのものではないのですが、ひとまずlibとspecにソースを放り込んでいくだけでJasmineがTitanium上で動くようになっているはずです。 READMEの英語が少々インチキだと思うので、日人の方はREADME.jaの方をどうぞ。 Markdownとか初めて書きましたよ。というかそういう記法があることを初めて知りましたよ。 これまでのあらすじ 興味ある方は以前の取り組みも参照してみてください。 あれ、これあらすじって言わねえ。 Titaniumでユニットテスト | ひげろぐ Titaniumでユニットテスト Jasmine再び編

  • Railsのconsoleにて大量のレコードを少ないメモリで処理する - ひげろぐ

    RailsのconsoleでActiveRecordを使って大量のレコードを処理しようとする場合、とりあえずコントローラ内に書くのと同じように以下のように打ってみると思う。 Item.all.each {|item| item.update_price } ところが経験ある人も多いと思うけれども、これをやるとレコード数が1000程度でも大量のメモリをう。 自分の経験を言えば、開発マシンのMacbook Proがスワップを大量発生させてコマ送りのようなレスポンスになった。 それぞれのレコードに対応するオブジェクトがループ終了までガベージコレクションによって破棄されないのでこんな風になる模様。 処理が進むにつれだんだんメモリ消費量が増えていく。 メモリリークのようだけどメモリリークではないんですと。 で、この敵に立ち向かうためにしばらくの間は勤勉さを発揮してある方法を採った。 一度に取得する

  • 1