( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

ruby

「関数型Ruby」という病(7) - Elixir's Pipe operator |> in Ruby

最近Elixirが人気ですよね。Erlang VM上でOTPの恩恵を受けながら簡潔な記法で並行処理を書ける言語ということで話題になっていますな? Elixirは関数型プログラミングのエッセンスを取り入れていると言われており、そのひとつにPipe演算子(|>) がある。 Enume…

表参道.rb #4で「本当は怖い オープンクラスと Duck Typing」というLTをやった話

スライドです 本当は怖いオープンクラスとDuckTyping - 表参道.rb #4まぁたいした話じゃないんですが、マッドマックスの画像をスクリーンに大写しできたのでその点だけで個人的には満足しています「型を讃えよ」

Rspecでfailするとデスメタルが流れるようにした

あまりにもテスト通らないのでデスメタル聴き始めた— ⁰⁰⁰⁰null (@yuroyoro) 2015, 7月 2このような事があったので自動化した。 Mac限定。 こんな感じ。successだとレベルがアガる。事前にbash-itunes というコマンドラインツールを入れておく。 iTunesを日本…

self.send(pred)がtrueならばselfを、そうでないならnilを返すメソッド

何をいっているのかというと、こういうことですrubyで、obj.send(pred) がtrueならばselfを、装で無い場合はnil を返すメソッド欲しい— ⁰⁰⁰⁰null (@yuroyoro) August 28, 2014foo.present? ? foo : other みたいなの書くのダルいので— ⁰⁰⁰⁰null (@yuroyoro) …

rspecの--tagオプションを利用して任意のコマンドライン引数をspec側に渡すという邪悪なhack

今まで、rspecコマンドでは任意の引数を渡すことはできなかったので、環境変数経由で引き渡すという方法をとっていた。 ( ;゚皿゚)ノシΣ フィンギィィーーッ!!! MY_OPT1=true rspec spec/my_spec.rb環境変数で渡すのはダルいのでなんとかしたいと思い、`--tag`オプション…

ぼくのかんがえたさいきょうのGit Repository Browser: Gitterb をRuby2.1.2/Rails4にupgradeしてDockerImage作った話

3年ほど前に、GitterbというGitリポジトリのコミットログを可視化するツールを作った。 ぼくのかんがえたさいきょうのGit Repository Browser - ( ꒪⌓꒪) ゆるよろ日記 Gitterb by yuroyoro yuroyoro/gitterb · GitHub このアプリケーションはRuby1.9/Rails3…

オマエらはもっとObject#tryの便利さについて知るべき

arr = [ ["foo", "", "bar"], nil, ].sample arr.try(:reject, &:blank?) #=> [“foo”, “bar”] Object#tryはnil-safeなcallとして使える blockを取るメソッドのsymbolを渡した場合に、第二引数にprocを渡しても動作する 要activesupport.gem tryと関数合成は…

「関数型Ruby」という病(6) - 関数合成と文脈、Proc#liftとProc#>=、そしてモナ

前回から一年以上が経過しているけど、最近lambda_driver.gemに機能を追加したので、そのことについて書こうと思う。 Rubyで、モナ……っぽい関数合成を実装した話だ。Rubyで関数合成とかしたいので lambda_driver.gem というのを作った - ( ꒪⌓꒪) ゆるよろ日…

Rubyはいつも俺に新鮮な驚きを提供してくれる

こんなコードがあった。 blockの評価結果が偽だったらエラーにする、という意図だと。 def die!(&block)! yield || raise("error") end 実行 irb(main):008:0> die! { true } RuntimeError: error from (irb):6:in `die!' from (irb):8 from /usr/local/var/…

Rubyで関数合成とかしたいので lambda_driver.gem というのを作った

LambdaDriver by yuroyoroRubyで、Procやlambdaで関数合成できるようにしたかったので、lambda_driver.gemというのを作った。 内容的にはこの辺で書いたヤツをgemにした感じ。 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記 …

Rails3でMultiJsonのBackendをyajlに変更してJSONのエンコード/デコードのパフォーマンスを改善する

yajl(Yet Another JSON Library)っていう高速なJSONライブラリがあって、yajl こいつをrubyから使えるようにするyajl-rubyってgemがあって、これをMultiJsonのBackendに変更することで、RailsにおけるJSON処理の高速化が期待できるデス。brianmario/yajl-rub…

mrubyをC拡張でRubyに組み込む

やっつけで適当に書いてみた。yuroyoro/rmruby · GitHub一体何がしたいのか……。 irb(main):001:0> require 'rmruby' => true irb(main):002:0> Rmruby.eval('3.times do |n| puts "hello #{n}!" end') hello 0! hello 1! hello 2! 3 => nil 毎回mrbインスタ…

Railsで今いるブランチによってデータベースを切り替える

ブランチングモデルとしてgit-flowを使っていて、メインラインとして、本番適用中のmasterブランチと、次期リリース用のrelease/9999ブランチと、メイン開発ブランチのdevelopがある。 ところが、開発中は頻繁にブランチを移動するし、ブランチによってDBの…

「関数型Ruby」という病(5) - Object#tryはMaybeモナドの夢を見るか?

前回からかなり期間を空けてしまったが、今回からRubyにおいてnilといかに闘うかについて書く。 本記事は以下略。わかれ( ゚д゚)。 Object#try Object#tryはActiveSupportで提供されるメソッド、レシーバーがnilじゃない場合に引数のSymbolのメソッドを呼び出…

Rubyのデフォルト引数で再帰

Rubyのデフォルト引数では、他の引数に依存した式を書ける。地味に便利。 [1] pry(main)> def foo(a, b = a * 2) [1] pry(main)* puts b [1] pry(main)* end => nil [2] pry(main)> foo(3) 6 => nil 再帰もかける。デフォルト引数で再帰させてフィボナってみ…

「関数型Ruby」という病(4) - Applicativeスタイル(的ななにか)

本記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。「lambdaの暗黒面」に堕ちたプログラマが可読性とかメンテナンス性とか無視して好き放題コード書いたらこうなった。悪気はなかった。もしかしたら有益…

「関数型Ruby」という病(3) - カリー化(Proc#curry, Proc#flip)

本記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 プログラマ厨二病をこじらせるとこんなヒドいことになるという実例を示すものであって、可読性やメンテナンス性についてのツッコミはご遠慮願いたい。…

「関数型Ruby」という病(2) - 関数合成 Proc#compose

本記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 注意点として、この記事は、プログラマ厨二病のひとつである「ラムダ症候群(λ-Syndrome)」に罹患した患者にRubyを書かせると、どんなヒドいことになる…

「関数型Ruby」という病(1) - Symbol#to_proc, Object#method

この記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 だって、ブロックって汚いじゃん?仮引数の|x|とかキモイ。 Symbol#to_proc 基本中の基本。instance method Symbol#to_proc以下のようなArrayがあっ…

git-issue : CLIでRedmine/Github-issuesのticketをbrows/editできるgitサブコマンド

というのを作ったました。ちょこちょこ機能改善してます。 yuroyoro/git-issue · GitHub git-issue | RubyGems.org | your community gem host 仕事では、異臭管理システムはRedmineを使っていて、作業はsshでサーバに入ってコード書いてるわけです。 で、次…

ちょっとの手間でRSpecの出力をキレイにするnamed_letをrubygems.orgに登録した

以前書いた、「 ちょっとの手間でRSpecの出力をキレイにするためにnamed_letというのを書いてみた - ゆろよろ日記」を、 ちゃんとしたGemにしてrubygems.orgに登録しました。 named_let | RubyGems.org | your community gem host ソースコードはGithubにあ…

Rubyで、OGNLっぽい文字列表現でオブジェクトグラフを辿るアレを書いた

Java使いはおなじみのOGNL(Object Notation Graph Language)っぽい記法で、Rubyのオブジェクトグラフを辿るアレを書いてみた。evalすればってツッコミはなしで、な。 厳密にOGNLになってなくて、どっちかっていうとRubyっぽい表現になってるけど、違和感ない…

ちょっとの手間でRSpecの出力をキレイにするためにnamed_letというのを書いてみた

RSpecの話です。 RSpecは、テストコードがそのまま仕様を記述するドキュメントになる、というのが大きな利点の一つです。 しかし、rspecコマンドに-dオプションを渡して出力されるドキュメントは、必ずしも読める文章になっているとは限りません。 例として…

ぼくのかんがえたさいきょうのGit Repository Browser

こんなヤツデモサイトはこちら http://gitterb.yuroyoro.net/ Gitである程度運用してると、ブランチがいっぱいになっていつどこから生えたのかわからなくなったり、どのブランチがマージされてるか把握できなかったりとかがあると思う。 たとえばgit log --g…

Rubyのnet/http でHTTPリクエスト/レスポンスをdumpする方法

俺得メモ。もう3回くらい同じこと調べたんでいい加減メモ残しておく。 Net::HTTP にset_debug_outputってメソッドがあってコイツに出力先を渡せばいい。残念ながらこのset_debug_outputはドキュメントには載ってないのでnet/httpのソース見てね。 require 'n…

いわゆるscanl関数をRubyで書いてみる

scanl関数は、(a -> b -> a)型の関数と、初期値aとリスト[b]が与えられて、順番に引数に渡された関数を適用した計算をして計算結果のリストを返す関数。foldlの計算の中間結果を集めたリストを返すとイメージしてもらえば。 scanl :: (a -> b -> a) -> a -> …

Rails 勉強会東京#31 感想

行ってきました。大森まで。 参加された皆さん、お疲れ様でした。 named_scopeについてくわしく もろはしさんのセッション。 資料はこれ→ named_scopeについてくわしく - moroの日記プレゼン資料、説明ともにわかりやすかったです。 JavaのORM(Hibenateやiba…