Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- React
- 공유 오피스
- Domination Game
- 구로 디지털 단지 사무실
- 좋은 리더란
- 느린 서버
- JS
- Django
- 스타트업
- html
- select tag
- iframe
- Regexp
- css
- 개발자
- typescript
- 테드스페이스
- ai로 앱 만들기
- 동료리뷰
- multiprocessing
- XFrameOptions
- python
- 빠른 서버
- 2인 사무실
- 구로 공유 오피스
- PM
- turborepo
- 리더
- select css
- javascript
Archives
- Today
- Total
개발하는 일상
Django 과제 채점 프로그램 만들기 본문
개발 배경
저는 코딩 교육을 하고 있습니다. 1~2주 마다 학생들이 제출한 프로젝트 과제를 채점해야 하는데, 여기서 두 가지 원하는 점이 생겼습니다.
- 20~30명 되는 학생들의 django project를 하나하나
python manage.py runserver
를 해서 채점하는 노동 과정을 줄이고 싶다. - 하나의 서버에서 모든 학생들의 프로젝트를 모아놓고 볼 수 있게 해서, 학생들이 다른 학생들의 프로젝트를 보고 자극 받게 하고 싶다. 혹은 잘 한 사람에게 더욱 동기 부여를 하고 싶다.
고려했던 방향
테스트 코드 작성
첫 번째 목표를 생각했을 때, 테스트 코드 작성이 떠올랐습니다. 실제로 2번 정도는 매 프로젝트 테스트 코드를 작성해서 채점을 진행해 보았습니다. 그리고 다음과 같은 문제점으로 다른 방법을 고민하게 되었습니다.
- 매 프로젝트마다 거의 채점하는 시간과 비슷한 들여 테스트 코드를 작성합니다. 제가 테스트 코드를 짜는 데 익숙해 질 수록 시간은 짧아지긴 하겠지만, 여전히 매주 코드를 작성해야 한다는 점이 좋지 않았습니다.
- 학생들의 기상천외한 예외들 때문에 결국 테스트 코드를 적용하지 않고 직접 채점하는 일이 매번 있었습니다. 물론 부족한 실력 때문이지만, 좀 더 효율적인 방법을 찾고 싶었습니다.
- 색다른 시도를 적용해본 프로젝트를 다른 학생들에게 보여 주고 싶었는데, 이런 프로젝트를 찾으려면 결국 테스트 코드와 별개로 프로젝트를 하나하나 실행해봐야 했습니다.
학생들의 모든 프로젝트를 하나의 서버에서 보여주는 방식
이 방식에서는 먼저 모든 학생들의 프로젝트 서버를 켭니다. 이 후에 또 다른 서버를 돌려서 학생 리스트 중 하나를 클릭하면 iframe을 통해 해당 학생의 프로젝트를 확인할 수 있게 하였습니다. 이 방식은 다음과 같은 장점이 있었습니다.
- 매주 다른 코드를 작성하지 않아도 됩니다. 항상 같은 코드로 학생들의 프로젝트를 한 번에 확인할 수 있습니다.
- 학생들에게도 다른 학생들이 한 프로젝트를 손쉽게 보여줄 수 있습니다.
물론 이 방법은 테스트 코드 작성과 달리 모든 학생의 결과물을 하나하나 봐야한다는 단점이 있습니다. 하지만 학생들의 결과물만을 보는 시간은 생각보다 오래걸리지 않았습니다. 실제로 저를 힘들게 했던 건 반복된 cd
와 python manage.py runserver
였던 것을 알게되었네요.
결과물
- 위 그림의 왼쪽에 학생들의 이름이 리스트로 출력되고, 클릭하면 해당 학생의 과제 실행 화면을 오른쪽에 iframe을 통해 출력해 줍니다.
- 앱 이름을 기반으로 iframe의 src url을 형성하는데, 만약 admin 페이지를 확인하고 싶다면 앱 이름에 admin을 입력하면 됩니다.
- 새 탭에서 열기를 통해 iframe이 아니라 새 탭에서 해당 학생의 과제를 확인할 수 있습니다. 문제가 있을 때 url을 바꿔가며 디버깅하기 위함입니다.
적용한 코드
글이 너무 길어지는 것을 방지하고자 따로 따로 작성하였습니다.
multiprocessing을 이용한 django 서버 한 번에 여러개 띄우기
Django에서 XFrameOptions 해제하기
python으로 한 번에 여러 github repo clone 받기
'개발 기록' 카테고리의 다른 글
나의 개발 역량을 알아내는 방법(메타인지) (0) | 2022.06.15 |
---|---|
Gitcabinet 개발기 #1 (0) | 2021.07.17 |
2020의 저를 소개합니다 (0) | 2021.02.21 |
처음 시작하는 사람들이 오해하기 쉬운 프로그래밍에서 말하는 함수 (0) | 2021.01.20 |
React와 Webpack으로 Youtube에서 한글 댓글만 보여주는 chrome extension 개발 하기 (0) | 2020.10.30 |
Comments