Blog

3/18

March 19, 2014

3/18

#면접 후기 

– 다잌스트라 나와서 띵 한 상태였고, 언어별로 디자인패턴이 어떻게 적용되었는지 묻는문제(나오니 생각났다.)

– 코딩테스트는 통과했는데, 왜 코딩테스트 결과에 대해서는 별말이 없었을까. 

– 분위기는 좋았는데, 광탈. 

#django-user-agent 사용기 

– 편하다. 뷰단이나 템플릿단에서 바로 쓸수 있다. 특히 뷰에서 템플릿으로 또 따로 보내야 하나 생각했는데 템플릿에서 바로 알수 있는게 장점. 템플릿 내에서 분기를 할수 있어서 좋다. 

나는 템플릿에서 분기할 경우가 많은데 예를 들어 모바일에서는 다른 형식으로 메뉴를 보여주고 싶을떄는 

{% if is_mobile %}
<a class=”navbar-brand” href=”?theme={{current_theme_id}}”><span class=”theme”>{{current_theme_name}}</span></a>
{% endif %}

이런식으로 분기를 쳐주면 된다. 만약 모바일 외의 접근을 막고 싶으면 views.py 단에서 들어오는 요청을 검사해서 다른 페이지로 redirect 시키면 될것이다. 

– 한가지 불편한점은 빠른 파싱을 위해서 memecached 를 사용하라고 권장하고 있는게 조금 찜찜하긴 하다. 

# model, utf-8

– 모델을 만들고 south로  적용을 하거나 syncdb 를 하면 utf-8 이 아닌 다른것으로 만들어 진다. 그래서 한글을 입력하면 깨지는데, 처음에 만들떄 utf-8로 테이블을 만들어 주도록 지정하는 방법은 몰까?

#django-admin 에서의 mysql, utf-8 문제 

– 이 부분에 대해서 찾아봤는데 정확히 mysql 의 대상 테이블 및 필드의 utf-8의 문제가 아니다. 즉, 내가 맛집에 대한 정보를 한글로 넣는데 맛집 데이터베이스나 테이블은 모두 utf-8 이라고 쿼리로 넣던지, 다른 mysql client 툴을 이용해서 데이터를 넣으면 잘 보이고 웹 페이지에서도 잘 가져온다. 

– 그런데 문제는 admin 에서 입력하거나 수정한 경우 문제가 생기는데 admin 페이지에서 수정을 누르면 에러가 발생되고 데이터가 테이블에 저장되지 않는다. 

– 문제는 admin을 관리하는 데이터베이스에 있다. django 에서 admin을 처음에 syncdb 를 시키면 자동으로 지정한 데이터베이스에 관련 테이블이 생기는데 그 테이블들을 utf-8, 필드들도 utf-8로 바꿔줘야 한다. 특히 django_admin_log 에서 objc_repr 필드는 내가 입력한 값이 남게 되는데 그 부분에서 에러가 난것으로 추정된다.