読者です 読者をやめる 読者になる 読者になる

( ꒪⌓꒪) ゆるよろ日記

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

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

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

「commit-m: GitHubコミットメッセージの文例が検索できるサービス」がとても便利だったのでcliから使えるコマンド書いた

http://commit-m.minamijoyo.com/:titele という有名OSSのコミットメッセージを検索できるサービスがあって、英語のコミットメッセージを書くときに「あれ? これどういう風に書けばいいんダー」ってときに例文を検索できて捗る。 commit-m.minamijoyo.com が…

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

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

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

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

GolangでSIMDプログラミング

以前から気になっていたSIMDプログラミングをGoでやってみた。 Single Instruction Multiple Data (SIMD) 演算とは1回の命令で複数のデータを同時に処理する演算です.近年の CPU には SIMD 演算を行うことができる SIMD 演算器が搭載されており,Intel 社の…

CPUの気持ちになれるツール作った

魂のステージが低いのか、CPUの歓声が聞こえません。CPUの歓声は聞いたことないですが、ハードディスクの断末魔なら何度も聞いてます— ⁰⁰⁰⁰null (@yuroyoro) October 19, 2014 なので、CPUの気持ちになれるツール作った。Remix: Latency Numbers Every Progr…

Typolevel Scala Compiler

最近Scala Complierをforkするのが流行っているようですね。 paulp/policy · GitHub typelevel.scala | Typelevel Scala and the future of the Scala ecosystem 「俺のコンパイラか?欲しけりゃくれてやる、探せ!この世の全てをそこにおいてきた!」 男達…

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

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

git-ignoreというコマンドを書いた話

git

git-ignore add みたいのが欲しい— azu (@azu_re) August 24, 2014 ちょろっと書けそうだったので書いた。yuroyoro/git-ignore · GitHub Demo Installation PATH通った場所においてくれ curl -sL https://raw.githubusercontent.com/yuroyoro/git-ignore/mas…

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

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

"err"という文字列をHighlightしておくとGolangのコードリーディングが捗る

vimの人はこんな感じで autocmd FileType go :highlight goErr cterm=bold ctermfg=214 autocmd FileType go :match goErr /\<err\>/</err\>

golang勉強会で「cgoやってみた」という話をしてきた

Go lang勉強会 - connpassで発表してきた。 今までにblogに書いたcgoの話。以下が資料とサンプルコード。 資料 : http://yuroyoro.net/trying_cgo/ サンプルコード : https://github.com/yuroyoro/trying_cgo 久しぶりに人前で発表した気がする。 当日はdemo…

ぼくのかんがえたさいきょうの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…

ʕ  ゚皿゚ ʔ GolangのASTを可視化するツールを作った

はじめてのGo Runtime。 ということで、GoのAST(抽象構文木)を可視化するツールを書いた。yuroyoro/goast-viewer · GitHubgoast.yuroyoro.net にデモがある。go/astパッケージを使うと、GoのソースコードからAST(抽象構文木)を得ることができる。 あとはこれ…

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

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

ʕ  ゚皿゚ ʔ GolangのWeb Application Frameworkを色々試してみてもいいかしら?

うちのメロンちゃんはLv.117です。Golangで、簡単なWebアプリケーションをいくつかのフレームワークを用いて作成してみた。 サンプルアプリケーションは、こんな感じのPhotoギャラリーアプリケーションで、画像URLを入力すると追加される。 PureというCSSフ…

ʕ  ゚皿゚ ʔ GolangからLevelDBを使う

cgoとLevelDBを使って、タイトルのとおりのものを作ってみた。頑張ればRiakとかInfluxdbみたいなのを書けるかもナー。 ʕ ゚皿゚ ʔ cgo楽しいおシーゴォー コードはすべてGithubにある。yuroyoro/leveldb-go-sample · GitHub なお、この実装はあくまで個人的な練習で…

ʕ  ゚皿゚ ʔ Golangからv8を使う

cgoとlibv8を使って、タイトルのとおりのものを作ってみた。頑張ればnodeみたいなのをgoで書けるかもナー。 ʕ ゚皿゚ ʔ cgo楽しいおシーゴォー 基本的な方法は以下の記事にあるとおりだが、v8のバージョンが上がっていたりするので、多少の手直しをしてある。Embeddi…

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

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

git push 進捗

git remote rename origin 進捗 git commit -m '進捗ダメです' git push 進捗便利

