아이단은 어디갔을까

순간 순간이 소중한 목적지

Golang 결제검증서버 구현 - Validator 디자인

Intro 결제 와 관련된 정보는 고객 입장에서도 회사 입장에서도 매우 중요한 정보이다. 타사(구글, 페이스북, 샘성)의 결제모듈을 활용한다면 그 절차 사이사이의 검증과 기록은 결제검증서버가 해야할 필수적인 부분- 이번에 페이스북으로 글로벌 게임서버 런칭을 진행하면서 페이스북 결제를 활용해 돈방석에 앉아보기로 팀방향이 결정되었고(제발~) 우리 서버팀은 그 돈방석의 영수증 역할을 할 결제검증서버를 구현하게되었다. 이전에 불확실성을 줄이기위해 방명록을 간단하게 만들어보면서 orm프레임워크, mariadb 등을 확인했었고 그 연장선에서 이번 검증서버 프로젝트는 xorm과 web framework는 gin을 활용하기로 했다. Point 결제 쪽에 자신감이 넘치는 팀장님이 명확한 로직을 제시해주었기때문에 코딩은 어렵지 않았다. Continue reading

Golang 동시성을 활용한 알고리즘 문제풀이 - 1

파이프라인 패턴을 활용해서 알고리즘을 풀어보기로 했다. 알고리즘 문제: Google Code Jam 2016 qualification round A 궁금했던 점 동시성 프로그래밍으로 기존 알고리즘 모범답안보다 얼마나 퍼포먼스를 낼 수 있을까 많은 프로그래밍대회가 싱글쓰레드기반으로 동작해 정답이 순차적으로 나와야한다. 하지만 멀티쓰레드 프로그래밍은 Case #1번이 아니라 Case #5번이 먼저 풀릴 수 있다. (사실 구글 코드잼의 가장 큰 난적은 문제가 영어라는 점이다) 문제요약 Bleatrix Trotter 이라는 여자분은 불면증에 걸린거 같다. 이 여자분은 잠에 골아떨어지기위해 특별한 전략이 있다. Continue reading

Golang Sort 정렬

2018-08-14 Code Golang Aidan.bae
golang에서는 정렬 (sort) 라이브러리를 제공하고 있습니다. 다음은 내장 함수들을 활용한 예제코드입니다: func main() { str := []string{"c", "a", "b"} sort.Strings(str) fmt.Println("Strings: ", str) ints := []int{70, 2, 4} sort.Ints(ints) fmt.Println("Ints: ", ints) s := sort.IntsAreSorted(ints) fmt.Println("Sorted: ", s) } 결과: Strings: [a b c] Ints: [2 4 70] Sorted: true Process finished with exit code 0 sort.Sort() 정렬을 꼭 이런식으로 하고싶은게 아닐 수 있습니다. 커스터마이징을 할 수 있도록 sort는 Sort라는 메소드를 가지고있습니다. Continue reading

Golang Design Pattern - Pipeline

2018-08-12 Code Golang Aidan.bae
저번 시간에 채널 중심의 생각전환으로 하나의 작업 파이프를 만드는 방법을 배웠습니다. 이번엔 여러가지 작업 파이프들을 이어서 하나의 작업 파이프라인을 구축해봅시다. 혹시 이전 채널 중심 프로그래밍이라는 포스트를 놓치셨다면 보고오시길 추천드립니다. Why 작업 파이프라인을 구축해서 고루틴과 채널 활용을 극대화합니다. What 어떤 작업 파이프라인을 구성해볼까요? 이해하기 쉬운 설명을 위해 쉬운 작업들 위주로 예제를 구성해보았습니다. 0에서 99까지 랜덤한 수를 특정 횟수만큼 만들어내는 task 해당 랜덤한 수를 출력하는 task 숫자들을 제곱하는 task 마지막으로 그 제곱된 수들을 모두 더하는 task 총 4개의 작업이 있습니다. Continue reading

Golang 채널 중심 프로그래밍

2018-08-11 Code Golang Aidan.bae
“사실 모든 학문은 연결되어있다. 사회학도 역사도 프로그래밍도” Intro 사회학에서 산업혁명 하면 떠오르는 키워드는 Division of labour이다. 즉, 한국어로 분업이다. 일을 처리하는데 분업에 따른 전문성 증가, 기계와 같은 파이프라인 등은 우리 사회에 큰 영향을 미쳤다. 이전에 없던 엄청난 생산량(공장 시스템)에 사회는 급성장한다. 빠른 성장만큼 노동문제와 같은 각종 사회문제가 터져나왔고 그런 생산량이 전투력에 악용되어 제2차 세계대전에서는 수많은 인류의 죽음을 우린 목격해야했다. 프로그래밍에서도 cpu가 늘고 분업과 관련된 동시성 프로그래밍들이 발전하면서 lock기법이 발전했고 race condition, deadlock등 다양한 문제들이 속출했다. Continue reading
Older posts Newer posts