전체 글 495

KT ds 최종합격 후기 2024 상반기 공개 채용

이 포스팅에서는 KT ds에 합격한 후기를 작성하려고 합니다. 채용 프로세스 말고, "왜 합격할 수 있었는가?"에 초점을 두고 글을 쓰려 합니다.  제가 생각하는 가장 큰 요소 2가지입니다. "실무 경험" 그리고 "증명" 입니다.  1) 취업난 속 합격 요소 2가지1. 대학생의 실무 경험 쌓기 - 신입은 경력을 어디서 쌓나!!저는 인턴을 통해 실무 관련 경험을 쌓고자 노력해왔습니다. 프로그래머스의 써머 인턴 모집 등을 지원하거나, 교내 학점 연계 인턴을 하기위해 노력했습니다.  써머 인턴 등은 떨어졌지만, 교내 연계 인턴을 2번 (대기업 SI 2개월, 스타트업 4개월)할 수 있었습니다. 이런 경험을 바탕으로 "실무 경험"을 어필할 수 있었습니다.   2. 나를 증명하기 - 열심히 한다는 증거있어?프로젝트..

기타 2024.08.09

한진정보통신 인턴 과제 - 안드로이드 카메라 사진 인식 결과가 전처리 되지 않은 문제

안드로이드 앱에 모델을 적용하였으나, output이 location, classes, scores, detections로 나오지 않고, 688,000 개의 raw data로 나왔습니다. 이에 이 데이터를 전처리해야 했습니다.   문제 해결 과정1. 먼저 이 raw 데이터가 각각 어떤 것을 의미하는 지 확인하는 과정을 거쳤습니다. 이를 위해 공식 문서와 issue의 답변을 참고하였습니다.  raw data는 8,400개의 grid가 있고 각 grid 마다 class의 예측 confidence_rate를 나타낸 것이었습니다.  하지만 제가 카메라로 탐지한 마약의 개수는 많아야 10개였는데 어떻게 8,400개의 결과가 나타나는지 알 수 없었습니다. 이에 yolo8 관련 자료들을 찾아보고, detection m..

IT/디버깅 2024.06.06

한진정보통신 인턴 과제 - yolo8 모델을 android 모델로 변환 중 발생한 문제 - android 인식 안됨

yolo8 모델의 학습을 끝내고, 인턴 프로젝트를 더 디벨롭하고 싶었습니다. 이에 카메라 앱에 적용해 실제로 모델을 실시간으로 탐지하도록 프로젝트를 진행하고자 하였습니다. 하지만 이 과정에서 발생한 문제들이 많았고 이를 정리하는 포스팅입니다.  1. Android Studio에서 사용하기 위해 Tflite 모델로 적용 중 발생한 문제   yolo8 모델의 가중치를 tflite모델로 변환하였으나, 안드로이드 스튜디오에서 인식하지 못하는 문제가 발생하였습니다. 문제 해결 과정1. model 변환에 대한 의문 yolo8 공식문서의 예시 segment 모델 가중치를 converting 해보았으나, 이 또한 android studio에서 인식하지 못하였습니다. 이에 최신 기술이기 때문에 변환을 아직 지원하지 않는..

IT/디버깅 2024.06.05

한진정보통신 인턴 과제 - 특정 라벨에 대한 yolo8 모델 정확도 문제 해결 과정 정리

한진정보통신(주)에서 인턴으로 근무하며 공항 마약류 객체 탐지 모델을 학습하는 프로젝트를 진행했습니다. 데이터를 전처리하고 yolo8로 학습을 시켰으나, 특정 라벨에 대한 정확도가 0%인 문제가 발생하였습니다. 이를 해결하던 과정을 정리하려 합니다.    위의 문제를 해결하기 위해  2가지의 해결 방안이 있었습니다.1. 직접 데이터셋을 추가해 진행하는 방안2. 알약 데이터로 가중치를 만들어 파인튜닝하는 방안   두번째 방안을 선택한 이유첫번째 방안은 인턴 기간의 제약 및 약국과의 미팅 시간 문제가 있었습니다. 약국과 연락을 하고 약속을 잡는 시간,  실제로 약국에 가서 마약류 사진을 찍는 시간, 라벨링을 하는 시간 등 최소한 한달이상이 걸리는 문제였습니다. 인턴 기간은 한달이 남지 않았으므로, 기간 내에..

IT/디버깅 2024.06.04

google otp fast api 서버 적용

이번 포스팅에서는 사용자 인증 보안을 강화하기 위해 google otp 를 적용하는 과정을 포스팅하려고 합니다.먼저 google otp의 동작과정을 바탕으로 비동기, 동기 처리를 해야하는지를 판단하는 과정을 기록하고, 이후 fast api에 google otp를 적용하는 과정을 설명하려고 합니다.  1. google otp의 동작과정 1) Set Up- server에서 otp 시크릿 키를 생성하고 google Authenticator 에 QR 코드를 생성합니다. 2) OTP Generation - user는 QR 코드를 바탕으로 키를 인증합니다. 이 과정은 서버가 아닌 다른 네트워크(다른 api 등)를 거치지 않고 local 적으로 동작합니다. 3) OTP Verification - user가 키를 인증..

