Tistory API 사용 계기 최근 Tistory의 API를 사용할 일이 있었다. 블로그 글쓰기 대회를 하나 열었는데, 그래서 특정 기간 동안 작성된 블로그 포스트 목록을 불러와야 할 일이 생겼다. 블로그의 수가 적었기에 수동으로 집계해도 되지만, 어차피 나중을 생각하면, 똑같은 대회가 두 번 이상 안 열릴 거라는 법이 없기도 하고, 어차피 자동화 한 번 해놓으면 집계가 편하기도 하고, 다른 곳에서 사용할 일이 있을 수도 있고, 또 이런 거 자동화 안 하면 화병이 나는 사람이라... 자동화하기로 했다. 처음 계획은 웹 크롤링을 이용해볼까 하는 생각이었다. 그러나 이 생각은 곧 접게 되었는데, 왜냐면 tistory는 블로그마다 uri를 다르게 설정할 수 있기 때문이다. 또 예전에 tistory readm..
C++은 프로그래머가 직접 메모리를 관리할 수 있어, 매우 저수준의 영역까지 다룰 수 있는 언어이다. 그런만큼 C++ 프로그래머들은 컴퓨터 메모리의 구조를 잘 알고 있어야 한다. 특히 Heap memory, Stack Memory, Static Memory는 잘 알아야 한다. 또한 메모리 관리를 실패한다면, 병렬 처리를 할 때 False Sharing (두 개 이상의 스레드가 같은 블록 영역의 메모리에 접근하면서, 캐시 성능 저하가 발생하는 현상) 이 일어나 성능이 더 떨어지거나, 혹은 Data Racing (두 개 이상의 스레드가 동시에 같은 메모리에 대해 쓰기 접근하면서, 잘못된 연산을 하거나 서로 데이터에 대한 소유권을 주장하면서 성능이 저하되는 현상) 이 발생하기도 쉽다. 무엇이 됐든 C++을 할..
예약 시스템 개발 계기 우리 학교 2학년 1학기 과정인 객체지향 프로그래밍 과목에서, 전설처럼 내려오는 과제가 하나 있다. C++을 이용한 통합 예약 프로그램인데, C++ 좋아하는 나로썬 참을 수 없는 과제였다. 이 교수님의 객체 과목을 수강한 이들은 이 과제를 해야 객체 과목을 수강했다고 인정하는 분위기다. 바로 시작했다. 실제 과제는 2주라는 시간이 주어졌는데, 이 과제에만 시간을 쏟는다면 모르겠으나 다른 일들이 많아서.. 이거는 완전 사이드 of 사이드라서 얼마나 오래 걸릴 지는 모르겠다. C++ 개발 환경 설정 IDE는 CLion으로 IDE는 별 고민없이 CLion으로 선택했다. 애초에 이 프로젝트를 시작한 이유 중 하나가 CLion에 적응해보려고 한 목적도 있다. 윈도우에서는 주로 Visual ..
이 글은 맥을 처음 사용해본 후기이다. 아이패드와의 연동, flutter 개발 등의 이야기를 담고 있다. 학생복지스토어에서 맥북을 구매하며 올해 초, 맥북을 구매했다. 이전부터 개발자는 맥북이지라는 말도 있었고, 실제로 맥북을 써보고 싶었다. 이유라면 여러가지였는데, 개발자라면 윈도우뿐만 아니라 맥 OS, 리눅스 등 다양한 OS를 기본적으로 쓸 줄 알아야 한다는게 내 생각이기도 했고, 기존에 쓰던 내 윈도우 노트북이 2년 정도 지나니깐 느려지는게 눈에 보이기도 했고, 또 애초에 경량화를 목표로 한 모델이라서 성능을 초점에 둔 노트북도 아니었다(그램에 성능을 기대하지는 않듯이, 내가 쓰던 노트북도 그램같은 포지션의 노트북이었다). 그러다보니깐 애플 실리콘 기반의 강력한 성능이 기대되기도 하였고, 그와 동시..
최근 한 프로젝트를 완료하면서 이를 깃허브에 공개하였다. 공개를 하면서 처음으로 라이센스를 적용했는데, 은근히 헷갈리는 것들이 많았다. 이번 기회에 라이센스를 모두 정리해보려고 한다. 오픈소스 라이센스에 대한 배경 지식 라이센스의 필요성 오픈소스에서 라이센스는 매우 중요하다. 오픈소스에 기여하는데 있어서 라이센스가 없다면 오픈소스라고 보기 어려울 정도다. 사실, 소스 코드 역시 하나의 저작물이고 개인 혹은 법인의 창작물인만큼, 여타 저작물과 마찬가지로 저작권의 영향을 명시적으로 표기해주는 라이센스를 붙이는 것은 좋은 습관이다. 그렇다면 라이센스는 과연 무엇일까? 법리적인 해석을 들 수도 있지만, 개념은 간단하다. 가끔 블로그 글이나 SNS 게시물을 보다보면, 이런 내용이 담긴 글들을 가끔 볼 수 있었다...
GDSC Devtalk #9회 지난 4월 6일 목요일 GDSC 9회차 DevTalk이 진행됐었다. 배운 점이 많은 데브톡이였어서, 듣고 느낀 점을 적고자 한다. 각 강연 링크는 아래에 담아놨다. [GDSC Hongik] 실무에서 협업에 대한 이야기 [Keynote] - 김종필 [GDSC Hongik] 개발자로 성장하기 - 한규진 [GDSC Hongik] Oauth & Open ID Connect - 이찬진 실무에서 협업에 대한 이야기 - 김종필 GDSC는 언제나 섭외 능력에 놀란다. 실제 회사였으면 CTO나 사장님으로 만났을 분의 강연을 무료로 들을 수 있는 자리를 마련해주다니... 김종필 알비언 테크본부장 님의 말씀을 들으면서, 어떤 부분에서는 팩트로 후드려(?) 맞기도 하였고, 어떤 부분은 큰 조언을..
constexpr이란 constexpr은 C++11부터 지원되기 시작한 컴파일 상수이다. 11부터 시작해서 23에 이르기까지 constexpr은 그 지원 범위를 점차 늘려왔고, 많은 C++ 프로그래머로부터 각광을 받았다고 한다. 이 constexpr은 무엇이고, const와 무엇이 다른 것일까. constexpr, 혹은 컴파일 상수는, '컴파일 시간에 값을 결정하는 상수'라는 의미를 갖고 있다. 2, 3.0과 같은 상수를 생각해보자. 이 상수들은 런타임 도중 그 값이 변경되지 않는다. C 시절 #define NUMBER 5와 같이 작성하면, 이는 매크로라 하여서, 컴파일러가 자동적으로 NUMBER를 5로 바꾸어준다. 이때 NUMBER는 컴파일 도중에 그 값이 결정되지, 런타임 도중에 값이 5로 결정되는 ..