Skip to content

Instantly share code, notes, and snippets.

Kazunori Otani katzchang

Block or report user

Report or block katzchang

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View callback.php
<?php
class Curry
{
protected $callback, $bind;
protected function __construct($callback, Array $bind)
{
if(!is_callable($callback)) throw new InvalidArgumentException('$callback must be callable');
list($this->callback, $this->bind) = func_get_args();
}
View callback.php
<?php
class Curry
{
protected $callback, $bind;
protected function __construct($callback, Array $bind)
{
if(!is_callable($callback)) throw new InvalidArgumentException('$callback must be callable');
list($this->callback, $this->bind) = func_get_args();
}
@katzchang
katzchang / gist:4126092
Created Nov 21, 2012
rebaseはコミットグラフを綺麗にするためじゃなくてffマージをするためにあるのであった
View gist:4126092

ということで、ffマージはなぜ優れているかというと、マージ操作の際に機械的な構成変更が一切行われず、ブランチの移動が起こるのみなので、マージ後のブランチは、 必ず あなたが入念にテストしただろうマージしたブランチと全く同じ構成であることが保証されるわけである。これが大きい。

衝突検知をくぐり抜けて機械的マージが構成を壊してしまう例は他をご参照いただくとして、no-ffマージの場合にそういう面倒に対応する手段として次のようなものがあると思うが、いずれも確実性でffマージには劣る:

  • マージ前にバックマージを行い、マージ時の際をなくする
  • バックマージからマージまでの間に誰かのコミットが入るかもしれないので、たまに衝突したときのことも考えないとね
  • マージ後のテストで問題を発見し、修正をコミットする
  • 修正って場合によっては時間がかかる仕事でそのあいだmasterは不安定だし、マージ権限を持つ人が少数だとしたら負担でかいよね

ということで、どちらもffマージの恩恵を考えると、なかなか悩ましい。

View HelloCarry.java
public class HelloCarry {
static <E1, E2, E3> Func<E1, Func<E2, E3>> carry(final Func2<E1, E2, E3> f2) {
return new Func<E1, Func<E2,E3>>() {
@Override
public Func<E2, E3> apply(final E1 e1) {
return new Func<E2, E3>() {
@Override
public E3 apply(E2 e2) {
return f2.apply(e1, e2);
}};
@katzchang
katzchang / GameOfLifeTest.scala
Created Dec 9, 2012
ライフゲーム実装例
View GameOfLifeTest.scala
package coderetreat
import org.scalatest.Assertions
import org.junit.Test
class GameOfLifeSuite extends Assertions {
@Test def game_of_life() {
assert(new Board(3, 4, Set()).toString === "000,000,000,000")
assert(new Board(3, 4, Set((0, 0), (0, 1), (1, 1))).toString === "110,010,000,000")
@katzchang
katzchang / Makefile
Last active Oct 13, 2015
gauche unitを書いた
View Makefile
GOSH=/usr/local/bin/gosh
L=./gu.scm
test:
$(GOSH) -l $(L) ./*test.scm
View ビスキュイ・スフレ.md

材料

  • 薄力粉 56g
  • 強力粉 20g
  • バター 56g
  • 卵液 117g
  • 卵黄 95g
  • バニラ原液 1g
  • 牛乳 200ml
  • 卵白 186g
View 2013-01-21.scm
(define (deriv exp var)
(cond ((number? exp) 0)
((variable? exp)
(if (same-variable? exp var) 1 0))
((sum? exp)
(make-sum (deriv (addend exp) var)
(deriv (augend exp) var)))
((product? exp)
(make-sum
(make-product (multiplier exp)
@katzchang
katzchang / .gitignore
Last active Dec 11, 2015
2013-01-28 SICP読書会 #gauche #sicp
@katzchang
katzchang / sexp_encode.php
Last active Dec 12, 2015
PHP配列をS式へ変換する
View sexp_encode.php
<?php
/*
* $ php sexp_encode.php | gosh -E"begin (write (read)) (write (read))" -E"exit"
*/
// TODO: symbolエスケープ?
function sexp_str_escape($str) {
return addcslashes($str, "\"\\\n\r\f\t\0");
}
You can’t perform that action at this time.