This presentation shows how to apply functional programming principles to Ruby. It covers some theoretical principles but also code examples.Read less
![Functional Programming with Ruby](https://cdn-ak-scissors.b.st-hatena.com/image/square/6d22e605a11770ad083e21bc9231977c7a570652/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Ffunctional-ruby-111101065033-phpapp01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
This presentation shows how to apply functional programming principles to Ruby. It covers some theoretical principles but also code examples.Read less
One of the deepest mysteries in the functional programming world is the Y-Combinator. Many have heard of it, but few have mastered its mysteries. Although fairly useless in real world software, understanding how the Y-Combinator works and why it is important gives the student an important insight into the nature of functional programming. Join with us on this journey of understanding. Be prepared
3.6 Ruby on Rails (RoR) ~なぜRoRがエンタープライズ、Web 2.0向きか メタデータ株式会社 大場寧子 3.6.1 軽量言語 Web2.0の盛り上がりとともに軽量言語が存在感を増している。軽量言語(Lightweigt Language)とは、重量級と呼ばれる言語と比べて簡易に開発できるPerl、Ruby、Python、PHPなどのスクリプト言語を指す。軽量言語の特性としては、インタープリタ言語であること、動的型をサポートしていることなどが挙げられる。 一方、“重量級言語”の代表格は C/C++、Javaである。Web2.0以前は、普通の企業システムはこれらの「重い」「堅い」言語で作るのものというのが日本のIT業界の常識だった。理由としては、軽量言語には、実行速度が遅い、スケールアップが難しい、システムが大きくなるとメンテナンスがしにくい、エンジニアが少ない
常識なのかもしれないが、コーディングしていて改めて気がついたのでメモ。 文字列の数字表現で”1234.56″といった感じのものを読んで整数なのか小数なのかをチェックする場合、マッチさせたいパターンは詳細なものから書く。 例えば以下のように書くと
なお、YAMLではインデントがずれていたり、インデントの文字数が統一されていないと意図しない結果になったりエラーになったりするので注意しましょう。
「ソースコードは 1 行あたり 80 文字以内」とか「コミットログは横幅 72 文字以内」とか、文字数に関するルールはいろいろある。 ルールを徹底するには機械的に判定したい。と思って、簡単なスクリプトを書こうとした瞬間、意外と「1 行あたりの文字数」をカウントするのが難しいことに気付いた。 たとえば、「あA」は「全角 1 文字+半角 1 文字」なので半角 3 文字分としてカウントしたい。 しかし、UTF-8 の世界では「あA」の文字長は 2 だし、バイト数は 4 (あ=0xE38182、a=0x41) である。 EUC-JP や Shift-JIS の時代なら、単純に「あA」は 3 バイトなので「半角 3 つ分」とすぐ分かったのだけども… (逆に文字長を調べるのが面倒だった)。 はて、どうするか? というのがこの記事でいいたいこと。 East Asian Width を見よ いろいろとググ
以前私はRubyistはDRY症候群に掛かっているという記事を書いた。 RubyistたちのDRY症候群との戦い 要約するとDRYじゃないコードを見るとRubyistはムズムズするといった内容だ。 前回私が書いた記事の中に、次のようなコードが出てきた。 def run @methods.inject(@obj) do |mem, method| if custom = Filter.filters[method] custom.call(mem) else mem.send method end end end Rubyでパイプライン? これは@methodsに格納したメソッドを@objに対し順次呼び出すが、同名のフィルタがFilter.filtersにあるのならそれをcallする、といったコードである。 あなたが重度のDRY症候群に掛かっているなら、このコードを見てムズムズしているに違い
On 14th june, in Milan, I spoke at the rubyday, and I presented a possible implementation of Domain Driven Design (with CQRS and Event Sourcing). I know quite well the principles and patterns of DDD since we used them in some applications developed by CodicePlastico, but I never tried to do the same with Ruby. The main reason of my experiment is that in C#, implementing this kind of architectures,
Dec 27, 2014I made this project about a year ago. At that time, I just started it for The GitHub Data Challenge II. So, it was very simple and concise implementaion for proof of concept. I've been aggregated convention data for a year. However, It is not analyze conventions of our codes deeply. I think therefore it's meaningless to keep aggregating more data. Finally, I decided to stop aggregating
Rubyで学ぶオブジェクト指向入門 オブジェクト指向プログラミング入門(その1).pdf オブジェクト指向プログラミング入門(その2).pdf オブジェクト指向プログラミング入門(その3).pdf オブジェクト指向プログラミング入門(その4).pdf 添付1 論理シミュレータクラス図.pdf 添付2 Pque説明.pdf 添付3 回路シミュレーション例.pdf 添付4 LogicSimソースコード オブジェクト指向プログラミング入門(その5)簡易システム性能評価シミュレータ.pdf オブジェクト指向プログラミング入門(その6)RUnitに適用されたデザインパターン.pdf Rubyで学ぶデザインパターン パターンサンプルコード このサンプルコードは、Java言語で学ぶデザインパターン入門 結城 浩(著) (ソフトバンクパブリッシング ISBN:479731462)に掲載されているサンプルソ
Unicode のコードポイントを指定して文字を得たり、逆にある文字のコードポイントを調べたり、ということをする機会は結構多いと思います。 が、Ruby でそれをやる方法をぐぐってもあまり上位に情報が出てこないなー、と思ったので簡単にまとめておきます。 Unicode コードポイントとは そもそも Unicode コードポイントとは何か。 Unicode というのは世界中の文字が集められた文字集合であり、Unicode に収録されている文字には順番に番号が振られています。 この番号のことをコードポイントといいます。 あるコードポイントが指す文字を表現するときに "U+" という文字の後ろに 16 進数表記のコードポイントを書いて表すことがあります。 例えば、コードポイント 0x3041 が指す文字 (ひらがなの 「あ」) を U+3041 と書いて表します。 各文字とコードポイントの関係は
今回は、Rubyに関して書きます sortメソッド Arrayクラスのメソッド 配列内の要素を並び替えすためのメソッド 数の大きさ 行の長さ アルファベット順 アルファベット逆順 などなど たとえば、 array = ["a", "c", "b", "f", "d", "e"] sorted = array.sort do |a, b| a <=> b end p sorted #=> ["a", "b", "c", "d", "e", "f"] sortメソッドは、配列の要素を余分に呼び出します。 どういう事かというと、 array = ["a", "c", "b", "f", "d", "e"] i = 0 sorted = array.sort do |a, b| i += 2 a <=> b end p sorted #=> ["a", "b", "c", "d", "e", "f
Rubyでは、サブクラスで親クラスのprivateメソッドやインスタンス変数を上書きしてしまい、見付けづらいバグを出すことがあります。 このことについて、オライリーの『プログラミング言語Ruby』P248では、次のように述べています(P250も参照)。 Rubyでサブクラス化するのは、スーパークラスの実装をよく知っているときに限るべきだ。クラスのパブリックAPIだけが必要で、その実装は不要なら、クラスを継承するのではなく、カプセル化と委譲によってクラスの機能を拡張すべきだ。 えー。RailsではActiveRecord::BaseやActionController::Baseを継承しないと何もできないのに。 私はRailsのソースはちょくちょく眺めていますが、すべて把握するのは手に負えないし、初心者には「Railsのソース見ろ」は無理な話だし、どうしたものか。 私の経験では、Railsのコ
毎日他の人のコミットをながめる文化で生活していると、理由は浮かばないけど「ん?このコミットはなんか気になる」と感じるようになります。それは、新しいことを知ることができたコミットだったり、真似したくなるようなコードが入っているコミットだったり、なんかまずそうな気がするコミットだったり、様々です。 「ん?」と感じてコミットを見直してみても、何が気になったか自分でもすぐにわからない場合があります。そんなとき、気になったことをコミットした人に伝えるために、コミットへのコメントをまとめ始めます。「コミットした人に伝えるため」というように、他の人に伝えようとすることがポイントです。他の人に伝えるためにまとめようとすると、思いの外なにが気になったかまとまるものです。 今回は、メタプログラミングを使ってコードを整理したコミットで「ん?」と感じたときのことについて紹介します。このおかげで「メタプログラミング
RubyMotionを相変わらずいじってるのだけど、最近は業務に疲れてあんまり趣味開発が捗ってない。 趣味開発しようとする前に使うgemがまだいい感じに枯れてないので不満が出るからまずそっちを直そうみたいなことを繰り返している気がする。 最近直したgemで、ibというRubyMotionでInterface Builderを使うために、app/*以下のRubyのコードをparseして、Outletとかが定義されたダミーヘッダーファイルを作ってくれる奴がある。 $ rake ib:open というコマンドを叩くとローカルにib.xcodeprojを作ってくれて、その中にあるStubs.hとxibファイルをマウスでうにょーってoutletの連携する事ができる。 吐き出してくれるStubs.hには、OSXアプリを作る時は#import <UIKit/UIkit.h>じゃなくて、#import <
はじめに 「実践テスト駆動開発」という本を読み終えました。 実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる (Object Oriented SELECTION) 作者: Steve Freeman,Nat Pryce,和智右桂,高木正弘出版社/メーカー: 翔泳社発売日: 2012/09/14メディア: 大型本購入: 4人 クリック: 262回この商品を含むブログ (29件) を見る Yokohama.rbの懇親会で@1syoさんから「実践テスト駆動開発の読書会をやろうと思っているんだけど、来る?」という話をいただき、参加したのがきっかけ。結局、最初っから最後まで@1syoさんと私だけの二人だけの読書会だったのですが、無事読み終えました。 感想 書いていることは興味深いのですが、如何せん書かれていることが高度すぎて、消化不良な部分が多いです。もう少し、理論武装して
Practical Object-Oriented Design, An Agile Primer Using Ruby (POODR) is a programmers tale about how to write object-oriented code. Written by Sandi Metz, it explains object-oriented design (OOD) using realistic, understandable examples. POODR* is a practical, readable introduction to how OOD can lower your costs and improve your applications. POODR will help you: Decide what belongs in a single
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く