gitでブランチを切り替えた時に何かする(例えばrbenvでRubyのバージョンを切り替えたり)

git

タイトルの通りのことをやりたかったっぽいので。 例えば、現在のRubyのバージョンはREE 1.8.7だけど、次回リリースからは1.9.3にあげることになっている場合なんか、masterブランチはREE使うけどdevelopブランチは1.9.3で動作させる必要があるっぽいけど、c…

tmuxでマウス(trackpad)でバッファをスクロールする

お役立ち情報です。 @yuroyoro スクロールはホイールでの操作になりますね。.tmux.confにset-window-option -g mode-mouse onを追加しておくと、ホイールでtmuxのバッファをスクロール出来るようになります。— いわもと こういち (@ttdoda) 2013, 9月 25 .tm…

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/…

gfspark: GrowthForecastのグラフをターミナルに表示する

というコマンドを作った。みんな大好きGrowthForecast!! gfspark yuroyoro/gfspark · GitHub Installation $ gem install gfspark Usage 以下の3つのいずれかの方法でグラフを指定してくれ。 gfspark "グラフのURL" gfspark your_service/your_section/your_…

社蓄度ロール(SHAチェック)

社蓄度 どれだけ勤めている会社(営利企業)に飼い慣らされてしまい自分の意思と良心を放棄し奴隷(家畜)と化しているかを指す。 この数値は労働基準法違反な事柄やブラック企業的事象に遭遇してしまうことで増加する。ただし、社蓄度ロール(SHAチェック)…

Railsのログに出力されるパラメータやSQLを整形する

Railsのログに出力されるパラメータやSQLを整形してみた。開発中は便利かもしれない。 こんな感じになる。 詳細はこのコミットを参照。サンプルのアプリとしてRailsApps/rails3-bootstrap-devise-cancan · GitHubを使わせてもらった。Apply pretty formating…

CLIでJSONの整形をする

curlとかで取ってきたJSONを整形して表示したかったのでググったらいい方法があったので。unix - How to pretty-print JSON from the command line? - Stack Overflow パイプで`python -mjson.tool`に渡すだけ。pythonすごい。 $ curl -s http://api.tumblr.…

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

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

java-ja.dddの最後の「関数型言語Dis(?)」について

java-ja.ddd - connpass 2013/03/22 java-ja.ddd #java_ja #java_ja_ddd - Togetter java-ja.ddd面白かったです。色々と得るものがありました。発表者の方々、有り難うございました。 会場を提供して頂いたGREEさんありがとう。運営のみなさまお疲れ様。 で…

一時的にブランチを切り替えてコマンドを実行するgit-switchっての作った話

git

gitで、一瞬だけ他のブランチに切り替えてコマンド実行したいときに毎回checkoutとかすんのタルいし、workspaceに変更があったらgit-nowしたりstashしたりしないとブランチ切り替えられなくてタルいので、一時的に他のブランチに切り替えて指定したコマンド…

ワークライフバランス()向上のために定時すぎたらダイアログが表示されるようにした

仕事してると、ついつい「このバグ直した帰ろう」とか「このテストが通ったら帰ろう」とかやってるうちにいつの間にか終電近くまで作業していて( ꒪⌓꒪)ってなることが多いので、定時すぎたら一時間毎にムカつく心温まるメッセージを表示するようにAppleScri…

設計を型にエンコードするということ

