タグ

ブックマーク / xuwei-k.hatenablog.com (134)

  • Scala の開発に学ぶコードレビュー体制とプロジェクト開発 - xuwei-k's blog

    コードレビューについて Oh, you `re no (fun _ → more) より引用 単に普段の開発で使っている VCS でそれを行なっていました。 つまり、コードの中にコメントの形でレビューを書き、それをコミットする。 そしてそこから派生する議論も全てコード上のコメントで行います。 (もちろん複雑な話になった場合は直接の議論を行い、合議の結果だけを記しておく、なども当然あるでしょう。) レビューをソースコードのコメントとして直接書き込むのは、GHC の開発でも時々見かけますね。例えば、新機能の開発 branch を作って、新しい機能を開発している時とか。 2012-08-14 18:44:19 via OpenTween まあ、主に入った変更に Simon Peyton Jones が(ソースコード上で直接)コメントしそれに従ってソースコードを修正する形なので、レビューと言えるほ

  • infoQのRúnar Bjarnasonさんのインタビューを読んだ感想 - xuwei-k's blog

    InfoQ に Scalazのcommiterの Rúnar Bjarnason さんが、ScalaDays2012のときにScalazなどについてインタビューをうけたのが、video付きで載ってます。*1 http://www.infoq.com/interviews/bjarnason-scalaz 最初、全部訳そうかと思ったけれど、ちょっとだけやってすぐに挫折したので、気になったところだけピックアップしつつ、自分の感想書くだけにします。 まず仕事についてのあたり Rúnar Bjarnason is a software developer at Capital IQ, a global provider of data and analytics for financial professionals. Capital IQ でググったら、サイトでてきましたが https://ww

  • @merborne さんの Rubyの Object#repeat は、Scala だと iterate - xuwei-k's blog

    RubyにおけるシーケンスはObject#repeatに任せなさい! っていうか @udzuraさんから、うれしい言葉。 RT @udzura: 便利なのも同意、そして名前、もっと良いのがあるかどうかみんなで考えたい感じするのも同意です / RubyにおけるシーケンスはObject#repeatに任せなさい! URL 2012-07-15 14:22:42 via Termtter to @udzura @merborne Haskellではiterateという名前ですね URL 2012-07-15 14:30:10 via web to @merborne @yhara 情報有り難うございます! Haskellにはあるんですね。関数型だとiterateで関数適用を繰り返すってイメージできるけど、Rubyだとむずかしいかもしれませんね。@yharaさんまで.. 2012-07-15 14

  • Scala逆引きレシピ #scalarecipe - xuwei-k's blog

    貰いました! Scala逆引きレシピ 作者: 竹添直樹,島多可子出版社/メーカー: 翔泳社発売日: 2012/07/03メディア: 単行(ソフトカバー)購入: 6人 クリック: 54回この商品を含むブログ (14件) を見る 見た目の大きさとしてはそれほど大きくない感じですが、600ページ以上あり結構なボリュームです。なので、細かいところまで全然読みきれていませんが、全体をある程度眺めた感想を書いてみます。 特徴としてはここ Scala逆引きレシピというが出ます に書いてあるとおりですが、当に、まずそもそもライブラリやフレームワークの取り上げている数そのものが多いことと、それらのある程度細かいところまで、使い方や例がひと通り書かれているところです。 大きな章立てとしては以下のようになってますが(右の数字はページ) 1 準備 1 〜 16 2 Scalaの基 17 〜 90 3

    Scala逆引きレシピ #scalarecipe - xuwei-k's blog
  • Java で、 scalaz の assert_=== っぽいなにか - xuwei-k's blog

    追記: はてぶのterazzoさんのコメントにあるように、単に public <S, T extends S> void assertEq(S a, T b){ } でいい気がする・・・orz はじめに、scalaz の assert_=== って書きましたが、Equal のインスタンスを要求しないので、かなり別のものです、すいません。(いい題が思いつかなかったので) 目的としては、この assertEquals で、一つ目の引数と2つ目の引数の型が違ったらコンパイル時にエラーにしたいって話です。 それぞれ、プリミティブ型と、メッセージ書けるように引数3つのものがありますが、あとは (Object,Object) 型のものしかなくて、ジェネリクスなものがありません。 最初こんな感じにやりましたが これだと結局、1つめと2つめの引数の共通の親の型に推論されちゃって(たとえば一つ目の引数にin

    Java で、 scalaz の assert_=== っぽいなにか - xuwei-k's blog
    terazzo
    terazzo 2012/06/04
    二個目の引数の型を一個目の引数の型に代入可能かだけの制約に見える。(つまり「<S, T extends S> void assertEq(S a, T b) {...」と同じ)
  • Free Monad ってなんだろう - xuwei-k's blog

    先日の渋谷での第74回Scala勉強会では、nescalaの資料を読んだのですが 勉強会のwikiページ そのなかで、この資料 Dead-Simple Dependency Injection にでてくる Free Monad について。 勉強会中、とりあえずひと通り読んで、なんとなーく理解した後に 「あれ、これってIOモナドとか他のものでも書けるんじゃね?何が違うんだろう?」 的な意見がでて、だがしかしそれを詳しく説明出来る人もいないし、考えても調べてもすぐに分かるような問題じゃない・・・ので放置してた。 が、まさにそのことについて発表した人が twitter 上で話していたのでメモ。 まぁこれもまた、なんとなくしか理解できてないですが・・・一応怪しい訳で、自分なりに簡単にまとめると Free Monad 以外でも書ける けど、Free Monad で書いたほうがプログラムが明確になる

    Free Monad ってなんだろう - xuwei-k's blog
  • Scalaz7 の Iteratee や partial Lenses 、zipper を使った、新しい Database と Json のライブラリ - xuwei-k's blog

    追記:リポジトリ変わったみたいです あれ、以前blog書いたこれ URL違うリポジトリで開発続いてたのか!?なんでforkもしてないのか・・・ URL 2012-12-20 10:07:33 via web https://github.com/ephox/argonaut https://github.com/ephox/vault argonaut が JSON library で、vault が DB のライブラリです。ephox という organization のところにありますが、主に作ってるのは Scalaz 作者の tonymorris さんのようです。それぞれ gh-page にちょっとしたdocumentもあります。 http://ephox.github.com/argonaut/ http://ephox.github.com/vault/ 両方とも、直接build

  • sbt scripted plugin で OutOfMemoryError にならないように、必要そうな元のJVMの引数を引継ぐ - xuwei-k's blog

    sbt scripted pluginは、sbt plugin自体をテストするためなどために、標準でsbtに添付されてるsbtとおなじproject内で作られている plugin で、*1 内部的には新たにprocess自体を作成して実行されてます。*2 それで結構前に↓ sbtのscripted-pluginでOutOfMemoryErrorになるんだけれど、scriptedのテスト時のJVMのoptionって、もとlancherを起動させたものと違うのかな・・・?それともなにか違う原因だろうか 2012-03-28 11:06:18 via web 結論としては、sbt0.11.2などのversionでは予想通りそもそも渡していないというか、指定方法が存在しなかったらしい。で、 https://github.com/sbt/sbt/pull/339 https://github.com

    terazzo
    terazzo 2012/05/11
  • Scala でも travis-ci - xuwei-k's blog

    travis-ci http://travis-ci.org/ という、githubと連携して、いわゆる CI(継続的インテグレーション)を簡単に行えるサービスがあります。 もともとRubyのみで始まったらしいんですが、現在はかなりの言語に対応していてScalaでも使えるんですね。*1 たとえば Scalatra とかが利用してます最近、独自jenkinsに移行して利用やめたかも? https://github.com/scalatra/scalatra/blob/0703c7c466e58965f574fd804c40d1ba828c49d9/.travis.yml Scalaでの設定のやり方が書いてある公式ページ↓ http://about.travis-ci.org/docs/user/languages/scala/ 現状sbtの0.11系に対応してるらしいです。一度最初に設定すれ

    Scala でも travis-ci - xuwei-k's blog
  • Scalaz6.0.4 で Range の Foldable の instance は供給されないのに、IndexedSeq[Int] に型変えるだけで成功する件 - xuwei-k's blog

    https://github.com/scalaz/scalaz/blob/v6.0.4/core/src/main/scala/scalaz/Foldable.scala しょうがないのかな? まぁ、ほんのちょっとの手間がかかるだけで、実用上それほど大きな問題ではないですが、なんとなく気になったので Scalazを直接いじって、もうちょっとうまく空気読んでくれるようにできないのか(RangeはIndexedSeq[Int]のサブ型なのだから、Rangeから直接foldMapなどのFoldableのメソッド呼べてもいいような?) 自分でちょっとだけいじって、それほど簡単ではなさそうなので諦めた だれかいい解決方法あるのなら教えて下さい もしくは、Rangeから、直接Foldableのメソッドを呼ぶことが、(Scalaの言語仕様とか現在のScalazのアーキテクチャが原因で?)不可能な理由を

  • AndroidのfindViewByIdで型推論(?)させて、ちょっとだけ記述量減らす方法 - xuwei-k's blog

    Javaの話です。 Androidだと、普通xmlで画面を定義して、そのインスタンス生成するためにfindViewByIdというメソッドを使う。かなり多く使う。xmlで定義する時点で、型は(android.view.Viewのなんらかのサブクラスで)決まっているわけですが、それが必ず android.view.View 型で返ってくる。で、これ使いにくいし、ちょっと工夫すれば微妙に記述量減らせるんじゃないか?っていう話。 たとえば、大体のサンプルを見ても*1 Button myButton = (Button) findViewById(R.id.my_button); とか ListView view = (ListView)findViewById(R.id.my_view); となって なんで、型を2回も書かないといけないの?Scalaだったら、Typed Resources といっ

    AndroidのfindViewByIdで型推論(?)させて、ちょっとだけ記述量減らす方法 - xuwei-k's blog
    terazzo
    terazzo 2012/03/16
    Typed Resources気になる。Type Providersみたいなもの?
  • Scalaz の作者の人達が書いた "Functional Programming in Scala" という本がでるらしい - xuwei-k's blog

    こちら↓もちろん英語ですよ。 http://manning.com/bjarnason/ そして I bought URL "Functional Programming in Scala" 2012-03-10 02:41:04 via web @xuwei_k me too! 40% off with coupon code 2012-03-10 07:16:41 via Echofon to @xuwei_k coupon code !?(゚д゚lll) 2012-03-10 12:38:42 via Twitter for iPhone ↑こんな感じで定価で買った馬鹿な人もいるみたいですが @runarorama also, might be worth letting people know that they can get a %40 discount through mar

    Scalaz の作者の人達が書いた "Functional Programming in Scala" という本がでるらしい - xuwei-k's blog
    terazzo
    terazzo 2012/03/12
    3/15以降にm840って入れればいいのか。
  • Scala PartialFunction can be Monoid ? - xuwei-k's blog

    特に追加で書くことないけど、 togetterだけにあるよりも、blogに貼っておいたほうが後々自分にとっても便利かもしれないし、SEO 的にあれで他の人からも見つけやすいはずなので。とても勉強になった。ちゃんと質問すれば、ライブラリの作者自身とか、言語の作者自身が丁寧に回答してくれてとても有用なので、みんなもっとStackOverflow活用しましょう!

    Scala PartialFunction can be Monoid ? - xuwei-k's blog
  • Lift Json の case class への変換がとても便利な件 - xuwei-k's blog

    こういうJsonが *1 こんな case class 定義しておくだけで いい感じに勝手に変換されます。 Lift JsonのREADME 日語訳 に書いてあるんですが、あまり知られてないというかそこまで多く使われてない気がしたので改めて書いてみました。内部的には、このあたり https://github.com/lift/framework/blob/2.4-release/core/json/src/main/scala/net/liftweb/json/ScalaSig.scala https://github.com/lift/framework/blob/2.4-release/core/json/src/main/scala/net/liftweb/json/Meta.scala で、 ScalaSignature っていう、コンパイラがアノテーションとしてつけているメタ情

    Lift Json の case class への変換がとても便利な件 - xuwei-k's blog
    terazzo
    terazzo 2012/01/04
    ScalaSigParserの出力ってどこかにドキュメント化されてるのかなあ……
  • iPadでソースコードを読むためのサイトをつくった - xuwei-k's blog

    追記: ダブルクォート3つで囲ったStringのリテラルの部分が崩れるので、最近Scalaだけこれを使って処理変えました https://github.com/xuwei-k/syntax-highlight/commit/51a775c4bbbefb2af9a018dd2d667ad4986444c1 https://github.com/xuwei-k/syntax-highlight/commit/9744d0cef4d155a39f22e435b5eeaae11a3f62c7 しかし、今度はちょっとコメントの部分の解釈がおかしい(´・ω・`) このあたりがあやしいような 最初に作ったの、もう1年以上前なんですけどね(´・ω・`)ずっと一人で地味に便利に使っていましたが、なんとなく今更紹介をかいてみるという http://syntax-highlight.appspot.com/ h

    iPadでソースコードを読むためのサイトをつくった - xuwei-k's blog
    terazzo
    terazzo 2011/12/18
  • Scala における meta programming について - xuwei-k's blog

    これは Scala Advent Calendar 2011の3日目です Scalaには、メタプロの機能がありません。そもそもメタプロの定義が曖昧というか、存在しないと思いますが「メタプロとは何か?」を語っても長くなるので略。 そのあたり詳しくないですが、例を挙げるとC++templateでできることが、Scalaではできないなどあります。 たまに自分が欲しくなるものとしては可変長型引数ですかね。 そのあたりの話は、@cpp_akira さんのこのスライドがわかりやすいです。 で、現在Scalaにメタプロの機能がないのに、なんでこんなことを書いているかというと、2.10以降でmacroが入る話があるからです。 http://scalamacros.org/ https://github.com/scalamacros/kepler がしかし、これはまだかなり製作途中で使える状態ではないよ

    terazzo
    terazzo 2011/12/16
    .fmファイルはfmppっていうFreeMarkerベースのプリプロセッサっぽい。ScalaQueryでも使われてた。 http://fmpp.sourceforge.net/
  • Scala の Phantom Type について - xuwei-k's blog

    これ ドワンゴScala勉強会で学んだ、ハイブリッド言語「Scala」の魅力 twitterでつぶやいたけど コメント書くとこない?オリジナルのPhantomTypeと微妙に違う気がするんだががががが。これもありといえばありかもしれんが、どうなんだろう? #Scala URL ドワンゴScala勉強会で学んだ、ハイブリッド言語「Scala」の魅力 2011-12-06 21:40:11 via web さっきのあれによりPhantomTypeについて考えなおしているが、やっぱりなんかモヤモヤするなぁ。フィールド全部変えるならべつにPhantomTypeじゃなくて違うClassのインスタンスでいいし、implicit使わないんだったらScala以外でもできるしだいぶ違うものな気が 2011-12-06 22:46:15 via web そして、例が謎ぃので Java で書いてみたら書けちゃっ

    Scala の Phantom Type について - xuwei-k's blog
  • ドワンゴ行ってきた - xuwei-k's blog

    とくに書くことないけど、資料貼付けのために http://xuwei-k.github.com/slides/dwango-scala1/ http://live.nicovideo.jp/watch/lv71111927 なんか発表内容とか構成とかもっと考えたほうがいいですね、すいません。もう最近よくわかりません 2011 11 25 追記: 動画が公開されたらしい http://www.nicovideo.jp/watch/1322200991 http://www.nicovideo.jp/watch/1322202372 http://www.nicovideo.jp/watch/1322202996 http://www.nicovideo.jp/watch/1322227700

    ドワンゴ行ってきた - xuwei-k's blog
  • Scala2.10 以降に入るかもしれない機能まとめ - xuwei-k's blog

    このblog書いてる時点の最新の安定版は、2.9.1ですが、version2.9系が出て以降、結構時間も経過し、最近はいろいろと動きがあるので、とりあえず自分が収集できた範囲(というか、自分がある程度興味を持った変更)をまとめておきます。現在trunkに入ってても、いろんな事情があってまだまだどのようなかたちで入るのかは変更になる可能性もあるので、あたりまえですが情報の正当性とか保証しませんよ、まぁ参考程度に。更に新しい情報が入ってきた場合、気が向いたら追記するかもしれないし、しないかもしれない。頻繁に更新するかもしれないので、そうした場合埋まらないように、blogの記事の日付は当分の間未来にしておきます。それと以下の列挙の順は特に意味ありません。あと、「入るかもしれない機能」ってなってますが、逆に「レガシーなので削除されるもの」もメモしてあります https://github.com/s

    Scala2.10 以降に入るかもしれない機能まとめ - xuwei-k's blog
  • Scala 2.10 に dependent method types というのが入るらしいよ - xuwei-k's blog

    gistに書いたものを、ほとんど書き写すだけの簡単なお仕事(`・ω・´) 以下が最新版をゴニョゴニョしてみた結果。(このblog書いている時点の最新の安定版である) 2.9.1で同じことやろうとすると def withFoo(foo: Foo): foo.Bar = foo.f という部分がコンパイル通らないはず。fooという 引数 の抽象型であるBarに依存した型だからっていう感じ? 追記: 例としての自分の書いたコードが適切なのかどうかあやしい気がしてきたがががが(´・ω・`) StackOverflowの解説がかなり詳しいのでちゃんと知りたい人はそっち読んで!(ぉぃ 以下参考URL StackOverflowの解説がなぜかやたら詳しい このコミットらしい gist上でのちょっとした議論 そして、こんなこと言ってたら #Scala で新しく入る予定の depend type がなんとな

    Scala 2.10 に dependent method types というのが入るらしいよ - xuwei-k's blog