일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 주키퍼
- 플레이프레임워크
- 하이브리드앱
- hyperledger fabric
- 파이썬 동시성
- play 강좌
- Actor
- 스위프트
- Akka
- 엔터프라이즈 블록체인
- 그라파나
- 파이썬 데이터분석
- 파이썬 머신러닝
- 스칼라 강좌
- Golang
- Adapter 패턴
- 스칼라 동시성
- CORDA
- play2 강좌
- Hyperledger fabric gossip protocol
- 블록체인
- 파이썬
- 안드로이드 웹뷰
- 파이썬 강좌
- 스칼라
- Play2 로 웹 개발
- 하이퍼레저 패브릭
- 이더리움
- akka 강좌
- Play2
- Today
- Total
HAMA 블로그
1. 빠른 시간안에 온보딩을 할 수 있게 해준다. 2. 모든 참여자가 전체 상황에 대한 높은 가시성을 갖게 된다. 3. AML & KYC 프로세스를 표준적으로 도입할 수 있다. 4. 참여자들의 행위에 대한 투명성을 가져왔다. 5. 데이터 가용성을 높여 준다. 6. 대사,감사과정이 투명하다. (기능을 제공한다) 7. 신뢰비용을 낮춰 준다. 8. 제품의 유통과정과 제조사에 대한 출처에 대한 확인을 빠르게 할 수 있다. 9. 내부토큰을 활용하여 안정적으로 금융 거래의 서브시스템으로 활용 할 수 있다. (추후 CDBC와의 연계 고려) 10. 외부 시스템 및 데이터와의 인터그레이션이 원할 할 수 있다. 11. 특정 트랜잭션은 특정 조직(개인)들만 볼 수 있도록 조작 할 수 있다. 12. 일정한 트랜잭션 성능을 보..
map이라는 추상화... reduce라는 추상화.. iterator라는 추상화.. future/promise라는 추상화... async/await라는 추상화.. journal 이라는 추상화.. expression이라는 추상화.. vistor / Facade라는 추상화.. Traits라는 추상화.. match 라는 추상화.. executePlan이라는 추상화.. InvocationFilter라는 추상화.. Try 라는 추상화.. Composition이라는 추상화.. Channel이라는 추상화.. 딱 봐도 저건 이것들을 보편화/간략화 한것이다라고 실체를 바로 판단 가능한 추상화가 있고, 대략적인 느낌 하에 세부 설명을 듣거나 해부해 봐야만, 실체에 대해 판단 가능한 추상화가 있다. 피카소의 황소그림 추상화(..
소프트웨어 엔지니어링에서 풀의 종류는 다양한데요. 쓰레드풀,메모리풀,캐쉬풀,커넥션풀,객체풀 등등이 있습니다. "풀"어서 말하면 미리 만들어두고 돌려막기로 사용하자 라고 볼 수 있는데요. 미리 만들어 두는 방식 / 쓰레드가 태스크를 처리하는 방식/ 동기,비동기에 따라서 다양한 풀의 구현체들이 있을 수 있습니다. 이 글에서는 Kotlin으로 객체풀을 만드는 간단한 예제를 보여 줍니다. 1. 리스트를 이용한 고정크기 동기 객체풀 import java.lang.IllegalStateException import java.util.concurrent.TimeUnit import java.util.concurrent.locks.ReentrantLock import kotlin.concurrent.withLock i..
Coroutine // THREAD 방식 fun main() { val startTime = System.currentTimeMillis() val counter = AtomicInteger(0) val numberOfCoroutines = 100_00 val jobs = List(numberOfCoroutines) { thread(start = true) { Thread.sleep(100L) counter.incrementAndGet() } } jobs.forEach { it.join() } val timeElaspsed = System.currentTimeMillis() - startTime println(timeElaspsed) } // Coroutine 방식 import kotlinx.corout..
class Tuple(vararg elements: Any) { val elements: Array init { this.elements = elements as Array } fun get(index: Int): Any { return elements[index] } fun size(): Int { return elements.size } override fun hashCode(): Int { return Arrays.deepHashCode(elements) } override fun equals(o: Any?): Boolean { if (this === o) return true if (o == null || javaClass != o.javaClass) return false val other = ..
상황은 다음과 같다. 어느 온라인서점에는 멤버별로 금,은,동의 등급이 있으며, 각 멤버에게 등급별로 베네핏을 주려고 하며, 베네핏의 종류는 A,B,C가 있다. 멤버는 각 베네핏을 모두 합친 만큼의 베네핏을 받을 수 있다. 원래 베네핏에 대한 로직은 더 복잡해 질 수 있지만, 예제에서는 10,20,30점으로 굉장히 단순화 하였다. code1) enum class GRADE { BRONZE, SILVER, GOLD } class Member(val grade: GRADE) { fun calcBenefit(): Int { var total = 0 when(grade) { GRADE.BRONZE -> { // discount benefit total += 10 // coupon benefit total += 2..
컨베이어 공장에서 자동차가 완성 될 때 단계별로 조금씩 완성되어 가는 모습을 볼 수 있다. 이런 비슷한 경우는 소프트웨어 개발에서도 흔하며, 그 결과로 관련 패턴들도 매우 다양하게 있지다. Gof의 Chain of Responsibility패턴은 모든 과정을 거치는게 아니라, 처리 할 수 있으면 처리하고, 못하면 다음 녀석에게 넘기는 "의도"를 말한다. 그리고 이 글의 제목이기도 한 Intercepting Filter의 경우는 (웹개발자 라면 친숙한 HTTP가 호출되어서 최종 컨트롤러 까지 갔다가[inbound], 다시 HTTP리턴을 해주는[outbound] 모습을 상상해 보자) 단계별로 모든 처리를 진행해서 타겟까지 호출되고, 타겟에서 최종 처리된 결과를 역순의 단계로 다시 돌아오는 모형에서 중간 중간..
Dynamic Proxy & Reflection 1 class Tuple3 (val name:String, val age: Int, val rate: Double){ fun size(): Int { return 3 } fun getValue(index: Int): Any?{ return when(index) { 0 -> name 1 -> age 2 -> rate else -> null } } } class RemoteService{ fun action(req: Any?): Tuple3 { //do something return Tuple3("tom", 1, 1.2) } } /// data class Row(val name: String, val age: Int, val rate: Double) inter..
import jdk.nashorn.internal.ir.Block import java.util.concurrent.locks.ReentrantLock import kotlin.concurrent.thread import kotlin.concurrent.withLock class Future { lateinit var result: String var isDone = false val lock = ReentrantLock() val condition = lock.newCondition() fun get() : String { if(isDone) return result // (1) lock.withLock { condition.await() } return result } fun set(result: S..