메이크 타임: 게으름을 극복할 수 있을까?

머리와 몸이 따로 논다 머리는 항상 생각합니다. “위대한 사람이 되어야지!” “열심히 운동해서 몸짱이 되자!” “노력해서 젊은 부자가 되자!”. 몸이 대답합니다. “싫은데?” “일단 좀만 더 누워있다 일어나자.” “아무 생각없이 유튜브, 넷플릭스나 보자.” 젠장. 나는 왜이렇게 게으른 걸까요? 난데없이 TMI 를 시전하자면, 제 MBTI 유형은 ENTP 입니다. 하고 싶은 것도 많고, 이미…

함수형 프로그래밍 vs 객체지향 프로그래밍

*이 포스트는 Robert C. Martin 님의 허락을 받아 blog.cleancoder.com 의 글 “FP vs. OO“을 번역한 것입니다. 저작권에 유의하시기 바랍니다. 서론 지난 몇 년간 저는, 함수형 프로그래밍을 배우면서 “음.. 그건 너무 객체지향인데요.”라는 식으로 객체지향 프로그래밍에 반감을 표현하는 사람들을 봐왔습니다. 왜인지는 몰라도 함수형 프로그래밍과 객체지향 프로그래밍이 상호 배제 관계에 있다는 생각 때문으로…

봉투 뒷면 계산법: 구글의 설계 기술

*이 포스트는 Todd Hoff 님의 허락을 받아 highscalability.com 의 글 “Google Pro Tip: Use Back-Of-The-Envelope-Calculations To Choose The Best Design“을 번역한 것입니다. 저작권에 유의하시기 바랍니다. 어떤 문제가 주어졌을 때, 최적의 설계가 무엇일지는 어떻게 알 수 있을까요? 예를 들어 30개의 섬네일을 표시하는 이미지 검색 결과 페이지를 만들어야 한다고 합시다. 이미지는 순차적으로 로드할까요?…

알고리즘 문제를 잘 풀면 뛰어난 개발자일까?

뛰어난 개발자는 문제도 잘 푼다 결론부터 말하자면, “알고리즘 문제를 잘 풀면 뛰어난 개발자일까?”의 답은 “아니오.”입니다. 하지만 뛰어난 개발자는 당연히 알고리즘 문제도 잘 풉니다. 오잉? 같은 이야기를 조금 더 자극적으로 표현해보겠습니다. 문제풀이를 잘 하지 못하면 뛰어난 개발자가 될 수 없다. 뛰어난 개발자 중에 문제풀이를 잘 못하는 사람은 없다. 이게 무슨 말인지에…

SQLite 데이터베이스를 10배 빠르게 만드는 방법들

SQLite 데이터베이스를 사용하다보면, 데이터가 많을 경우 처리 속도가 만족스럽지 못한 경우가 생길 수 있습니다. 그럴 때에는 무작정 다른 종류의 데이터베이스를 찾아보거나 다른 기술을 도입하려고 하기보다는, SQLite 데이터베이스를 사용하는 코드를 최적화해볼 필요가 있죠. 그럼 아래에 적용해볼 수 있는 방법들을 정리해보겠습니다. 예제 코드는 SQLite C Library를 기준으로 했습니다. 또 설명을 위한 예제이므로…

LibreOffice Logo

LibreOffice: 무료 오피스 프로그램

LibreOffice? (다운로드 링크) LibreOffice, 한글명 리브레오피스는 대표적인 무료 오피스 프로그램입니다. MacOS, Linux 계열 운영체제를 사용하는 사람들에게는 익숙한 편이지만 Windows 사용자에게는 생소할 수 있죠. 오피스 프로그램은 PC를 사용하면서 한 번쯤은 사용하게되는 흔한 프로그램이지만 개인이 Microsoft 365 Office, 한글과컴퓨터 한컴오피스를 구매해 사용하기엔 가격이 부담스럽습니다.(각각 가정용 기준 179,000원, 63,800원) 그래서 불법 다운로드나 불법…

Windbg C++ 예외(0xe06d7363) 정보 얻기

0xE06D7363 ? 평소 Windbg 를 통해 메모리 덤프를 분석하다보면, 가끔씩 ExceptionCode: e06d7363 (C++ EH exception)을 만나볼 수 있습니다. e06d7363은 Visual C++ 컴파일러가 C++ 예외에 사용하는 예외 코드입니다. 따라서 프로그램이 C++ 예외로 인해 종료되었을 때, 이 코드와 함께 메모리 덤프가 남게 됩니다. 이 경우에는 e06d7363 이라는 예외 코드 외에는 별다른 정보가…

SQLite 데이터베이스 C/C++에서 사용하기 2: 심화 (번역)

SQLite 데이터베이스 심화편 SQLite 데이터베이스 C/C++에서 사용하기 시리즈의 이전 편에서는 기본적인 내용에 대해서 알아봤습니다. SQLite 툴의 사용법과 C 코드로 쿼리를 실행하는 방법 정도만 알아도 사용하는데 큰 문제는 없죠. 이번 편은 약간 심화적인 부분에 대해서 다룹니다. 정확히는 이미지같은 Blob(Binary Large OBject)을 다루는 방법, 메타데이터, 트랜잭션에 대한 내용입니다. 바로 시작합니다. 이미지 데이터…

SQLite 데이터베이스 C/C++에서 사용하기 1: 기본 (번역)

SQLite 는 관계형 데이터베이스 엔진입니다. 개발자는 SQLite 를 자급자족하는, 서버도 필요 없고, 설정도 필요없는 트랜잭셔널 SQL 데이터베이스 엔진이라고 표현합니다. 지금은 전세계에 수십 수백만 개가 사용되고 있을 정도로 유명하죠. SQLite 는 Solaris 10, Mac OS, 안드로이드, 아이폰에도 사용됩니다. Qt4 라이브러리도 파이썬, PHP 와 함께 SQLite 를 내부적으로 지원하죠. 또 파이어폭스, 구글 크롬 등의 아주 유명한 애플리케이션들도 내부적으로 SQLite 를 사용하고 있습니다. 대단하죠!?

C++ Named Constructor Idiom: 이름을 가진 생성자?

Named Constructor Idiom? 다들 아시다시피 C++의 생성자는 특별한 이름을 가질 수 없습니다. 그런데 가끔씩 가독성을 위해서 Self-descriptive한 이름의 생성자를 만들고 싶을 때가 있습니다. 아니면, 문법적 한계 때문에 꼭 필요한 경우도 생각해볼 수 있죠. 이럴 때 사용할 수 있는 것이 Named constructor idiom 입니다. 첫 번째 예로는 Named constructor idiom을 설명할…