일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 주키퍼
- 스칼라
- CORDA
- 엔터프라이즈 블록체인
- 하이퍼레저 패브릭
- Play2
- Golang
- 파이썬 머신러닝
- 파이썬 데이터분석
- 스칼라 강좌
- 파이썬 강좌
- 파이썬 동시성
- Actor
- 블록체인
- hyperledger fabric
- 플레이프레임워크
- Hyperledger fabric gossip protocol
- 스위프트
- Play2 로 웹 개발
- play2 강좌
- 하이브리드앱
- 스칼라 동시성
- akka 강좌
- 그라파나
- play 강좌
- 이더리움
- Adapter 패턴
- Akka
- 파이썬
- 안드로이드 웹뷰
- Today
- Total
HAMA 블로그
소프웨어 엔니지어링에서 가장 교조주의적인 덕목은 인터페이스를 위시한 유연성,확장성이 아닐까 싶다. (추가적으로 제네릭과 폴리모피즘의 환상 떡칠은 가독성을 최악으로 치닫게 만든다.) 그게 절실히 필요한 코드는 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 를 사용하면? 땡~~~!쓰레드로 경쟁으로 인해서 솔루션이 원하는대로 동작하지 않는다면 모두 쓰레드 세이프하지 않는 것이다. 좁은 의미로 단어를 사용하다 보면 그게 넓은 범위로 벌어진다고 착각하기 쉽다. 객체 및 내부 변수를 불변으로 만들어 두었다고 쓰레드세이프하다고 착각하지말자. 그것을 어떻게 사용하냐에 따라서 쓰레드들은 당신이 원하는대로 동작하지 않은 결과를 내놓을 것이다.
임백준님이 번역하신 "7가지 동시성 모델" 책에는 순차 프로세스 통신 (CSP) 이라는 내용이 있는데 Golang 에서 구현한 모델을 클로저언어로 래핑한 라이브러리를 이용해서 설명하고 있다. 역시 책에 나오는 내용 "미래는 불변이다", "미래는 분산이다" 라는 구절이 있다. 분산을 잘하기 위한 도우미로 "메세지 전달" 이 매우 중요한데, "액터" 나 "CSP" 처럼 메세지 전달을 기반으로 삼는 테크닉이 점점 더 중요한 역할을 하리라 예측하고 있다. 이번 번역 글 (중간 중간 동시성에 대한 개인적인 견해가 많이 들어가 있다) 에서는 Golang에서의 CSP 에 대해서 살펴본다. 학술적인 내용이 아니며 아주 기초적인 내용을 짧게 담고 있는데, 액터에 대해서 알고 있는 분이라면 통신하는 객체 자체(액터) 보다..
https://bl.ocks.org 싸이트를 보면 굉장히 다양한 d3.js 예제들이 있으니 참고 하십시요. 이 글은 글 마지막의 레퍼런스를 요약한 것이니, 구체적인 설명은 링크를 따라가서 읽어보십시요. 아래 내용은 윈도우8에서 테스팅하고 확인 하였습니다. (패키지 버전을 확인하세요. 버전이 다르면 본 문서의 명령어가 안먹힐 수도 있습니다.)+ 개발환경 세팅 자바스크립트 개발 환경 세팅 Node 설치 (npm 이용 및 브라우저 없이 실행하기 위함) VS CODE 편집기 설치 (편집기는 아무거나~) 1. 프로젝트 폴더 생성 mkdir d3v4-with-ts cd d3v4-with-ts 2. 폴더 내에서 package.json 생성 (패키지 및 프로젝트 관리를 위함) npm init -y3. 패키지 받아오기 ..
[요약번역] https://fabianlee.org/2017/05/21/golang-running-a-go-binary-as-a-systemd-service-on-ubuntu-16-04/1. SleepService 예제 만들기 package mainimport ( "time" "log" "flag" "math/rand" "os" "os/signal" //"syscall")func main() { // load command line arguments name := flag.String("name","world","name to print") flag.Parse() log.Printf("Starting sleepservice for %s",*name) // setup signal catching sigs ..
Golang 에서의 Map, Filter 등 Python 으로 코딩하다가 Golang 으로 바꿔보면 가장 크게 불편한점은 List Comprehension 의 부재라고 느꼈다. 나도 Newbie라 Golang 에서는 어떻게 리스트 조작을 할까 궁금해서 자료들을 찾아서 정리 해보았다. 기본 가장 기본적인것은 Python 이나 Scala등에서 제공하는 synthetic sugar 마법을 사용하지 않고, Golang 답게 직접 해당 함수를 만들어서 호출하는 것이다. 아래 예를 보자.func Map(vs []int, f func(int) int) []int { vsm := make([]int, len(vs)) for i, v := range vs { vsm[i] = f(v) } return vsm } func ..
산업용 전기요금 상식 1. 사용량을 기준으로 "갑/을" 로 나뉜다. 갑은 300kw 미만 / 을은 300kw 이상 사용자 2. 전압을 기준으로 "을" 에서 다시 고압A/B/C 로 나뉜다.고압 A (3,300V~66,000V), 고압 B (154,000V 이상), 고압 C(345,000V 이상)로 나뉜다. 3. 사용패턴에 따라서 "고압X" 에서 선택1,2,3 으로 나뉜다.전기요금은 기본요금 * 사용량 요금의 합산인데, 선택1,2,3은 기본요금을 적게 가져 갈 것이냐, 사용량 요금을 적게 가져 갈 것이냐의 구분 문제이다. 예를들어 우리 공장은 한달에 몇일 사용하지 않는다면, 기본요금을 낮게 가져가고 사용량 요금을 높게 가져가는게 유리하다. 반대로 한달 내내 계속 사용한다면 기본요금을 높게 가져가고 사용량 요..