170619-0625_TIL (다시 시작)

|

6월 25일 (일)

오늘 한 일


6월 24일 (토)

오늘 한 일

  • Django를 활용하여 인스타그램 기능을 가진 웹어플리케이션 구현을 연습했다.
    • Ajax를 활용하여 새로고침 없이 좋아요 정보가 업데이트 되도록 구현하였다.
    • 과거에 남겨놓은 메모가 많은 도움이 되었다.
  • 장고걸스 워크샵 둘째 날 행사에 참여하였다.
    • 같은 조의 Jay Jin 님께 여러가지 꿀팁을 얻었다.
    • Azure 를 사용하여 배포를 진행해보았다. AWS 보다 간단하다는 인상을 받았다.
    • 내년에도 계속 장고를 쓰고 있었으면 좋겠다. 그리고 장고걸스 행사에는 코치로 참여할 수 있었으면 좋겠다.

6월 23일 (금)

오늘 한 일

  • Django를 활용하여 인스타그램 기능을 가진 웹어플리케이션 구현을 연습했다.
    • 좋아요 기능을 구현하였다. (ManyToManyField 활용)
    • select_related, prefetch_related 를 활용하여 좋아요 정보를 가져오는 부분의 중복 쿼리를 제거하였다.
  • 장고걸스 워크샵 첫째 날 행사에 참여하였다.

6월 22일 (목)

오늘 한 일

  • Django를 활용하여 인스타그램 기능을 가진 웹어플리케이션 구현을 연습했다.
    • Tag 검색 기능을 추가했다.
    • 검색기능은 post의 tag_set 필드에서 name 값으로 특정 입력 값을 가진 post list만 필터링하여 구현하였다.
    • Queryset 메소드 중에 icontains 를 활용하여 부분일치 문자열도 쉽게 필터링이 가능했다. 그 외에 다른 유용한 Queryset API 에 대해서도 읽어보았다.
    • content 내 태그 문자열만 추출하여 검색 링크를 추가하였다.
    • 원하는 기능을 구현하기 위해서 여러가지 고민과 시도를 해보았다. 생각하지 못했던 문제점들이 다양하게 발생하여 기능 구현에 시간이 많이 걸렸다.
    • 결과적으로 custom filter를 활용하여 DB 내용에 직접적인 영향을 미치지 않고, 검색 링크가 추가된 상태로 템플릿이 랜더링 되도록 구현할 수 있었다.
    • 문제 해결과정 을 블로그에 정리했다.

6월 20일 (화)

오늘 한 일

  • Django를 활용하여 인스타그램 기능을 가진 웹어플리케이션 구현을 연습했다.
    • messages.framework 를 활용하여 post 등록/수정/삭제시 유저 안내문구를 alert로 구현하였다.
      이전에 messages.framework 를 몰랐을 때는 안내 메시지를 javascript로 하나하나 구현했었다.
      강의에서 messages.framework를 접했을 때는 ‘아 이런게 있구나’ 정도로 끝났다.
      필요성이 발생해서 사용하는 지금 messages.framework의 편리함이 드디어 실감으로 다가온다.
      필요한 부분에 코드중복 없이 일괄 적용할 수 있다니..너무나 편하다.
    • select_related, prefetch_related를 활용해서 post list를 출력하는 페이지의 SQL 쿼리갯수를 28개에서 5개로 줄였다! 덕분에 소요 시간이 3.81ms에서 1.51ms로 줄어들어 성능을 개선할 수 있었다. 정말 유용한 것 같아서 블로그에 문제 해결과정을 정리해두었다.

6월 19일 (월)

오늘 한 일

  • 생각도 못했던 시기에, 생각도 못했던 곳에서 면접 기회가 주어졌다.
    Java와 Spring을 사용하는 곳이지만, 배울 수 있는 사람들이 많고 동기부여가 되는 업무환경이라고 생각했다.
    1번의 필기시험과 2번의 기술면접을 진행했다. 처음 경험하는 개발자 채용 과정은 하나하나가 놀랍고 재미있었다. (맙소사 필기시험을 통과하다니!)

    그렇게 최근 3주정도 집중해서 준비했던 일이 마무리 되었다.
    바라던 결과는 얻지 못했지만 Java를 학습하며 새롭게 알게 된 점도 많았고, 자료구조 알고리즘도 다시 한번 정리할 수 있었다. 동기부여가 컸기에 그만큼 효율도 높았던 것 같다.
    대신 3주만에 만난 django는 낯설어서 조금 충격이었다. 그렇게 열심히 했는데 이렇게 금방 낯설어 지다니!
    잠시 한눈을 팔았으니 이제 애정 2배를 갖고 열심히 해야겠다 :)

  • Django를 활용하여 인스타그램 기능을 가진 웹어플리케이션 구현을 연습했다.
    • 이번 연습의 목표는 아래와 같다.
    • 1) 능동적으로 고민한다. (그동안 수동적으로 강의를 듣고, 같은 것을 반복 연습하는 부분에 집중했었다.)
    • 2) 필요한건 공식 문서, stackoverflow를 찾아보고 문제를 해결한다.
    • 3) 궁금한 코드는 Django 소스코드 를 열어서 직접 읽어보자.
    • 4) 가능한 스스로 코드를 짜본다. 비효율적이라도 직접 해보고, 다른 사람의 코드를 참고한다.
  • 오늘 구현한 기능
    • post 생성/수정/삭제 구현
    • django-imagekit를 활용하여 유저가 업로드한 이미지를 수정
    • post모델의 content 필드에서 #해시태그 부분을 정규표현식으로 추출
    • 추출한 태그는 Tag 모델에 별도로 저장

이고잉님의 적정수준의 공부를 재미있게 읽은 적이 있다. 크게 공감을 하면서도 내가 갖고 있는 것이 너무 적어보여서 계속 채우는 부분에만 집중 했던 것 같다. (그리고 수동적으로 강의를 듣는게 편하기도 하다.)

적정수준의 공부방법

  1. 프로그램을 만드는데 필요한 최소한의 도구를 익힌다. (문자, 숫자, 변수, 비교, 조건문, 반복문, 함수)
  2. 최소한의 도구로 다양한 문제를 해결해 본다.
  3. 가지고 있는 도구로 문제를 해결하는 것이 점점 어려운 일이 되었을 때 선배 개발자들의 성취를 찾아본다. 이 또한 최소한으로.
  4. 2번과 3번 반복

의식적으로 불편해지려는 시도를 해야겠다는 생각이 든다. 아는게 적은데 그 안에서 해결하려고 고민하는건 힘든 일이다. 그러다 다른 사람의 간단한 해결책을 보면 신기하기도 하면서 자괴감이 들기도 하고.. 그래서 요즘에는 문제를 만나면 ‘이걸 분명히 쉽게 푸는 방법이 있을텐데’ 하면서 다른 사람의 쉬운 해결책을 바로 찾아보려는 생각이 먼저 든다. 이게 좋은건지 나쁜건지 잘 모르겠는데, 고민을 적게 하는건 분명 좋지 않을 것 같다.

적절한 양만큼 고민하고 찾아보는 것, 적절한 양만큼 공부하고 만들어 보는 것 그걸 잘 할 수 있었으면 좋겠다.