웹 프로젝트 (IBAS)

    [Spring Boot] 1. 게시판 테이블 재설계

    [Spring Boot] 1. 게시판 테이블 재설계

    기존의 Django 레거시를 갈아 엎기로 하고나서, 처음으로 한 것은 게시판 테이블을 다시 설계한 것이다. www.inhabas.com 의 가장 핵심기능은 대부분 게시판이다. 기존의 레거시에서는 모든 게시판 종류마다 (게시판 테이블 + 댓글 테이블 + 파일 테이블) 이렇게 되어있었다. 자유게시판과 같이 새로운 게시판이 하나 더 늘어나면 게시판콤보세트(게시판 테이블 + 댓글 테이블 + 파일 테이블) 를 하나 만들고, 중복되는 비지니스 코드를 만들고, 권한검사에 추가하는 로직을 짰다. 근데 중복되는 비지니스 코드를 줄인다고, 엔티티매퍼를 따로 설정해서 게시글 타입 번호로 if else 엄청 쓰고, 그 중간에 권한 검사 if else 엄청 남발해서,,,,, 허허,,,, 그 개고생을 하면서 느낀것! 유지보수 불..

    [Django 웹 프로젝트] 3. 파일 관리 시스템 개선 (2021-04-30)

    [배경] 게시판과 게시판에 대한 파일 테이블이 1:n 으로 매핑되어 있다. 근데 문제는 일반게시판 테이블 - 일반게시판 파일 테이블 공모전게시판 테이블 - 공모전게시판 파일 테이블 강의게시판 테이블 - 강의게시판 파일 테이블 이런 식으로 게시판 종류에 따라, 그에 해당하는 파일 테이블이 하나씩 붙어있는 구조였다. 그래서 ORM 상에서도 모든 게시글 도메인과 파일 도메인이 각각 따로 존재했고, 중복되는 코드도 너무 많았다. 예로, board 앱의 views.py 에서 normalBoard - normalBoardFile 에 대한 CRUD 와 유효성 검사 로직이 있으면, contest 의 views.py 에서도 contestBoard - contestBoardFile 에 대한 거의 유사한 로직이 반복되는 것..

    [Django 웹 프로젝트] 2. 장고 폼(forms) 도입 => 코드 간결화 (2021-04-28)

    [Django 웹 프로젝트] 2. 장고 폼(forms) 도입 => 코드 간결화 (2021-04-28)

    [배경] 슬슬 진행하고 있던 웹 제작 프로젝트가 거의 끝나서 그 동안 작업했던 과정들을 남겨볼까 한다. 동아리에서 사용할 웹페이지를 제작 중이다. 동아리 내에서 서로 강의하고, 배우는 것을 중요하게 생각해서, 지금은 강의 관련 앱을 구현 중이다. 처음으로 맡았던 부분은 공모전 게시글 CRUD 부분이다. 공모전에 관심이 있는 사람이 게시글을 직접 작성하여 동아리 내에서 같이 참가할 팀원을 모집하는 방식이다. 이 프로젝트에 중간 합류하고 처음하는 작업이었기 때문에, 다른 백엔드 개발 맡으신 분이 어떻게 코드를 짜고 있었는지를 참고하면서 스타일을 최대한 맞추려고 했다. 그런데, 그 분의 코드를 보면서.. 중복되는 코드가 너무 많고, 가독성이 떨어진다고 느꼈다. 1. 중복되는 코드 함수화 예를 들어 게시판 내에..

    [Django 웹프로젝트] 1. 어쩌다 생애 첫 프로젝트 (2021-04-04)

    [Django 웹프로젝트] 1. 어쩌다 생애 첫 프로젝트 (2021-04-04)

    어쩌다 시작하게 됐다. 설계단계부터 시작하는 건 아니고, 동아리를 새로 들어갔는데, 백엔드를 한명 뽑고 있어서 지원했다. 와서 보니 설계는 다 끝났고 이제 막 게시판 CRUD 정도 마친 상태였다. 나는 살면서 협업 프로젝트는 처음인지라 나중에 공부해야지~ 라며 Git, github도 모르던 상태고 데이터베이스도 쿼리문만 다룰 줄 아는 정도다. 근데 내 블로그 이전 글 '파이썬을 공부하게 된 이유'를 보면 알겠지만 대용량의 트렌젝션을 처리하는 백엔드를 개발해보고 싶다는 생각도 있었고, 혼자만 방에 틀어박혀서 공부하는 것이 내 발전에 그렇게 큰 영향을 미치고 있지도 않다는 생각이 들던 참이었다. 그래서 빈틈 투성이지만 열심히 공부할 각오로 지원해서 시작하게 되었다. 프로젝트 팀장 형이 생각보다 할 줄 아는게..