Skip to content

Instantly share code, notes, and snippets.

View nakamura-to's full-sized avatar

Toshihiro Nakamura nakamura-to

View GitHub Profile
@nakamura-to
nakamura-to / Era.java
Created May 27, 2016 21:19
Doma external embeddable
@Entity
public class Era {
@Id
public Integer id;
public String name;
public Interval interval;
}
@nakamura-to
nakamura-to / EmbeddableSupport.kt
Last active May 25, 2016 12:53
Embeddable support in Doma (Kotlin)
@Embeddable
data class Address(val city: String, val street: String)
@Entity(immutable = true)
data class Person(@Id val id: Int, val name: String, val address: Address)
@nakamura-to
nakamura-to / Address.java
Last active May 25, 2016 12:49
Embeddable support in Doma
@Embeddable
public class Address {
private final String city;
private final String street;
public Address(String city, String street) {
this.city = city;
this.street = street;
}
public String getCity() {
return city;
@nakamura-to
nakamura-to / Common.java
Last active December 24, 2015 23:39
EntityListener Sample with Doma 1.35.0
package tutorial.entity;
import org.seasar.doma.Entity;
@Entity(listener = CommonListener.class)
public abstract class Common {
}
@nakamura-to
nakamura-to / doma_immutable_entity.md
Last active December 22, 2015 11:19
Doma 1.34.0に入ったイミュータブルなエンティティのサポートについて
@nakamura-to
nakamura-to / ChildEntity.java
Last active December 21, 2015 15:19
@OriginalStatesに関するDoma-1.33.0での改善予定
@Entity
public class ChildEntity extends ParentEntity {
Integer ccc;
}
@nakamura-to
nakamura-to / ruby_block_acceptable_method.js
Created August 8, 2013 12:51
Rubyのブロック付きメソッド相当をECMA Script 6で。「初めてのRuby」の「7.3.3 ブロック付きメソッドの定義」を参考に。node v0.11.4で--harmony-generatorsオプションをつけて実行。
/*
* ブロック付きメソッドのファクトリ
*/
function ruby(fn) {
return run;
function run(block) {
var block_given = typeof block === 'function';
var each = function * (array) {
for (var i = 0, len = array.length ; i < len; i++) {
@nakamura-to
nakamura-to / ioc.js
Last active December 20, 2015 18:09
ECMA Script 6のgeneratorを使ってIoC (Inversion of Control)。node v0.11.4で--harmony-generatorsオプションをつけて実行。
/*
* IoC (Inversion o Control) Computation Expression
*/
function ioc(fn) {
assert(isGeneratorFunction(fn), 'The argument `fn` must be a GeneratorFunction.');
run.mflow_generatorFunction = fn;
return run;
@nakamura-to
nakamura-to / maybe_monad_lows.js
Created July 31, 2013 13:34
JavaScriptにおいてはObject型が成功と失敗を同時に表す型。 つまり、値がnullまたはundefinedならば失敗を表し、それ以外なら成功を表す。 その前提でMaybeのモナド則を書くと。。。
var maybe = {
'return': function (value) {
return value;
},
'bind': function (value, f) {
if (value == null) return null;
return f(value);
}
};
@nakamura-to
nakamura-to / douglas_maybe.js
Created July 31, 2013 12:59
JavaScriptでMaybeモナド - Douglas Crockfordの実装とECMA Script 6のgeneratorを使った実装の比較
// Douglas CrockfordのMaybeモナド
//
// http://www.youtube.com/watch?v=b0EF0VTs9Dc
// 上記のyoutubeより(時間にして21:50, 26:50, 27:15のコード)
function MONAD(modifier) {
var prototype = Object.create(null);
return function unit(value) {
var monad = Object.create(prototype);
monad.bind = function (func, args) {