動的型付け vs 静的型漬けのアレでもんにょりしてたのをついったーに放出して会話してたらなんとなく自分なりの考えがまとまったので貼っておく。 ……(ファントムタイプとか型安全ビルダーパターンとかで、型レベルにロジックをエンコードした結果、ライブラ…

git symbolic-ref を利用して、ブランチに対して別名をつけることができて墓ドル

git

何が便利かというと、今git-flowで運用しているのだけど、リリースブランチを常に同じブランチ名で参照できるようになってうれしい。 例えば、次回にリリースブランチが'release/1.17.0'だとすると、'git symbolic-ref rc release/1.17.0'とすることで、'rc'…

httpstatus コマンドで、HTTP のステータスコードをすばやくしらべる!

一般的な Web Programmer ならば、HTTP Status code はすべて暗記していると聞きました。しかし、僕は初心者なので、なかなか覚えきれていないので、HTTPのステータスコードをさがすのに便利なツールを用意しました。 httpstatus.hs です。インストール方法…

Scala2.10.0のDependent method typesと型クラスを組み合わせた『The Magnet Pattern』がヤバい件

これが……型の力かッ……!!spray | Blog » The Magnet Patternという記事で、「The Magnet Pattern」というデザインパターンが紹介されている。 これは、メソッドオーバーロードで解決していた問題を、型クラスとDependent method typesを組み合わせて置き換え…

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

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

Jenkinsで外部パラメータで与えたブランチを対象にビルドできるようにしておくと凄惨性あがって墓ドル

テストが終わるまでの時間で書いてみる。Jenkinsでジョブを実行させるときに、外部パラメータで任意のブランチを対象にビルドできると墓ドル。例えば、自分のローカルブランチをマージするまえに、テストが通るか確認したい場合とか。そんなのローカルでテス…

.gitconfigでFizzBuzz

git

.gitconfigのtipsを公開するのが流行ってるみたいなので。 git config alias.fizzbuzz "!f() { seq "$@" | awk '$0=NR%15?NR%5?NR%3?$0:\"Fizz\":\"Buzz\":\"FizzBuzz\"' ;}; f" ( ꒪⌓꒪) git fizzbuzz <num> · 7a4ddcd · yuroyoro/dotfiles · GitHub git fizzbuz</num>…

Freeモナド in Scala

噂のFreeモナドをScalaで写経してみた。 Freeモナドは、取り込む型SのFunctorと組み合わせて、Functorの特性に応じたモナドを得ることができるものらしい。 そろそろFreeモナドに関して一言いっとくか - fumievalの日記 Freeモナドって何なのさっ!? - capr…

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インスタ…

jQueryの$.map/$.eachでfuncitonに渡す引数順がキモすぎる

$.each(arr, f)は、funcitonに(index, element)の順で引数を渡す。 Utilities/jQuery.each - jQuery Wiki $.map(arr, f)は、funcitonに(element, index)の順で引数を渡す。 Utilities/jQuery.map - jQuery Wiki .......逆じゃねーか。 var f = function(a,b)…

指定したコミットで修正されたファイルをvimで開く

.gitconfigにこういうalias書いた。'git modified HEAD~'で一つ前のコミットで修正されたファイルをvimで開く [alias] # 指定したコミットで変更されたファイルを編集する modified = "!f() { git diff $1..$1\\^ --name-only | xargs sh -c 'vim "$@" < /de…

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

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

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

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

git cherryでブランチ間のコミットのdiffを。色もつけて

git

git cherryで、ブランチ・ツリー間のコミットのdiffを見ることができる。 git cherry [-v] [<upstream> [<head> [<limit>]]] デフォルトでは、upsteamに無いコミットは"+"で、逆にheadになくてupstreamにあるコミットは"-"で表示される。それとsha1のみ。味もそっけもない。 "git ch</limit></head></upstream>…

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 再帰もかける。デフォルト引数で再帰させてフィボナってみ…

もう2012年なのに未だにRAIS_ENV=testと書かなければならないことにブチキレてaliasを書いた話

まぁくわしくはこのcommitを見ればいいのだが、"rake db:migrate RET"ってやると"RET"が"RAILS_ENV=test"に展開されるようにしたんだけど、みんなどうやってこれ対処してんの?( ;゚皿゚)ノシΣ RAILS_ENV=testとか環境変数で渡すのタルイしrakeの引数処理はマジで…

Navigation Timing APIでブラウザの処理時間を可視化するツール作った

最近のブラウザでは、 Navigation Timing API ってのがサポートされていて、これを利用すればブラウザがページをロードするのに要した処理時間の内訳を知ることができる。 例えば、"DNSのlookupに要した時間"や"DOMの構築処理時間"、"onloadイベントの処理時…

(   ꒪⌓꒪) そういえばJavascript使えるんだったな

( ꒪⌓꒪) ( ꒪⌓꒪) ( ꒪⌓꒪) ( ꒪⌓꒪)var moving = function(p, n, m,t) {setTimeout( function(){ $('#' + p).text(Array(n).join(' ') + '(' + Array(m).join(' ') + ' ꒪ ⌓꒪)');moving( p,(n + 1) %20, m,t); }, t);};moving('p1', 1, 3,200);moving('p2…

(  ꒪ ⌓꒪)

( ꒪ ⌓꒪) 川川川川川川川川川川川川