2014-01-01から1年間の記事一覧

Scalaz勉強会を開催しました

資料一覧 toggetterまとめ ニコ生

Scalaでクラス図を表示するsbt plugin作った

コードのベースは、もう4年くらい前 に書いたやつ持ってきただけhttps://github.com/xuwei-k/sbt-class-diagram

HaskellのGADTsすごいなーと思ったのと、それをscalaz.Leibniz使って頑張る話

まず、下記の10行程度のScalaコードをご覧ください sealed abstract class Foo[A, B] final case class X[A]() extends Foo[A, A] final case class Y[A, B](a: A, b: B) extends Foo[A, B] object Main { def hoge[F[_, _], A, B, C](foo: Foo[A, B], bar: …

Scalaでのドメイン駆動設計

追記 ドメイン駆動では、べつに下位層に上位層がアクセスしてはいけない、というような決まりはないらしい、とj5ik2oさんから教えてもらいました @sifue @xuwei_k DDDの文脈でいうと上位層は下位層のすべてにアクセスできます。DDD P66, P70みてもそのような…

Scalaz勉強会をやります

http://connpass.com/event/7261/

ScalazのTagged Typeに関する重要な変更

https://github.com/scalaz/scalaz/pull/693tagged typeとは、Haskellのnewtypeみたいなやつです。

akkaのそれぞれのモジュールの依存関係図

細かく文章で解説書こうかと思ったけれど、面倒になってきたし、図を貼ったほうがわかりやすいので、貼っておくhttp://xuwei-k.github.io/akka-2.3.3-dependency-graph.svg

今更akkaについてまとめてみる(その1)

色々あって、今まで避けてきた(?)akkaについて、触らないといけない感じになってるので、個人的に整理するためにまとめてみます。もともとそれほど詳しくないので、とくに面白い新しい情報とかほぼ書かないと思う*1ので、そういうの知りたい人は公式ドキュメ…

macro annotationを使って、operational monadのためのメソッドをコンパニオンオブジェクトに自動生成

できた気がするhttps://github.com/xuwei-k/twitterz/commit/b1d8201 https://github.com/xuwei-k/macro-annotation-sample/commit/47896fc1c0

Free MonadとInject typeclassでtwitter4jをラップしてみた

https://github.com/xuwei-k/twitterz

twitterのobjectsize計測するやつ

メモ alias objectsize='screpl com.twitter.common%objectsize%0.0.10 "twttr at http://maven.twttr.com/"'https://github.com/twitter/commons/blob/20fabe1bb0/src/java/com/twitter/common/objectsize/ObjectSizeCalculator.javaべつにscrepl経由で使わ…

CoproductとInjectを使ったFree Monadの合成とExtensible Effects

Scaladays2014の写真がtwitter上で流れてきて「あーまたrunaroramaさん、Free Monadの話してるのかー」と思ったら、たしかにFree Monadの話もしてたみたいですが、それの発展形(?)的な感じで、Coproductや、Injectという型クラス(?)の話をしていたようです。…

giter8に、maven centralにある最新版をデフォルト値に設定できる機能を入れたい

pull reqしたけど、数日反応がないのだけど、まぁぜひ入って欲しいので、簡単に解説書いておこう。同意してくれる人がいたら、pull reqの欄に+1とかコメントしてくれるとありがたいhttps://github.com/n8han/giter8/pull/136/files

JavaでFreeモナドを表現するためのテクニックやexistential type(存在型)の話

久しぶりにJavaで遊んで、JavaでFree Monad書いた際に得られた知見を記しておきます。https://github.com/xuwei-k/free-monad-java筆者は、Javaの言語仕様や、型理論に関して、人並みかもしれないけど(?)別に専門家ではないので、あまり厳密なこと求められて…

Swiftのおもしろ仕様と、Scalaの特殊な(?)構文

以下の、Appleが最近発表したSwiftという言語の、面白い(?)仕様が話題になってますが、 This playground should illustrate why the immutability behavior of #Swift is *terrible*: URL2014-06-10 19:31:56 via Twitter for Mac 大事なことは全部MLが教え…

JavaでFree Monad

書いたhttps://github.com/xuwei-k/free-monad-java

sbtの "~ compile" がファイル名変更や移動を検知してくれない件

sbt

sbtにissue作るかpull reqを出したいけれど 「誰が見ても明らかなバグで修正方法も明らか」 ではなく*1、少し議論の余地がありそうだけれど、そのあたりを英語でうまく説明する自信がないので、まずは日本語で書きだしてみるシリーズ(たぶん後でissue報告かp…

Scala2.11でEval

これ書いてる2014年6月7日現在、twitterのutil-evalのScala2.11対応版が出てないみたいですが(もう出たようですね)、Scala2.10から以下のように10行20行程度書くだけで簡単にevalできるようになってるので、twitterのutil-evalわざわざ使わなくてもいいと思…

typesafe activatorを使わないplayframework2.3の始め方

tototoshiさんの、これPlay 2.3 がリリースされたので変更点と試し方を説明しますの便乗(?)的な感じで、なぜか自分もチュートリアルを書いてみます。普通に書いたら意味ないので、少しだけ変わった方法を書いてみます。

giter8-pluginとtravis-ciで、複数versionのScalaのテストをする

giter8-pluginのversion0.6.4時点の情報です。giter8-pluginは、giter8で作ったテンプレート自体のテストを書くためのsbt-pluginです。

playframework2のwebsocketのチャットのサンプルをScalajsで書き換えてみた。

これが元のJavaScriptファイル https://github.com/playframework/playframework/blob/2.3.0-RC1/samples/scala/websocket-chat/app/views/chatRoom.scala.jsこっちがScalajsで書き直したもの https://github.com/xuwei-k/play-with-scalajs-example/blob/e1…

Playframework2.3はScala2.11に対応します

このpull reqがmergeされたので https://github.com/playframework/playframework/pull/2764 よほどのことがない限り、もう99%、Scala2.11対応するのは確定ですね。では、Scala2.10は切り捨てるのか?というと、おそらくそうではなく、play2.3ではScala2.11…

sbtのscripted testを書いてpull req送りつけるおじさんだよー(sbt-lock編)

こんにちは、なぜか足を捻挫して、ゴールデンウィーク9連休なのにほぼ家に引きこもってるマンです。足はこんな状態です(グロ注意) http://f.hatena.ne.jp/xuwei/20140501181556さて、そんなことはどうでもよくで、sbt-lockというsbt pluginのテストを書いた…

skinny-frameworkはgoogle app engineでは動きません

skinny-frameworkが依存してる、scalatra2.2.x系が、servlet3.0以上のみサポート これ書いてる現在、なんとgoogle app engineはservlet2.5までしかサポートしてない!?*1 https://code.google.com/p/googleappengine/issues/detail?id=3091 servlet3.0がで…

sbtでサブプロジェクト毎にクロスビルドするScalaのversionが異なる場合のバッドノウハウ

タイトル長くなりすぎるからやめましたが、本当に話したいこと、話すことは、 「サブプロジェクト毎にクロスビルドするScalaのversionが異なる場合」 だけではなく 「さらにその中にsbt pluginがあってscripted testもしたい場合」 です・・・つらい・・・。…

Scalaのfor式を拡張する案

https://groups.google.com/d/topic/scala-internals/C3WPyRWM718/discussion https://docs.google.com/document/d/1eb3Xx22SEWqm6h27qnp9l-Ea-FagM5rn8tuyfpSq72o

scalaj-httpをforkした

httpzという名前の、Scalaz使った純粋関数型なhttpクライアントライブラリ作ってるのは、何回も書いてますがScalaでoperational monad使ってgithubのAPI client書いてリリースした httpzというAPIクライアントライブラリを作るためのライブラリを作ったそれ…

Scala2.11.0のコンパイル速度は速くなったのか

travis-ci上でそれぞれscalaz-coreとspecs2-commonをそれぞれScala2.10.4と2.11.0で7回コンパイル繰り返した結果が以下

argonautのmacro書いた。そしたら添削してもらった

以前書いたこれコンパイル時に、 String を lift json に変換する macro https://github.com/xuwei-k/json_macro

Scala2.11.0対応で色々と自分のライブラリをリリースしたりpull reqしてる(scalaバージョン上げ手動botさん)

それぞれ、sonatype経由でmaven centralにpublishしてます。もうScala2.11.0でも使えるようにcross buildしてます。2.11.0対応以外にも、最近は地味に(ここに書いた以外にも)自分のライブラリ細かくリリースして、tagつけてpublishしてるので、もし良かった…