• C / C++ 메모리 디버깅

    C나 C++로 프로그램을 작성할 경우, 아무리 신경을 써도 메모리 접근에서 예상치 못한 버그가 발생하고는 한다. 해제한 메모리를 다시 이용하거나(use after free), 할당한 공간을 넘어서 접근한다거나(heap / stack overflow).. 그렇다고 메모리 해제를 소극적으로 하다가는 해제되지 않고 메모리 누수가 일어나서 또 다른 문제를 일으킨다. 물론 이를 해결하기 위한 방법으로 가장 추천하는 것은 Rust처럼 안전한 언어를 이용하는 것이지만, 어쩔 수 없이 C / C++을 이용해야 하는 경우, 디버깅에 도움을 주는 도구를 적극적으로 이용하면 비교적 안전한 코드를 작성할 수 있다.

    Read on →

  • Google Code Jam 2019 Round 1C

    GCJ R1C는 안 망했다!! 다행히 Round 2에 진출 가능한 등수를 받았다. C 라지를 고민하다가 결국 스몰만 풀고 던진 다음 나머지를 급하게 풀어서 A, B는 라지까지 맞았다. 야호! 대회 난이도를 돌아보면, C는 그런디 정리1를 알면 쉽지만 모르면 풀 수 없는 문제였고, B는 올해 출제된, 즉 R1AR1B, 그리고 QR에 나온 인터랙티브 문제들에 비해 굉장히 쉬웠으며, A는 문제만 잘 해석하면 정말 아무렇게나 풀어도 라지까지 맞는 낚시 문제였다.

    Read on →

  • Google Code Jam 2019 Round 1B

    GCJ R1B는 새벽 1시에 열려서 잠을 포기하고 참가! 했지만.. 컨디션 조절 실패로 (변명) 이번에도 Round 2 진출에 실패하고 말았다. 전체적인 난이도는 A가 너무 쉽고, B가 생각보다 어려웠으며, C는 구현이 상당히 복잡한 문제였다.

    Read on →

  • Google Kick Start 2019 Round B

    오늘 오전에는 Kick Start Round B가 있었다. 난이도는 Round A처럼 역시 어려웠다(ㅠㅠ). 다만 각 문제가 다이나믹 프로그래밍, 그리디, 그리고 라인 스위핑 등 기본적인 알고리즘의 의미를 충실하게 고민하면 풀 수 있는 구성으로, PS를 다시 연습하기에 훌륭한 대회였다.

    Read on →

  • Let's Encrypt, Cross Sigining

    Let’s Encrypt가 7월 8일부터 자체 서명한 인증서를 발급한다는 소식을 듣고, 바로 관련된 문제가 무엇인지 찾아보았다. 문제는 ISRG가 Root CA로 신뢰받기 시작한 것이 최근이라는 점인데, 예를 들어 Windows의 경우, 작년 8월 이후에 윈도우즈 업데이트를 하지 않았을 경우 테스트 사이트에 접속했을 때 “신뢰할 수 없는 사이트” 에러를 볼 수도 있다.

    Read on →