DAEHO PARK Portfolio
Profile
2017.03 - 2023.02
창원대학교
창원대학교
정보통신공학과
3.35 / 4.5
3.35 / 4.5
Skills
Frontend
Backend
Database
OS
Language
Tools
Projects
캡스톤 디자인 수업 및 졸업 작품 제작으로 진행한 개인 프로젝트입니다. 악기를 연주하는 사람들, 그 중에 초심자들이 악기를 조율하거나
연습하는 데 도움을 주기 위하여 안드로이드 애플리케이션을 제작하였습니다. 안드로이드 환경의 스마트폰에 부착된 마이크에 음악을 인식
시키거나, 직접 악기를 연주하여 나오는 소리를 인식시켜 음계를 도출하는 것이 주 기능입니다. 아날로그 신호인 음성을 디지털 신호인 주파수로
변환시키고, 그 주파수의 pitch를 찾아 음계표에 대응시킴으로써 도, 레, 미 등의 음계를 화면에 출력하며 로컬 환경에 텍스트 파일로 저장합니다.
이러한 기술을 이해하기 위하여 MATLAB, Python등을 활용하여 FFT (Fast Fourier Transform) 알고리즘을 활용하고, 주파수 스펙트럼을 시각화하여 주파수가 어떤 방식으로 도출되는지 알아보았습니다. 이후에 Java에서 같은 알고리즘을 구현하고, 대략적인 인터페이스를 제작하였습니다. 도출된 음계를 모바일 환경에서 활용할 수도 있지만, PC 환경이 편한 경우도 있기 때문에 구글 클라우드 API를 적용하여 텍스트 파일을 클라우드에 업로드하도록 제작하기도 하였습니다.
음성 처리라는 특정한 한 분야를 연구해 볼 수 있었고, 설계부터 제작, 발표까지 모두 혼자 진행함으로써 학습뿐만 아니라 개발 역량 또한 강화시킬 수 있었던 좋은 경험이라고 생각합니다.
이러한 기술을 이해하기 위하여 MATLAB, Python등을 활용하여 FFT (Fast Fourier Transform) 알고리즘을 활용하고, 주파수 스펙트럼을 시각화하여 주파수가 어떤 방식으로 도출되는지 알아보았습니다. 이후에 Java에서 같은 알고리즘을 구현하고, 대략적인 인터페이스를 제작하였습니다. 도출된 음계를 모바일 환경에서 활용할 수도 있지만, PC 환경이 편한 경우도 있기 때문에 구글 클라우드 API를 적용하여 텍스트 파일을 클라우드에 업로드하도록 제작하기도 하였습니다.
음성 처리라는 특정한 한 분야를 연구해 볼 수 있었고, 설계부터 제작, 발표까지 모두 혼자 진행함으로써 학습뿐만 아니라 개발 역량 또한 강화시킬 수 있었던 좋은 경험이라고 생각합니다.
여행을 갈 때 필요한 숙소, 교통, 액티비티를 예약하는 가상의 서비스에 대해 데이터베이스를 설계해 본 프로젝트입니다.
서비스에 대한 요구사항 분석, 논리적, 개념적, 물리적 설계를 하고, 각 컬럼에 대한 타입, 크기, 제약조건 등을 설정하는
등의 활동을 하며 클래스 다이어그램이나 ER 다이어그램 등의 산출물을 생산하였습니다. 본 프로젝트를 진행하며
데이터베이스에 대한 이해도를 높였고, 관심이 많아지게 되어, SQLD 자격증을 취득하기도 하였습니다.
개인별, 조직별로 할 일을 관리할 수 있는 서비스입니다. 백엔드 개발 프로젝트로, SpringBoot 환경에서 개발하였고, MariaDB를
활용하였습니다. 백엔드 부분에 DB를 연동하는 데 MyBatis와 JPA를 활용하였고, Spring Security와 JWT를 활용하여 인증과,
보안을 구현하였습니다. 저는 조직별 할 일을 관리하는 부분을 담당하였고, Rest 기반으로 API를 개발하기도 하였고, thymeleaf를
활용하여 html 기반으로 개발하기도 하였습니다. 기본적인 CRUD 기능을 구현함으로써 웹 개발에 대한 복기를 할 수 있었습니다.
사내에서 업무에 관한 정보나 가이드를 관리할 수 있고, 동료들과 질의응답을 할 수 있는 프로젝트입니다. Vue.js와 JSON Server를
활용한 프론트엔드 개발 프로젝트입니다. 완전한 서비스를 개발하기 이전에 대략적인 프로토타입을 만드는 것이 목표였으므로, 백엔드
부분과 데이터베이스를 따로 제작하지 않고, JSON Server와 통신하며 데이터를 주고 받았습니다. 또한, fly.io와 firebase를 활용하여
배포를 진행하였습니다.
저는 업무에 대한 정보, 가이드를 관리하는 일종의 위키 시스템을 개발하였습니다. 게시글의 작성, 수정, 삭제 기능을 구현하였고, axios 라이브러리를 활용하여 JSON Server와 비동기 통신을 수행함으로써 데이터를 주고받도록 제작하였습니다. 배포에 대한 지식을 쌓을 수 있었고, 컴포넌트 기반으로 반응형 웹을 만들어 볼 수 있었던 경험이었습니다.
저는 업무에 대한 정보, 가이드를 관리하는 일종의 위키 시스템을 개발하였습니다. 게시글의 작성, 수정, 삭제 기능을 구현하였고, axios 라이브러리를 활용하여 JSON Server와 비동기 통신을 수행함으로써 데이터를 주고받도록 제작하였습니다. 배포에 대한 지식을 쌓을 수 있었고, 컴포넌트 기반으로 반응형 웹을 만들어 볼 수 있었던 경험이었습니다.
마지막으로, 최종 프로젝트입니다. Vue.js에서 만든 프로젝트를 고도화하는 프로젝트로, 과정에서 학습한 모든 기술을 활용하여 하나의
완전한 웹 서비스를 개발하였습니다. 백엔드 부분을 SpringBoot와 Jpa를 활용하여 RestAPI를 만들었고, 프론트엔드를 Vue.js로
개발하였습니다. axios 등의 라이브러리를 활용하여 백엔드와 통신하였고, 배포는 aws로 하였습니다.
저는 이전과 마찬가지로 위키피디아 서비스를 개발하였습니다. 게시글을 작성, 수정, 삭제, 열람하는 기본 기능과 좋아요, 즐겨찾기 기능, 추천순 정렬, 변경 시 알림 등의 부가 기능을 개발하였고, 알림을 애플리케이션으로도 받을 수 있도록 제작하였습니다. 그리고, redis를 활용한 토큰 관리, 서비스 분리 등을 맡아서 수행하였습니다. 처음에는 모놀리식으로 개발한 이후에 서비스를 사용자, 조직, 위키, 질의응답, 동료 간 팔로우, 채팅 등 크게 6가지로 나누어 잠깐이나마 학습한 MSA를 활용할 수 있었습니다. 이외에는 서비스를 이용하는 회사 동료 간
개발 중에 몇 가지 문제가 있었습니다. 첫 번째는 서버가 다운되는 문제입니다. 데이터가 많은 서비스를 운영한다고 가정하여 데이터를 크롤링하여 DB에 입력하였고, 웹에 출력하려고 하니 서버에 많은 요청이 발생하여 원활한 운영이 되지 않았습니다. 이는 많은 데이터를 한 번에 불러와서 발생하는 문제였는데, 백엔드 단에서 Pageable이라는 라이브러리를 활용하여 페이징 기능을 제작하여 해결하였습니다. 한 번에 불러올 데이터를 10개로 설정, 총 데이터 수를 활용하여 페이지 수를 계산하였고, 프론트엔드 단에서 페이징을 할 수 있는 기능을 만들어 페이지 이동을 할 때마다 백엔드에 새로운 요청을 하는 방식으로 제작하였습니다. 많은 데이터를 불러오는 기능이 질의응답과 위키, 두 가지였는데, 위키에서는 게시판 형식으로 페이징을, 질의응답에서는 스크롤을 할 때마다 페이징을 하는 무한 스크롤 형식으로 제작하였습니다.
두 번째 문제는 질의응답 부분에서 좋아요/즐겨찾기 순, 최신순 정렬하여 순위를 매기는 컴포넌트가 존재하였는데, 컴포넌트에서 순위에 있는 특정한 게시글을 클릭하면 그 게시글의 상세 정보를 포함하는 모달을 띄우는 기능이 존재하였습니다. 그 모달이 최상단에 있어야 하는데, 순위를 표시하는 컴포넌트 세개가 모달을 가리는 현상이 발생하였습니다. css 스타일에서 z-index를 활용하여 해결하려고 하였지만, 컴포넌트가 세 개였기 때문에 두 컴포넌트가 모달에 가려지면 한 컴포넌트는 모달을 가렸기 때문에 잘 해결하지 못하였습니다. 그래서, 세 컴포넌트에 있는 코드를 하나로 합쳐 작성하여 모달을 최상단에 출력되도록 하여 해결하였습니다.
최종 프로젝트를 수행하면서 SpringBoot 내 라이브러리인 JWT를 활용하여 웹 애플리케이션에 보안을 적용하는 작업에 대해 더욱 잘 알 수 있었고, 프론트엔드 부분을 프레임워크를 활용하여 개발하고, 백엔드와 통신하는 방법도 있다는 것을 알게 되었습니다. 또한, 컴포넌트를 활용한 프론트엔드 개발 역량을 키울 수 있었고, 서비스를 나누어 개발하는 방법도 있다는 것을 알았으며, 무조건적으로 서비스를 나누어 개발하는 것보다는 필요에 따라 계획을 세워 모놀리식, 마이크로 서비스를 선택해야 한다는 것을 알았습니다.
저는 이전과 마찬가지로 위키피디아 서비스를 개발하였습니다. 게시글을 작성, 수정, 삭제, 열람하는 기본 기능과 좋아요, 즐겨찾기 기능, 추천순 정렬, 변경 시 알림 등의 부가 기능을 개발하였고, 알림을 애플리케이션으로도 받을 수 있도록 제작하였습니다. 그리고, redis를 활용한 토큰 관리, 서비스 분리 등을 맡아서 수행하였습니다. 처음에는 모놀리식으로 개발한 이후에 서비스를 사용자, 조직, 위키, 질의응답, 동료 간 팔로우, 채팅 등 크게 6가지로 나누어 잠깐이나마 학습한 MSA를 활용할 수 있었습니다. 이외에는 서비스를 이용하는 회사 동료 간
개발 중에 몇 가지 문제가 있었습니다. 첫 번째는 서버가 다운되는 문제입니다. 데이터가 많은 서비스를 운영한다고 가정하여 데이터를 크롤링하여 DB에 입력하였고, 웹에 출력하려고 하니 서버에 많은 요청이 발생하여 원활한 운영이 되지 않았습니다. 이는 많은 데이터를 한 번에 불러와서 발생하는 문제였는데, 백엔드 단에서 Pageable이라는 라이브러리를 활용하여 페이징 기능을 제작하여 해결하였습니다. 한 번에 불러올 데이터를 10개로 설정, 총 데이터 수를 활용하여 페이지 수를 계산하였고, 프론트엔드 단에서 페이징을 할 수 있는 기능을 만들어 페이지 이동을 할 때마다 백엔드에 새로운 요청을 하는 방식으로 제작하였습니다. 많은 데이터를 불러오는 기능이 질의응답과 위키, 두 가지였는데, 위키에서는 게시판 형식으로 페이징을, 질의응답에서는 스크롤을 할 때마다 페이징을 하는 무한 스크롤 형식으로 제작하였습니다.
두 번째 문제는 질의응답 부분에서 좋아요/즐겨찾기 순, 최신순 정렬하여 순위를 매기는 컴포넌트가 존재하였는데, 컴포넌트에서 순위에 있는 특정한 게시글을 클릭하면 그 게시글의 상세 정보를 포함하는 모달을 띄우는 기능이 존재하였습니다. 그 모달이 최상단에 있어야 하는데, 순위를 표시하는 컴포넌트 세개가 모달을 가리는 현상이 발생하였습니다. css 스타일에서 z-index를 활용하여 해결하려고 하였지만, 컴포넌트가 세 개였기 때문에 두 컴포넌트가 모달에 가려지면 한 컴포넌트는 모달을 가렸기 때문에 잘 해결하지 못하였습니다. 그래서, 세 컴포넌트에 있는 코드를 하나로 합쳐 작성하여 모달을 최상단에 출력되도록 하여 해결하였습니다.
최종 프로젝트를 수행하면서 SpringBoot 내 라이브러리인 JWT를 활용하여 웹 애플리케이션에 보안을 적용하는 작업에 대해 더욱 잘 알 수 있었고, 프론트엔드 부분을 프레임워크를 활용하여 개발하고, 백엔드와 통신하는 방법도 있다는 것을 알게 되었습니다. 또한, 컴포넌트를 활용한 프론트엔드 개발 역량을 키울 수 있었고, 서비스를 나누어 개발하는 방법도 있다는 것을 알았으며, 무조건적으로 서비스를 나누어 개발하는 것보다는 필요에 따라 계획을 세워 모놀리식, 마이크로 서비스를 선택해야 한다는 것을 알았습니다.
