linkmoa
Django Project
※링크모아는 멋쟁이 사자처럼 7기 해커톤프로젝트로 코드 리팩토링이 필요합니다.
Description
- 링크모아는 '서로의 지식을 연결하다' 라는 모토로 대학생들이 힘든 전공 공부 등에 대한 자료를 공유하기 위한 목적으로 만든 커뮤니티 사이트입니다.
- 사이트는 크게 마이페이지, 공유게시판의 두 부분으로 나뉠 수 있습니다.
- 사용자는 마이 페이지에서 '링크를 담고있는 메모'(이하 메모) 를 작성, 수정, 삭제, 디렉토리로 관리, 태깅, 공유 등을 할 수 있습니다.
- 사용자는 공유 게시판에서 메모를 다운로드, 검색, 정렬, 태그클라우드 기능을 사용 할 수 있습니다.
- 해커톤당일 놀이용으로 자유게시판을 만들었으며 게시글 작성, 댓글기능 등을 임시로 추가하였습니다.
링크모아만의 특별한 기능 소개
링크모아는 각각의 URL 들에 들어갈 필요 없이 URL과 키워드만으로 해당 키워드를 포함하는 URL을 필터링 해줍니다.
-
위 사진은 링크모아의 자유게시판으로 크게 검색창, 컨텐츠 창으로 나뉩니다.
-
https://github.com/97e57e/linkmoa_chrome_extension 크롬 익스텐션을 통해 더 쉽게 사용가능합니다.
기술
- Front End
- 아직 SPA에 대한 지식이 부족하여 SPA는 도입하지 못함
- 대부분 Django template과 Jquery 이용
- Bootstrap의 Modal과 Carousel 사용
- 추후 React.js 또는 vue.js 도입
- Back End
- Python Django Framework
- 마이페이지, 공유게시판, 자유게시판, Accounts등 기능 단위로 각각의 앱 작성
- URL 필터링 기능을 위해 urllib 사용
- Tag 기능을 위해 Django-tagging 라이브러리 사용
- 처음에는 헤로쿠 배포를 시도 했으나 헤로쿠에서 tagging의 최신 버전이 잘 안불러와져서 실패.
- 이후 AWS EC2를 이용한 배포 성공
- Nginx Uwsgi와의 연동 필요
ToDo
크롤링 개선
- 처음엔 URL의 HTML을 BeautifulSoup를 이용해 파싱해여 필요 부분만 추출하여 검색했지만 시간이 오래 걸려 단순 urlopen 으로 방식 변경
- 변경된 방식에서 크롤링 속도 향상했지만 검색결과의 정확도가 떨어짐.
- 따라서 정확도를 위한 알고리즘 개선과 성능 향상을 위해 파이썬 멀티프로세싱을 도입해야할것으로 보임.
페이지네이션 개선
- 현재 페이지네이션 기능 중 검색 후 페이지네이션 혹은 게시글 정렬 후 페이지네이션 기능에서 매번 데이터 요청이 너무 많음.
- 더 효율적인 방법을 찾거나 ajax와 같은 비동기 통신을 통해 성능개선 필요
클래스형 뷰 도입
- 현재는 뷰의 모든 파트가 함수형 뷰로 작성되어있음.
- 필요에 따라 가독성 향상을 위해 클래스형 뷰에 대해 공부하고 도입 할 예정.
코드 리팩토링
- 인덴테이션 맞추기
- 변수명등 정리
- 반복되는 코드 함수화
- 주석 정리
- css파일 분할
License
The MIT License (MIT)
Copyright (c) 2019 JeongWon Lee