Skip to content

Instantly share code, notes, and snippets.

seraph seraphr

Block or report user

Report or block seraphr

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 A.scala
// 間違ってたので書換
// 自己参照する型引数を持つtraitを定義
trait A[_E, _A <: A[_A]]{
def m: _A = this.asInstanceOf[_A]
}
// mixin
class B[_E] extends A[_E, B[_E]]
@seraphr
seraphr / genDef.scala
Created Jul 1, 2012
ScalaGenerics...
View genDef.scala
class Container[_X]
def con[_Elem, _Con <: Container[_Elem]](a: _Con): _Con = a
// inferred type arguments [Nothing,Container[String]] do not conform to method con's type parameter bounds [_Elem,_Con <: Container[_Elem]]
con(new Container[String])
View cont.scala
// 本当にやりたいこと
class Container[_X]
trait Get[_Elem, _Con <: Container[_Elem]]{
def get(a: _Con): _Elem
}
def con[_Elem, _Con <: Container[_Elem]](a: _Con)(implicit getter: Get[_Elem, _Con]): _Elem = getter.get(a)
@seraphr
seraphr / aggregate側fluentdログ
Last active Dec 11, 2015
fluentdで起こっている問題
View aggregate側fluentdログ
起動時
2013-01-21 07:04:12 +0900: starting fluentd-0.10.30
1/22 追記
aggregate側のすべてのマシンのhostsファイルに関連するアドレスをすべて記入しましたが、この問題は依然発生しています。
問題が起きた時のログ
このログの出力後、全てのsource(access-log以外も含む)から、このfluentdへのデータ転送が止まります(止まらない場合もあります)。
また、同時にsourceのうち1台から、全てのaggregateへの送信が停止します。
この状態になった後、td-agentをstopすると、td-agentの(恐らく)子プロセスが残った状態となります。
View Applicative.scala
trait Applicative[F[_]] {
def fmap[A, B](f: A => B)(aFunctor: F[A]): F[B]
def point[A](a: => A): F[A]
def apply[A, B](f: F[A => B])(aFunctor: F[A]): F[B]
}
object Applicative {
implicit def appToUtil[A, B, F[_]: Applicative](f: F[A => B]) = new ApplyUtil(f)
implicit def funcToUtil[A, B, F[_]: Applicative](f: A => B) = new PointApplyUtil(f)
View IteratorUtil.scala
object IteratorUtil {
def merge[_T](aIterators: Iterator[_T]*)(implicit aOrdering: Ordering[_T]): Iterator[_T] = {
def nextOrNone(aIterator: Iterator[_T]): Option[_T] = if (aIterator.hasNext) Some(aIterator.next) else None
implicit object ElementOrdering extends Ordering[(Int, Option[_T], Iterator[_T])] {
override def compare(x: (Int, Option[_T], Iterator[_T]), y: (Int, Option[_T], Iterator[_T])) = (x, y) match {
case ((_, None, _), (_, None, _)) => 0
case ((_, None, _), (_, _, _)) => 1
case ((_, _, _), (_, None, _)) => -1
case ((_, Some(tLeft), _), (_, Some(tRight), _)) => aOrdering.compare(tLeft, tRight)
}
@seraphr
seraphr / TryOption.scala
Created Aug 28, 2013
ScalaでTryとOption
View TryOption.scala
import scala.util.Try
case class Data(aId: String)
def get(aId: String): Try[Option[Data]] = Try{ aId match {
case "hoge" | "fuga" => Some(Data(aId))
case "piyo" => None
case _ => throw new IllegalArgumentException("cannot get")
}}
@seraphr
seraphr / ForCollect.scala
Last active Dec 21, 2015
forとパターンマッチ あとはcollect
View ForCollect.scala
case class Data(opt: Option[String])
val tList = List(Data(None), Data(Some("hoge")), Data(None), Data(Some("fuga")), Data(Some("piyo")))
for(Data(Some(str)) <- tList) yield str
tList.collect {
case Data(Some(str)) => str
}
View Collect.scala
case class Data(opt: Option[String], value: Int)
def d(o: String, v: Int) = Data(Some(o), v)
def n(v: Int) = Data(None, v)
val tList = List(d("a", 1), d("b", 2), n(10), d("c", 3), n(0))
tList.collect {
case Data(Some(o), v) => v
}
@seraphr
seraphr / CanCompile.scala
Created Sep 26, 2013
Scalaのimplicitなものをimportした時のコンパイラの挙動が謎い。 仕様確認してないけど、仕様通りなの…? CompileErrorになるコードを2.8 / 2.9 で試してもコンパイルエラーだった。
View CanCompile.scala
// Implicitを上に書くとコンパイルできる
object Implicits {
implicit val v = 10
}
object ImplicitTest {
import Implicits._
def main(args: Array[String]): Unit = {
You can’t perform that action at this time.