http://blog.sanctum.geek.nz/compiling-in-home/

덧) .local 디렉토리를 만들어 설치하는게 좀 더 깔끔하고 안전

1. model의 존재 여부나 비교시에는 foo.bar 보단 foo.bar__id를 사용하자 - 불필요한 database hit을 줄여줌

2, filter 사용시에도 마찬가지. Foo.objects.filter(blah=bar) 보단 Foo.objects.filter(blah=bar__id) 로.

3. model object 자체가 아니라 단순히 값만 필요할 때에는 QuerySet.values()나 QuerySet.values_list() 를 사용하자.

4. 이미 갖고 있는 값을 또 다시 찾지 말자.

ex ) foreign key 값이 필요한 경우 : foo.bar.id 대신 foo.bar_id 를 쓰면 된다.

5. Python에서 기본 자료형으로 Decimal은 Float에 비해 느리다. (http://stackoverflow.com/questions/195116/python-decimal)

   현재 쓰고 있는 2.7.3 버전에서도 저 정도는 아니지만 동일한 코드로 테스트 해 보니

FLOAT 0.00903288048187

DECIMAL 0.84641688295

   와 같은 결과가 나왔다. FloatFields를 쓰자.

6. QuerySet.select_related()

6-1. get_object_or_404 + select_related : get_object_or_404(Model.objects.select_related(), foo=bar)

귀찮게 이런걸 적는 성격은 아니지만, 나도 다른 지원자들의 후기를 찾아보면서 많은 도움을 받았기에 한 번 써 본다.

1. 지원서

마감 당일날 허겁지겁 써서 냈기에 뭐라고 딱히 할 말이 없다. 그냥 스타트업 하면서 했던 프로젝트들 3가지 기입 했고,
지원 동기나 하고 싶은 프로젝트도 그럭저럭 구색만 맞춰서 냈었다.

아마 프로그램 특성 상 어떤 프로젝트를 얼마나 어떻게 했냐가 많은 비중을 차지 하는 것 같다.


2. 인/적성 검사

인성 검사는 보통 검사처럼 자신의 가치관이나 잣대를 묻는 식으로 나왔고, IQ 테스트에 나올 법한 검사도 이뤄졌다.
솔직히 후자 같은 검사가 있을거라곤 예상하지 못했는데, 어차피 소마쪽에서도 완벽하게 다 맞추는 걸 기대하는 것은 아닐테고, 그냥 이놈이 사람 구실하고 머리도 그럭저럭 쓸만하구나 정도를 알아보는 목적이 아닐까 싶다.

적성 검사는 서술형이었다. 펜으로 장문의 글을 써본적이 신입생 시절 이후로 매우 드문 일이였기에 글 쓰는 것 자체가 굉장히 힘들었다. 문항 중 뭐 이런걸 묻나... 싶은 것들도 있었지만 불평한다고 안 쓸 것도 아니고 꾸역꾸역 써서 냈다. (그리고 후회하게 된다.)


3. 면접

먼저 30분간 코딩 테스트가 이뤄진다. 코딩실로 들어가서 몇가지 문제중 하나를 골라서 테스트를 하게 된다. 물론 인터넷은 안 된다. 3명이서 같은 문제를 풀게 되는데, 문제를 뽑을 때 내가 중간에 있어서 양 옆의 분들이 나보고 문제를 뽑으라고 하셨고, 결과적으로 좋은 선택이 되었다. 면접 전에 먼저 면접을 본 지인들로부터 들은 얘기로 코딩 테스트에 대한 막연한 불안감이 있었는데, 적어도 나에게 있어선 엄청나게 간단한 (...) 문제가 나왔기에 식은 죽 먹기로 문제를 풀 수 있었다. 아마 같이 시험을 본 다른 분들도 키보드 두드리는 소리가 나보다 길긴 했지만 마찬가지였으리라 생각한다.

코딩 테스트가 끝나면, 면접실로 들어가 실제 면접이 진행 된다. 먼저 코딩 테스트에서 작성한 자신의 코드를 어떤식으로 문제를 해결했는지 설명하고 실행도 해 보이게 된다. 나 같은 경우는 문제가 워낙 쉬웠던지라 면접관 분들이 몇분만에 문제를 풀었냐고 물으시고 남은 시간에는 뭘 했냐고 물으셨다. 남은 시간에 코드를 어떻게 더 효율적으로 짤 수 있을까 생각했다고 대답했더니 여기서 한 번 해 보라고 하셨다 (OTL) 
아마 어려운 문제를 뽑아 코드를 다 완성하지 못했다 하더라도 그것 때문에 큰 감점이 있거나 그런건 아닐꺼라고 생각한다. 왜 이렇게 코딩을 했냐, 어떤 식으로 문제를 해결하려고 했었냐 가 주된 논점이였기 때문에..
다만 변수명을 a, b, c, x, y, z 이런 식으로 짓거나 날 코딩을 하는 것은 추천하지 않는다. 나는 아니었지만 지인의 acm 출신 친구가 지원할 때 저런식으로 코딩해서 냈더니 acm이나 하지 왜 지원했냐... 라고 혼냈다는 카더라 썰이 있었는데 뭐 진실이든 아니든 코드를 설명해야 한다는 점에 있어서 보기 좋고 알기 쉽게 코드를 짜는 것을 추천한다.

다음으로 자기 소개를 준비해온게 있다면 한번 해 보라고 하신다. 나는 미리 다른 지원자들의 후기나 지인들의 얘기를 들어 내가 진행했던 프로젝트에 대한 PT를 준비해 갔었다. 중요한 점은 자기 노트북을 가져 가거나 파일을 USB에 넣어가야 PPT를 보여줄 수 있다. 코드 리뷰 용으로 노트북이 있긴 했는데 역시 인터넷이 안 되더라..

나처럼 프로젝트 위주의 PT를 할 생각이라면 그냥 단순히 어떤 어떤 프로젝트였다 라고 설명하는 것 보다는 내가 그 프로젝트에서 어떤 역할을 수행하는지 구체적으로 설명하는 것이 좋다. 난 간략하게 설명했더니 한 면접관분이 '그래서 저 프로젝트에서 자네는 무엇을 했는가' 하고 다시 물어보셨기 때문에..
그래서 PT가 끝나고 한동안 내 프로젝트들에 대한 질문이 주를 이뤘다. 구체적으로 서비스가 어떤 식으로 어떻게 됬느냐 등의..

그리고 지원서와 적성 검사에서 작성했던 글들에 대한 공세가 시작 되었다. 어지간해선 튼튼한 내 멘탈이 산산조각 수준에 이르렀을 정도였다. 물론 내가 지원서를 대충 작성했고 적성 검사도 꾸역꾸역 써 내어 허점을 제공했기 때문에 뭐라고 할 말은 없지만...
다른 지원자 분들은 글을 쓸 때 좀 더 신중하게 자신이 설명할 수 있고 납득 가능한 수준으로 쓰시길 바란다. 여튼 이 부분 때문에 내 면접은 sigh..

그 밖에 개발할 수 있는 언어는 뭐가 있느냐, 소마와 학업 중 우선시 할 것, 지원 동기, 니가 소마에 뭘 해줄 수 있느냐 등의 질문들이 있었다.


뭐 소마 지원은 대충 이런식으로 이루어 진다. 물론 이것은 내가 지원했던 4기의 경우이고 다음 지원이 이루어지는 5기 때는 또 어떤식으로 바뀔지 모르기 때문에 간단히 참고하는 정도로만 보면 좋을 것 같다.

합격 발표가 28일이라 글은 그 이후에 공개해야지 (혹시나)


4. 결과

Fail. 아쉽지만 뭐... 나보다 잘난 사람들이 많다는걸로 알고 더 노력해야겠다.

초등학생 때 영어학원을 저녁 시간 때 쯤 다녔었다.

저녁 먹을 시간이 없어서, 어머니는 나를 차로 학원에 데려다 주면서 몇천원씩을 주셨었고,

나는 학원 길 건너편에 있는 마트 안의 빵집에서 항상 야채 고로케와 우유 하나를 사 먹고 학원으로 갔었다.


오늘 집에 오면서 빵집에서 문득 야채 고로케를 보고 사와 먹으면서 그때의 기억이 떠올랐다.

그 때 그 장소의 그 야채 고로케는 그대로일까...

구상하던 어플의 백엔드를 node.js를 써서 개발하기로 했다.

DB는 MongoDB를 많이 쓰던데 굳이 NoSQL이 필요한것도 아니고 그냥 익숙한 MySQL을 쓰기로 결정했다.

굉장히 간단하긴 한데 살을 붙여 가면 어떻게 될지...

레이아웃 ㅅㅂㄻ

하다..
어쩌다 이렇게 됐는지


그리고 개미지옥의 시작..

1. ajax로 페이지 이동을 처리 할 경우 브라우저의 백 버튼 사용이 어렵다.

solution) pjax (https://github.com/defunkt/jquery-pjax)

html5에는 window.history.pushState() method가 있어 url 전환을 처리할 수 있다.

pjax는 html5를 지원하는 브라우저에서는 ajax로 , 지원하지 않는 브라우저에서는 일반 anchor 태그로 작동하게 해 url 전환을 처리한다.

2. ajax로 불러온 response의 inline javascript 실행이 제한되어 있다.

아직 명확한 솔루션이 없는 것 같다. 보안상의 문제가 있어 어쩔 수 없는 듯...

margin: 0 auto; 를 사용하면

Chrome, IE9 에서는 margin-left, margin-right 값이 계산 되어서 명시되지만

Firefox에선 그냥 0으로 나온다.

정렬하는데 애먹었음..


+ Recent posts