PGS 수업에서 매 주 버킷리스트 활동한 것들을 블로그에 정리하라고 하는데 아직은 뚜렷한 계획이 보이지 않는다. 지금까지 뭘 해야겠다고 생각하면 바로바로 시작해서 빨리 끝내고 새로운 흥미 분야를 찾아왔기 때문에 ‘하고 싶은 일’ 목록이 차 있었던 적이 별로 없었던 것 같다. 현재 가장 많이 진행된 것은 이매진컵인데 Korea Finals 수상 이후로는 추진력이 상당히 많이 떨어진 것이 느껴진다.

버킷리스트에는 없었지만 지금 가장 열심히 하고 있는 것은 해킹동아리 PLUS다. 희망자들을 대상으로 수습회원들을 받아 각종 해킹 지식에 대해 스스로 공부하고 문제를 풀 수 있는 트레이닝 사이트를 통해 교육을 진행하고, 그와 동시에 일주일마다 한 번씩 세미나를 진행해 한 학기동안의 결과를 바탕으로 정회원을 선발한다. 트레이닝 사이트가 열린 이후로 문제 푸는 게 너무 재밌어서 짬 나는 시간에 계속 공부하면서 풀고 있다.

지금까지 해킹을 전문적으로 배운 적은 없었지만 해킹이라는 분야가 워낙 다양하고 시스템적인 관점이 필요하다보니, 지금까지 프로그래밍을 하며 익혔던 다양한 지식들이 의외의 부분에서 도움이 되고 있다. 파이썬으로 스크립트를 짜서 Brute Forcing을 하거나 PHP 코드에 SQL 인젝션을 하고, HTTP 프로토콜을 들여다봐야 하는 문제들을 풀면서 학교 급식 별점 사이트를 만들었던 경험, 폐허가 된 학교를 탐험하는 어드벤처 게임을 만들었던 경험, 암호 공모전에 나갔던 경험 등 해킹과 별로 관련 없어 보이는 경험들이 많은 도움이 되고 있다.

초기에 출제된 문제의 70% 이상을 지금 내가 알고 있는 지식으로 풀 수 있었고, System 분야는 모르는 분야였지만 공부하면서 검색해가며 풀었다. 신입생 점수 랭킹 1위를 유지하고 있으며 현재 목표는 1명이라도 푼 사람이 있는 문제를 모두 푸는 것이다. 얼마 전 51번을 마지막으로 이 목표를 달성할 수 있었다. 지금까지 풀지 못하고 있었던 문제들은 풀이는 아는데 시간이 없거나, 필요한 지식을 가지고 있지 않아서 새롭게 공부해서 풀어야 하는 문제들이었다. 하지만 남은 문제들은 내가 아는 지식들을 융합하고 응용해야 풀 수 있는 문제들이라 추정되고, 한 문제 한 문제를 풀 때마다 오랜 시간 공들여 풀어야 할 것 같다. 그래서 앞으로는 천천히 페이스를 유지하며 풀고자 한다.

나는 탄막게임을 좋아하는데, 해킹과 탄막게임은 상당히 유사한 점을 지니고 있다고 생각한다. 탄막게임은 처음에는 화면을 빼곡히 뒤덮는 총알들이 불가능해 보이는 패턴으로 날아오지만, 다양한 이동 경로와 타이밍을 시도해보며 차근차근 패턴을 연구해 수십, 수백번의 죽음 끝에 클리어하는 재미가 있다. 해킹도 유사하게 처음에는 아무런 단서도 주어지지 않지만, 다양한 허점과 공격 방법들을 시도하며 차근차근 나아가 결국 보안을 뚫어 냈을 때 큰 쾌감이 느껴진다. 기존의 교과 과정에서의 문제 풀이가 답을 ‘찾는’ 과정이라면, 이들은 답을 ‘만들어 내는’ 과정인 것이다. Problem Solving도 유사한 이유에서 재미를 느껴온 것 같다. 동아리에 들어갈 때 이렇게까지 열심히 할 것이라고 예상하지는 못했었는데 생각보다 보안 분야가 적성에 잘 맞는다. 앞으로도 프로그래밍만큼 꾸준히 공부하게 될 것 같은 기분이 든다.

오늘 단기유학 서류 때문에 친구랑 같이 병원 갔다가 점심 먹고 돌아왔다. 진료 끝나고 점심 먹으러 갈 때 걸어서 20분 정도 걸리는 거리였지만 시간도 많고 택시비 두 번 내기는 아까워서 오랜만에 걸어 보기로 했다.

평소에는 이동 시간이 목적 없이 흘러가는 시간이라 아깝다고 생각했었고, 이런 낭비되는 시간을 최대한 줄이기 위해 머릿속으로 문제를 푼다든가 오늘의 계획을 세우는 등 시간을 효율적으로 쓰려고 노력했었다.

하지만 봄햇살을 맞으며 아무 생각 없이 반쯤은 도시 같고 반쯤은 시골 같은 포항 거리를 걷고 있으니 지금까지 너무 여유없이 자신을 혹사시키며 살아왔던 건 아닐까 하는 생각이 문득 들었다.

수업시간에 메모를 Markdown으로 시도하면서 Markdown Pad 2를 쓰기 시작했다. 그러나 추가적인 문법을 사용하려면 유료 버전을 사야 하고, 한국어 지원도 별로인데다가 느려서 불만을 가지고 있던 도중 Marxico를 소개 받았다. 코드 하이라이트는 물론이고 클립보드 이미지 붙여넣기, LaTeX 지원 및 UML 등 정말 마음에 드는 기능들이 가득했다. 오프라인 편집도 가능하며 에버노트 계정을 연결하면 자동으로 동기화된다. 그래서 Marxico를 즐겁게 쓰고 있던 도중, 이게 무료 프로그램이 아니라 10일간 체험이 가능하고 그 이후로는 새 노트 생성은 불가능하게 된다는 것을 알게되었다.

그래서 혹시 대체할만한 프로그램이 없는지 찾아보던 도중 Marxico의 베이스가 되는 StackEdit이라는 프로그램을 찾았다. LaTeX나 UML 등의 추가 문법은 그대로 지원하고, 에버노트 대신 구글 드라이브나 드랍박스와 동기화 할 수 있다는 점이 달랐고 Blogger, WordPress 등 웹사이트에 퍼블리시하는 기능이 있었다. 단점을 꼽자면 Marxico의 디자인이 좀 더 취향에 맞았고 클립보드에서 이미지 붙여넣기가 불가능했다.

클립보드에서 이미지 붙여넣는 기능이 상당히 편리했기 때문에 이 부분에서는 Marxico가 우세했다. 동기화 기능의 경우 Markdown으로 작성된 파일이 ‘문서’라는 점을 생각했을 때 에버노트에 저장되는 Marxico가 더 마음에 들었지만, 블로그 포스팅까지 Markdown으로 하는 것을 생각한다면 에버노트에서는 태그의 id 속성을 지워서 TOC나 각주 기능이 깨지기 때문에 바로 퍼블리시가 가능한 StackEdit이 더 낫게 느껴지기도 했다.

좀 더 써보고 선택할 예정이지만, 장기적인 관점에서 StackEdit이 클립보드 붙여넣기를 지원할 확률이 에버노트에서 id 속성이 허용되는 것보다 빠를 것이고, 아무래도 무료다보니 StackEdit에 정착하게 될 것이라 생각한다.