Programming

Simple is Beautiful(Go 의 문서 작성 규칙)

https://golang.org/pkg 와 https://golang.org/src 는 golang 에 대한 모든 것을 찾아볼 수 있는 보물창고같은 곳이다.주석을 통해 자동으로 작성된 문서에서 패키지를 개발한 개발자의 의도를 읽을 수 있을 뿐만 아니라 소스 코드까지 아주 쉽게 찾아볼 수 있다. golang...

Go – String 을 어떻게 빠르게 이어붙일까?(String Concatenation)

무언가를 구현할 때 반드시 한가지 방법만 있는 경우는 거의 없다.string 을 이어붙이는 방법도 마찬가지다.가장 일반적으로 사용하는 4~5 가지 방법을 중심으로 사용방법과 성능에 대해 잠깐 생각해보는 시간을 가져보자. + 연산자를 이용하는 방법 bytes.Buffer 의 WriteString() 함수를...

기억하자! Go 로 파일쓰는 방법 5 가지(Write with Go)

go 를 이용하여 buffer(byte slice)에 있는 데이터를 파일로 쓰는 방법에 대해 알아본다.파일에 데이터를 쓴다는 목적만 만족시키려면 아래의 5 가지 방법 어느 것을 사용해도 되겠다.하지만, 성능과 안정성을 고려한 쓰기는 또 다른 문제다.자신이 개발하려는 프로그램이 어떤 성격의...

Linked List 에서 중간 노드 최대한 빨리 찾기

문제 설명 간단하고 재밌는 문제다.“단일 LinkedList 에서 중간 노드를 가장 효율적으로 찾아라.”아주 간단한 아이디어만 떠올리면 되는데 처음에는 잘 떠오르지 않았던 문제다. 아래 구현된 코드의 방법보다 빠른 알고리즘이 있나? (없을 듯…) 조건– tail 노드를 직접 접근하는...

기억해야할 Python 기능 정리(2)

python 기능
__doc__ 속성과 help 함수
이터레이터(iterator)
제너레이터(generator)
enumerate()
조건식의 참/거짓 판단과 단축 평가
range() – 수열의 생성
리스트 내장
zip() 과 map() 함수

기억해야할 Python 기능 정리(1)

Python 의 기능
얕은 복사와 깊은 복사
함수도 객체다. Python 은 모든 것이 객체다
Built-in 영역의 이름 및 함수들 확인
함수의 가변 인자 리스트
정의되지 않은 인자 처리하기
람다 함수
Python 에서의 재귀 호출을 통한 하노이 탑 구현
의외로 유용한 pass 구문

사용자 Semaphore 의 자동 삭제 – RemoveIPC

Linux 에서 user 가 생성한 semaphore 를 system 에서 삭제해버리는 현상이 있다.나도 모르게 내 허락도 안받고 과감하게 날려버린다. 이것들이… 부르르…(Redhat 뿐 아니라 데스크탑 환경(CenOS7)에서도 재현된다.)예전에 고객 앞에서 DBMS 검증 테스트를 진행하는 와중에 이러한 현상이 발생해서...

한방 Git 정리

Git 을 사용하면 좋은 점? Git 은 기존의 SVN 이나 CVS 와는 달리 분산환경을 고려한 버전관리 시스템이라는 것을 기억해야 합니다.그래서, SVN 의 경우 저장소는 모두가 사용할 수 있는 공용 원격저장소 하나 밖에 없었지만, Git 은...

Memory Barrier

asm volatile(“”:::”memory”) compiler-gcc.h 파일을 보면 barrier()는 다음과 같이 구현되어 있습니다. #define barrier() asm volatile(“”: : :”memory”) 특별히 어떤 명령어를 수행하는 것은 아닙니다. 보통 리눅스 커널에서는 barrier() 매크로를 이용하는데, 이것이 위와 같이 asm volatile(“”:::”memory”)로 정의되어 있습니다....

volatile 키워드의 역할

volatile 키워드의 역할을 정의해보면 다음과 같습니다. C/C++가 정의하는 volatile 키워드는 이 값이 언제든지 변할 수 있기에 컴파일러는 최적화하지 말 것을 지시한다. 최적화하지 말 것을 지시한다 ? 이 말의 의미가 중요한 것 같습니다.코드를 컴파일할 때 옵션으로...