サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブックレビュー
yuroyoro.hatenablog.com
というコマンドを作った。みんな大好きGrowthForecast!! gfspark yuroyoro/gfspark · GitHub Installation $ gem install gfspark Usage 以下の3つのいずれかの方法でグラフを指定してくれ。 gfspark "グラフのURL" gfspark your_service/your_section/your_graph h --url=http://your.gf.com gfspark your_service your_section your_graph h --url=http://your.gf.com Complex Graphには対応してない。あと、内部でsttyコマンドを使ってるのであっWindows…… グラフが上手く表示されない場合は、`-n`オプションを試してみてくれ。例えば、フォントがRic
Twitter / Kota Mizushima: @yuroyoro グルーピングを含まない正規表現 ... via kwout ついったで@kmizuさんに教えて頂きましたよ。 グループを含まない正規表現の場合は、case reg1() => ...のように書けばよいとのことです。 scala> val reg1="abc.+$".r reg1: scala.util.matching.Regex = abc.+$ scala> val reg2="abc(.+)$".r reg2: scala.util.matching.Regex = abc(.+)$ scala> "abcdef" match { case reg1() => print("reg1") case reg2(x) => print("reg2") case _ => print("none") } reg1 Tw
社蓄度 どれだけ勤めている会社(営利企業)に飼い慣らされてしまい自分の意思と良心を放棄し奴隷(家畜)と化しているかを指す。 この数値は労働基準法違反な事柄やブラック企業的事象に遭遇してしまうことで増加する。ただし、社蓄度ロール(SHAチェック)に成功すればその増加量は大幅に低減できる。 SHA値といわれているが、「社蓄度」が正しい。 社蓄度のスタート値は(100- POW(=Power,精神力)×5)。 最大社蓄度ポイントは「99-〈ブラック企業知識〉」で、〈ブラック企業〉についてよく知っているほど社蓄度の最大値は下がっていく。 SHAチェック 1d100(100面ダイス)で社蓄度以上を出す。成功すればだいたい社蓄度は増えない(増えることもある)。 SHAチェックは、超過勤務・休日出勤・理不尽なパワハラなどに直面した際に実施する。 社蓄度が増加するほど成功率は下がり、疑問を持たなくなってい
Railsのログに出力されるパラメータやSQLを整形してみた。開発中は便利かもしれない。 こんな感じになる。 詳細はこのコミットを参照。サンプルのアプリとしてRailsApps/rails3-bootstrap-devise-cancan · GitHubを使わせてもらった。 Apply pretty formating to logged sql/parameters · f734fb0 · yuroyoro/rails3-bootstrap-devise-cancan · GitHub SQLの整形には、sonota/anbt-sql-formatter · GitHubを使った。 Parameterは、michaeldv/awesome_print · GitHubを利用してる。ap便利。 ActionController::LogSubscriberやActiveRecord::L
curlとかで取ってきたJSONを整形して表示したかったのでググったらいい方法があったので。 unix - How to pretty-print JSON from the command line? - Stack Overflow パイプで`python -mjson.tool`に渡すだけ。pythonすごい。 $ curl -s http://api.tumblr.com/v2/blog/david.tumblr.com/info\?api_key\=fuiKNFp9vQFvjLNvx4sUwti4Yb5yGutBN4Xh10LXZhhRKjWlV4 | python -mjson.tool { "meta": { "msg": "OK", "status": 200 }, "response": { "blog": { "ask": true, "ask_anon": false
LambdaDriver by yuroyoro Rubyで、Procやlambdaで関数合成できるようにしたかったので、lambda_driver.gemというのを作った。 内容的にはこの辺で書いたヤツをgemにした感じ。 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記 「関数型Ruby」という病(3) - カリー化(Proc#curry, Proc#flip) - ( ꒪⌓꒪) ゆるよろ日記 こんな風に、カッコよくコードが書ける。 require 'lambda_driver' # [:foo, :bar, :baz].map{|s| s.to_s }.map{|s| s.upcase } # [:foo, :bar, :baz].map(&:to_s).map(&:upcase) [:foo, :bar, :baz].map(
java-ja.ddd - connpass 2013/03/22 java-ja.ddd #java_ja #java_ja_ddd - Togetter java-ja.ddd面白かったです。色々と得るものがありました。発表者の方々、有り難うございました。 会場を提供して頂いたGREEさんありがとう。運営のみなさまお疲れ様。 で、一番最後に、「関数型言語をDisって逃げる」ということで発表者の一人である増田亨さんがごく短い時間お話しされました。 その内容があまりにも自分にとって納得しかねるものだったので、ブログにアウトプットします。 「関数型言語Dis」の中で、増田さんがされた主張は以下2点です。 関数型言語ユーザーは業務の話ができない 関数型言語は記号を多用しすぎる 関数型言語が、どの言語を指しているのかがまず不明ですが、そこは置いておいて。 まず一点目、「関数型言語ユーザーは業務の
gitで、一瞬だけ他のブランチに切り替えてコマンド実行したいときに毎回checkoutとかすんのタルいし、workspaceに変更があったらgit-nowしたりstashしたりしないとブランチ切り替えられなくてタルいので、一時的に他のブランチに切り替えて指定したコマンドを実行するラッパーを書いた。書いた。 dotfiles/bin/git-switch at master · yuroyoro/dotfiles · GitHub git switch [--repository=<path>] [--new-workdir=<path>] <branch> <command...> `git switch foo_master git show`ってやると、fooブランチに切り替えて`git show`を実行する。コマンドは別になんでもいいので、`git switch hogehoge r
仕事してると、ついつい「このバグ直した帰ろう」とか「このテストが通ったら帰ろう」とかやってるうちにいつの間にか終電近くまで作業していて( ꒪⌓꒪)ってなることが多いので、定時すぎたら一時間毎にムカつく心温まるメッセージを表示するようにAppleScript書いた。 20時から24時までの一時間毎に、こんな感じで唐突にメッセージが表示されてフォーカスを奪っていき、ワークライフバランス()の改善を促し精神に負荷をかける。 set hour to hours of (current date) try tell application (path to frontmost application as text) if hour = 20 then set msg to "( ꒪⌓꒪) もういい時間だしさっさと帰れよカスwww" display dialog msg else if hour =
動的型付け vs 静的型漬けのアレでもんにょりしてたのをついったーに放出して会話してたらなんとなく自分なりの考えがまとまったので貼っておく。 ……(ファントムタイプとか型安全ビルダーパターンとかで、型レベルにロジックをエンコードした結果、ライブラリ利用者がテストを書くまでもなく適切にライブラリを利用できるようになる、という意味での「静的型でコンパイラは最強のテスティングフレームワーク」という視点があると思う)— 蒸発プログラマさん (@yuroyoro) 2013年3月11日 @yuroyoro 最初のメジャーなテスティングフレームワークがJUnitなので違和感を感じます。— ぎゃばんぱみゅぱみゅさん (@ledsun) 2013年3月11日 @ledsun メジャーかそうでないかで言われると反論しようがないですが、捉え方というか視点として、ビジネスロジックを型レベルにエンコードして、テス
何が便利かというと、今git-flowで運用しているのだけど、リリースブランチを常に同じブランチ名で参照できるようになってうれしい。 例えば、次回にリリースブランチが'release/1.17.0'だとすると、'git symbolic-ref rc release/1.17.0'とすることで、'rc'という名前で参照できる。 エイリアス先の'release/1.17.0'のHEADが先に進んでも、rcも常に同じHEADを参照するので、一貫して'rc'という名前で扱える。 $ git symbolic-ref rc refs/heads/release/1.17.0 これだけだとありがたみがない。が、無事に1.17.0がリリースされて、その次のリリースブランチがrelease/1.18.0になったときでも、'git symbolic-ref rc release/1.18.0'でエイリアス
一般的な Web Programmer ならば、HTTP Status code はすべて暗記していると聞きました。 しかし、僕は初心者なので、なかなか覚えきれていないので、HTTPのステータスコードをさがすのに便利なツールを用意しました。 httpstatus.hs です。インストール方法は 適当にコンパイルしてください。 yuroyoro / httpstatus.hs httpstatus コマンドで、HTTP のステータスコードをすばやくしらべる! - tokuhirom's blog. Big Sky :: httpstatus コマンドで、HTTP のステータスコードをすばやくしらべる!
これが……型の力かッ……!! spray | Blog » The Magnet Patternという記事で、「The Magnet Pattern」というデザインパターンが紹介されている。 これは、メソッドオーバーロードで解決していた問題を、型クラスとDependent method typesを組み合わせて置き換えることで、オーバーロードの際の様々な制約(Type Erasureなど)を突破し、より柔軟な拡張性を得ることができるというもの。このパターンでは、引数の型に応じて異なる結果型を返すようにできる。 この記事で、今まで何のために使われるのかわからんかったDependent method typesの有効性が理解でき、あらためて型の力を思い知った。 以前に"Generalized type constraints"(Scalaで<:<とか=:=を使ったgeneraliz
yajl(Yet Another JSON Library)っていう高速なJSONライブラリがあって、 yajl こいつをrubyから使えるようにするyajl-rubyってgemがあって、これをMultiJsonのBackendに変更することで、RailsにおけるJSON処理の高速化が期待できるデス。 brianmario/yajl-ruby · GitHub 素のjson.gemと、yajl-rubyとで適当なActiveRecordオブジェクトからJSONへのエンコードと、その逆のデコードで簡単にベンチってみると、約2倍の差があることが分かる。 -------------------------------------------------------------------------------- Benchmark of json encoding/decoding json_
テストが終わるまでの時間で書いてみる。 Jenkinsでジョブを実行させるときに、外部パラメータで任意のブランチを対象にビルドできると墓ドル。 例えば、自分のローカルブランチをマージするまえに、テストが通るか確認したい場合とか。 そんなのローカルでテストすりゃーいいじゃんって言われるかもしれないが、 テスト全部通すのに時間が掛かるようになってると、とりあえずCIに実行を投げておいてあとで確認するほうがずっと効率がいい。 F.Y.I: Building github branches with Jenkins ジョブの設定 「ビルドのパラメータ化」にチェックをつけて、以下のようにbranchって名前のパラメータを設定しておく。 「ソースコード管理システム」で「Branches to build」のところに、設定したパラメータである"$branch"を入れておく。 ジョブの設定は以上。上記の方
.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 fizzbuzz で実行 ozaki@mbp-4 $ git fizzbuzz 30 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz Fizzbuzzも書けないプログラマは(炎
噂のFreeモナドをScalaで写経してみた。 Freeモナドは、取り込む型SのFunctorと組み合わせて、Functorの特性に応じたモナドを得ることができるものらしい。 そろそろFreeモナドに関して一言いっとくか - fumievalの日記 Freeモナドって何なのさっ!? - capriccioso String Creating(Object something){ return My.Expression(something); } Haskell for all: Why free monads matter stackless scala with free monad 独習 Scalaz: 18日目 | eed3si9n ( ゚д゚) 「ナンデ!?モナドナンデ!?」 モナドがセブンセンシズならFreeモナドはエイトセンシズくらいなのでかなり小宇宙を高めないと理解が追いつ
やっつけで適当に書いてみた。 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インスタンス作ったりコンテキスト使い捨てしたりしてるし、mrubyからの返り値やコンテキスト内の変数にはruby側からはアクセスできないのだけど、あんまり真面目に作ってないのでカンベン汁( ꒪⌓꒪)
$.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){ console.log("a:" + a + " b:" + b); return a } => undefined var arr = ['foo','bar','baz'] => undefined $.each(arr,f) a:0 b:foo a:1 b:bar a:2 b:baz => ["foo", "bar", "baz"] $.map(arr,f) a:foo
ブランチングモデルとしてgit-flowを使っていて、メインラインとして、本番適用中のmasterブランチと、次期リリース用のrelease/9999ブランチと、メイン開発ブランチのdevelopがある。 ところが、開発中は頻繁にブランチを移動するし、ブランチによってDBのスキーマが異なるなんてザラにあるし、ブランチ切り替える度にconfig/database.ymlを書き換えるのもタルいので、こんな風に書いた。 development: adapter: postgresql database: my_app_<%= case `git symbolic-ref --short HEAD` when 'master' then 'master' when 'develop' then 'develop' when /release\/.*/ then 'release' when /ho
前回からかなり期間を空けてしまったが、今回からRubyにおいてnilといかに闘うかについて書く。 本記事は以下略。わかれ( ゚д゚)。 Object#try Object#tryはActiveSupportで提供されるメソッド、レシーバーがnilじゃない場合に引数のSymbolのメソッドを呼び出してくれる。Symbolの代わりにblockを渡すことも出来る 。 rails/activesupport/lib/active_support/core_ext/object/try.rb at master · rails/rails · GitHub [4] pry(main)> "foo".try(:upcase) => "FOO" [5] pry(main)> nil.try(:upcase) => nil tryを使うと、nilに対してメソッド呼び出してNoMethodError( ;゚
git cherryで、ブランチ・ツリー間のコミットのdiffを見ることができる。 git cherry [-v] [<upstream> [<head> [<limit>]]] デフォルトでは、upsteamに無いコミットは"+"で、逆にheadになくてupstreamにあるコミットは"-"で表示される。それとsha1のみ。味もそっけもない。 "git cherry -v"で、コミットログもでる。 これでも充分だけど、もっとdiffっぽく色付けたり、Autherや日付表示したりしたい。のでこんなalias書いた # colorized cheery -v cch= "!f() { git cherry -v "$@" | awk '{ if($1 == \"+\"){ color = \"green\" } if($1 == \"-\"){ color = \"red\" } cmd =
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 再帰もかける。デフォルト引数で再帰させてフィボナってみる [3] pry(main)> def fib(n,r = (n <=1 ? n : fib(n-2) + fib(n-1))) [3] pry(main)* r [3] pry(main)* end => nil [4] pry(main)> 11.times do |n| puts "fib(#{n}) => #{fib(n)}" end fib(0) => 0 fib(1) => 1 fib(2) => 1 fib(3) =>
最近のブラウザでは、 Navigation Timing API ってのがサポートされていて、これを利用すればブラウザがページをロードするのに要した処理時間の内訳を知ることができる。 例えば、"DNSのlookupに要した時間"や"DOMの構築処理時間"、"onloadイベントの処理時間"などを見ることができるので、クライアントサイドのパフォーマンス計測に役立てることができる。 Navigation Timing Navigation Timing APIの仕様 #JavaScript - Qiita HTML5で Speed Test, Navigation Timing APIによる性能データ収集 - ぼちぼち日記 Navigation TimingでWebアプリの読み込み時間ログ取得 - l4l このAPIは、 window.performance.navigationオブジェクトや
Ocacle Java7で任意のOSコマンドを実行可能な脆弱性がある、と話題になりました。 JVNTA12-240A: Oracle Java 7 に脆弱性 本日パッチがリリースされました。 Oracle、Javaの深刻な脆弱性を公表―攻撃者はリモートであらゆる操作が可能〔今朝パッチ緊急リリース〕 Alert for CVE-2012-4681 PoCコードも公開されています。この脆弱性を突く攻撃はどのようなものか興味があったので、調べてみました。 調査結果は、今週に行われた8月29日 JJUG Night Seminar ~ Java VM<&納涼会 ~(東京都) で話してきたのですが、パッチも出たことだしブログにも書いてみようと思います。 Javaのセキュリティモデルについて Javaのセキュリティは、サンドボックスモデルによって確保されています。サンドボックスは、JVM上で実行さ
Comparing c0acdd36df5b231eb0553493d26c0a3cb37b9482...dc254de8ec79250e853889f707a6d01f66c8bca1 · yuroyoro/dotfiles · GitHub このあたりを参考にしてやった Status Line · zolrath/wemux Wiki https://github.com/zolrath/wemux/wiki/Status-Line Macでtmuxのステータスラインに起動時間/ロードアベレージ/メモリ使用率を表示 :よんちゅBlog http://d.hatena.ne.jp/yonchu/20120414/1334422075 ステータスラインの右にはメモリ使用量とLoadAverageを出すように。 使用するフォントはvim-powerline用にパッチ当てたヤツじゃないとうまく
本記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 「lambdaの暗黒面」に堕ちたプログラマが可読性とかメンテナンス性とか無視して好き放題コード書いたらこうなった。悪気はなかった。もしかしたら有益な情報が含まれている可能性もあるが、基本的には害悪しかないはずなので、話半分で読んで頂きたいΣ(||゚Д゚)モヒィィィィl 可変長引数に対するカリー化 前回、Proc#curryを利用して関数をカリー化する方法を示した。が、可変長引数をとる関数にはカリー化がうまく作用しない。引数を適用する個数を決めることができないからだ。 [1] pry(main)> f = "foo".method(:gsub).to_proc => #<Proc:0x007fe59112f588 (lambda)> [2] pry(main)> f.arity => -1
本記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 プログラマ厨二病をこじらせるとこんなヒドいことになるという実例を示すものであって、可読性やメンテナンス性についてのツッコミはご遠慮願いたい。が、こういうコードを書いても怒られない世界がくればいいと思うのでみんな関数型言語やればいい( ;゚皿゚)ノシΣ フィンギィィーーッ!!!。 カリー化とは 複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること。 http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AA%E3%83%BC%E5%8C%96 つまり、多引数の関数を、「1引数の関数を返す関数」に変換することである。 以下の例にある3引数の関数fをカリー化したものは、関
本記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 注意点として、この記事は、プログラマ厨二病のひとつである「ラムダ症候群(λ-Syndrome)」に罹患した患者にRubyを書かせると、どんなヒドいことになるか実例を示したものであり、けしてこのようなプログラミングスタイルを推奨するものではない。 なぜ関数合成? まず、なぜ関数合成が必要か、そのモチベーションを示す。 前回、単なるメソッド呼び出しや一引数の関数適用のためだけにブロックを記述する必要はない、という話をした。 だが、以下のようなSymbolのArrayがあり、各要素をto_sした上でupcaseしたい場合はどうするか? irb(main):003:0> arr = [:user, :entry, :article, :comment, :category] => [:user,
次のページ
このページを最初にブックマークしてみませんか?
『( ꒪⌓꒪) ゆるよろ日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く