Skip to content

Instantly share code, notes, and snippets.

View j5ik2o's full-sized avatar

Junichi Kato j5ik2o

View GitHub Profile
@j5ik2o
j5ik2o / IdWorker.scala
Last active August 29, 2015 14:12
IdWorker
trait IdWorker {
val identifer: IdWorkerId
val idConfig: IdConfig
def createIdValue: IdValue
val idValueWriter: IdValueWriter
case class IdWorkerImpl(idConfig: IdConfig, dataCenterId: DataCenterId, identifier: IdWorkerId)
extends IdWorker {
require(dataCenterId.value < idConfig.maxDataCenterId)
require(identifier.value < idConfig.maxIdWorkerId)
@volatile
private[this] var sequence: Long = 0
@volatile
trait IdValue extends Ordered[IdValue] {
val timestamp: Long
val dataCenterId: DataCenterId
val idWorkerId: IdWorkerId
val sequence: Long
val dataCenterId = DataCenterId(1)
val idWorkerId = IdWorkerId(1)
val idWorker = IdWorker(idConfig, dataCenterId, idWorkerId)
// ID生成
val idValue = idWorker.createIdValue
// Long型に変換
println(idValue.toLong)
trait IdConfig {
val timestampBits: Int
val dataCenterIdBits: Int
val workerIdBits: Int
val sequenceBits: Int
public final class Color {
private int red;
private int green;
private int blue;
public int getRed() { return red; }
public int getGreen() { return green; }
public int getBlue() { return blue; }
public Color(int red, int green, int blue) {
public static boolean isNameHasUpperCase(String name) {
boolean result = false;
for(int i = 0; i < name.length(); i++) {
if (Character.isUpperCase(name.charAt(i))) {
result = true;
break;
}
}
return result;
}
@j5ik2o
j5ik2o / 1_OldDomain.md
Last active August 29, 2015 14:15
メンタルモデルの違いを合わしたもの
{ // ルームの作成
  val room = Room(
    id = idWorker.createId,
    title = "[PJ] Falcon",
    description = Some("開発プロジェクト"),
    roomType = RoomType.Group
  )
  val result: Try[Room] = RoomRepository.store(room)
}
package org.example
import scala.io.Source
object Hello extends App {
def find_(keyword: String, root: java.io.File): Seq[java.io.File] = {
import sys.process._
(s"grep -l -r -s -I '$keyword' $root" lines_!) map {
new java.io.File(_)
}
package scala_sample
import org.apache.commons.lang3.StringUtils
object JavaApiSample extends App {
{
println(StringUtils.capitalize("personName"))
// Scalaのみで可能。こっちのがシンプル