군장병 해커톤 참여 도중, 대학 연합 해커톤이 개최된다는 소식을 전달받았다 고려대학교, 성균관대학교, 숙명여자대학교, 연세대학교, 중앙대학교, 포항공과대학교 위 6개 대학 학생회가 주최하고 성균관대 SW중심대학사업단에서 주관한 UNI-DTHON 2021은 해커톤과 데이터톤 두가지 트랙으로 나누었고, 위 6개 대학의 SW전공 학생만 참가 가능하였다 이때 정말 참가할지 말지 고민 많이했다... 내가 과연 저 해커톤에 낄 능력이 있는지 의구심도 들고 팀원들에게 민폐를 끼치지 않을까 걱정도 들었기 때문이다 😢 결국 계속 핑계되면서 도망쳐봤자 아무것도 남지 않을 것을 알기에 용기내서 신청서를 작성하였고 이제와서 돌이켜보면 정말 잘한 선택이였다 팀원 중 벡엔드개발자가 나 혼자였기에 다행히 1인분을 해낼 수 있었고 ..
20년 3월부터 공군에서 군복무를 시작한 필자는 21년 8월, 미복귀 휴가 전 좋은 기회를 잡게 되었다 과학기술정보통신부와 국방부, 정보통신산업진흥원이 주관/주최하는 2021 군장병 공개SW 온라인 해커톤이 개최, 참가대상이 군장병 및 군무원 이라 군인 신분으로서 참가할 수 있는 최고의 기회라고 생각했기에 바로 참가 신청 하였다 https://osam.kr/hackathon/main 국방오픈소스아카데미 osam.kr 코로나 판데믹 전까지는 군장병 해커톤도 일반적인 해커톤과 마찬가지로 참가자들은한 장소에 모여 짧은 기간동안 프로젝트를 진행했었다고 한다 하지만 코로나로 인해 작년부터는 해커톤 기간을 늘리는 대신 비대면으로 팀원과 협력하여 프로젝트를 진행하도록 변경되었다 군장병 특성 상 모두가 자기계발시간이 ..
Github https://github.com/osamhack2021/app_web_IoT_UMCS_Team60/tree/main/WEB/Server GitHub - osamhack2021/app_web_IoT_UMCS_Team60: 비대면이동통제시스템 비대면이동통제시스템. Contribute to osamhack2021/app_web_IoT_UMCS_Team60 development by creating an account on GitHub. github.com Goal 간부(관리자)의 병사(사용자) 관리 체계 벡앤드 구축 User (App) 병사는 스마트폰 어플리케이션(Flutter)을 사용하여 체계 접속 시설 출입 시마다 서버로 출입 정보를 넘겨주므로 병사 정보는 앱에 저장되어 있어야 함초기 로그인..
소켓통신이 다시 말썽을 부리기 시작했다. 서버 내에서 빌드된 Vue와 Express간 통신은 잘 작동한다. 그런데 개발을 위해 local Vue에서 서버 Express로 통신을 하려 하면 소켓 연결은 되지만, 소켓 내 session 인증이 안된다... 😇 내부에서는 되지만 외부에서 안된다? CORS 오류의 냄새가 난다. socket.io와 passport를 연동해주는 passport.socketio 라이브러리의 공식 문서에서 cors 관련 내용을 찾아봤는데, 역시 있었다. 문서를 요약하자면, cors가 발생할 경우 client에서 연결 요청 시 session id query에 실어주면 된다고 한다. 그렇다면 해야할 일은 두가지로 나뉜다. 로그인 후 브라우저 cookie에 저장되는 session id를 V..
하루 종일 Vue -> Server socket.io 통신 문제만 붙잡고 있었다… 단순히 소켓연결만 구현하는 것은 어렵지 않지만, 내가 만든 프로젝트의 구조는 로그인 한 후 소켓에 연결해야 사용자를 식별할 수 있다. 하지만 기존의 예제들은 모두 Vue가 실행되자 마자 socket 연결을 시도한다. 이를 해결하기 위해 오랜 삽질을 했고... 결국 해결하였다. 라우팅할 때 socket 재접속하기 socket.io-client 라이브러리로 client 측 socket.io 접속을, Vue에서 socket.io를 편히 사용하기 위해 vue-socket.io-extended 라이브러리를 사용하였다. vue-socket.io 가 아니다!! // src/main.js import io from 'socket.io-c..
프로젝트 구조 상 사용자는 jwt로 인증하고, 관리자는 session으로 인증하게 구현하였다. socket 통신도 이와 같은 방향으로 구축하기로 했다. 사용자/관리자의 namespace를 나누고, 사용자 쪽으로 연결 요청이 오면 jwt 인증을, 관리자쪽으로 연결요청이 오면 session 인증하도록 말이다. 구현 socket 통신 socket.io 라이브러리를 사용하여 구현하였다. const io = require('socket.io')(server); var userio = io.of('/user'), managerio = io.of('/manager'); 우선 사용자와 관리자의 namespace를 나눈다. 사용자 jwt 인증 io.on('connection', async (socket) => { try..
MySQL Build Error https://ninano1109.tistory.com/132 Docker 도커 MySQL 버전 호환 문제(feat.Mac M1) # DB dockerfile FROM mysql:5.7 ENV MYSQL_USER=root ENV MYSQL_PASSWORD=rkdbs123 ENV MYSQL_ROOT_PASSWORD=rkdbs123 ENV MYSQL_DATABASE=visitors COPY ./scripts/ /docker-entrypoint-initdb.d/ 위와 같이 MyS.. ninano1109.tistory.com Dockerfile에서 MySQL을 아래와 같이 불러오면 해결! FROM --platform=linux/x86_64 mysql:5.7 컨테이너 내에서 한글 ..
우분투로 프로젝트 전용 서버를 구축해서 사용중이였다. 그런데 서버로 요청을 보내면 4번 중 1번 꼴? 로 502 Bad Gateway가 발생하였다... 배포 환경은 pm2에 watch옵션을 사용하여 코드가 변경될 때마다 restart를 할 수 있도록 구축되어 있었다. 우연찮게 pm2 logs 명령으로 로그를 확인하게 되었는데... 로그인 시 세션을 저장하는 sessions폴더가 문제였다... 세션을 localstroage에 저장하도록 했는데, 이 때문에 생성/변경할 때마다 pm2에서 코드를 재시작 했던 것이였던 것 같다. 재시작 하는 사이에 요청을 하게 되면 502 error가 발생했던 것이구... 해결 방법은 process.json 파일 생성, ignore_watch에 무시할 파일/폴더를 입력해주면 된..
Comment