2018년 7월 27일

관련기사: 네이버, ‘스마트보드’ 연구 위한 사내 경진 프로그램 진행

대회가 끝나고 사람의 마음이란 게 어쩌면 단순할 수도 있다는 생각을 했다.

몇 주 전 사내 키보드 오타 예측 챌린지에 참여하면서 700개 이상의 모델을 훈련시켰고 단순한 XGBoost 모델, Keras에서 여러 input layer을 받아 하나의 output을 출력하는 모델, 편집 횟수를 참조하는 Spell Checker(키보드 입력이니 보통의 단어와는 다르다) 등을 만들어봤다. 대회 기간 중 2위를 며칠간 유지하고 1위도 잠깐이나마 해봤던 게 마음에 나태의 씨앗을 심었다.

어쩌다 1등을 해본 다음엔 마음이 풀어져서 퇴근 후에 코딩 대신 요즘 다시 재밌어진 스트리트파이터5에 몰두했다. 일주일 정도 그러고 나니 이미 순위권에서 멀어졌고 그걸 만회해보고자 학습 코드를 XGBoost에서 Keras로 재작성했다. XGBoost 모델을 더 크게 만들기엔 하드웨어 문제도 있었지만 지금 생각하면 바꾸지 않는 게 전략적으로 옳은 선택이었던 것 같다. Keras로 만든 모델을 제대로 테스트해보기도 전에 맞춤법 검사기 형태로 모델을 구현해보는 건 어떨까라는 생각이 들었고 코드를 또 재작성했다. 용량도 적고 검색 속도도 빠르고 결과 점수도 괜찮게 나와서 다시 마음이 풀어졌다. (그 와중에 스파5 플래티넘 찍음ㅋㅋ)

대회 종료를 며칠 앞두고 부랴부랴 리더보드에 제출하려는데 알 수 없는 에러가 나서 올라가질 않았다. 그때부터 아쉬움과 좌절감이 밀려왔다. 여기서 입상 못한다고 죽는 것도 아닌데 쓸데없이 스트레스를 받았다.

입상하지 못하면 내가 들인 시간과 만들고 배운 것들이 다 물거품이 된다는 생각, 상금에 대한 아쉬움이 계속 떠올랐다. 지금 생각하면 입상하지 못해도 대회 참여로 배운 건 어디 안 가는 것이고, 상금은 정말 열심히 한 참가자들이 받는 게 마땅하다. 누가 알아준다면 고마운 일이지만 그렇지 않다고 속상해할 일도 아니다. 아쉬운 마음은 이 글로 완전히 털고 멈춰놨던 개인 프로젝트로 돌아가야겠다.

▼ 운 좋게 1등 해 놓고 기분 좋다고 찍어놓은 사진

2015년 9월 8일

hipstoon.com

힙스툰은 웹툰을 많이보는 여자친구가 이야기했던 내용을 바탕으로 만들게 되었다. 불편한 점, 필요한 기능 많이 이야기했는데 첫 버전은 아주 단순하게 웹툰 보면서 댓글 다는 크롬 확장기능과 최근 본 웹툰 기록, 자유게시판 이거 세가지 기능만 구현했다.

힙스툰 (웹툰을 볼 때 자동으로 열린다. 옵션에서 자동 열림을 끌 수도 있다.)

크롬 확장기능이 댓글을 저장하는 Meteor 서버와 통신하기 위해 Asteroid라는 라이브러리를 사용했는데 어떤 자바스크립트 앱에서도 Meteor 서버와 ddp(Meteor 데이터 프로토콜) 연결을 도와주는 편리한 도구다. 크롬 확장기능을 위한 안내도 있어 쉽게 사용할 수 있다.

hipstoon.com헬조선 뉴스 소스에 기반을 두고있다. 앞으로도 헬조선뉴스는 다른 앱을 만들때 밑바탕이 될 수 있도록 꾸준히 유지보수 할 계획이다.

마지막으로 소개할 도구는 Yeoman - 크롬 확장기능 생성기이다. Yeoman을 웹개발을 쉽게 만들어주는 보조 도구인데 크롬 확장기능을 만들 때 필요한 파일과 설정을 알아서 해주고 다 만든다음엔 grunt로 test, build까지 해준다.

주말 벌초 일정으로 많은 테스트를 못해보고 공개하게 되었는데 분명히 치명적인 문제가 숨어있을거라 생각한다. 버그신고는 yourfriends@hipstoon.com

로고는 여자친구가 잠시 임시보호했던 고양이를 보고 내가 그린 것이다.

바둑이

2015년 8월 14일

새 프로젝트를 준비하면서 구글이 정식으로 발표한 Material Design Lite (이하 MDL)를 테스트해보고 Meteor 앱을 만들때 사용할 초기 템플렛을 만들어 볼 생각으로 작은 앱을 생각해봤는데 그 중 적당하다고 생각한 것이 한국의 비이성적인 뉴스들을 보으는 헬조선뉴스였다.

MDL에서 자바스크립트를 이용한 기능들은 Meteor + Iron Router에서 버그가 있다. 그걸 처리하기 위해 패치된 버전이 있지만 그것도 완전하지 않아서 화면이 render 될 때마다 MDL 라이브러리를 깨워주는(?) 코드를 한 줄 넣은게 마음에 걸린다. 업데이트 안된지 오래된 Iron Router에 대해 말이 많지만 제작자가 Meteor 개발팀과 뭔가 협업 중이라는 을 믿고 채택했다.

