아이단은 어디갔을까

순간 순간이 소중한 목적지

TCP 서버 구현과 패킷분석

2020-01-19 Code Golang Aidan.bae
신기술이 많이 쏟아지는 시대이다. 빠르게 배우는 것도 좋지만 협업을 위해서는 서로의 sync를 맞추기위한 agreement가 존재해야하고 많은 기술들이 tcp를 근간으로 발전했기 때문에 tcp에 대한 지식은 agreement로 중요한 역할을 할 수 있다. 요즘은 quic이라고해서 udp기반의 서비스도 새로운 활로를 트는듯하지만 여러분이 사용하는 대부분의 서비스는 신뢰성 프로토콜인 tcp위에서 동작한다. 가장 흔한 http도 대부분이 tcp위에서 사용된다. tcp를 로우 머신기준으로 엄청깊게 연구하는… sk_buff, 운영체제 이벤트큐 단위까지 까서 보는 이런글 (https://d2.naver.com/helloworld/47667) 보다 자세하진 않겠지만 내 나름의 방법으로 눈으로 확인해보는 시간을 가지고자한다. Continue reading

공유 메모리를 활용한 프로세스간 통신 with C

2019-08-14 Code DevOps Aidan.bae
어쩌다보니 c 프로그래밍을 깊게 해야될 일이 생겼습니다. 대학교때 너무 재미없어서 이쪽은 절대 안한다고 했었는데… 컴퓨터를 알아갈수록 로우한 프로그래밍 지식이 필요해지는 순간들이 자주 찾아오네요. 쓰레드간 통신이 아닌 멀티 프로세스 프로그래밍에서 프로세스간 통신을 위해 OS단에서 제공하는 ipc라는 녀석이 있습니다. 리눅스에서 제공하는 ipc(inter process communication)는 아래 3가지입니다. 공유 메모리 (Shared Memory) 세마포어 (Semaphore) 메세지 큐 (Message Queue) 그 중 첫번째 공유메모리는 아직도 자주 활용되는 녀석입니다. 공유메모리는 단어 뜻에서 알 수 있듯이 하나의 프로세스에서가 아니라 여러 프로세스가 함께 사용하는 메모리를 말합니다. Continue reading

[dotGo 2019] golang gc 튜닝

2019-04-15 Code Golang Aidan.bae
페이스북을 기술정보를 얻는 용도로 사용하는데 평소 추종하던 홍혜종님이 공유해준 발표자료이다. go tune your memory라는 이름으로 dotgo 2019에서 진행된 발표 (Go 1.12 기준으로 설명) gc언어를 사용한다면, garbage collector가 호출되는 것에 대해 알 필요가있다. 왜냐하면 gc가 호출되는 순간, 해당 프로그램은 잠깐동안의 lack상태가 되기 때문이다. 찰나의 순간이지만 게임처럼 퍼포먼스가 중요한 클라이언트, 서버는 gc호출을 튜닝해야한다. 개발자는 그러므로 gc의 잦은 호출을 막을 수 있도록 크게 두가지 행위를 할 수 있다. 첫번째는 garbage 자체가 생기지 않도록 하는 것. Continue reading

Golang Fan-Out Fan-In 디자인

2019-01-16 Code Golang Aidan.bae
회사일을 바쁘다보니 이것저것 신경쓸게 많아 정리해야지정리해야지 하고 너무 늦게 글을 쓰는 감이 없지 않네요. 이어서 해보도록 하겠습니다. 이전 시간에 Pipeline 패턴을 알아봤는데 이를 좀더 활용해 Fan out Fan in 패턴을 알아보고자합니다. golang 멀티플렉싱 디자인패턴 중 하나인 Fan out Fan In은 큰 건물의 회전문을 생각하면서 이해하면 편합니다. prerequisites chan에 대한 이해를 토대로 pipe함수를 작성할 수 있다. Pipeline 디자인패턴을 숙지했다. Basic Fan의 사전적 의미는 선풍기, 환풍기, 회전문 같은 것입니다. 회전문처럼 생각했습니다. Continue reading

함께 자라기 - 애자일로 가는 길

2019-01-13 Book Code Aidan.bae
입사 후 처음으로 책을 선물받았다. 선물을 준 동료(cody)는 퇴근길에 종종 나를 태워줬기때문에 개발 또는 인생에 대해 의견을 나눌 일이 많았는데 생각이 많이 달랐지만 서로 경청하고 자신의 의견을 확실히 이야기해주기에 즐거운 대화가 많았다. 어린왕자에 대해 이야기할 때 나에게 책선물을 주시겠다며 이 책을 소개해주었다. 개발조직을 이끄는 리더라면 꼭 보았으면 한다. 좋은 영감을 준다. 책의 주요 주제별로 내생각을 정리해보았다. 중요하다고 생각하는 것이 중요하지 않다. 대다수의 조직에서 직원을 뽑는 데 중요하다고 생각하는 요소가 많은 경우 별로 중요하지 않고, 중요하지 않다고 생각하는 요소가 중요한 경우가 많음. Continue reading

golang과 자료구조 힙(heap)

2018-11-17 Code Golang Aidan.bae
마크다운문서가 테마때문에 잘 적용되지 않아 수정할 예정입니다. 다음번 업데이트에 테마를 고칠예정이니 불편해도 양해부탁드려요 자료구조 힙 그래프의 트리 구조중 하나로 ‘우선순위 큐(priority queue)‘를 구현할 때 사용됩니다. 우선순위 큐는 데이터 구조의 하나로서 데이터를 자유롭게 추가할 수 있습니다. 반면 데이터를 추출할 때는 최솟값부터 순서대로 선택됩니다. 추가는 자유롭게하고 추출할 때는 작은 값부터 꺼내는 것이 우선순위 큐입니다. 특징 힙을 표현하는 트리 구조에서는 각 정점을 ‘노드'라고 부릅니다. 자식 노드의 숫자는 반드시 부모의 숫자보다 커야한다는 규칙이 있습니다. Continue reading

Golang - EmptyStruct 빈구조체

2018-10-18 Code Golang Aidan.bae
done <- struct{}{} 고랭관련 깃을 돌아다니면서 훌륭한 레파지토리(Docker, Gin..)들을 내부를 구경하다보면 위처럼 빈 구조체를 채널에 던지는 경우를 종종 볼 수 있다. struct{}{} the empty struct 나는 이게 {}{} 이 리터럴 모양이 뭔가 지저분해보여서 간단한 종료 시그널을 보내는 채널은 대부분 bool, int 채널을 사용했었다. bool 값보내는 거 보다 값이 적은가?.. 나는 구조체라고 생각해서 더 크다고만 생각했는데 찾아보니 놀랍게도 struct{}{}는 사이즈가 0이다(기본기가 부족한 나만 놀란거일수도 있다;) 사이즈를 확인할 수 있는 내장 메소드가 있을까 찾아보니 Continue reading
Older posts