본문 바로가기

대회 및 시험 경험

2023 대소고 교내 해커톤!

안녕하세요 벌써 2023 하계 교내 해커톤을 하게 되었네요,, 작년에 해커톤 했을 때가 생생하게 기억나고 몇 일 전이 그 때 인것 같았는데 시간이 엄청 빠른 것 같아요..! 이번 해커톤에서 저희 팀에 아이디어와 알게된점 느낀점, 힘들었던점 등등을 공유해볼려고 합니다..!

 

 

우선 저희 해커톤은 특별하게 진행이 되었습니다. 노벨 엔지니어링 해커톤이라고 모든 팀이 책을 정해서 팀이 같은 책을 다 읽고 나서 그 책에 대한 문제점을 찾아 IT 기술을 활용해 해결하는 해커톤이 주제 였습니다. 저희 팀의 책은 완득이라는 책을 골랐습니다..!

 

출처 : yes24

 

 

저희는 Padlet이라는 웹 사이트를 이용하여 문제점을 공유하고 찾았습니다..!

https://padlet.com/ljm9894/padlet-ya3iajlr55kf7yku

 

완득이

Padlet으로 만듦

padlet.com

 

최종 문제점으로 외국인의 대한 인식, 다문화 가정의 안좋은 인식 등을 문제점으로 지정하였습니다.

그래서 저희가 생각한 아이디어는 한국인과 외국인들을 공간적, 시간적 제약 없이 연결하고 소통할 수 있는 채팅 어플리케이션을 생각하게 되었습니다.!

 

whan 디자인

저희 어플리케이션의 이름은 Whan 이고 팀 구성은 서버 3 안드로이드 1명으로 구성되었습니다.

원래 자신의 전공으로 하면 웹 1, 서버 2, 안드 1로 구성되있었지만.. 웹하는 친구가 웹 하기싫다고 서버로 왔습니다

저는 이 해커톤에서 전체적인 서버 개발 역할을 맡았습니다.

 

클라이언트(안드로이드) : Kotlin,

서버 개발 : Nodejs(express), Prisma(ORM)

db : Mysql

Tool : figma, notion, visualstudio, androidstudio

배포 : Microsoft Azure Cloud

API : Naver Papago

 

whan 뜻


whan은 특별한 뜻은 없고 팀과 같이 고민을 하다 완득이 책의 내용에 대한 문제점을 찾아서 해결하고 있는 거니깐 완득이의 맨 앞글자 '완'을 영어로 따서 만든 이름입니다.

 

주요 기능


1. 로그인&회원가입

2. 프로필 등록

3. 다국어 번역 지원

4. 채팅 (위치기반으로 추천 뜨게)

5. 친구추가 및 삭제 등

 

구현된 기능은 로그인&회원가입, 프로필등록, naver papago api를 사용해서 영어에서 한국어 번역 기능 밖에 추가하지 못하였습니다. 채팅은 안드로이드 socket통신을 이용하여 개발해야 되는데 서버와 클라이언트 둘 다 socket 통신을 해본 적이 없어서 구현을 하지 못하였고 친구추가 및 삭제는 시간이 부족하여 개발을 마무리하지 못하였습니다. 

추후에 혼자서라도 이 기능들을 공부하여 코드를 수정해 완성 해볼 예정입니다.

 

 

완득이 깃허브 코드 보러가기 (미완성 코드...)

https://github.com/ikk-whan

 

ikk-whan

ikk-whan has 2 repositories available. Follow their code on GitHub.

github.com

 

 

힘들었던 점


우선 아이디어 짤 때 힘들었던 점을 공유해보자면.. 팀원끼리 소통이 너무 안되서 힘들었다. 같은 학교 친구지만 자주 얘기해 본 적 없고 어색한 친구여서 처음에 다들 아무도 말이 없었다. 나도 적극적인 소통을 하기 위해 노력했는데 다들 적극적이지가 않아서 아이디어가 빨리 나오지 않았다. 아이디어가 늦게 나와서 개발도 늦게 시작했다.  여기서 팀워크와 통솔력이 중요하다고 생각했다.

 

 

개발에서 힘들었던점


이번에 nodejs로 서버를 개발할 때 ORM으로 Sequelize를 시도해보았다. sequelize는 살짝 보기만 했던 기술이라 제대로 사용할 줄은 모르지만 구글링으로 하면서 할려고 했는데 유저 테이블과 프로필 테이블을 1:1 관계 설정할 때 사용법을 잘 몰라서 오류가 많이 났었다. 구글링을 보고 따라적었지만 오류가 자꾸 발생하고.. 시간은 점점가는데 멘탈은 점점 날아갔다. 결국 멘토(학교 선배)님한테 물어서 해결을 하였다. 되게 간단한 오류였는데 잘 모르는 내용이라 시간을 버렸다. 다음부터는 시간이 많이 부족한 해커톤에서는 할줄 아는 기술들을 활용하는게 좋을 것 같다. 

 

아이디어를 낼 때 무작정 생각없이 내다보니 아이디어에 우리가 쓸 줄 모르는 기술을 사용해야 되게 되었다. 그것은 바로 네트워크 소켓 통신.. 우리 어플리케이션에 가장 주요한 기능이 소켓 통신으로 하는 메신저 기능인데 그것을 팀중에서 아무도 해본사람도 없고 할줄 아는 사람이 없었다. 그래서 소켓 기능을 구현을 못하였다.. 사람이라고 비유를 하자면 몸뚱아리는 있는데 뇌가 없는 것이랑 같은 것이었다. 아이디어를 낼 때는 신중하게 내가 바로 적용할 수 있는 기술인지 생각하면서 내야할 것 같다.

 

 

 

개발에서 알게된점 


지금까지 클라이언트는 웹이랑만 통신을 해봐서 몰랐는데 안드로이드(앱)이랑 통신을 해보면서 알게 된점이 있다.

안드로이드는 쿠키를 담을 수 없다는 것..! 지금까지 개발을 하면서 처음 알게 된 지식이였다. JWT 토큰 로그인 방식을 사용할 때 나는 항상 서버에서 클라이언트로 쿠키로 토큰을 담아 보내줬는데 안드로이드는 쿠키가 없었다. 그것을 알게 된건 제출마감시간까지 1시간 전... 빠르게 쿠키에서 헤더에 토큰을 담는 방식으로 바꿨다. 항상 해커톤에서는 하나 이상은 꼭 알아 가는 것 같다. 그리고 추가로 서버 테스트를 할 때 Postman이라는 Tool을 사용할 때 헤더에서 내용을 보내는 방법도 알게 되었다.

 

API요구서를 작성할 때 swagger라는 api를 작성해주는 도구? 가 있는데 나는 그것을 사용할 줄을 몰라서 노션에 테이블을 만들어서 정리를 했다. 해커톤이 끝나면 swagger에 대해서 공부하고 프로젝트에 적용해봐야 할 것 같다.

 

 

느낀점


항상 해커톤은 정신적 육체적 고통을 가져다 주지만 그에 대한 지식으로 보상이 된다. 만약 성과가 좋다면 금전적으로도 보상을 받을 수 있다. 이번에도 힘들었긴 하지만 얻어간건 분명히 있는 것 같다. 상은 못 탔지만 다음번에는 이번 해커톤에서 생긴 문제점들을 잘 보완해서 수상까지 해보고 싶다. 방학까지 이제 일주일도 안남았는데 방학해도 흐트러지지 말고 개발 공부 열심히해서 취업 좋은데 해보자~!

 

 

긴 글 읽어주셔서 감사합니다😊