Skip to content

giljabi/eip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

131 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

은퇴란 단어가 낯설지 않는 이제사 취득했습니다. 공부를 시작하면서 gpt와 함께 후다닥 만들었지만 지하철에서 필기 공부할때 많은 도움이 되었습니다.

My Quiz...

  • 만든 이유, 정보처리기사 자격증 취득을 위한 필기시험 대비
  • 각 자격증 시험 문제를 관리, 풀이할 수 있는 반응형 웹 프로젝트
  • Demo: https://eahn.kr
  • http://localhost:8888,

2024.12.20

  • 등록된 문제 수 추가

img.png

img.png

2024.12.12

  • 모든 사용자 AI해설 기능 사용가능하게 변경하고 서버에 적용, 정보처리기사에서 요구하는 답과 다른 경우가 있음

img.png

img_1.png

2024.11.28

img.png

  • 정답확인

img.png

  • 결과확인

img.png

Swagger

  • 전체 컨트롤러를 확인

img.png

build & run

database

  • postgresql db 생성
CREATE USER mydbuser WITH password 'mydbuser';
CREATE DATABASE eipdatabase OWNER mydbuser ENCODING 'UTF8'; 

build

mvn clean package -DskipTests

run

  • 민감정보 암호화를 하는 경우, JasyptEncryptionExample.java 참고해서 위에서 만든 사용자, 비밀번호, URL을 암호화하고 암호화키를 run.sh에 추가
* run.sh
```shell
#!/bin/sh
APP_NAME=eip-1.0.jar

PID=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
    echo "Application is not running."
else
    echo "Killing application with PID: $PID"
    kill -9 $PID
    echo "Application terminated."
fi

echo "Start EIP application"
nohup /usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar -Dspring.profiles.active=prod -Xms256m -Xmx256m -Djava.net.preferIPv4Stack=true -Duser.timezone=Asia/Seoul -Djasypt.encryptor.password=암호화키 $APP_NAME > /dev/null 2>&1 &

1. 로그인

  • 문제 등록기능으로 운영자만 사용

url: /usr/login

id: admin@admin.com
password: qweqwe123

2. 관리자 기능

문제 배치등록

데이터 파일 구조

  • 기출문제는 보통 pdf로 구할 수 있으며, pdf를 text로 변환하여 문제를 등록할 수 있도록 함
  • sample code : python/exam.py
  • pdf파일 변환 SW를 사용해도 완벽하게 되지 않으므로 아래와 같은 형식으로 완성해야 함
  • {{qif:0,cif:1}}: qif: 질문지에 이미지가 있는(1:true) 경우 question.questionimageflag에 true 저장, cif: 선택지가 이미지인 경우(1:true)를 구분해서 question.choiceimageflag에 true 저장하고, 이미지 경로를 imageurl에 함께 저장
  • 문제당 5줄, 문제 1줄, 선택 4줄로 항상 구성해야 함
  • 이미지 파일은 별도 문제수정 화면에서 개별로 저장해야 함

Line 1: 시험정보

  • ExamNO(시험차수): examno 테이블에 있는 ID
  • 과목ID: subject 테이블에 있는 ID
### ExamNO:8, 과목ID:2

Line 2~501: 질문, 선택지 정보는 5줄로 구성

  • {{qif:0,cif:1}} : 질문에 이미지 유무(qif), 선택지에 이미지 유무(cif)를 구분, 이미지가 없으면 생략
  • 아래 이미지와 같은 문제는 qif:1, 배치 등록시 question.questionimageflag, question.choiceimageflag에 true 저장 question.imageurl에 이미지 경로(/images/q/2022/{id}.png)를 저장하므로 이미지 부분만 작성 후 복사
select no, name, imageurl, questionimageflag, choiceimageflag
from question

img.png

  • cif:1, 배치 등록시 choice.imageurl에 이미지 경로(/images/q/2022/{id}-{no}.png)를 저장되므로, 이미지는 작성 후 이미지 경로에 복사
select b.id, b.no, b.name, b.imageurl
from question a, choice b
where a.id=b.question_id

img.png

  • 이미지 경로와 파일명은 question(where qiq=과목ID and questionimageflag=true and examno_id=차수ID) chocie 테이블은 question와 join해서 선택지 이미지 경로와 파일명을 확인할 수 있음

img.png

  • 최종 배치 데이터(항상 5줄 유지해야 함)
{{qif:1,cif:1}}13. 그림과 같이 점 O를 중심으로 반지름이 a(m)인 구도체 1과 안쪽 반지름이 b(m)이고 바깥쪽 반지름이 C(m)인 구도체 2가 있다. 이 도체계에서 전위계수 P11(1/F)에 해당하는 것은?
	1
	2
	3
	4

Line 502~511: 정답

  • 정답은 10줄로 구성하며 시작에 correct를 붙임
correct 4332314241
correct 1343411142
correct 3242234241
correct 1342342141
correct 2434122441
correct 3124324343
correct 2124412213
correct 2144133313
correct 4312244332
correct 4423334313

문제 수정/등록

  • 문제 관리는 로그인 후 사용
  • id: admin@admin.com, pass: qweqwe123

img_2.png img_4.png img_1.png

3. 문제풀이

url: /

img_1.png

최초 접속시 서버에서 cookie를 만들어 접속한 사용자를 구분

url: /questions/random/1/0

현재 예제 데이터는 정보처리기사 문제임
1: 시험종목(1: 정보처리기사)
0: 과목(0: 모든과목, 1:소프트웨어설계, 2:소프트웨어개발, 3:데이터베이스구축, 4:프로그래밍언어활용, 5:정보시스템구축관리)

3. 풀이결과

url: /questions/results/1

  • 시험종목: 정보처리기사(1)
  • 쿠키로 구분된 사용자의 풀이 결과

img.png

4. DB Model

ER


About

기사 필기시험 퀴즈

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published