삼육대학교의 에브리타임 시간표는 어떻게 업데이트 될까?

0verfl0w767·2024년 1월 20일
2
post-thumbnail

삼육대학교의 에브리타임 시간표는 어떻게 업데이트 되는지 알아보도록 하자.

그 전에 어떻게 에브리타임 시간표 업데이트가 이루어지는지도 알아보자.


에브리타임 시간표가 업데이트 되는 방법?

엥? 이게 무슨 소리지? 자동으로 되는 줄 알았어요!

일반적으로 대학교에 제공되는 Open API(Application Programming Interface)가 있다면 에브리타임에서 자체적으로 데이터를 확인한 후 자동으로 시간표 업데이트가 된다.

또는 교무처나 학사처가 공지사항에 정리된 시간표 정보를 엑셀 파일이나 사진으로 자료를 올린다던지, 총학생회 또는 공식 기관에서 자료를 만들어 엑셀 파일을 전달하는 방법이 있다.

제공되는 API가 없더라도, 대학교에서 제공하는 강의정보를 엑셀 파일로 만들어 에브리타임 문의를 통해 전달하게 되면 검토 후에 시간표 업데이트가 진행된다.

문의하기: https://everytime.kr/support/qna?category=etc

만약 에브리타임 시간표 업데이트를 하고싶다면 정리된 시간표 엑셀 파일을 만들어 위에 문의를 통해 전달하게 되면 검토 후에 반영해준다. 필자는 에브리타임에서 엑셀 파일만 취급하는 것으로 알고 있다.

여기서 문제가 발생하게 되는데..

우리 학교는 시간표가 업데이트가 계속 안 돼요!!

업데이트가 됐다가 한동안 안 되고 있어요!!

이렇게 위에 사진과 같이 에브리타임 시간표가 업데이트가 되지 않았다면 직접추가를 이용해 시간표를 직접 넣어야한다.

대학교에 API가 없고 교무처, 학사처, 총학생회 마저 시간표가 정리된 엑셀 파일이나 사진 자료를 만들어 제공해주지 않는다면 에브리타임 시간표 업데이트가 불가능하다.

그러면 남은 방법으로는 학생들이 직접 정리한 시간표 자료를 만들어 업데이트를 요청하는 것인데, 이걸 대체 누가 엑셀 파일로 만들어서 전달하냐 이말이다. 방법도 모르고 귀찮고..

하지만 몇몇 학교들은 학생들의 노력으로 시간표 파일을 만들어 건네주는 사람이 있었으니.. 업데이트가 계속해서 됬던 것이다. 그 학생들 마저 사라지면 시간표는 네버 업데이트..

우리 대학교도 예외는 아니었으니..

아니 대체 시간표 언제 업데이트 함? 일 안하나?

게시판에서 이 글들을 많이 봤을 것이다. 우리 학교는 항상 본 수강신청 후 며칠 뒤에 시간표가 업데이트 됬었다. 미리 시간표를 짤 수 없으니 다들 불편을 겪었다. 대체 왜지? 설마?

사실 남의 대학교의 이야기일 줄 알았던 우리 대학교도 해당하더라. 보자마자 눈물이 났어요..

확실하지는 않지만, 지금까지 교무처, 학사처, 총학생회에서 시간표를 제공해 준 적은 없는 것 같다. 만약 있었다면 왜, 언제부턴가 유기를 한 것인가?

지금까지 학생들이 직접 시간표 자료를 만들어 건네주고 있었다. OMG OMG OMG..

학생들의 노력으로 업데이트가 됐기에, 이 학생들마저 움직이지 않는다면 당연한 소리겠지만 시간표는 업데이트될 일도, 되지도 않는다..

만약 답답하면 직접 시간표 파일 만들어서 에브리타임에 문의하기 넣으면 된다. 이럴 거면 그냥 직접추가로 혼자 시간표 만드는 게 10,000배 더 빠르긴 하다. 귀찮으니깐.

그 귀찮은걸 해준 학생들에게 감사하며 살자.

