전체 글

지우는 어려서부터 지우개를 좋아했다. 작고 말랑한데다 한 손에 쏙 들어오고 값도 비싸지 않아서였다. 훌쩍 키가 자란 뒤에도 지우는 종종 우울에 빠져들 때면 손에 미술용 떡지우개를 쥐고 굴렸다. 그러면 어디선가 옅은 수평선이 나타나 가슴을 지그시 눌러주는 느낌이 들었다. 앞으로 대단히 훌륭한 사람은 될 수 없어도 그럭저럭 무난하고 무탈한 삶을 살아낼 수 있을 것 같은 기분이 일었다. 물론 그런 기분은 잠시뿐이고, 나쁜 일은 계속 일어나며, 사람들은 쉽게 잊는다는 걸 알았지만. 스스로에게 희망이나 사랑을 줄 만큼 충분히 강하지 못해 지우는 자신에게 겨우 '할일'을 줬다. 그중 하나가 연필 가루 위에 연필 가루를 얹는 일, 선 위에 또다른 선을 보태는 일이었다. 가난이란... 가난이란 하늘에서 떨어지는 작은..

1. Spring DI/IoC는 어떻게 동작하나요?더보기IoC (Inversion of Control) 제어의 역전: 스프링 컨테이너가 객체의 생성, 초기화, 의존성 설정, 소멸 주기를 관리한다. 이로 인해 객체는 자신의 의존성을 알 필요 없이 필요한 시점에 주입받아 사용할 수 있음. DI (Dependency Injection) 의존성 주입: IoC의 구현 방식 중 하나로, 스프링 컨테이너가 객체의 의존성을 자동으로 주입해주는 방식이다. - 생성자 주입 : 객체 생성 시 의존성을 주입- Setter 주입 : Setter 메서드를 통해 의존성을 주입- 필드 주입 : @Autowired 어노테이션을 통해 직접 필드에 주입 Spring DI/IoC 동작 과정1) 스프링 컨테이너 초기화 : Applicati..


