공부하는 개발자

공부하는 개발자

about 오늘도 뚝딱🔨 뚝딱 하는 주니어 개발자👩🏻‍💻

북마크

고정글

전체 글 205

최근 글

반응형
👩🏻‍💻 유니버설 링크 함정 도감 ① 설계와 값 — 전부 에러가 안 납니다

👩🏻‍💻 유니버설 링크 함정 도감 ① 설계와 값 — 전부 에러가 안 납니다

한달 동안 버튼 하나를 못 붙였다7월 마지막 날부터 8월 중순까지, 사내 모바일 웹에 "앱으로 열기" 버튼을 붙이는 작업을 했다. 정확히는 붙이려고 했다.결말부터 밝힌다. 이 기능은 상용에 나가지 않았다.iOS는 브라우저에서 끝내 앱이 열리지 않았다.두 달 동안 성공한 경로는 메모 앱에 링크를 붙여넣고 길게 눌러 여는 것 하나였고, 그마저도 3편에서 다룰 동일 도메인 규칙이 적용되지 않는 조건이었다.지금은 앱에 신규 호스트를 등록한 버전만 먼저 나갔고 웹은 서브도메인 신청서를 낸 채 대기 중이다.그래서 이건 "이렇게 하면 됩니다" 가이드가 아니다.밟아본 함정을 번호로 정리한 목록에 가깝다.설계 · 값 · 배포 · 검증 · 동작 · 협업 여섯 갈래를 세 편에 나눠 싣고, 이 글은 그중 설계 일곱 개와 값 ..

백엔드 개발자가 반드시 잡는 예외 모음 (feat. IDE가 시키는 try~catch 탈출)

백엔드 개발자가 반드시 잡는 예외 모음 (feat. IDE가 시키는 try~catch 탈출)

네트워크 타임아웃 예외가 발생하는 원리 (feat. ConnectException, SocketTimeoutException)주제 정의 김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션| 김영한 - 인프런 강의현재 평점 5.0점 수강생 7,020명인 강의를 만나보세요. I/O, 네트워크, 리플렉션, 애노테이션을 기초부터 실yurizzy.tistory.com 수집 대상 정의IDE의 빨간 줄을 없애기 위한 try~catch가 아니라, 실무에서 의도를 갖고 처리해야 하는 예외들을 모았다.지난 편에서 네트워크 타임아웃 예외의 발생 원리를 다뤘고, 이번 편은 그 확장판이다.수집 기준은 세 가지다. 첫째, 잡아서 복구(재시도, 대체 동작)가 가능한 예외.둘째, 사용자에게 다른 응답을 내려줘야 하는 ..

네트워크 타임아웃 예외가 발생하는 원리 (feat. ConnectException, SocketTimeoutException)

네트워크 타임아웃 예외가 발생하는 원리 (feat. ConnectException, SocketTimeoutException)

주제 정의 김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션| 김영한 - 인프런 강의현재 평점 5.0점 수강생 7,020명인 강의를 만나보세요. I/O, 네트워크, 리플렉션, 애노테이션을 기초부터 실무 레벨까지 깊이있게 학습합니다. 웹 애플리케이션 서버(WAS)를 자바로 직접 만들어봅니www.inflearn.com 외부 서버와 통신할 때 만나는 대표 네트워크 예외들이 TCP 통신의 어느 단계에서 왜 발생하는지그리고 백엔드 개발자가 연결 타임아웃과 소켓 타임아웃을 반드시 지정해야 하는 이유를 정리한 글이다. 인프런에서 김영한님의 자바 강의를 듣다가 네트워크 예외 파트에서 멈칫했다.지금까지 예외 처리를 "IDE가 빨간 줄을 그으니까 try~catch로 감싸는 것" 정도로 생각했기 때문이다. ..

자바 Executor 프레임워크로 스레드 풀 다루기 (feat. ThreadPoolExecutor)

자바 Executor 프레임워크로 스레드 풀 다루기 (feat. ThreadPoolExecutor)

스레드를 직접 new Thread()로 생성하고 관리하다 보니생성 비용, 반환값 회수, 스레드 재사용 같은 문제가 계속 발생했다.김영한 쌤의 자바 고급1편 강의로 Executor 프레임워크를 공부하면서스레드 풀 기반으로 이 문제들을 정리했고그 과정에서 시도했던 방법들과 최종적으로 이해한 내용을 기록해본다. 문제 상황스레드를 직접 다룰 때 크게 세 가지가 걸림돌이었음 첫째, 스레드 생성 비용이 큼스레드 하나를 만들 때마다 메모리(스택)를 할당하고 OS 커널에 스레드를 등록하는 비용이 드는데요청이 들어올 때마다 스레드를 새로 만들면 이 비용이 반복됨 둘째, 스레드 관리가 어려움지금 몇 개의 스레드가 돌고 있는지언제 종료해야 하는지를 직접 추적해야 함스레드가 무한정 늘어나면 시스템 자원이 고갈..

👩🏻‍💻 Springframwork Mig 기록 - GitLab CI/CD 빌드 환경 맞추기 (feat. Gradle 프로필 빌드)

👩🏻‍💻 Springframwork Mig 기록 - GitLab CI/CD 빌드 환경 맞추기 (feat. Gradle 프로필 빌드)

인트로레거시 Spring Framework 기반 프로젝트를 Spring Boot 3와 Gradle 기반으로 고도화하면서GitLab CI/CD 빌드 환경을 맞춰야 하는 일이 생겼다.처음에는 단순히 “JDK 버전과 Gradle 버전만 알려주면 되는 일”이라고 생각했다.하지만 메일을 다시 읽고 .gitlab-ci.yml을 따라가다 보니내가 제대로 이해해야 하는 것은 빌드 도구 버전이 아니라소스가 어떤 서버에서 빌드되고, 어떤 프로필로 WAR가 만들어지고, 어떤 경로로 운영 서버까지 이동하는지였다.이 글은 사내 프로젝트의 실제 값은 모두 익명화하고, GitLab CI/CD와 Gradle 프로필 빌드를이해해 간 과정을 공개 가능한 수준으로 정리한 기록이다. 개발환경구분AS-ISTO-BEJavaJava 1..

📚 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 : 신입이 알아야 할 DB 성능·풀스캔·인덱스 9가지

📚 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 : 신입이 알아야 할 DB 성능·풀스캔·인덱스 9가지

인트로 최근 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식을 읽으면서DB 성능과 인덱스에 대한 내용을 다시 정리하게 됐다.처음에는 DB 성능 문제가 생기면 “인덱스를 추가하면 되지 않을까?”라고 단순하게 생각했다.하지만 책을 읽고 실무 상황에 대입해보니, 인덱스는 정답이라기보다조회 패턴에 맞춰 설계해야 하는 도구에 가까웠다.특히 풀스캔, LIKE 검색, COUNT, 정규화와 비정규화,오래된 데이터 분리, 캐시, 장비 확장은 각각 따로 떨어진 주제가 아니었다.결국 하나의 질문으로 이어졌다.지금 이 API는 DB에서 읽을 필요가 있는 데이터만 읽고 있는가? 이번 글은 풀스캔을 줄이기 위해 내가 먼저 확인해야 할 DB 성능 항목 9가지를 정리한 기록이다.특정 회사 시스템을 그대로 설명한 글은 아니고, ..

반응형