Skip to content

Instantly share code, notes, and snippets.

View gakuzzzz's full-sized avatar

Manabu Nakamura gakuzzzz

View GitHub Profile
@gakuzzzz
gakuzzzz / sbt-coursier.md
Last active June 27, 2019 03:23
あなたの sbt update を爆速にする sbt-coursier の紹介

あなたの sbt update を爆速にする sbt-coursier の紹介

この記事は Scala Advent Calendar 2016(Adventar) 10日目の記事です。

今は 12/10 の 625時です。年明けなんて無かった。いいね?

さてさて、sbt の依存jarのダウンロードが遅い、というのは割とよく言われる事であります。

で、この原因の一旦に、sbtが Apache Ivy を使っている、という点があります。

@gakuzzzz
gakuzzzz / summit.md
Created October 10, 2016 00:36
Scala関西Summitで発表してきたよ

Scala関西Summitで発表してきたよ

2016/10/08 大阪産業創造館にてScala関西Summitが開催されました。

弊社、ゴールドスポンサーとして協賛もしてましたが、スポンサーセッションとは別に普通にCFPにも応募しました。

そんな訳で「Implicit 再入門」というタイトルで登壇してきました。

テーマの動機

@gakuzzzz
gakuzzzz / 0_README.md
Created July 11, 2016 08:09
Java8 Stream API の Collector を合成する

Java8 の Stream API は Stream#collect メソッドを使って様々な集約を行う事ができます。

java.util.stream.Collectors で様々な Collector が提供されていますが、Collectors.collectingAndThen のような合成が中心で同時に二つの集約を行うといった事が簡単にできません。

そのため、ラムダ禁止について本気出して考えてみた - 9つのパターンで見るStream API の「7. streamの外に結果を残す(禁止度:A)」で書かれている様な思わず禁止したくなっちゃう様なコードを書かざるを得ません。

// 引用: ラムダ禁止について本気出して考えてみた
//       7. streamの外に結果を残す(禁止度:A)
void averageAndSum1(List list) {
@gakuzzzz
gakuzzzz / flow.md
Last active July 1, 2016 06:09
flow sensitive types と副作用の密結合
val a: String? = ...
val b: String? = ...

val r = if (a != null && b != null) {
    a + b
} 
r?.let { print(it) } // else 無いと if式の代入がコンパイル通らない
@gakuzzzz
gakuzzzz / Era.java
Last active May 28, 2016 07:35 — forked from nakamura-to/Era.java
Doma external embeddable
@Entity
public class Era {
@Id
public Integer id;
public String name;
public Interval interval;
}
@gakuzzzz
gakuzzzz / 0_readme.md
Last active September 25, 2023 06:40
MapStreamSyntax

Java8 の Stream で Map を操作するサポート作った

MapStreamSyntax というクラスで基本的に static import して使います。

具体例を見てもらえばどの辺が便利なのか伝わるでしょうか?

Case.1

// JDK標準APIのみ
public Map<Integer, String> Case1_Before(final Map<Integer, String> map) {
@gakuzzzz
gakuzzzz / scalamatsuri_2016.md
Created February 12, 2016 18:02
Scala奉りました

Scala奉りました

2016年1月30,31日に ScalaMatsuri 2016 を開催いたしました。

ご来場いただいた皆様をはじめ、スピーカー各位、スポンサー各位、ボランティア含む全運営スタッフ、会場やその他様々な企業&団体のご協力のおかげで、盛況に実施することができました。

あらためてお礼申し上げます。

そんなこんなで個人的な振り返りです。

@gakuzzzz
gakuzzzz / index.md
Created January 19, 2016 20:23
Generics の Abstract Type Member によるエミュレートの implicit parameter
scala> :paste
// Entering paste mode (ctrl-D to finish)

trait MyOrdering {
  type E
  def compare(a: E, b: E): Int
}
object MyOrdering {
@gakuzzzz
gakuzzzz / index.md
Created January 19, 2016 20:00
trait extends class と self type annotation の違い
scala> class A
defined class A

scala> trait X extends A
defined trait X

scala> trait Y { self: A => }
defined trait Y
@gakuzzzz
gakuzzzz / hoge.md
Last active January 6, 2016 09:45
Visitor の factory
public interface TreeVisitor<T> {
  T visitLeaf();
  T visitNode(Node node);
}

こういうVisitorなら以下の様なファクトリがあると便利かなと思ったけど