1. HTTP 헤더 개요1) 용도HTTP 전송에 필요한 모든 부가정보ex) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보표준 헤더가 너무 많음..필요시 임의의 헤더 추가도 가능하다. 2) RFC2616: 과거에는 HTTP 표준으로 RFC2616을 사용했다. 메시지 본문(message body)은 엔티티 본문(entity body)을 전달하는데 사용.엔티티 본문은 요청이나 응답에서 전달할 실제 데이터엔티티 헤더는 엔티티 본문의 데이터를 해석할 수 있는 정보 제공 (like 데이터 유형, 데이터 길이, 압축 정보 등) 3) RFC 7230 ~ 7235: 2014년에 등장하여 RFC2616은 폐기되었다. - 주요 변화 엔티티(Entity) -> 표현(..

1. 데이터베이스에서 인덱스를 사용하는 이유 및 장단점더보기인덱스: 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조. 사용하는 이유- 테이블의 크기가 커질수록 특정 데이터를 찾는 작업은 전체 테이블 검색(Full Table Scan)이 발생하여 시간이 오래 걸린다. - 인덱스는 특정 열의 데이터를 정렬된 구조 (B-tree, Hash 등)로 관리하여 검색 속도를 향상시키는 역할.- 검색 시, 데이터베이스는 먼저 인덱스를 탐색한 후 해당 위치로 이동해 데이터를 조회한다. 장점- 검색 속도 향상 : WHERE, ORDER BY, JOIN, GROUP BY 같은 쿼리에서 데이터 검색 및 정렬이 빨라진다.- 쿼리 최적화 : 쿼리 실행 계획에서 Full T..

1. 프로세스와 프로그램 차이점더보기프로그램: 저장 장치에 저장된 실행 가능한 명령어와 데이터의 집합으로 실행되지 않은 상태에서는 정적이다. - 정적 존재: 프로그램은 메모리에 적재되지 않은 상태로 파일 시스템에 저장된다.- 파일 형태: 일반적으로 .exe, .bin, .py 같은 실행 가능한 파일 형식- 실행 전 상태: 자원을 소모하지 않음. 프로세스: 프로그램이 실행되어 CPU, 메모리, 파일 핸들 등 자원을 할당받아 운영체제에서 동작 중인 상태이다. - 동적 존재: 프로그램이 실행되면 운영체제에 의해 메모리에 적재되어 동작- 자원 소비: 프로세스는 실행 중 메모리, CPU 시간, 입출력 자원 등을 사용- 고유한 식별자: 운영체제는 각 프로세스를 PID로 구분- 다중 인스턴스: 하나의 프로그램에서 여..

1. 웹 통신의 큰 흐름: https://www.google.com/을 접속할 때 일어나는 일 더보기(1) 브라우저 검색창에 'www.google.com'를 입력한 후 엔터를 친다. 브라우저는 URL을 분석하고, 프로토콜(https), 도메인 이름(www.google.com), 및 경로를 분리한다. (2) DNS 조회브라우저는 www.google.com의 IP 주소를 찾기 위해 DNS 서버에 요청을 보낸다. 특정 웹사이트에 접속하기 위해서는 도메인이 아닌 IP 주소가 필요한데, 이는 외우기가 힘들고, 가독성이 떨어지기 때문에 도메인 명으로 웹페이지에 접속할 수 있도록 DNS 서버를 이용한다. (URL 이름과 IP 주소를 저장하고 있는 데이터베이스)- DNS 조회 과정로컬 캐시 확인ISP(ex. KT, ..


시큐리티 관련 예외처리를 파다 보니, 또 다른 문제가 보였다. 바로,,, 예외 처리에 대한 계층 분리 문제. 현재 나의 코드의 문제점은 모든 예외상황에 같은 Exception을 던진다는 것이다. 코드로 확인하면 이렇다.// 프로필 사진 추가 @Transactionalpublic String uploadProfileImage(String accountId, List multipartFile) { //... // s3에 해당 프로필 사진 업로드 (단 한장만 가능!!) if (multipartFile.size() > 1) { throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "프로필 사진은 한장만 업로드 가능"); } ..


1. 상태 코드 : 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능- 만약 모르는 상태 코드가 나타나면 (클라이언트가 인식할 수 없는 상태코드)? : 상위 상태코드로 해석해서 처리. 몇백대 상태코드인지를 확인하면 된다. 1) 1xx (Informational) : 요청이 수신되어 처리중 (거의 사용하지 않음)2) 2xx (Successful) : 요청 정상 처리 (클라이언트의 요청을 성공적으로 처리) - 200 OK : 요청 성공- 201 Created : 요청 성공해서 새로운 리소스가 생성됨.- 202 Accepted : 요청이 접수되었으나 처리가 완료되지 않음.배치 처리 같은 곳에서 사용 (ex. 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리함) - 204 No Content :..

2023은 내가 새로운 것에 뛰어들어 익숙해지려 발버둥 치던 시간이었다면 2024는 익숙하지만 완전히 익숙해질 수 없음에 힘들어했던 시간이었다. 개인적으로도 많은 변화와 경험을 했고, 사회적으로도 수많은 뉴스와 소식들로 왁자지껄 했던 한 해였다. 큼지막하게 돌아본다면1~4월까지는 2023 12월부터 시작했던 코딩 교육에 아주 몰입하여 배우고, 프로젝트를 진행했다. 그러면서 취업준비도 진행하다 운이 좋게 교육이 끝나기 전에 취업이 되어 5~7월에는 직장에서 일을 했다. 처음으로 개발자로서 현업에서 일할 수 있음에 감사했다. 교육에서 배웠던 것들을 적용해보기도 하고, 또 새로이 배우는 것들이 신나기도 했다. 일하는 것이 재밌었다. 그러나 여러 가지 이유로 인해 퇴사를 결정했다. 8월부터는 다시 공부하며 지..