레이아웃은 기본적으로 flexbox를 사용하기로했다. 비록 -webkit-, -moz-, -ms- 같은 Vendor Prefix 때문에 LESS mixin을 써야하지만 그 간편함과 강력한 성능은 너무 사랑스럽다.

싱글 페이지 애플리케이션 형태인 Meteor에서 글 목록을 무한 스크롤 방식으로 보여줄 땐 다른 페이지에 갔다 오게 되면 글목록 위치와 개수가 초기화 되도록 만드는게 보통이었는데 이번에는 SubsManager라는 패키지를 활용해 사용자가 읽고 있던 글 목록의 개수와 스크롤 위치를 저장하도록 했다. 아직 특별한 부작용은 없다.

링크 콘텐츠 미리보기 기능은 Embedly Card를 이용해 만들었다. embedly 외부 라이브러리가 link를 카드 모양으로 바꿔주는 방식인데 국내 사이트도 꽤 잘 동작하는 편이라 감사한 마음으로 적용했다.

간략하게(=불친절하게)나마 생각나는 주요 개발 내용을 적어보았다. 1년도 넘은 지난 포스팅에서 마지막 내용이 meteor.js 공부를 시작했다는 내용이었는데 감회가 새롭다.

2014년 3월 4일 - 지하철 6호선

1월 31일에 처음 제출하고 심사 들어가기전에 몇번 다시 올리고 리젝 한 번 당하니까 벌써 날짜가 이렇게 됐다. 솔직히 새로 작업하는 앱에서 구현이 막막할 때 Listener 새 기능을 추가한건데 다 끝내고 심사 기다리는 중에도 새 앱에 손이 잘 안가더라

업데이트 내역

  1. 무료화: 사실 타겟을 나누고 유료/무료 버전을 따로 심사받았는데 무료 버전이 몇 번 리젝 당해서(같은 앱인데;;) 아예 유료앱을 무료화하고 광고를 올렸다.
  2. 푸시 추가: parse.com의 놀랍도록 쉬운 푸시 지원 덕분에 빨리 끝냈다. 하지만 문제는 복잡한 xcode 인증서. 테스트는 다 했지만 앱도 두개라서 뭔가 꼬였을까 걱정이다.
  3. 글 올리기 제한: 도배를 막는 완벽한 방법은 아니지만 한 번 글을 올리면 5분동안 글쓰기 버튼대신 5분짜리 카운터가 나오게 된다.
  4. 신고기능 추가: 지난번 리젝 사유가 익명 사용자들이 음란한 글을 올린다는 내용이었는데 재심사 신청할때 이 앱은 채팅처럼 말을 주고받는게 안되고, 모두 자동으로 아이디가 생성되며, 두 번의 신고를 당하면 글이 사라진다고 설명했다. 사용 등급도 17+로 올림

itunes 심사 과정은 정말 애가 탄다. 사람이 하는 일이라 이상한 리젝 사유도 꽤 있지만 꼼꼼한 심사로 막장 앱들이 많이 걸러지기 때문에 그려려니 하고 리뷰어가 요청한 대로 해주는 편이다. 휴..

추가: 기다리다 지쳐서 meteor.js라는 플랫폼을 공부해봤다. hara9.com

2014년 1월 1일 - 안양

닌텐도 코리아 몬스터헌터4

몬스터헌터4 현재까지 124시간 플레이. 이 시리즈는 처음이지만 이제 어느정도 감을 잡았다. 솔직히 이 게임은 하드코어 게임에 속한다. 그래서 게임을 좋아하는 사람들에게도 쉽게 추천해 줄 수 없다. 정확히 구분하자면 비추천 쪽에 더 가깝다.

  1. 일본 게임 특유의 노가다 플레이가 이 게임의 핵심 재미요소이다: 완전히 똑같은 플레이를 반복하지 않는 게 그나마 다행이다. WOW 공격대처럼 몬스터별로 아이템 테이블이 있고 장비가 여러 단계로 나뉘어 있어서 목표가 확실하다. 다만 이런 성취감을 느껴본 적이 없거나 아이템을 얻기 위한 고생스러운 여정이 취향에 안맞는 사람이 더 많기 때문에 단점이라고 볼 수 있다.
  2. 조작이 어렵다: 몬스터헌터는 하드코어한 게임임에도 휴대용 게임기가 잘 어울리는 장르라서 이런 문제점이 따라온다. 게다가 마리오 하라고 만든 직사각형의 무거운 게임기를 들고 모든 버튼을 이용해 장시간 몬스터를 잡는 일은 매우 피곤하다. 이런 육체적 고통까지 즐기는 사람은 본인이 변태임을 인정해야한다.

하지만 몬스터헌터4는 2013년에 내가 해 본 게임 중에 두 번째로 잘 만든 게임이다. (첫 번째는 바이오쇼크 인피니트) 하드코어하지만 그 방향이 명확하기 때문이다. 나는 이 게임이 처음인데도 오랜 기간동안 다듬어진 사냥을 도와주는 기능들 덕분에 노가다 플레이의 불편함이 많이 줄었다. (아이템 대량구매, 대량 조합, 멀티플레이 등) 다양한 몬스터의 디자인이나 공격 패턴 등은 일류급이다.

결론은 일단 비추지만 헌팅액션 장르의 진수에 도전해보고 싶다면 말리지 않겠다. 취향에만 맞으면 100시간은 순식간에 지나간다. 3월에 나올 디아블로3 확장팩이 몬스터헌터처럼 확실한 비전을 가지고 만든 게임이면 좋겠다.