技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Scala 勉強会 in 本郷

Scala Meetup 145th in HONGO - Scala Meetup Group in Tokyo | Doorkeeper

ここに出てみた。

中身は座談会みたいなもので、「話したい人が話せ、質問でもok、後は勝手に解決なりなんなりする」というノリ。
面白いのは、それで会話が止まらないところだ。

もっともそんなノリの為か、初心者殺しもいいところではあるのだが…。
ある程度分かってると、知的好奇心を徹底的にくすぐる場所ではある。

以下盛り上がった話題。

pack200

Jar をすげー圧縮できる。
ただし、実行環境を選ぶので、Applet とかそういうのでないときつい。

理論 https://docs.oracle.com/javase/jp/6/technotes/guides/deployment/deployment-guide/pack200.html

どうすればHelloWorldのバイナリサイズを削れるか

  1. まずクラス名 1 文字で実装
  2. Javap で余計なコードを探す
  3. バイナリを調べてみる
  4. どうもクラス名デフォルトに Code を指定した後、別名与えてる臭いので、クラス名を Code に
  5. Constant pool をいじってバイナリを削る
  6. 親クラスをすり替える
  7. いらんコンストラクタを消す
  8. System.out じゃなくて PrintStream 使ってみる

ここまで来て 266 byte まで落ちるとのこと。

昔の Java なら更に行けたようだ。70 byte

http://www2.sys-con.com/itsg/virtualcd/java/archives/0707/richards/index.html

fold の融合則

キーワード融合定理

http://qtamaki.hatenablog.com/entry/2015/03/01/124206

scalaz

http://eed3si9n.com/learning-scalaz/ja/day0.html

jar サイズはちまちま削ってる。scala 2.12 で勝手に小さくなる…筈。

functional scala library

scalaz がちょっと大きすぎるので、自分で使うやつをピックアップして作ってみたというものらしい

https://github.com/halcat0x15a/kits

scala 勉強会なのに、Java の class ファイル圧縮技術で盛り上がったという意味不な結果に。
こんなコアなの何人ついて行けたんだ…w