タグ

ブックマーク / techracho.bpsinc.jp (78)

  • Rails: データベーススキーマをダウンタイムなしで変更する(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Managing db schema changes without downtime 原文公開日: 2018/03/22 著者: Sam Saffron -- Discourseの共同創業者であり、Stack Overflowでの開発経験もあります。 後半で紹介されているgemについては先週のRailsウォッチもどうぞ。 2018/04/09: 初版公開 2022/10/25: 細部を更新 Discourseのメンバーはいつも継続的開発の大ファンであり、コミットのたびにCIのテストスイートと対決しています。すべてのテスト(UI、単体、結合、スモーク)にパスすれば、自動的にコードの最新バージョンがhttps://meta.discourse.orgにデプロイされるようになっています。 私たちが継続的開発というパターンに沿って実践し

    Rails: データベーススキーマをダウンタイムなしで変更する(翻訳)|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2018/04/10
  • RailsのモデルIDにUUIDを使う(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Choose UUIDs for model IDs in Rails 原文公開日: 2017/11/26 著者: Andy Croll UUID(universally unique identifier)は、コンピュータシステムで情報の識別に用いられる128ビットの数字です。GUID(globally unique identifier)と呼ばれることもあります。 PostgreSQLにはネイティブのカラム型があります。PostgreSQLの型についてはRailsガイド(英語)をご覧ください。 Railsのデフォルトであるカウントアップする整数idの代わりに、次のPostgreSQLUUIDサポートを使います。 Ruby on Rails 5.0以降、ActiveRecordモデルでUUIDをidとして利用できる機能がありま

    RailsのモデルIDにUUIDを使う(翻訳)|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2018/01/04
  • Railsの`CurrentAttributes`は有害である(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rails' CurrentAttributes considered harmful 公開日: 2017/06/22 著者: Ryan Bigg: Ryan Bigg氏はRailsのcontributorであると同時にCulture Amp社のメンバーであり、RubyやElixirでの開発を行っています。RailsガイドのドキュメントやMultitenancy with Rails など多くの執筆実績があり、現在はDeep Dive Railsという書籍を執筆中です(現時点で45%↓)。 leanpub.com/ddrより 2017/08/01: 初版公開 2023/04/26: 更新 2024/01/25: 更新 更新情報(2024/01/25) CurrentAttributesについては、Kaigi on Rails 20

    Railsの`CurrentAttributes`は有害である(翻訳)|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2017/10/26
  • Googleさんから読み取るPHPとRails開発の比較|TechRacho by BPS株式会社

    渡辺さんがPHPRubyを徹底比較!開発効率をあげて収益を増やすという記事を出していたので,反応してみます. この記事は,PHPRails開発について,PHPはメジャーでRailsは開発者が少ないとは言うけど,証拠はあるのかよ!とか具体的にどれくらいの開発者数の差があるの?という質問にデータを用いて答えてみます. PHPRails開発の得意分野やメリット・デメリットについては前述の記事に良くまとまっていますので,そちらを参照すると良いです. 情報ソースについて 今回の比較にはGoogle検索のヒット数,及びGoogleトレンドを利用しました.Google検索は今までの蓄積された情報の累計,Googleトレンドは今流行っているかどうか(勢いがあるか)という指標としてある程度の信頼性があるのではないかと思います. 「ヒット数==開発者の数」というのは多少乱暴ですが,それなりの指標にはなる

    Googleさんから読み取るPHPとRails開発の比較|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2015/10/29
  • 社員数名の開発会社が1年で6/20人離職させてしまった開発会社が再発防止のためにやってみたこと|TechRacho by BPS株式会社

    入社後まもなく退社する方についての記事が最近目立ちますね。さすがにヨドバシさんのように10日以内はないですが3ヶ月以内に退社した新卒や中途の方もいましたし(文末に詳細まとめます)、いまは緑のメッセンジャーを作っている前職では3日だけ出社して音信不通になった開発者もいたので、意外とよくある話なのかもしれませんね。前職で問題意識を強く持てたらよかったのですがその時はそこまで気が回らず、今の会社で手痛く悲しい経験をしてはじめて被害の大きさと改善の重要性を痛感しました。 採用時にエージェントその他に支払った何百万~何千万も痛いですが、せっかく一緒に夢を追える仲間が協力しようと思ってくれたのに別れるのは、何度経験しても落ち込みますね。(退職した)個人の成長が会社の成長を追い越して卒業するならまだしも、会社の実力不足で夢半ばのまま別れると悔しさしが倍増します。まあ退職しても他社で経験を積んで戻ってきて

    社員数名の開発会社が1年で6/20人離職させてしまった開発会社が再発防止のためにやってみたこと|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2014/11/27
  • [翻訳] Dockerについてよくある勘違い|TechRacho by BPS株式会社

    こんにちは、hachi8833です。今回は弊社システム管理者のyamasitaさん監修のもとで、Matt Jaynes氏のDocker Misconceptionsを翻訳いたしました。それなりに文言を最適化してあり、原文と一対一対応しているとは限りませんのでご了承ください。エラーがありましたらお知らせいただけると助かります。 Dockerについてよくある勘違い Matt Jaynes 元記事: Docker Misconceptions Dockerは最近のシステム管理業界で大変な脚光を浴びてます。これによるシステム管理の進歩ははかりしれないものがありますが、いくつか重要な点で勘違いしている人を見かけます。 分野を限定して語っているのでよろしく この記事で説明する内容は、主にWebサービスにおけるミッションクリティカルなシステムのマルチホストセットアップに限定しています。Dockerをそれ

    [翻訳] Dockerについてよくある勘違い|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2014/06/17
  • Ruby on Rails 3.2.17, 4.0.3がリリースされました!重要なDoS脆弱性が修正されています|TechRacho by BPS株式会社

    2014.02.19 Ruby on Rails 3.2.17, 4.0.3がリリースされました!重要なDoS脆弱性が修正されています 日時間で2/19の朝、Ruby on Rails 3.2.17, 4.0.3, 4.1.0beta2がリリースされました。 今回は、重要なセキュリティFixを含む一斉アップデートです。 なお、4.1についてはすでに4.1.0rc1がリリースされているので、そちらにアップデートしましょう。 今回は3件の修正(3系でのみ発生するものが1件、4系でのみ発生するものが1件、両方で発生するものが1件)が含まれています。 特に最後のDoS脆弱性(CVE-2014-0082)については、Rails 3.2を使用している幅広いサービスに影響があるため、確実に確認・アップデートしておきましょう。 CVE-2014-0080 影響を受けるRailsバージョン: 4.0, 4

    mitukiii
    mitukiii 2014/02/21
  • Ruby 2.1.0リリース!注目の新機能を見てみましょう|TechRacho by BPS株式会社

    2013年12月25日。おめでとうございます、Ruby 2.1.0がリリースされました! 日時間で26日という細かい突っ込みをしている場合ではありません。 まだ使ったことがない方、簡単に変更点を見てみましょう。 文法の変更 デフォルト値を伴わないキーワード引数 Ruby 2.0が出たときから誰もが思っていた疑問、「なんでキーワード引数はデフォルト値必須なんだ?」がついに解消されました。以下の記法で、デフォルト値をつけないキーワード引数を宣言できます。この場合、呼び出し時に対応する実引数を渡さないとArgumentErrorになります。 def hello(name: ) puts name end hello(name: "taro") # => taro hello # => ArgumentError: missing keyword: name キーワード引数同士ではデフォルト引数

    Ruby 2.1.0リリース!注目の新機能を見てみましょう|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2013/12/26
  • Rails 4.0.2, 3.2.16リリース!重大なセキュリティFIXがあります|TechRacho by BPS株式会社

    昨日、Ruby on Railsの重要なセキュリティアップデートである、Rails 4.0.2と3.2.16がリリースされました。 このリリースには、5件(3.2.16には4件)のセキュリティFIXが含まれています。 重要度の高いものがあるため、早急なアップデートをしましょう。 CVE-2013-6416 simple_formatヘルパーのXSS脆弱性に関する修正です。 ※4.0.2のみ。3.2系では元から発生しないため、3.2.16には含まれません。 simple_formatはhtml_optionsとしてHashを渡せますが、デフォルトで、このclass指定がHTMLエスケープされていませんでした。 class指定をユーザ入力による場合、容易にXSSが成立してしまいます。 simple_format "hello\nworld", class: '"><script>alert(1

    Rails 4.0.2, 3.2.16リリース!重大なセキュリティFIXがあります|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2013/12/05
  • 肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)

    更新情報: 2013/11/19: 初版公開 2021/01/08: 訳文見直し、追記 こんにちは、hachi8833です。今回は、自分が知りたかった、Active Recordモデルのリファクタリングに関する記事を翻訳いたしました。1年前の記事なのでRails 3が前提ですが、Rails 4以降でも基的には変わらないと思います。リンクは可能なものについては日語のものに置き換えています。 なお、ここでご紹介したオブジェクトは、app以下にそれぞれ以下のようにフォルダを追加してそこに配置します。 注記: 以下は使われそうなフォルダを列挙しただけであり、実際にはこの一部しか使いません。 Value Object Service Object Form Object Query Object View Object Policy Object Decorator ⚓ 肥大化したActive

    肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)
    mitukiii
    mitukiii 2013/11/20
  • Ruby on Rails 4.0.1リリース!大量のバグ修正、3系からの移行も少し簡単になりました|TechRacho by BPS株式会社

    2013.11.02 Ruby on Rails 4.0.1リリース!大量のバグ修正、3系からの移行も少し簡単になりました 日、Ruby on Rails 4.0の最初のアップデートである、Rails 4.0.1がリリースされました。 6月に4.0がリリースされてから約4ヶ月、かなり久しぶりのアップデートとなりますが、どのような変更が含まれているのでしょうか。 まとめ 量が多いので最初にまとめです。 今回のリリースは大量のdiffを含みますが、そのほとんどは細かいバグ修正です。 Railsのリリース時期的には3.2.13 → Rails 4.0.0 → 3.2.14 → 3.2.15 → Rails 4.0.1となるため、3.2.14以降で適用されていた細かい修正も取り込まれています。4系が3系にようやく追いつきました。 4系はなんかデグレっぽいバグや非互換が多いなーと思っていた箇所が、

    mitukiii
    mitukiii 2013/11/03
  • Rails 3.2.12がリリースされました|TechRacho by BPS株式会社

    Ruby on ails 3.2.12がリリースされました。詳細 環境によっては重大なセキュリティFIXが含まれているので、必ず確認しましょう。 修正された脆弱性 attr_protectedの脆弱性が修正されました。 attr_protectedは、POSTパラメータなどから一括で値をセットする際に、許可しないカラムをブラックリスト登録する機能です。 たとえばユーザ情報を編集する際、is_adminというカラムをユーザが(POSTパラメータをいじって)勝手に上書きしたら、非常にまずいですよね。 class User < ActiveRecord::Base attr_protected :is_admin end このようにattr_protectedを使えば、ユーザがPOSTパラメータでis_admin=1を渡したとしても、無視されます(以下のような警告がログに出力されます)。 WAR

    Rails 3.2.12がリリースされました|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2013/02/12
  • RailsのログファイルをMessagePackで超高速解析!|TechRacho by BPS株式会社

    最近Railsがガンガン出力するproduction.logを解析してどのアクションがリクエスト多いのか、DBがボトルネックになってるアクションはないか、などを調べているんですが、production.logがどんどん肥大化して、解析ツールの開発イテレーションを回す際の効率が悪くなってきました。 また似たようなツールをやたらめったらコピペで作ってきたため、開発効率も悪くなってきたので、ここでAPIを整理しつつ、あわよくばログをなめる部分を高速化できないものかと考えました。 シンプルに正規表現をつかって変化する箇所を切り出していたのですが、これではかなり重いのは自明ですし、がんばって文字列をパースするパーサを作ってもrubyではあまりスピードは出なそう、でもrubyで書きたいし.... ということで、一度パースしたデータを読込みに効率よさそうな形式に変換することで、次以降の解析を高速化しよう

    RailsのログファイルをMessagePackで超高速解析!|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2013/02/06
  • Rails 3.2.11にアップデートしましょう|TechRacho by BPS株式会社

    Ruby on Rails 3.2.11がリリースされました。 3.2.10が出てから数日ですが、合わせてかなり重大なセキュリティFIXが含まれているので、確実に更新しましょう。 3.2.11での変更点 (1) URLを知っている人だけがアクセスできる隠しページや、パスワードリセット機能などで、token認証をすることがよくあります。 たとえば以下のようなコードです。 if params[:token] @user = User.find_by_token(params[:token]) end ここで、仮にparams[:token]が空のハッシュ {} の場合、if文は当然真と評価されて通過しますが、find_by_tokenの部分は条件無しと見なされます。 User.find_by_token({}) User.where(:token => {}) このようなコードは、whereが

    mitukiii
    mitukiii 2013/01/10
  • Rails3のfind系メソッドと注意のまとめ|TechRacho by BPS株式会社

    Rails3では,ActiveRecordを使ったデータの取得方法にfind, find_by_XXX, find_all_by_XXX, all, whereでの絞り込みなど色々ありますが,それぞれ微妙に異なった挙動をします. ちょろいサンプルアプリを書く位ならあまり気にならない所なのですが,きちんとアプリを書く上では以外と大事なところ(後述)なので,ここいらでまとめておきます. Rails使っている人で hoge = Hoge.find(params[:id]) || Hoge.new とか書いて思った様に動かないぞ?とかハマった人向けです. 取り上げるのはfind, find_by_XXX, all, find_all_by_XXX, whereです.Railsのバージョンは3.2.8を使っています. 以下の説明では,以下のクラスが存在することを前提とします. class Hoge

    Rails3のfind系メソッドと注意のまとめ|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2012/10/19
  • Railsのエラー管理はこれでOK!オープンソースのAirbrakeクローン、errbitを使ってみた|TechRacho by BPS株式会社

    ただ、値上げしてだいぶ敷居が高くなってしまったんですよね。プロジェクト3つで$25/monthかかり、しかもエラーが60日で消えてしまいます。 (僕は旧プランのまま$5/monthで使えていますが、これ以上プロジェクトを作れません・・・) そこで、オープンソースのAirbrakeクローン、errbitを使ってみました。 https://github.com/errbit/errbit インストール インストールはREADME通りにやれば簡単です。 Ubuntu 12.04 Server (さくらのVPS)にインストールしました。Rubyはインストール済みです。 # 依存ライブラリインストール(root) apt-get update apt-get install mongodb install libxml2 libxml2-dev libxslt-dev libcurl4-openss

    Railsのエラー管理はこれでOK!オープンソースのAirbrakeクローン、errbitを使ってみた|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2012/07/30
  • Rubyでマルチスレッドプログラミング|TechRacho by BPS株式会社

    RubyはWeb界隈でよく使われてるスクリプト言語の中では比較的簡単に割と格的なマルチスレッドプログラムを書くことができます。 うまく使うとI/O待ちで遅くなっているが、必ずしも順番に行う必要のないプログラムの実行時間を短縮したりすることができます。(たくさんのURLにアクセスしてレスポンスを取得してくるクロウラーなど) しかし現在最も広く使われているRuby1.8ではスレッドの実装はいわゆるグリーンスレッドという実装で、OSによるスレッドを使えないため、マルチコアの恩恵を受けることができないので、大量のデータをマルチコアで処理する目的などで使っても効果が薄い(どころかまったくない)可能性が高いです。 Ruby1.9ではRubyでスレッドの動きを制御しているものの、ネイティブスレッドベースでの動作となっているため、マルチコアの恩恵を受けることができます。 それではさっそく、配列の各要素を

    Rubyでマルチスレッドプログラミング|TechRacho by BPS株式会社
    mitukiii
    mitukiii 2012/06/06
  • RubyProfの使い方とcan't convert Symbol into Integerエラー|TechRacho by BPS株式会社

    RubyProf入門です。 Rubyプログラムが遅い!ときは、やはりプロファイリングをとりましょう。 ここに書いてあるとおりですが: http://ruby-prof.rubyforge.org/ まずはインストールします。 gem install ruby-prof 続いて、調べる箇所にプロファイラーを埋め込みます。 require 'ruby-prof' RubyProf.start # 重そうな処理 result = RubyProf.stop printer = RubyProf::FlatPrinter.new(result) printer.print(STDOUT) 以上で、結果が一覧できます。 ところで、チュートリアル通りに printer.print(STDOUT, 0) とやると、 can't convert Symbol into Integer といったエラーが出る

    RubyProfの使い方とcan't convert Symbol into Integerエラー|TechRacho by BPS株式会社