play2.0 の anorm の問題点まとめ
実装の詳細が公開されている
Useful 等の公開すべきでないものが公開されている。 型が書かれていない public なメンバも多く、API に対する意識が低い。
不要なものが公開されている
Pk, Id, NoAssigned 等は Magic のために導入された型だが、
Useful 等の公開すべきでないものが公開されている。 型が書かれていない public なメンバも多く、API に対する意識が低い。
Pk, Id, NoAssigned 等は Magic のために導入された型だが、
イベント開催サイトみたいなの使うまでもないのでこれを fork する感じで感じで。 | |
sbt について語りながら sbt を食べる会です。四人くらい集まったら fork で予定日出し合いましょう。 | |
moc aka @lyrical_logical |
new Runnable() { | |
@Override | |
public void run() { | |
// some processes... | |
} | |
}; |
import scala.language.higherKinds | |
sealed trait Base[F[_]] { // all compilation is succeeded if F' kind is * | |
def a: String | |
} | |
case class Ctor[F[_]](a: String) extends Base[F] | |
abstract class Etor[F[_]] extends Base[F] { | |
def f(q: Base[F]): String = q match { | |
case Ctor(fa) => fa // NP | |
case Etor(fa) => fa // error! why??? |
walk :: Var -> Subst -> Var | |
walk var subst = go var subst | |
where go :: Var -> List Var -> Maybe Var -> Var | |
go (Unbound k) stack acc = | |
case (subst k, acc) of | |
(Nothing, Nothing) -> Unbound k | |
(Nothing, Just u) -> Cons u v | |
(Just v, _) -> go v stack acc | |
go (Cons h t) stack acc = go h (t :: stack) acc | |
go v [] Nothing = v |
138c138 | |
< enum class E sealed, subclasses: List(class Cons, trait L, object SNil) | |
--- | |
> enum class E sealed, subclasses: List(class Cons, object SNil) | |
140d139 | |
< checkableType(E.L): E.L | |
142,143c141 |
// ==UserScript== | |
// @name twitter-autocompletion-disabler | |
// @namespace lyrical.logical | |
// @description disable autocompletion on twitter | |
// @match https://twitter.com/ | |
// ==/UserScript== | |
(function() { | |
var form = document.getElementsByClassName("tweet-form")[0]; | |
var menu = form.getElementsByClassName("dropdown-menu typeahead")[0]; |
import scala.annotation.tailrec | |
import scala.language.higherKinds | |
sealed trait Freer[F[_], A] { | |
def map[B](f: A => B): Freer[F, B] = flatMap(a => Pure(f(a))) | |
def flatMap[B](f: A => Freer[F, B]): Freer[F, B] = | |
this match { | |
case Pure(a) => f(a) | |
case Impure(fa, g) => Impure(fa, g :+ f) | |
} |
import scala.language.higherKinds | |
import scala.language.existentials | |
sealed trait Freer[F[_], A] { | |
def map[B](f: A => B): Freer[F, B] = flatMap(a => Pure(f(a))) | |
def flatMap[B](f: A => Freer[F, B]): Freer[F, B] = | |
this match { | |
case Pure(a) => f(a) | |
case Impure(fa, g) => Impure(fa, g :+ f) | |
} |
以下の考察は openjdk のコードを元にしているため、oracle だとまた違うかもしれない。
map0 でめでたく native からヒープをがさっと取ってこれた場合、色々あった末に DirectBuffer を implements した DirectByteBuffer とやらが具象クラスとなる。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/nio/DirectByteBuffer.java DirectBuffer は自身の確保したリソースを開放する役割を持つオブジェクト Cleaner を返すメソッドを持っており、clean の処理は Unmapper に委譲される。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/nio/ch/FileChannelImpl.java#FileChannelImpl.Unmapper Cleaner は「オブジェクトが phantom reachable になった際に後処理を行いたい場合に利用するクラス」であり、ぶっちゃけ普通は出番ない。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/misc/Cleaner.java
ここから推測。