일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Hyperledger fabric gossip protocol
- 스칼라
- 스칼라 동시성
- 안드로이드 웹뷰
- CORDA
- 주키퍼
- Adapter 패턴
- Actor
- 파이썬
- 그라파나
- 하이브리드앱
- play2 강좌
- 파이썬 머신러닝
- 엔터프라이즈 블록체인
- 블록체인
- 파이썬 동시성
- Play2 로 웹 개발
- 이더리움
- Play2
- Golang
- 스칼라 강좌
- akka 강좌
- 파이썬 강좌
- 스위프트
- play 강좌
- 하이퍼레저 패브릭
- hyperledger fabric
- 플레이프레임워크
- Akka
- 파이썬 데이터분석
- Today
- Total
목록2018/03 (9)
HAMA 블로그
(A,B) -> B 보다 A -> (B->B) 가 더 좋다? 사실 명령형 파라다임에 적폐인 나로써는, 함수형 파라다임의 체득이란 살아 생전 가능할까 싶다. ㅎㅎ 특히 함수형 파라다임을 체득(머리로 이해가 아닌) 하기 위해서 제일 먼저 만나는 관문을 "커링"이라고 보는데...왜 저 짓을 하냐? 저게 진짜 더 좋긴해? 를 넘어서서 저렇게 하는게 너무 당연하게 느껴지는 퀀텀점프의 경험을 하고 싶다.* 이 글에서는 부분적용함수와의 차이는 무시한다. 부분적용함수도 커링이라고 친다.함수형 언어와 함수형 프로그래밍이 다르듯이 파이썬이나 자바스크립트로도 충분히 커링이 가능하다.// 파이썬 def curry(func, var): y = var def f(x): return func(x, y) return f커링을 사용한..
다음 글은 Why Sum Types Matter in Haskell 글을 번역한 글임을 밝힙니다.Why Sum Types Matter in Haskell이 글에서는 Haskell의 Algebraic Data Types을 자세히 살펴볼 것 입니다. Algebraic Data Types를 이해하는 열쇠는 기존 타입을 결합하여 새로운 타입을 생성하는 방법을 이해하는 것입니다. 고맙게도 두 가지 방법 밖에 없는데요. 다른 타입을 'and'과 결합하여 만든 타입을 Product types라고합니다. 'or'을 사용하여 결합 된 타입을 Sum types이라고합니다. 대부분의 프로그래밍 언어는 Product 타입을 사용합니다. Sum types은 개념적으로 단순하지만 모델링 데이터의 경우 매우 강력한 도구임을 입증합..
C / C++ : 극한의 상황에서도 돌아가야해. 메모리관리,쓰레드관리,리소스관리를 마이크로 컨트롤하여 솔루션을 만드는게 진정한 개발자라고 할 수 있지 자바 : C++ 은 반쪽짜리 객체지향에다가 오류의 대부분이 포인터 관련인 어처구니 없는 적폐의 언어. 보통 사람의 능력으로는 항상 문제가 발생 할 소지가 많은 언어. 이제 누구나 개발하는 시대이지. 기본적인 것은 플랫폼에서 해주고, 대규모어플리케이션도 편하면서도 강력하게 만들게 해주는 생산성 높은 자바. 대세의 언어가 된데에는 이유가 있는법 파이썬: 얘들아 쉽고 빠르게 개발하는 시대가 왔어. 니들이 진짜 만들고 싶은게 뭐야? 그거에 집중하라고. 초딩들처럼 유치하게 로우레벨 가지고 투닥대지말고~ 하스켈,스칼라: C++/JAVA는 그냥 그저그런 지적능력을 가진..
* 이 글은 누군가를 이해 시키기 위한 글이 아닙니다. 블록체인을 처음 만난 개발자가 비트코인의 핵심이라 할 수 있는 거래(검증)에 대한 공부/삽질을 하며 겪는 여정으로써 굉장히 불친절한 글이라는 것을 말씀드립니다. 그냥 제 삽질일기~ 그림 7-5에서는 단지 32바이트 크기의 해시 4개의 길이(총 128바이트)인 머클 경로를 생성함으로써 거래 K 가 블록 내에 포함되어 있다는 사실을 노드가 입증할 수 있다는 것을 보여준다. 머클패스는 HL .......(그림에서 파랑) 등등 이렇게 4개의 해시로 구성되어 있다. 인증 경로로 제공된 이 4개의 해시를 가지고 어떤 노드라도 4개의 해쉬에 대응하는 해시쌍인 H .... (그림에서 점선) 와 머클트리 루트를 계산함으로써 HK가 머클 루트에 포함되어 있다는 사실을..
소프웨어 엔니지어링에서 가장 교조주의적인 덕목은 인터페이스를 위시한 유연성,확장성이 아닐까 싶다. (추가적으로 제네릭과 폴리모피즘의 환상 떡칠은 가독성을 최악으로 치닫게 만든다.) 그게 절실히 필요한 코드는 5%나 될까 싶은데 주로 공용 라이브러리겠지.나머지 95%의 코드를 만드는 사람들이 모든 책에 적혀져있는 "확장가능하게 만들어야한다" 를 맹목적으로 받아드리고 있는거 같기도 하며,교조적인 덕목에 따라 혹시 자신은 유연하게 만들지 않았는지에 대한 죄책감이 남아 있을지도 모르겠다. 물론 그 정도 고민을 하는 사람이라면 그것만으로도 훌륭하다고 볼 수 있겠다. 까놓고 말해보자. 자신이 만든 클래스가 100개 있다면, 그 중에 1년 후에 형제 클래스를 만들어야 했던 경우가 얼마나 되었는지. 내 경우는 하나 밖..
자바 쓰레드풀의 상태관리 쓰레드풀의 상태를 나타내는 멤버변수인 ctl 에 대해 (코딩 스킬적으로) 살펴보자. * 코딩 스킬적으로 하나의 int 변수 안에 길이가 다른 다양한 특성을 담아둘때 이런 기법을 이용하시면 된다. private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); // RUNNING 상태와 쓰레드 개수1로 초기화 private static final int COUNT_BITS = Integer.SIZE - 3; private static final int CAPACITY = (1
소프트웨어 엔지니어링에서 풀의 종류는 다양한데요.쓰레드풀,메모리풀,캐쉬풀,커넥션풀,객체풀 (자바에서 객체풀은 사용을 지양합니다. 메모리를 할당하는 작업이 C/C++보다 빠름) 등등이 있습니다. "풀"어서 말하면 미리 만들어두고 돌려막기로 사용하자 라고 볼 수 있는데요. 미리 만들어 두는 방식 / 쓰레드가 태스크를 처리하는 방식에 따라서 다양한 풀의 구현체들이 있을 수 있습니다. 이 글에서는 openJDK8 기준의 자바에서 구현된 newFixedThreadPool 를 해부해보도록 하겠습니다. 쓰레드풀은 동일하고 서로 독립적인 다수의 작업을 실행 할 때 가장 효과적이다.실행 시간이 오래 걸리는 작업과 금방 끝나는 작업을 섞어서 실행하도록 하면 풀의 크기가 굉장히 크지 않은 한 작업 실행을 방해하는 것과 비슷..
잡설 개인적으로 리소스 해제와 관련해서 가장 먼저 떠오르는것은 C++의 포인터이다. 리소스를 해제하지 않아서 생기는 문제 또는 해제한 리소스를 사용하려고 해서 생기는 문제는 대규모 솔루션에서는 가장 골치 아픈 걱정거리가 되곤 하는데 스택트레이스에 잡히지 않는 머나먼 곳에서 해당 포인터를 조작한 것들이기에 전체 코드를 샅샅히 살피지 않으면 풀기 힘든 문제로 남기도 한다. (널포인터 문제와 레이스 컨디션 문제는 모든 솔루션에서 가장 대다수의 버그로 리포팅되며, 다른 폭탄을 야기하며, 해결하기 어려운 2가지 문제) C++은 이를 해결하고자 다음과 같은 스마트 포인터들을 제공하지만 스마트포인터 종류 분석 제대로 잘 활용하는 것도 문제이다.자바(VM류)가 떠오르면서 리소스 관리로 부터 어느정도는 해방시켜 주었다...
쓰레스세이프하다? 란 과연 무엇인가? 모든것이 불변이면? 동기화객체로 공유변수가 감싸져 있으면? TLS,STM,Actor,CSP 를 사용하면? 땡~~~!쓰레드로 경쟁으로 인해서 솔루션이 원하는대로 동작하지 않는다면 모두 쓰레드 세이프하지 않는 것이다. 좁은 의미로 단어를 사용하다 보면 그게 넓은 범위로 벌어진다고 착각하기 쉽다. 객체 및 내부 변수를 불변으로 만들어 두었다고 쓰레드세이프하다고 착각하지말자. 그것을 어떻게 사용하냐에 따라서 쓰레드들은 당신이 원하는대로 동작하지 않은 결과를 내놓을 것이다.