목록💻 현생/📃 VIVA (22)
궤도
지난 2주간의 YOLOv3 설치 삽질이 지나고 드디어 이미지 라벨링을 시작한다. 안타깝게도 욜로 설치에 대한 정보를 이 블로그는 줄 수 없다. 난 하다가 포기하고 다른 팀원이 설치했기 때문에... 그래도 학습데이터를 위한 라벨링은 할 수 있다. 일단 난 아나콘다가 있으니 blog.naver.com/PostView.nhn?blogId=mingu216&logNo=221302426428 labelImg 설치법 (Windows 10 Anaconda+Python3.6) 확실한 방법은 아니는데 저도 Trial and Error을 통해 설치 했습니다. 과정을 설명 해 드리겠습니다. 일... blog.naver.com 이 블로그를 따라하자 lxml 다운로드 때 파이썬 버전을 알아야 하는데 그냥 아나콘다 cmd 열어서 ..
지난번에 미니모의고사를 만들었다. 만들었으면 그걸 관리하는 페이지도 있어야 한다. 그러니 이번에는 사용자가 만든 시험지를 볼 수 있는 시험지 리스트를 만들어보자. 시험지 리스트 routes/test.list.js(시험지 리스트) //미니모의고사 가져오기 //localhost:3001/api/test/list?stu_id=samdol router.get('/', async function (req, res, next) { let result = await models.student.findOne({ where: { stu_id: req.query.stu_id } }); const user = result.dataValues.stu_sn; //사용자가 보유한 미니모의고사 let test_list = awai..
지금 구현하고 있는 VIVA에는 항상 반복되는 코드가 하나 있다. let result = await models.student.findOne({ where: { stu_id: req.query.stu_id } }); const user = result.dataValues.stu_sn; 바로 stu_id를 pk인 stu_sn으로 바꾸는 이 코드이다. 이걸 모듈화해서 코드 중복을 없애도록 하자. routes 폴더 아래에 lib 폴더를 만들고 func.js라는 파일을 만들었다. idtosn.js로 할까 했지만 나중에 저기에 다른 것들이 더 추가될 수도 있으니까... routes/lib/func.js var models = require('../../models'); var user_sn = {}; user_s..
오늘은 사용자 오답노트의 문제를 기반으로 사용자 맞춤 문제를 제공하는 시험지를 만들어 볼 것이다. Q. 맞춤 문제면 딥러닝인가요? A. 아니요 사실 데베에 문제별로 해당 문제의 유형을 저장해놨다. 그니까 사용자가 오답노트에 넣어놓은 문제들의 유형을 뽑아내어 해당 유형의 문제들을 랜덤으로 가져오면 되는 것이다. 난이도 선택은 기획 때는 있었으나...지금은 없다. 메인 기능이 아니니까 빠져도 괜찮다... 그럼 생성이니까 post만 있으면 될까? 아니다. 미니모의고사 생성시 사용자는 시험지 생성에 참조할 오답노트를 선택할 수 있다. 그러니 get으로 사용자가 선택할 수 있는 오답노트를 알려줘야 한다. 선택 가능한 오답노트 보여주기 단순히 프론트에서 넘겨주는 stu_id로 사용자 찾아내서 그 사용자가 갖고 있는..
사건은 이렇게 발생했다. let pb_candidate = await models.problem.findAll({ attributes: ['pb_sn'], include: [ { model: models.workbook, where: { workbook_publisher: 'Gyoyuk' } } ], where: { pbtype_sn: { [Op.in]: type_list } } }); ~대충 sequelize로 join을 시도한 코드~ 그리고 이런 오류메세지를 만났다. workbook is not associated to problem 허어...그럴리가 없는데... models/problem.js workbook_sn: { type: DataTypes.INTEGER, allowNull: false, r..
우리의 앱에선 오답노트를 클릭하면 이렇게 노트에 있는 문제들을 하나하나 볼 수 있다. 보다시피 문제 삭제 기능도 있다. 프론트에서는 사용자의 아이디인 stu_id와 선택한 오답노트의 pk인 note_sn을 넘겨줄 것이다. 그럼 나는 해당 오답노트의 페이지들을 하나하나씩 반환해야 한다. 페이지는 문제, 답, 풀이로 구성되어 있으며 페이지네이션을 하려면 전체 문제 수도 넘겨줘야 하고 현재 문제가 몇 번째 문제인지도 알려줘야 한다. 그리고 각 문제들에 대한 삭제 기능도 구현해야 한다 오답노트 페이지 내가 넘겨줘야 하는 정보들을 다시 정리해보자 1. 노트 이름 2. 전체 문제 수 3. 현재 문제가 몇 번째 문제인지 4. 문제 이미지 5. 답안 6. 풀이 이미지 뭐가 많은 것 같지만 할 수 있다. 왜이렇게 화질이..
이건 처음에 CRUD 구현했을 때 이미 한 부분이지만 그냥 정리한다는 의미에서 적어본다. 사용자 정보 수정창이다. 프로필 사진과 닉네임 그리고 학년을 바꿀 수 있다. 정보 수정 routes/user.profile.js // Update userInfo //localhost:3001/api/user/profile/samdol router.put('/:stu_id', function (req, res, next) { const id = req.params.stu_id; let body = req.body; models.student.update({ stu_nick: body.stu_nick, stu_grade: body.stu_grade, stu_photo: body.stu_photo }, { where: ..
제목을 뭐라고 하면 좋을지 모르겠어서 저렇게 대충 썼다. 범용성이 떨어지는 제목이 됐으나, 이게 최선이었다. 아무튼 이 게시물에서는 내 책 리스트를 만들 것이다. 사용자가 보유한 책들을 일반교재/학원교재/오답노트로 나눠서 보여주고, 각 책들에 대한 삭제 기능과 오답노트에 대해서는 수정 기능도 넣어줄 것이다. 아 그리고 검색 기능에선 할 수 없던 오답노트 생성 기능도 넣을 것이다. 얘네들을 구현하면 된다는 것이다. 책 리스트 가져오기 사실 이건 이미 했었다. myunji.tistory.com/151 [백엔드] Node.js + Sequelize + MySQL 메인 화면을 만들어보자 지난 시간에 회원가입과 로그인을 구현했다. 로그인을 했으면? 이제 메인 화면이 나와야 한다. 우리의 메인화면 프로토타입이다. ..