スライドです 本当は怖いオープンクラスとDuckTyping - 表参道.rb #4 まぁたいした話じゃないんですが、マッドマックスの画像をスクリーンに大写しできたのでその点だけで個人的には満足しています 「型を讃えよ」
スライドです 本当は怖いオープンクラスとDuckTyping - 表参道.rb #4 まぁたいした話じゃないんですが、マッドマックスの画像をスクリーンに大写しできたのでその点だけで個人的には満足しています 「型を讃えよ」
以前から気になっていたSIMDプログラミングをGoでやってみた。 Single Instruction Multiple Data (SIMD) 演算とは1回の命令で複数のデータを同時に処理する演算です.近年の CPU には SIMD 演算を行うことができる SIMD 演算器が搭載されており,Intel 社の CPU ならば Streaming SIMD Extensions (SSE) を用いることで SIMD 演算を行うことが可能です.SSE は CPU に搭載されている 128bit レジスタを用いて演算を行うため単精度データならば4つ,倍精度データならば2つずつ演算を行うことができます.また,近年 SSE 後継の SIMD 拡張命令として Intel Advanced Vector eXtentions (AVX) が登場しました.AVX は第2世代 Intel Core i シリ
何をいっているのかというと、こういうことです rubyで、obj.send(pred) がtrueならばselfを、装で無い場合はnil を返すメソッド欲しい— ⁰⁰⁰⁰null (@yuroyoro) August 28, 2014 foo.present? ? foo : other みたいなの書くのダルいので— ⁰⁰⁰⁰null (@yuroyoro) August 28, 2014 class Object def filter(&pred) (yield self) ? self : nil end end 書いてみた。 foo".filter(&:present?) # => "foo" "".filter(&:present?) # => nil ようは、 str.present? ? str : other みたいなやつを書きやすくするためのものです str = "hoge
前回から一年以上が経過しているけど、最近lambda_driver.gemに機能を追加したので、そのことについて書こうと思う。 Rubyで、モナ……っぽい関数合成を実装した話だ。 Rubyで関数合成とかしたいので lambda_driver.gem というのを作った - ( ꒪⌓꒪) ゆるよろ日記 関数合成 関数合成については以前に書いたので、こちらを見て欲しい。 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記 おさらいをしておくと、関数合成とは、 関数gと関数fから、g(f(x))という関数hを新たに作り出すことだ。 (g ∘ f)(x) = g(f(x)) 関数gと関数fの合成関数g ∘ fに引数xを渡した結果は、関数gにf(x)の結果を渡したものと等しい。つまり、このような操作である。 f = lambda{|x| x + 1
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(
一般的な 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
Scalaには、PartialFunctionというものがあります。 直訳すると部分関数ですが、これはなにかっていうと「特定の引数に対しては結果を返すけど、結果を返せない引数もあるような中途半端な関数」です。 どうやって使うのん? まぁ、ちょっと例を見てましょうや。PartialFunctionであるfooPfは、引数が"foo"だったら"bar"を返して、"foo"以外は知らんというてきとーな関数です。 scala> val fooPf:PartialFunction[String,String] = { case "foo" => "bar" } fooPf: PartialFunction[String,String] = <function1> scala> fooPf("foo") res5: String = bar scala> fooPf("hoge") scala.Mat
噂の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モナドはエイトセンシズくらいなのでかなり小宇宙を高めないと理解が追いつ
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上で実行さ
本記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 「lambdaの暗黒面」に堕ちたプログラマが可読性とかメンテナンス性とか無視して好き放題コード書いたらこうなった。悪気はなかった。もしかしたら有益な情報が含まれている可能性もあるが、基本的には害悪しかないはずなので、話半分で読んで頂きたいΣ(||゚Д゚)モヒィィィィl 可変長引数に対するカリー化 前回、Proc#curryを利用して関数をカリー化する方法を示した。が、可変長引数をとる関数にはカリー化がうまく作用しない。引数を適用する個数を決めることができないからだ。 [1] pry(main)> f = "foo".method(:gsub).to_proc => #<Proc:0x007fe59112f588 (lambda)> [2] pry(main)> f.arity => -1
本記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 注意点として、この記事は、プログラマ厨二病のひとつである「ラムダ症候群(λ-Syndrome)」に罹患した患者にRubyを書かせると、どんなヒドいことになるか実例を示したものであり、けしてこのようなプログラミングスタイルを推奨するものではない。 なぜ関数合成? まず、なぜ関数合成が必要か、そのモチベーションを示す。 前回、単なるメソッド呼び出しや一引数の関数適用のためだけにブロックを記述する必要はない、という話をした。 だが、以下のようなSymbolのArrayがあり、各要素をto_sした上でupcaseしたい場合はどうするか? irb(main):003:0> arr = [:user, :entry, :article, :comment, :category] => [:user,
この記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 だって、ブロックって汚いじゃん?仮引数の|x|とかキモイ。 Symbol#to_proc 基本中の基本。 instance method Symbol#to_proc 以下のようなArrayがあって、 irb(main):003:0> arr = [:user, :entry, :article, :comment, :category] => [:user, :entry, :article, :comment, :category] 各要素をto_sしたかったら、 irb(main):004:0> arr.map{|s| s.to_s} => ["user", "entry", "article", "comment", "category"] と書くかわりに、 irb(main)
Tumblrから出戻ってきました。 8/4のLL DecadeのLT大会に出るのでぜひお越しください。 さて、モナってますか? scalazなどでよく出現する[({type F[X] = G[A,X]})#F]のようなコードですが、これが何を意味しているのか最近やっと理解できたので、久しぶりにScalaの事書きます。 この記事はhigher kinded type(高階型)を理解していることが前提です。 結論からいうと、型パラメータの部分適用を行うためのテクニックです。以下のサンプルコードはscalazを使ってます。 用語 まず、この記事で使う用語を定義します。 higher kinded type(高階型) 「いくつかの型パラメータを取る型コンストラクタ」のこと。 例えば、ListはList[Int]のように、「型パラメータをひとつ取る型」なので高階型。 Eitherは、Either[T
このエントリは Scala Advent Calendar jp 2011 の5日目です。 Scalaやってる人なら一度はScala言語仕様に目を通したことがあると思います無いとは言わせない。 この言語仕様を見ると、たまに思いもよらない発見があったりしますが、その中でほとんど利用されているところを見たことがない不遇な機能「5.1.6 事前定義 (Early Definitions)」について書こうと思います*1。 事前定義 (Early Definitions)とは? テンプレートを事前フィールド定義(early field definition)節で始めることができ、それにより スーパー型のコンストラクタがコールされる前に、ある特定のフィールド値を定義できます。 次のテンプレート中で { val p1 : T1 = e1 ... val pn : Tn = en } with sc wi
以下の記事で紹介されているが、Scala2.10の実験的な機能として、 このコミットにより、 文字列中の式展開が入るかもしれない。 Algorithmically challenged: String Interpolation on 2.10? 式展開とは、Rubyでは"foo #{hogehoge}"のように文字列中に式を埋め込んで評価した結果を元に文字列を作成すること。2.10のnightly buildを持ってきて、-Xexperimentalオプションを付けて起動すると、試してみることができる。 ozaki@mbp-4 $ scala -Xexperimental Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 Welcome to Scala version 2.10.0.r25825-b20111013020230 (Java H
軽くイラッ☆っとしたので書く。 Scalaにはimplicit conversionってのがあってまぁ知らないならググれ。で、implicit conversionを定義する際に、最低限チェックすべきたったひとつのことを書く。 「scala.Predefでimplicit conversionが定義されている型に対して新しいimplicit conversionを定義する際は、Predefで変換される型と、新しく定義する変換先の型とでメソッド名が重複しないかチェックしろ!!」 具体例で話す。scala.PredefにはStringからStringOpsへのimplicit conversion(もう長くてウゼェので以下ICな)が定義されている。StringOpsってのは文字列操作に関するわくわく便利メソッドが詰まってるtraitだ。 implicit def augmentString (
日本語でおk Scala実践プログラミングposted with amazlet at 11.06.12 秀和システム 売り上げランキング: 665 Amazon.co.jp で詳細を見る 目次とかは内容については、 モテるScala女子力を上げたい人向けにScalaの本が出ます。 - ゆろよろ日記をみてください。 「明日またここに来てください、本当のScalaの使い方ってヤツをお見せしますよ」 でね、なんか「Scalaのfor式は文法の意味わからんしいらなくね?」とか全く意味不明のDISをしている人もいるらしいので、そういう人はすこしでもモナドについて勉強してからDISるようにしてくださいねー。先生との約束ですよー? そういうおちゃめドジッ子属性な人のために、Scalaでモナドについてわかりやすく解説してある「モナドは象だ」って記事を翻訳しました。ちょっと長いですけど、for式が繰り返し
なんかあんまり話題になってないような気がするんだけど、TwitterのAPIで"Web Intents"ってのがあるわけ。結構前に発表されたんだけど。 Web Intents | Twitter Developers TwitterからWeb Intents発表―ブログ内にクライアントをエンベッドできる―WordPressからも利用可能 Introducing Web Intents - Twitter API Announcements | Google Groups 簡単に説明すると、 http://twitter.com/intent/favorite?tweet_id=70343369632653312のようなURLで、このように特定の発言をふぁぼらせたりRTさせたりすることができるようになる。 ようは、このURLに他の人を誘導することで、特定のアクション(ふぁぼ、RT、フォロー)
秀和システムさんからScalaの本が出ます。発売は多分6月くらいです。 "オープンソース徹底活用"シリーズとして、Scalaをより実践的に使うための色々な事を盛り込みました。タイトルはまだ未定です。 @kmizu, @ryugate ITプランニングさんから(@osiire @keigoi 他)、 監修 @keisuke_n というメンバーと俺で共著という形で執筆しました。 4月末に脱稿して今校正作業中です。自分で言うのもアレですけど、今までのScala本とはまったく異なった面白い内容に仕上がったと自負しています。ITプランニングさんには貴重な経験を提供して頂きましたし、@kmizu や @ryugate は精力的に原稿の取り纏めやスケジュールの管理をしてもらいました。俺はほとんど何もできてないんですが、宣伝くらいはさせてもらおうと思ってコレを書いてます。 どんな内容なの? 最初に断ってお
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く