(2021-8-28追記) この記事の改訂版を書いてみました。改訂版の方が易しい内容になっているので、プログラミング初心者の方はこちらを参考にしてみてください。 はじめに:「引数があるよりは、ない方が良い」? 先日、同僚の西見さん(@mah_lab)がこんな技術ブログを書いていました。 インスタンスメソッドとクラスメソッドはどのようにして使い分けるべきか?(Rubyの場合) 同じ内容を僕だったらどういうふうに書くかな~?と思って、ちょっと書き始めてみたんですが、わかりやすく実践的な説明をするのは意外と難しく、内容も西見さんのブログとほぼ同じになりそうだったので、途中で断念しました。 というわけで、インスタンスメソッドとクラスメソッドの使い分けが未だにあやふやだという方は、ぜひ西見さんのブログを読んでみてください! ・・・なんですが、1点だけ気になる点がありました。 それはインスタンスメソッ
Help us understand the problem. What is going on with this article? 「RaptorはどのようにしてUnicornの4倍、Puma, Torqueboxの2倍の速度を達成したのか」を読んでまとめてみました。 原文はこちらです。紹介については許可を貰っています。 How we've made Raptor up to 4x faster than Unicorn, up to 2x faster than Puma, Torquebox とても読みやすい英語ですので是非原文も読んでみてください。 How Ruby app servers work Rackアプリケーションの構成についての紹介と、コネクションをどのように扱うのかについて。 prefork/threadingやBlocking I/OおよびEvent I/Oの組み
3年ほど前に、Ruby製のクローラー"anemone"を紹介しました。その当時から完成度が高く、Rubyでクローラーを使う場合はanemoneを利用してきました。最近、他に新しくて良いのがないか調べましたが、機能面の網羅性という意味でanemoneを超えるものは見つけられませんでした。そこで改めてanemoneのソースを読んでみたところ、クローラーが必要とする機能を必要最小限で実装され、やはり中々良い出来です。冬休みの宿題ではないですが、勉強の意味を兼ねてソースを追っていくことにします。 Anemoneが利用しているライブラリ一覧 anemoneが利用しているライブラリは、4種類に分類できます。 Ruby標準or一般的なライブラリ データ取得で利用しているライブラリ データ解析で利用しているライブラリ データ保存で利用しているライブラリ この分類別に構造をみるとわかりやすいので、順番に追っ
はじめに RSpecは難しい、よくわからない、といったコメントをときどき見かけます。 確かにちょっと独特な構文を持っていますし、機能も結構多いので「難しそう」と感じてしまう気持ちもわかります。 (構文については僕も最初見たときに「うげっ、なんか気持ちわるっ」と思った記憶がありますw) しかし、RSpecに限らずどんなフレームワークでも同じですが、慣れてしまえばスラスラ書けますし、実際僕自身は「RSpecって便利だな-」と思いながらテストコードを書いています。 そこでこの記事では、僕が考える「最低限ここだけを押さえていれば大丈夫!!」なRSpecの構文や、僕が普段よく使う便利な機能をまとめてみます。 具体的には以下のような構文や機能です。 describe / it / expect の役割 ネストした describe context の使い方 before の使い方 let / let!
更新情報: 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
Ruby(Rails)や JavaScript を使うWeb系を想定して、あまり語られることの無い概念的な話を交えて包括的に関数を説明してみた。Read less
vim使っているrubyistで、これ入れていないのはヤバいプラグインまとめ 9個 (2013-10-04更新)RubyVimctags Rubyの開発効率を高めたい! vimでRubyやRails開発するときに、デフォルトの状態では非力ですよね。 開発効率を高める9つのプラグインを紹介します。 alpaca_tags ctagsの非同期生成 neosnippet Rails/sinatra/rspec等の補完 swtich.vim .present?:.brank?など対応するキーワードを切り替える rubocop 文法エラー、スタイルチェック vim-rails Railsプロジェクト用プラグイン unite-rails Railsプロジェクト用Unite-source vim-endwise if...endなど対応するキーワードの自動補完 rub
Webアプリのリハビリ ということで、Official Blog: A second spring of cleaningで告知された、Google Reader閉鎖に備え、俺専用RSSリーダーをRuby on Railsで軽めに作ってみた。 read.aho.mu 目的としてはRuby + Railsの学習と、サーバーサイドのリハビリのつもりだったのだけど、簡単すぎて実作業1日分くらいで終わってしまった..(´・ω・`) 自分で登録したフィードを、自分でなんとなく流し読みして、良いと思った記事に♡を付けられるだけなのですが、それがついでにオープンになっているだけ。 色々もにょもにょ 触ってみた箇所について所感など。 前からScalaなりNodeなりでHello Worldまでは試してましたが、素直にRailsをデプロイして動くところまで手を入れたのは初。 無料で使えるアドオンを幾つか入れ
こんばんは。今日は20時に退社しました。 先日、大江戸 Ruby 会議 03 が、深川江戸資料館で開催されました。大江戸 Ruby 会議は、Asakusa.rb のメンバーの生活発表会として位置づけられている地域 Ruby 会議です。そこで私は Ninja Talks の1枠を頂戴し、普段の仕事の話をしてきました。内容は、勤務先が運営するレシピ共有サイトが使用している Ruby のバージョンを Ruby Enterprise Edition から Ruby 1.9.3 へ移行する際に苦労した事柄の共有です。 スライド↓ 時間と内容の関係で、会議では言わなかった話があります。 ここで紹介されているコードのうち、"Before" に当たるものの中には、皆さんが一目見て「酷いなぁ」と感じるものがあると思います。中には、こんな書き方ができたのか!と驚くようなものもあるでしょう。 しかし、忘れて欲し
Automator ってなんか超高機能なマクロみたいなイメージがありますが、とても便利なのでご紹介。 もともとは、会社の上司が Windows から Mac に移行したのだけれど、"秀丸みたいに選択範囲を ruby で evalできないの" とおっしゃっており、しかも Emacs は微妙とのことなので、Automator でどうにかしてみた。Service でできるんじゃないかねと教えてくれた同僚に感謝。 追記(2013/02/24) デバッグ方法を別エントリに書きました できること 文字列選択して Ctrl+= を押すと選択文字列が ruby で実行されます。編集可能なテキストエリアならだいたい何処でも。 作り方 アプリケーション ディレクトリにある Automator を起動します。 新しくサービスを作ります ユーティリティ > "シェルクスクリプトを実行"というアクションを選んで右の
2013-02-13 上級者向け:Ruby on Rails 勉強法 こんばんは。最近ずっと朝から晩までRuby on Rails とイチャイチャしています。 @bussorenre です。セキュリティ・キャンプフォーラムお疲れ様でした。 さて、僕は普段から、実験とかお遊びでRuby on Railsを使っていたのですが、この度 Ruby on Rails でお仕事をいただきまして、RoRでシステム開発に勤しむ毎日です。遊びと違って、自分勝手な適当なコードが書けない、無茶苦茶なスキーマを定義できないなど、いつも以上に緊張して開発に当たっています。 そんな中で、僕なりに発見したRuby on Rails の勉強法を共有できたらなと思い記事に残そうと思います。 この記事はなんとなくRailsをさわろうとしている初心者向けの記事ではなく、ガチでRails でシステムを組もうと考えている人向けの記
はじめに Cucumberとは受け入れテストのためのテスティングフレームワークです。CucumberはRuby on Railsに依存しているライブラリではないため、例えば同じRuby制のフレームワークであるSinatraはもちろん、PHPなどで書かれたアプリケーションでも使用することができます。 Sinatraやフレームワークを使用していない素のRubyスクリプトなどをベースにCucumberの解説をすることも可能ですが、今回は仕事で使っている人が多く、また筆者自身もRailsを使って開発をしていることもあって、Railsをベースに解説させていただきます。 なぜCucumberなのか 筆者が勤めている株式会社RAWHIDE.では、Railsアプリを作成する場合、原則的にCucumberでテストを書くようにしています。Cucumber採用当時は、社内にナレッジが少ない、不慣れなど、なかなか
TSVファイルをCSVファイルに タブ区切り(TSV,Tab-Separated Values)テキストを読んでCSV(Comma-Separated Values)にして出力する。簡易版であり,元のデータにコンマが含まれているとまずい。1行目の -w はwarningをonにするオプションであるが,/usr/bin/env と組み合わせると,環境によってはうまくいかない。その場合は -w を取るか,あるいは #! /usr/bin/ruby -w のようにフルパスにする。2行目は省略可。 #! /usr/bin/env ruby -w # coding: utf-8 while line = gets puts line.split("\t").join(",") end タブ("\t")を区切りとして配列に分割し,それを再びコンマ(",")で結合している。実は,line には改行も付い
たとえば、今、「ユーザーが方向を入力したらプレイヤーが動くゲーム作りたい」みたいなはなしがあるとする。その場合、モデルクラスはまあシンプルな実装として下のようなものが考えられると思う。 「できたよー」って見せにいったら、今度は「あのさー、『高速移動モード』っていうモード欲しいんだよね。そのモードだと二倍速で動くの」って言われたとする。シンプルにやるとこうなりますね。 「できたよー」って見せにいったら、今度は「なあ、すげえ面白いこと考えたんだけど、『蟹モード』って面白くない?横は4倍速で動くんだけど縦は半分の速度で動くの」とか言われたわけです。あなたは「お、おう」と言って、以下のようにコードを修正しました。 これ、ヤバい感じしますね。破滅の匂いがする。「今度は『よっぱらいモード』欲しいな〜。入力に関係なくランダムに動くの」みたいなこと言われたら確実に複雑さが爆発してメンテ不能になり鬱になり死
古き良き小学校の時代、この行には困惑させられたものだった。 魔術的な x が、加算されたのに等しいままでいる事に。 どういうわけか、プログラミングを始めると、それに構わなくなる。 「やれやれ、それは重大な事柄じゃないし、プログラミングとは現実のビジネス行為なんだから、 数学的な純粋さについてあら探しなんて必要無い (その議論なら、大学にいる狂った髭面野郎どもにさせておけばいい)」と思っていた。 けれども、ただ知らなかっただけで、我々が間違っていて高い代償を支払っていたのは 明らかである。 Wikipedia によれば、「関数型プログラミング(functional programming, FP)とは、 計算を数学的な関数の評価とみなし、 状態や可変データを避けるプログラミングパラダイム」である。 言い換えると、関数型プログラミングは、 副作用が無く変数の値を変化させないコードを推奨する。
Rubyでブロック暗号を行うにはOpenSSL::Cipherを使用します。 DESやAESやBlowfishが使用可能です。 [参考記事] ブロック暗号とは [参考記事] PHPで暗号化・複合化を行う ブロック暗号 [参考記事] Javaで暗号化・複合化を行う ブロック暗号 [参考記事] Perlで暗号化・複合化を行う ブロック暗号 サンプルコード 使用できる暗号アルゴリズムの一覧 この暗号化方式はアルゴリズム規定のブロック長に分割して秘密鍵を用いて暗号化を行います。 規定のブロック長に分割する方式を暗号利用モード、ブロック長に満たないときの補完方法をパディング方式といいます。 暗号利用モードで分割するときに前の平文ブロックの結果を次の平文に使用しますが、この最初のブロックで使用される値がIV(初期化ベクトル)です。 まとめ 暗号化の流れ (1) ブロック長に満たない部分をパディング方式
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く