'섣부른 최적화는 만악의 근원'이라는 말이 있습니다. 하지만 섣부르지 않다면 어떨까요? 코드의 복잡도를 크게 증가시키지 않으면서 성능을 높이는 방법을 소개합니다.
서비스에 적절한 데이터스토어를 선택하기 위한 필수 지식인 CAP 정리의 의미를 설명하고 증명합니다.
golang의 delete 연산이 map의 메모리 사용량을 줄이지 못한다는 것을 코드로 검증하고 OOM을 방지할 수 있는 대안을 제시합니다.
취업후에 교육비를 지불하게 해주겠다는 소위 '소득공유 후불제'를 도입한 부트캠프가 늘어나고 있습니다. 과연 홍보 문구처럼 좋은 제도일까요? 후불제 부트캠프의 어두운 면을 비판합니다.
켄트 백의 전설적인 저서 'TDD by example'이 출시된 지 20년이 지났지만, 실무에서 적용하는 회사는 많지 않습니다. 회사에서 TDD를 시도했다가 실패한 후기를 공유합니다.
별도의 외부 라이브러리나 프레임워크를 도입하지 않고 assert만을 이용해 유닛 테스트 하는 방안에 대해 알아봅니다.
https://school.programmers.co.kr/learn/courses/30/lessons/86051우선 numbers의 원소를 et에 담아두고, 없는 숫자를 찾아 합을 구하는 naive한 방식으로 풀 수 있다. 좀더 최적화된 해법을 찾기 위해 문
'가상화'라는 단어는 폭넓게 쓰이지만 의외로 제대로 이해하기 어려운 개념입니다. 이 글에선 가상화의 정의와 장점을 쉽게 풀어 설명하고, 가상화의 방법으로 에뮬레이션, 가상머신, 컨테이너를 소개합니다.
range loop는 편리한 기능이지만 goroutine과 함께 사용할 경우 예상과 다르게 동작할 수 있습니다. 이는 golang FAQ에도 등재될 정도로 입문자가 빠지기 쉬운 함정입니다. range loop 변수를 참조하는 올바른 방법에 대해 소개합니다.
golang에서는 error interface를 구현한 커스텀 에러를 만드는 경우가 많습니다. 이때 커스텀 에러의 포인터를 직접 리턴할 경우 의도하지 않은 상황이 발생할 수 있습니다. 커스텀 에러 사용시 주의해야 할 점을 알아봅니다.
Prometheus를 Grafana와 같은 대시보드 환경에서 사용할 때, spike를 효과적으로 포착하는 방법을 소개합니다.