Gihoon Lee

'어제의 나보다 나은 것이야 말로 진정으로 고귀한 것이다'

해밍웨이의 명언을 가치관삼아 개발자로서 한 단계씩 나아가고 있습니다.


빠르게 성장하는 개발자입니다.
2020년에 개발을 시작하여 프로젝트를 진행하였습니다.
프로젝트마다 새로운 기술스택을 사용하였고 모두 짧은 기간 내에 공부하여 사용하였습니다.
어떤 기술이라도 끝까지 물고 늘어져서 배울 수 있는 책임감이 있습니다.

부족한 점이 많고 보완해야할 부분들이 많지만 개발을 좋아하기 때문에 빠르게 극복할 수 있을 것이라고 생각합니다.


Skills

Stacks
ETC
  • Google Firebase
  • Hyperledger Fabric
  • Fido
  • WebRTC

Project


Image-RESTful-API

이미지 CRUD API 서버

이미지 CRUD API 입니다. 허용되는 확장자는 jpg, gif, png 이며 GET, POST, PUT, DELETE, OPTIONS, HEAD 요청을 지원합니다.

GET, PUT, DELETE 요청의 경우 /images/:no의 URL로 요청을 보냅니다. POST 요청의 경우 /images의 URL로 요청을 보냅니다. POST, PUT 요청의 경우 요청의 바디에 BASE64로 인코딩된 IMAGE를 포함해야 합니다.


요청 예시

PUT('/images/:no', send_params) send_params={image:base64로 인코딩된 이미지}

POST('/images', send_params) send_params={no:업로드할 숫자, image:base64로 인코딩된 이미지}


적용 사항

- 모든 도메인에 대하여 허용하도록 CORS 적용

- 요청을 보내볼 수 있도록 index.html 제공

- 가능한 한 JavaScript의 Web API를 사용하여 사용하여 코딩(index.html)

- 테스트하는 서버의 환경에 맞게 PORT 변경이 가능하도록 .env 추가


개선해야할 사항

- HTTP의 응답코드에 해당하는 에러메시지들을 구조화하여 분기문 간소화

- USER별 소유한 이미지만 접근할 수 있도록 인증기능 적용


Mini Project

MOA(Meeting On Air)

WebRTC를 활용한 실시간 영상회의 웹


팀 구성 : 4명

코로나 바이러스를 대비한 영상회의 웹 프로젝트

사용자는 회의방을 생성 및 참여할 수 있고 회의방에서는 영상회의, 채팅, 드래그 앤 드롭 파일 업로드 및 다운로드를 할 수 있습니다.


적용 사항

- WebRTC 프레임워크를 이용하여 실시간 영상 통화 구현

- Socket.io를 이용하여 User의 입퇴장 시 이벤트 관리

- 파일 업/다운로드 기능 구현


개선해야할 사항

- WebRTC의 peerconnection을 사용자의 입장 시 마다 생성

- 서버의 Room 객체를 DB Table로 구성(Stateless)

- MOA Client를 Build하여 정적 파일로 구성


사용 기술

- Node.js, ReactJS, WebRTC, Sequelize.js, Mongoose, Socket.IO


2020.03 - 2020.04

My DID

Blockchain-Fido-API


팀 구성 : 4명

Blockchain과 Fido를 활용한 DID 생체인증 API

Fido2를 기반으로 개인의 지문을 등록합니다. 사용자가 로컬기기에서 생체인증을 완료하면 로컬기기에서 RSA key쌍을 생성합니다. 사용자의 지문에 대응되는 RSA key 중 공개키, 사용자의 핸드폰번호가 블록체인에 저장됩니다.

사용자 인증을 위한 POST 요청 URL을 제공합니다. 웹에서 서버에 POST요청을 보낸 뒤(Pending) 핸드폰(Fido기기)으로 인증을 완료하면 서버는 웹 요청에 대하여 응답합니다.


요청 예시

/auth/registersignin 의 URL로 POST 요청 {phoneNumber:유저의 핸드폰 번호}


Architecture

전체 구조



FIDO + DID




적용 사항

- Docker Container로 구성된 Hyperledger Network 구축

- API 서버 구축

- 사용자 등록 시 인증번호를 전송하여 핸드폰 번호 검증

- Fido API를 사용하기 위하여 도메인 및 SSL 구성(Fido API는 HTTPS에서만 동작)

- 인증번호 입력 시 Brute Force 공격 방지

- 타 웹에서 인증 요청 시 Pending, 사용자의 로컬기기에서 인증을 완료하면 응답


개선해야할 사항

- Pending 구현 시 사용자의 인증 상태를 서버의 변수에 저장하지 않고 DB에 저장


사용 기술

- Fido, JavaScript(ChainCode), Node.js, ExpressJS, HTML, Hyperledger, Docker


시연 영상


2020.05 - 2020.06

Richard-All-Right

Firebase기반 주차장 공유 어플리케이션


팀 구성 : 4명

사용되지 않는 원룸의 주차장을 공유하여 거래하는 플랫폼입니다. 현재 주차장들은 Dummy Data로 구성하여 배포까지 완료된 어플리케이션입니다.


적용 사항

- 어플리케이션 개발

- 사용자가 같은 주차장을 동시 예약 시 DB에 Block 처리(Firebase Transaction)


개선해야할 사항

- 휴대폰 크기에 맞게 반응형 UI제작


사용 기술

- KakaoPay API, Google Maps API, Firebase, Java, Android


시연 영상


2020.06 - 2020.07

Education

멀티캠퍼스 - 4차 산업혁명 선도인력 양성

시큐어 코딩 기반 블록체인 개발
Fullstack 개발 및 보안 구축

- Node.js, JavaScript, React.js, Vue.js, RDBMS, NoSQL

실무 개발 보안기술 활용(시큐어 코딩)

- 네트워크, 웹 보안, 시큐어 코딩

블록체인 서비스 개발 및 보안 기술 구현

- Linux, Docker, Hyperledger

2019.11 - 2020.07

멀티캠퍼스 - 청년 취업 아카데미

자바 알고리즘을 이용한 반응형 웹프로그래밍 전문가 과정
데이터 베이스 활용

- Oracle, JDBC, DB모델링

JAVA 웹 애플리케이션 제작

- Servlet, JSP, React

Spring Framework

- MVC Model, Spring

2020.07 - 현재

BOOKS I am reading

Clean Architecture: A Craftsman's Guide to Software Structure and Design - Robert C. Martin

You Dont Know JS - Kyle Simpson

Awards & Certifications

  • 1st Place - 멀티캠퍼스 4차 산업혁명 선도인력 양성 해커톤 프로젝트 우수상 - RICHARD-ALL-RIGHT
  • 2nd Place - 멀티캠퍼스 4차 산업혁명 선도인력 양성 개인 우수상

  • 정보 처리 기사
  • 컴퓨터 활용 능력 1급