웹 프로젝트 (IBAS)/Django 레거시
[Django 웹 프로젝트] 6. 유지 보수를 위한 새로운 아키텍처 고민 (2021-10-21)
— 현재 문제점(2021-10-21) — views, DB, 권한간 의존성이 커서 서로 종속적이다. 하나가 수정될 시에 다른 여러곳에 영향을 미칠텐데 그 영향을 최소화할 필요가 있다. (DB 와 views) spring의 dao, domain, dto 와 같은 형태 도입이 필요해보임 view 안에서 db 속성값을 기술하니, 가독성이 떨어짐 db 최적화 등의 이유로 추후 db 모델을 변경할 때, 모든 views 에서 일일히 변경해야함. 다 완벽하게 찾을 수 없음. 장고 ORM 쿼리를 views 에서 직접 날리는 것 안좋은 듯. (DB 와 forms) 현재는 클라이언트 사이드를 장고 템플릿 언어로 해결하고 있지만, 향후 vue로 분리될 것을 생각하면, forms 는 vaildation의 역할만 하게 됨. f..
[Django 웹 프로젝트] 5. static file name hashing 하기 (2021-09-09)
[배경] 당시에 프론트 단의 js validation 로직을 구현하고 서버에 적용을 시켰는데, 적용된 파일이 제대로 작동하지 않는 현상이 발생했다! 일일이 서버의 파일 수정 -> 빌드 -> 재배포 하면서 계속 디버깅해본 결과,, static file 이 브라우저에 의해 캐시되고 있어서 변경된 js 파일이 적용되지 않았던 것이다. 파일 이름은 동일하니까, 브라우저 입장에서는 해당 파일이 변경되었는지 알 수 없다. [가능한 대처 방안] 이 경우에는 사용자가 직접 쿠키를 지우거나, ctrl+f5 눌러서 새로 정적파일을 받아오거나 파일 이름에 해시값을 붙여, 배포 시에 변경된 파일 이름만 해시값을 변경해주는 방식 파일 이름에 태그를 붙이는 방식인데, naver 메인페이지 html 헤더 보니까, 태그에 수정날짜를..
[Django 웹 프로젝트] 4. 댓글(vue.js)을 django 에 붙이기 (2021-08-03)
[배경]댓글도 django 에서 url 엔드포인트 잡고 작업했더니, 댓글을 CRUD 가 일어날 때마다 전체 화면 렌더링이 다시되었다. 팀원들 모두 그 때 당시에는 이게 불편하다고 느꼈는데, 아무도 해결할 수 있는 사람이 없어보여서, 내가 뚝딱 해버리자는 마인드로 시작했다. 왜냐하면 django 로 템플릿 렌더링까지 다 해야하는 상황에서, 프론트팀 3명은 웹 디자인만 해주고, 백엔트팀(선배 한명과 나)이 모든 기능을 개강전까지 다 마무리를 해야하는 시기였다. 백엔드 쪽에서는 웬만한 기능은 다 구현이 되었고, 자잘한 버그와 프론트쪽에서의 폼 유효성 검사 등을 추가해야했었다. 진짜 심적으로 엄청 급하게 했던 기억이 있다. 첫날에 검색하면서 좀 알아보다가 비동기 , Restful 등의 개념을 알게 되었고,..
[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)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtyLBm%2Fbtq89MGvLqU%2FFuaUGURwYB1ZGaxhtWnfd0%2Fimg.png)
[Django 웹 프로젝트] 2. 장고 폼(forms) 도입 => 코드 간결화 (2021-04-28)
[배경]슬슬 진행하고 있던 웹 제작 프로젝트가 거의 끝나서 그 동안 작업했던 과정들을 남겨볼까 한다. 동아리에서 사용할 웹페이지를 제작 중이다. 동아리 내에서 서로 강의하고, 배우는 것을 중요하게 생각해서, 지금은 강의 관련 앱을 구현 중이다. 처음으로 맡았던 부분은 공모전 게시글 CRUD 부분이다. 공모전에 관심이 있는 사람이 게시글을 직접 작성하여 동아리 내에서 같이 참가할 팀원을 모집하는 방식이다. 이 프로젝트에 중간 합류하고 처음하는 작업이었기 때문에, 다른 백엔드 개발 맡으신 분이 어떻게 코드를 짜고 있었는지를 참고하면서 스타일을 최대한 맞추려고 했다. 그런데, 그 분의 코드를 보면서.. 중복되는 코드가 너무 많고, 가독성이 떨어진다고 느꼈다. 1. 중복되는 코드 함수화 예를 들어 게시판..
![[Django 웹프로젝트] 1. 어쩌다 생애 첫 프로젝트 (2021-04-04)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxPFqn%2Fbtq1JAUBLlk%2F8CxwOZGNmOrChaoTuuX1Ok%2Fimg.jpg)
[Django 웹프로젝트] 1. 어쩌다 생애 첫 프로젝트 (2021-04-04)
어쩌다 시작하게 됐다. 설계단계부터 시작하는 건 아니고, 동아리를 새로 들어갔는데, 백엔드를 한명 뽑고 있어서 지원했다. 와서 보니 설계는 다 끝났고 이제 막 게시판 CRUD 정도 마친 상태였다. 나는 살면서 협업 프로젝트는 처음인지라 나중에 공부해야지~ 라며 Git, github도 모르던 상태고 데이터베이스도 쿼리문만 다룰 줄 아는 정도다. 근데 내 블로그 이전 글 '파이썬을 공부하게 된 이유'를 보면 알겠지만 대용량의 트렌젝션을 처리하는 백엔드를 개발해보고 싶다는 생각도 있었고, 혼자만 방에 틀어박혀서 공부하는 것이 내 발전에 그렇게 큰 영향을 미치고 있지도 않다는 생각이 들던 참이었다. 그래서 빈틈 투성이지만 열심히 공부할 각오로 지원해서 시작하게 되었다. 프로젝트 팀장 형이 생각보다 할 줄 아는게..