백엔드 2024.04.05

백준 14476 최대공약수 하나 빼기 python

최대공약수 뺴기 누적합 문제 해결 1. 왼쪽부터 차례로 누적 최대공약수를 구합니다. 2. 오른쪽부터 차례로 누적 최대공약수를 구합니다. [8, 12, 24, 36, 48] 예를 들어 index 0의 8이 빠지면 right_prefix_list[1]이 최대 공약수 입니다. index 1이 빠지면 left_prefix_list[1 - 1]과 right_prefix_list[1 + 1]의 최대 공약수가 전체의 최대 공약수입니다. 이 아이디어를 바탕으로 문제를 해결할 수 있습니다. 문제 오류 12는 빠진 수 8의 약수가 아니기 때문에 정답이 될 수 있다. -> 12는 8로 나누어 떨어지지 않기 때문에 정답이 될 수 있다. 예외 케이스 24는 8의 약수가 아니지만, 이것이 반례가 됩니다. 88%에서 막힌 이유 정..

CS/알고리즘 2024.04.03

spring과 fast api의 동시 요청 처리 차이점 정리

이번 포스팅에서는 spring boot와 fast api의 동기 처리 차이점을 정리하려고 합니다. Spring Boot 에서의 동시 요청 처리 Spring boot 에서는 multi Thread를 사용하여 동시 요청을 처리합니다. 이를 위해 Thread Pool이 존재하는데 그 안에 2개의 Thread가 있다고 가정하겠습니다. 만약 2개의 request가 동시에 온다면 어떻게 될까요? (I/O 관련된 request 1개와 다른 request 1개, CPU는 1개, 다른 Process는 없음) 먼저 I/O 관련 request가 0.0001초 빠르게 들어온 경우 1개의 Thread를 할당하고 애플리케이션 계층에서 OS 계층으로 전달됩니다. 이후 OS는 I/O device에 read/write 등을 요청하고 ..

카테고리 없음 2024.03.18

java spring vs python fast api 비교

이번 포스팅에서는 python fast api를 개발하기 전 python fast api와 java spring의 차이점에 대해 비교하며 공부한 것을 정리하려고 합니다. 1. 파이썬과 자바의 차이 자바는 컴파일 언어인 한편, 파이썬은 인터프리터 언어입니다. 컴파일 언어: 코드가 실행되기 전 컴파일러를 거쳣서 기계어로 모두 변환되어 실행되는 프로그래밍 언어 인터프리터 언어: 개발자가 작성한 코드를 기계어로 변환하는 과정없이 한줄씩 해석하여 명령을 바로 처리하는 프로그래밍 언어 2. java spring vs python fast API Fast API 1. 비동시성을 지원합니다. - 하나의 단계가 시작하면, 그 것이 끝날 때까지 기다리지 않고 다른 단계를 시작합니다. 2. type annotation을 지..

jwt refresh token 을 Redis로 리팩토링하기

기존에 db 테이블에 저장하여 조회하던 refresh Token을 Redis 인메모리 데이터 구조 저장소로 리팩토링하는 과정을 기록하는 포스팅입니다. 기존의 코드는 아래와 같습니다. 1. requestBody에 담긴 accessToken을 바탕으로 DB에서 refreshToken을 체크합니다 2. 만약 refreshToken이 valid하다면 accessToken을 발급합니다. DB에서 Redis로 리팩토링 하는 이유 1. refreshToken은 만료기간이 있는 token인데 DB에 저장할 필요가 있는지에 대한 의문이 들었습니다. -> DB는 또한 디스크의 읽기 쓰기와 관련되므로 api 응답속도도 느립니다. -> 인메모리를 사용하는 것으로 리팩토링하기 DB에서 Redis로 리팩토링 하는 과정 1. me..

백엔드/Spring 2024.03.04

spring security filter exception 처리 이슈 해결

jwt 토큰이 만료되었을 때의 응답을 처리하려고 하였습니다. ExpiredException을 받아 handling하려고 하였으나, global exception을 handling하기 위해 기존에 존재하던 @RestControllerAdvice는 security filter 단에서의 에러를 handling하지 못하였습니다. 이는 sevlet에 들어오기 전에 동작하는 것이었기 때문입니다.이에 이를 해결하는 과정을 포스팅합니다. spring security filter exception 해결 시도 1 아래의 사진에서 보듯 try catch 문을 통해 Exception이 발생한 경우 response writer를 사용해 응답을 반환해주려 하였습니다. 하지만 httpResponse에 wirte이 되지 않아 문제를..

IT/디버깅 2024.02.15