Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Rubyで微積分や統計解析を快適に扱うDSL作ったヨ!↓ github バグ報告を頂ければ24時間以内に直します. このDSLで一番大事にしたのは、 微積分や極限、対数や三角関数などを紙上で数学をする感覚と同じ感覚で取り扱える事. わざわざRubyでやる必要、あったの...?(;゜0゜) 僕がこのDSLをRubyで作ったのにはいくつか訳があります. Rubyが好き MATLABが苦手 Rubyが好き mathmaticaが苦手 Rubyが好き pythonが苦手 Rubyが好き ... とにかくRubyが好きです. 少しマジレスすると僕の大好きなRubyは数学色が薄いのが少し悲しかったのです. (蛇足ですが、この想いからrubyのMatrixクラスにシコシコcommit してます. ex. https://github.com/ruby/ruby/pull/568 Matrixを成長させ組
Rackとは RackはRubyによるWebアプリケーション開発のHTTP送受信処理を担当するモジュール(gem)で、Ruby on Railsを始めとする多くのWebフレームワークの一番下のレベルで利用されています。 https://github.com/rack/rack http://rack.github.io/ 本稿ではRackの基本的な部分を中心に説明します。 簡単なRackアプリケーション まず基本を理解するため説明用の簡単なアプリケーションを作成します。 最初にrack gemのインストールが必要ですが、Ruby on Railsをインストールしている場合はすでに必須モジュールとして入っています。単独でインストールする場合は次を参考にして下さい。 http://qiita.com/higuma/items/b23ca9d96dac49999ab9#2-3 次にconfig.
はじめに Rubyでは、通常のメソッド定義のほかに、動的にメソッドを定義する方法がいくつかありますが、 動的に定義されたメソッドと通常のメソッドの呼出コストの差が気になります。 また、動的に定義されたメソッドの中でもdefine_methodで定義されたものは重いということもよく知られています。 一例として、Railsでは、重いdefine_methodを使う代わりに文字列のclass_evalを使用している箇所が多くあります。 というわけで、 通常のメソッド定義 define_method class_eval + 文字列 class_eval + ブロック で定義したメソッドの呼出コストのベンチマークを取ってみました。 class_eval + ブロックは 正確には動的ではない(メソッドの内容を動的に変更できない)のですが、気になったので同時にベンチマークすることにしました。 ベンチマ
(2015/10/13追記) 今なら、他言語には無名関数やcallback関数というものがありますねとか、イベント駆動の世界を覗いてから戻ってくるとより腑に落ちるかもしれませんとか、もう少し全体観の中で説明する気がしますが、当時は本記事の様な理解が役に立ったことは事実なので、引き続き公開を続けます。 (2013/11/29追記) block_given? について Twitter上で「Kernel.#block_given?についての解説があってもよさそう」と 指摘を頂きましたので、本文下部に追記しました。 概要 Ruby on Rails Tutorialのエッセンスを自分なりに整理してみる4 Railsを触る際知っていると便利なRubyの基礎 [ブロックとかシンボルとか] http://qiita.com/kidachi_/items/46a6e49b6306655ccd64 の続き。
Editorは、人によって大きく違うと思うけど、大体こんな感じだと思います。 Rubyでは、Vim,Emacsなどのエディタ + Plugin + 開発支援なgem Javaでは、Eclipse,NetBeans,IntelliJなどのIDE Javaの人はIDEが無いと辛いと思うかもしれませんが、Vim Pluginや開発支援するgemを使えば、IDEと遜色なく使えるのではないかと思います。 例えば、エディタ上で以下のことはできます。 コード補完 ブレイクポイントを置いて、ステップ実行 カーソル上のクラスやメソッドに飛ぶ(gemやRuby本体のC言語も含む) 知りたいクラスやメソッドなどのドキュメントやソースの表示 保存時にコーディング規約違反の表示 homebrew mac標準のrubyでまずはhomebrewをインストールします。 $ ruby -e "$(curl -fsSL ht
Rails Guidesでは「Resource Routing: the Rails Default」として namespace, resource, resources といったメソッドを利用する方法が紹介されている。これまでとりあえずこの機能を使って開発してきたが、これは果たして本当に積極的に利用した方が良い機能なのか。 あるとき 試しにTwitterのAPIのようなルーティングを定義しながら、Resource Routingを利用する場合としない場合とを比較してみることにする。ここでは (Resource Routingを利用するメリットを出すためにも)、API用のPrefixとして各パスの先頭に /api/v1 を付けることにする。このAPIはアクセストークンの発行や、tweetの取得、投稿、ユーザやフォロワー情報の取得などの機能を提供する。また、/api/v1 以下のどのパターン
長文注意。 angularjsについて今更ながらに触り始めて色々と感動したので纏めておく。 angularjsがどういったフレームワークかは公式のチュートリアルを眺めてたらぼんやりと把握できると思うので今回その辺の話はあまり触れない。 http://angularjs.org/ angularjsのAPIについては公式のドキュメント含めて様々なメディアやブログに取り上げられているが、導入から体系的に語られてるものはあまり無い印象だったので、僕のブログでは導入から具体的な目的に沿った実装方法を紹介していこうと思う。 ちなみに自分のangularjsへの理解も触り始めて一週間程度なのでだいぶ甘い。 angularjsを一週間やってみた感想 最初の2日くらいがだいぶつらい。 飲み込みが早い人ならすぐに使いこなすのかもしれないが、angularjsはdirective, controller, f
Ruby 2.0以降ではデフォルトのエンコーディングがutf-8になったため、マジックコメントが不要になりました。(utf-8でスクリプトを書くのであれば) 本記事はRuby 1.9以前の場合、と考えてください。 参考:Ruby 2.0.0-p0 リリース みなさんご存知だと思いますが、日本語を含むRubyスクリプトの場合、ファイルの先頭にファイルのエンコーディングを表すマジックコメントがないとエラーになります。 # 実行結果(エラーになる) $ rspec encoding_spec.rb /Users/mypc/.rvm/gems/ruby-1.9.3-p194/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load': /Users/mypc/dev/sandbox/encoding_spec.rb:4:
TL;DR MVCもレイヤで捉えて関係性の設計をするといいのでは 普通のRubyオブジェクトを積極的に使いたいですね 「パーフェクト Rails」に期待しましょう 長くなって面倒くさくなり、途中から手抜き感が半端ないですが許してください この記事の位置付けなど 7 Patterns to Refactor Fat ActiveRecord Models - Code Climate Blog [翻訳] エリック・エヴァンスのドメイン駆動設計 エンタープライズ アプリケーションアーキテクチャパターン これらの参考文献を踏まえてRailsアプリケーションのリファクタリングをしていて、だいぶ方向性や考え方がまとまってきたので、これからチームに合流する人を想定読者に、Qiitaがどんな感じで作られているのかを文書化したものです。(参考文献の一覧は記事の最後にあります) 内容的には文献[2,3]を踏
レコメンドやデータ分析に使われることも多い類似度計算を簡単にできるmoduleを作りました。 対応している類似度は以下の3つ。 コサイン類似度 JacCard係数 Dice係数 多少汎用的に算出ができるように、配列とハッシュに対応。 ① 二つの配列を渡すと類似度が返ってくる ② 二つのハッシュを渡すと類似度が返ってくる ③ モデルとカラムを渡せば類似度を全てのレコードの組み合わせの類似度を算出してくれる(未完成) ※③は、例えばUserテーブルを持っていたとしたら、Userというクラス名と、Userモデルから取得できるデータやカラム名と重みを渡すだけで、user-user全ての類似度を算出してくれたら便利だなと思って作ってみました。 ①、②については以下のsimilarity_generator.rbで算出できる module SimilarityGenerator #data1,data
エンジニア組織を強くするための本を出版しました Qiitaでエンジニアリングをめぐる様々なコミュニケーションの問題とその解決策や考え方を書いてきた。それらの背後にあるエッセンスをこの度書籍として出版するに至りました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング この書籍は、エンジニアリングを「不確実性を削減する」という第一原理で捉え直し、様々なエンジニアリングとその間のコミュニケーションをめぐる現象を説明していくものです。 あわせて読みたい 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 この記事について この記事は、新人向けの研修内容を再編集してお送りします。 この記事の内
※この内容はRailsで書かれたWantedlyのプロジェクトに参加することを想定していて、一部Railsのデフォルトでない機能の解説もありますが、使っているgemもメジャーなもので割と汎用的な内容になっていると思うので、是非参考にしてみてください。 URLを見ればだいたいどこを変更すればいいかわかると言うこと Ruby on RailsはMVC(Model View Controller)にもとづいて設計されていて、ディレクトリ構造的にもapp/以下に綺麗に分かれている。 MVCって何?って人は、ググってみてほしいが、割と宗教論争になりかけているので、モデルはDBの各テーブルに関連していて、ビューはHTMLの部分に近くて、コントローラーはビュー用にモデルを引っ張ってくるつなぎ役だと思ってれば大体合っている。これ以上は深く考えずにコードを読んだほうが良いと思う。 Router でもコード的
1. どういう時に使うか 集合の要素を全走査したいとき。 Rubyで言えば XXX.each でループを回せる部分。 2. メリット (+デメリット) メリット 個々の要素とその集合という概念を扱えるようになる。 デメリット 特になし。 3. このパターンを使わないとどうなるか 配列やDB的なidがあるものに関してはfor (int i = 0; i < x.size(); i++)というような決まり文句で代替が効く。 文字列をKeyにした集合だと、そのkeyの配列などがない限り個々の要素にアクセスする方法がなくなってしまう。 4. Rubyではどう書くか この本のAggregatorは実際のJavaではIterableになっている。Iteratorはそのまま。 これに対応するのが、EnumerableとEnumerator。 要素のクラスにEnumerableをincludeした上で、e
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く