미리보기
기본 정보

읽기 쉽고, 유지보수가 편하고, 유연한 코드를 작성하고자 합니다.
자기소개
Mindset
- 저는 정리정돈 하는것을 좋아합니다. 저의 코드철학은 첫째는 중복코드 배제, 둘째는 관심사 분리입니다.
- 저는 지식을 기록하는 것을 즐깁니다. 무제 노트에 기록하던 습관이 이제는 노션에 학습내용을 기록 하는것으로 일상이 되었습니다.
Comunication
- 저는 명확한 의사소통을 중시합니다. 주어와 목적어를 분명히 하여 의견전달이 명확하게 될수 있도록 합니다.
- 저는 상대방의 의견과 피드백을 적극적으로 경청합니다. 상대방의 의견을 경청하되 적극적으로 의견 제시도 합니다. 그에 따라 객관적으로 봤을 때 더 효율적이고 나아가는 결과를 지향합니다.
Vision
- 포지션을 가리지않고 여러 프로젝트를 경험한것을 기반으로 안드로이드를 주 업으로 삼고, 백엔드 개발을 서브로 하는것을 목표로 하고 있습니다.
- 최근에는 Compose 및 MVI 아키텍쳐에 관심을 두고 있습니다
기술 스택
Java, Kotlin, RxJava, MVVM, Android Compose, Swift, Angular, IONIC, Spring Boot, Spring Security, spring-jpa, MySQL, mybatis
경력
(주)소프트넷
하이브리드 앱 개발자 | IoT 기술연구소 | 재직 중
2021.09. ~ 재직 중 (3년 6개월)
모바일 앱 개발
주로 안드로이드 네이티브 앱개발과 Ionic 을 이용한 하이브리드 앱개발을 진행했습니다.
웹서비스 유지보수 및 운영
운영중인 웹서비스(Spring)의 이슈 코드 수정, 만료된 SSL 인증서 교체, 플랫폼 결제등의 유지보수를 진행했습니다.
프로젝트
Inphr TEMP
(주)소프트넷
2023.10. ~ 진행 중
Overview
웨어러블 디바이스 체온계를 이용해, 영유아의 체온을 측정하고, 관리하는 앱
Achievements
- Jetpack-Compose 도입 및 화면개발
- Presentation 영역을 100% Compose 로 작성했으며, 기존의 View System 을 따르던 MP Chart 는 Android View 로 감싸서 처리했습니다.
- MVVM, MVI 패턴 혼합 적용
- 로직이 복잡한 화면은 MVI 패턴을 따르는 MVI ViewModel 추상 클래스를 만들어 상속을 통해 구현하도록 작성했습니다.
- Event 를 받으면 State 를 변경하고, Effect 는 ViewModel 에서 Channel 을 통해 방출하고 Presentation 영역에서 구독해 처리하도록 작성했습니다.
- 웨어러블 체온계 BLE 연동 로직 개발
- 기존의 RxJava 로 되어있던 로직을 RxJava의 의존성을 버리고, 100% Kotlin 을 사용하도록 스트림 처리를 Kotlin Flow 로 대체했습니다.
- Backend API 연동
- Retrofit 2 와 Json Paser는 Moshi 를 이용해 Repository 패턴을 따르도록 구현했습니다.
- 캐싱이 필요한 부분은 Room 을 이용해 Repository 에서 캐싱처리를 하도록 구현했습니다.
Tech Stack
Android-Compose, MVVM, Kotlin, Flow, Retrofit2, Moshi, Coil, Room, BluetoothManager
Inphr AIR
(주)소프트넷
2023.07. ~ 2023.09.
Overview
항공기내 실시간 승객 건강 모니터링 시스템 (하이브리드 앱)
https://www.inphr.com/service/inphrair
Achievements
- Ionic - Angular 를 이용한 하이브리드 앱 개발
- 화면을 Angular를 사용해 구현하고 Ionic 을 사용해 웹뷰로 띄우는 하이브리드 앱 개발을 진행했습니다.
- 웨어러블 밴드 BLE 연동 로직 작성
- 이전 프로젝트(Inphr Smart)에서 개발한 BLE 모듈을 기반으로 Angular 에서 RxJS를 이용해 밴드를 연동하고, 생체 데이터를 조회하는 로직을 작성했습니다.
- Room 을 이용한 좌석-밴드 매칭 / 좌석조회 /생체데이터, 이상유무 저장 로직 개발
- 구역별 좌석을 입력하고 해당되는 좌석번호에 밴드의 Mac Address 를 입력해 구역별로 Advertising 데이터를 필터링하여 가져오도록 구현했습니다.
- Capacitor Plugin 을 이용한 로컬 데이터베이스 부분과 BLE 연동로직 모듈화
- 안드로이드 네이티브로 작성된 코드 로직을 Capacitor Plugin 을 이용해 모듈화했습니다.
- 구현한 모듈은 내부 Nexus Repository 에 업로드하여 NPM install 만 실행해도 모듈 설치가 되도록 했습니다.
Tech Stack
Android, RxJava, BluetoothManager, Room, Ionic, Angular, Typescript, RxJS
사내에서 사용하기 위한 간단한 출퇴근 관리 웹서비스
(주)소프트넷
2023.04. ~ 2023.05.
Overview
사내에서 사용하기 위한 간단한 출퇴근 관리 웹서비스
Achievements
- 로그인 API 개발
- Spring Security 를 이용해 Json Web Token 을 이용한 인증방식으로 구현했습니다.
- 로그아웃은 서버는 Stateless 를 유지하는게 바람직하기 때문에 클라이언트에서 토큰을 삭제하도록 했습니다.
- 권한은 유저와 관리자 두개를 주었고, 각각 Admin 과 User 테이블로 관리하도록 설계했습니다.
- 출근 / 퇴근 / 연차 / 외근 입력 API 개발
- 출근 / 퇴근 / 연차 / 외근 입력의 CRUD를 JPA 를 이용해 구현했고, Restful API 규약에 맞춰 디자인했습니다.
- 월별 근무시간 통계 이메일 자동전송 기능 개발
- Spring Scheduler + JavaMailSender 를 이용해 구현했습니다.
- Docker 를 이용한 배포
- Dockerfile 은 빌드 스테이지와 실행 스테이지를 나눠서 각각 openjdk 이미지를 기반으로 작성했습니다.
- DNS 설정 사이트와 Nginx 에 도메인을 등록한뒤 docker-compose 를 이용해 배포했습니다
Tech Stack
Java, Spring Boot, Spring Security, Spring-Data-JPA, MySQL, Docker
Inphr Smart
(주)소프트넷
2022.01. ~ 2023.04.
Overview
(정부과제) 웨어러블 밴드를 활용한 covid 자가격리자 안전보호 시스템 (격리자 앱/ 공무원 앱/ 관리자 웹 대시보드)
https://www.inphr.com/service/inphrsmart
Achievements
- Ionic - Angular 웹뷰를 이용한 하이브리드 앱 화면 개발
- 화면을 Angular를 사용해 구현하고 Ionic 을 사용해 웹뷰로 띄우는 하이브리드 앱 개발을 진행했습니다.
- 격리자 앱 / 공무원 앱 / 관리자 웹 대시보드 3개의 프로젝트를 개발 진행했습니다.
- 웨어러블 밴드 BLE 통신모듈 개발
- Android - Bluetooth Manager 를 이용했으며 비동기 스트림은 RxJava 를 사용했습니다.
- iOS - CoreBluetooth 를 이용했으며 비동기 스트림은 RxSwift 를 사용했습니다.
- 네이티브로부터 스트림 또는 단일 데이터를 전달받으면 Angular 웹뷰에서 RxJS 를 이용해 데이터를 차트에 표시하거나 가공해 전송하도록 구현했습니다.
- BLE 통신방식은 BLE 연결을 통해 데이터를 조회하는 방식과 비콘방식으로 구현했습니다.
- 소스 관리의 용이성을 위해 Android - iOS 의 Bluetooth 로직, 패키지 구조 등을 통일했으며 Error 코드를 따로두어 공통된 에러를 핸들링 하도록 했습니다.
- 격리이탈 판단 기능 개발
- 격리이탈 판정은 현재 좌표를 조회하여 미리 설정한 좌표로부터 일정거리 이상 차이가 나면 격리이탈이 되도록 구현했습니다.
- GPS 의 오차범위 등을 감안해 3번이상의 격리이탈이 감지되면 격리이탈로 판정되도록 정책을 지정했습니다.
- Android - GmsFusedLocation 을 이용해 구현했습니다.
- iOS - CoreLocation 을 이용해 구현했습니다.
- 지속적인 생체정보조회 및 격리이탈 감지 (백그라운드) 기능 개발
- Android 의 경우 Deep Doze 로 인해 많은 시행착오 겪었으나 최종적으로는 FCM 을 수신하면, WorkManager 의 신속옵션을 활용해 BLE 스캔과 GPS 좌표측정을 진행해 서버로 데이터를 전송하도록 구현했습니다.
- iOS 의 경우 백그라운드 BLE 스캔을 진행하려면 펌웨어를 수정해 Service UUID 를 얻어와야 되었으므로 포그라운드에서만 생체정보조회 및 격리이탈 감지를 하도록 구현했습니다.
- TTA 인증 및 GS 인증 1등급 흭득
- https://n.news.naver.com/mnews/article/009/0005217717?sid=101
- 테스트 케이스 작성 및 인증시험을 진행했습니다.
Tech Stack
Web : Angular, TypeScript, RxJS, CSS
Android : Java, RxJava, Retrofit2, BluetoothManager, FusedLocation
iOS : Swift, RxSwift, Alamofire , CoreBluetooth, CoreLocation
InphrCare Web
(주)소프트넷
2021.10. ~ 2021.12.
Overview
건강 관리 플랫폼 InphrCare Web
https://www.inphrcare.com/
Achievements
- DNS 수정, SSL 만료 인증서 교체, 로그 확인, 및 이슈 트래킹 등의 유지보수 작업
- InPHR 플랫폼 소개 리뉴얼 화면 개발
Tech Stack
AngularJS, CSS, Javascript, Java, Spring Boot, Mybatis
포트폴리오
교육
한신대학교
대학교(학사) | 컴퓨터공학
2011.02. ~ 2019.02. | 졸업
송파 공업 고등학교
고등학교 | 컴퓨터과
2009.02. ~ 2011.02. | 졸업
자격증
정보처리기사
기사 | 산업인력공단
2019.09.