본론으로

2023년 1학기 때부터 시간표 업데이트를 하게 되었다.

물론 도움을 준 유아교육과 학생이 먼저 파일을 올려 1차적으로 정보가 업데이트되고 제공 받은 양식을 토대로 추후 3월달 말까지 조금씩 변경되는 정보들과 함께 업데이트를 진행했다.

수강편람, 강의계획서는 계속해서 조금씩 바뀌기 때문에 정보를 제대로 수정해주지 않는다면 에브리타임 시간표에서도 정보가 맞지 않는 문제가 생기게 된다.

그리고 사람이 직접 수작업을 해왔기 때문에 오타나 누락, 정보에 대한 검수 또한 제대로 안됬을 뿐더러, 잘못된 정보가 업데이트 됬을 때가 있었다.

시간표를 작업하는 사람도 기다리는 사람도 모두가 안타까운 상황인 것 같아 모두에게 도움이 될 수 있게 시간표 자동화 프로그램을 만들기로 결정했다.

개발 시작

기초 개발 기간 : 2023.2.5 ~ 2023.2.6
유지 보수 기간 : 2023.2.6 ~

이제 컴퓨터공학부 학생으로써 능력을 발휘할 타이밍이 아닌가?

보통 떠오르는 아이디어가 있으면 바로 만드는 편이라, 바로 머릿속에서 구상한 대로 만들었다. 다행히 막히는 부분이 없어서 그런지 금방 만든 것 같다.

기초 개발이 끝난 뒤로는 유지보수를 하면서 코드나 구조를 지속적으로 리팩토링하여 문제가 되는 부분들을 개선해 나갔다.

개발에 사용된 기술

Python3, PyPy3, Beautifulsoup, Selenium, Openpyxl

만들기 전, 빨리 결과를 보고 싶어서 Python을 채택, 그리고 웹을 크롤링 해야 되기 때문에 무난한 Beautifulsoup과 Selenium 라이브러리들을 사용하였다.

물론 비 공식적인 루트로 API를 이용하여 데이터를 뽑아낼 수 있지만, 크롤링으로 만들었다. 현재는 크롤링 수집이 아닌 API을 이용하여 시간표가 업데이트 되고 있다.

처음에는 Selenium만 사용하여 만들었는데 속도가 매우 매우 느렸기 때문에 Beautifulsoup도 같이 사용하여 속도를 매우 향상 시켰다. 전보다는 300% 정도 향상 시켰다.

번외로 PyPy3가 Python3보다 속도가 더 빠르더라.. 그래서 같이 번갈아 가면서 썼었다. 근데 나중엔 속도가 똑같더라. 뭐지? 분명히 더 PyPy3가 빨랐는데..

이 뒤로 데이터를 엑셀로 변환을 위해서 Openpyxl을 썼는데 docs가 부실한건지 내가 멍청한건지 정보를 찾는데 애좀 썼었다. 정보가 많이 없어서 고생했다.

개발 속 고난

iframe in iframe in iframe in ...

크롤링 개발 전에 사이트 코드를 어느정도 분석을 진행 한 뒤로부터 코드를 짜면서, 이 두 가지를 반복하게 되는데 개발자 도구 -> IDE에서 코드 짜기 -> 테스트 하기 -> ... -> 무한 반복

그런데 시작 전에는 몰랐다. 엄청난 고난이 기다릴 것을......

우리 통합관리시스템 사이트는 앞 단을 WebSquare을 사용하는데, 코드가, 구조가 너무 난해 그 자체였다. 선택, 클릭도 안먹고 정보도 안갖고 와지고..

WebSquare이란, 위지위그 개발 도구가 포함된 HTML5 웹 표준 UI 플랫폼 어쩌고... 하.., 정말 쓰레기 같다.. iframe이 대체 몇 갠지? iframe > iframe > ..

계속 바꾸고 고치고, WebSquare 다루기 마스터가 되어버린.. 우리 학사 웹을 크롤링 해본 사람은 알 것이다. 정말 쉽지 않았다. 되게 난감했던 기억이.

