제가 직접 경험해본 결과로는 게더타운 출석체크 자동화를 위한 Python Flask 서버 구축 방법을 소개합니다. 이 글을 통해 생생한 개발 과정과 그 결과들을 자세히 알아보세요.
Python Flask 서버 구조
Python Flask는 쉽고 빠르게 웹 애플리케이션을 구축할 수 있는 프레임워크라서, 게더타운의 출석 체크 시스템을 만들기에 적합해요. 제가 직접 확인해본 결과, 이 시스템은 다음과 같은 구조로 진행됩니다.
- 학생명단 가져오기
데이터베이스에서 현재 기수의 학생 목록을 가져옵니다.
접속자 명단 수집하기
Flask 서버가 Node.js를 통해 연결하여 접속한 학생들의 정보를 실시간으로 확인할 수 있습니다.
출석 정보 처리
- 출석 및 퇴실 정보를 가져와 학생들의 현황을 관리합니다.
여기서 노드에서 학생들의 접속 정보를 가져오는 과정을 자세히 살펴보겠습니다.
- 학생명단 가져오기
학생명단을 가져오는 것은 아주 중요해요. 이를 위해 다음과 같은 코드를 사용했어요.
python
@app.route('/get_user_in', methods=['POST'])
def get_user_in():
data = getuser_atten(session['gather_space'])
return jsonify(data), 200
이 코드는 Flask 애플리케이션의 /get_user_in 경로로 POST 요청을 보낼 때 현재 기수의 학생 출결 정보를 가져오는 역할을 해요. 제가 직접 경험해본 결과, 세션에 저장된 데이터를 기반으로 출결 정보를 쉽게 가져올 수 있었어요.
- 어떻게 작동하나요?
- 세션에 저장된
gather_space값을 사용해, 회사 서버의 데이터베이스에 쿼리를 넣어 출결 정보를 가져와요. - 출결 정보는 JSON 형식으로 반환되어 사용자에게 전달됩니다.
2. 게더타운 접속자 목록 가져오기
제가 분석해본 결과, 게더타운에 접속한 학생들의 목록을 가져오는 것은 매우 중요한 작업이에요. 그래서 다음의 코드를 사용했어요.
python
@app.route('/get_gw', methods=['POST'])
def get_gw():
filename = f'{secrets["DATA_SRC"]}/gethertown/{session["gather_space"]}_player_names_{todays}.txt'
gw_data = get_login_users_from_file(filename)
return jsonify(gw_data), 200
이 코드는 지정된 파일에서 학생들의 접속자 리스트를 가져와 JSON 형식으로 반환해요. 실시간으로 접속 중인 학생들을 확인할 수 있었던 순간, 어쩌면 교사들이 느끼는 편리함을 제가 고스란히 느꼈던 것 같아요. 리스트를 활용하여 데이터를 처리하는 방식도 아주 유용했답니다.
3. 학생 정보 페이지 가공 및 출력
학생들의 정보를 화면에 출력하는 것은 중요한 작업이죠. 이를 위해 사용한 코드는 아래와 같아요.
python
@app.route('/atten', methods=['GET', 'POST'])
def atten():
if 'logged_in' in session and session['logged_in']:
atten_users = [atten_user['name'] for atten_user in sslc_db_query(sql, 'txt')]
return render_template('index.html', atten_users=atten_users, gather_space=session['gather_space'])
else:
flash('로그인이 필요합니다.', 'error')
return redirect(url_for('index'))
이것을 통해 로그인된 학생들의 출결 정보를 포함한 페이지를 제공합니다. 실제로, 제가 이 기능을 활용해 보니 학생들이 자신의 출결 상태를 한 눈에 확인할 수 있어 매우 도움이 되었어요. 리디렉션 처리로 사용자 경험을 높일 수 있었던 점도 놓칠 수 없는 부분이에요.
출석 정보 시각화 및 저장
출석 정보를 시각화하고 저장하는 기능도 추가했습니다. 매일의 출석 정보를 엑셀 파일로 저장하는 것을 가능하게 했어요.
1. 일일 출석부 엑셀 파일 저장
학생들의 출석 정보를 주기적으로 저장하기 위한 코드는 아래와 같아요.
python
@app.route('/download_excel', methods=['GET', 'POST'])
def download_excel():
atten_th = request.args.get('atten_th', type=int)
atten_type = request.args.get('atten_type', type=int)
atten_name = request.args.get('atten_name')
atten_s_date = request.args.get('atten_s_date')
atten_e_date = request.args.get('atten_e_date')
excel_file = get_atten_file(atten_th, atten_type, atten_name, atten_s_date, atten_e_date)
return send_file(excel_file, as_attachment=True, download_name='출석부.xlsx')
이렇게 함으로써 학생들의 출석 및 접속 정보를 문서화하는데 큰 도움을 주었어요. 실제로 출석 정보를 체계적으로 정리하는 데 있어 이 기능은 매우 유용했어요. 더 나아가 이 정보를 직원들과 공유할 수 있어 편리했답니다.
2. 기간별 출석부 저장
학생들의 출석 정보를 기간별로 정리하는 기능도 구현했습니다. 이를 통해 학기나 특정 이벤트에 따라 학생들의 출결 상태를 쉽게 확인할 수 있어요.
자주 묻는 질문 (FAQ)
서버 구축에 필요한 환경은 무엇인가요?
Flask를 사용하면 Python만 있으면 됩니다. 간단히 Flask 패키지를 설치하고 서버를 설정할 수 있어요.
노드.js와 어떻게 연동하나요?
노드.js는 데이터 처리의 효율성을 높여주며, Flask와 REST API 방식으로 연동할 수 있습니다.
데이터 보안은 어떻게 관리하나요?
세션 기반으로 관리하여, 로그인한 사용자만 데이터에 접근할 수 있도록 설정했습니다.
학생의 출석 정보를 어떻게 시각화하나요?
출석 정보를 시각적으로 보기 쉽게 HTML 페이지에 렌더링하였고, 그래프 등의 시각화 툴을 추가로 활용할 수 있습니다.
이처럼, Flask를 활용한 자동화 서버 구축은 효율적이고 관리하기 쉽게 만들어줍니다. 필요한 기능을 추가하며 경험을 쌓아가는 과정은 꽤 흥미로웠어요.
키워드: Python, Flask, 게더타운, 출석체크, 자동화, 웹개발, 데이터베이스, 학생정보, 서버구축, 엑셀, 출석부