데이터 수집 및 가공

단과대학, 학부(과) 정브를 토대로 정보 수집 ...

이렇게 모든 데이터들이 수집과 가공되어 저장된다. 이 데이터는 나중에 시간표 용도 뿐만 아니라 다양하게 이용해 쓸 수 있다. 예시로 강의 관련 서비스에 좋은 정보가 될 수 있다.

이때 강의계획서와 수강편람으로 두 개의 정보가 있는데 두 개 다 수집한다. 이유는 두 개의 정보가 약간 씩 다르다. 두 개의 DB가 서로 다르다.. 왜그런건지.. 학교가 이상한 듯...

예전에는 데이터를 수집하고 가공하는데 3분 넘게 걸렸지만, 현재는 로직이 많이 개선되어 1분 정도면 완료된다.

데이터 변환

수집된 데이터를 엑셀 파일로 변환 ...

에브리타임에서는 시간표 정보를 엑셀 파일만 취급하기 때문에 틀에 맞춰 여러 데이터들을 엑셀 파일로 정보를 변환 해주기만 하면 끝난다. 엑셀 파일만 받는 걸로 알고 있다.

이 변환기의 핵심적인 부분은 가공되었던 학교의 수강편람, 강의계획서의 데이터까지 동시에 비교하여 데이터의 무결성을 체크하게 된다. 만약 문제가 있다면 어디부분이 문젠지 짚어준다.

각 학부(과)마다 오류, 누락, 상태까지 최종적으로 확인하고 시간표 상태 보고를 할 수 있게 해놨다. 몇 번 검수를 통해 데이터를 확인한 후 최종적으로 엑셀 파일로 저장되게 된다.

결과

데이터 수집 -> 데이터 가공 -> 데이터 변환 -> 데이터 검수 -> 엑셀 파일

이렇게 에브리타임에 전달할 엑셀 파일 자료가 자동으로 완성되었다. 이제 에브리타임 문의를 통해 파일을 보내주기만 하면 검토 후 업데이트가 된다. (메일로 검토된 결과를 알려준다.)

만약에 메일로 검토 결과가 거부가 됐다면, 시간표 양식 또는 데이터 문제로 인해 안 받아줄 수 있다. 거부된 사유를 물어보면 알 수 있으니 문의할 때 정확히 물어봐야 한다. (답변은 잘 해줌.)

결과물

크롤링 프로그램 : https://github.com/syu-kr/lecture.syu.kr-suwings

변환 프로그램 : https://github.com/syu-kr/lecture.syu.kr-everytime

구조 개선

한 파일에 몰빵했던 기능들을 객체지향적으로 !

이랬던 구조가

호우! 깔끔!

마지막

2023년 1학기, 2023년 2학기, 2024년 1학기, ...

강의계획서, 수강편람은 개강하고 나서도 2주 정도는 계속 조금씩 데이터가 바뀐다. 그래서 변경된 데이터를, 다시 엑셀 파일을 보내줘야 한다.

이렇게 자동화 되기 전까지는 누군가가 일일이 정보를 넣어 업데이트를 했는데, 학교가 정보를 늦게 올리거나 하면 그 정보대로 업데이트가 되버린다.

교수도 장소도 시간도 바뀌고 이래버리면 정보에 문제가 생긴다. 심지어 과목명, 교수명까지 틀려버리면 에브리타임 내에 강의평가 데이터도 틀어져버린다. 데이터가 분리된다.

그래서 꾸준히 정보를 제공하여 학생들의 시간표를 짜는데, 이용하는데 문제가 없도록 노력하고 있고 개강 전, 수강신청 전에 학생들이 시간표를 짤 수 있도록 작업하여 업데이트를 하고 있다.

마지막으로 2023년 이전까지 에브리타임에 시간표를 만들어 제공해준 학생들에게 감사인사를 전한다. 또한 도움을 준 유아교육과 학생에게 감사인사를 전한다.

0개의 댓글