전체 글 562

TypeScript 공변성 & 반공변성

공변성(Covariance) : A가 B의 서브타입이면, T는 T의 서브타입이다.반공변성(Contravariance) : A가 B의 서브타입이면, T는 T의 서브타입이다.이변성(Bivariance) : A가 B의 서브타입이면, T → T도 되고 T → T도 되는 경우불변성(immutability) : A가 B의 서브타입이더라도, T → T도 안 되고 T → T도 안 되는 경우 뭔소린지 모르겠다. 일단 코드로 용어 하나하나 정리해보면,let stringArray: Array = [];let array: Array = [];array = stringArray; // OKstringArray = array; // Errorlet subObj: { a: string; b: number } = { a: '1', ..

Typescript 2024.11.08

Google Cloud Platform - GKE 알아보기

GCP를 활용하여 Spring 프로젝트 진행 중에 ADC(Application Default Credentials)를 활용하는 과정이 있었다. 구글에 있는 사용자 인증 정보를 자동으로 검색하기 위해서 인증 라이브러리에 사용되는 전략이다. ADC를 사용할 때는 Google Cloud 서비스 및 API에 대한 애플리케이션 인증 방법을 변경하지 않고 개발 또는 프로덕션 환경에서 코드를 실행할 수 있다. ADC가 사용자 인증 정보를 찾는 위치와 순서에 대한 자세한 내용은 참고문서를 참조하자. API 키를 사용하는 경우 ADC를 설정할 필요가 없고 자세한 내용은 API 키 사용을 참고하자. ADC에 사용자 인증 정보를 제공하는 방법은 코드 실행 중인 환경을 일단 선택합니다로컬 개발 환경Google Cloud 클..

카테고리 없음 2024.11.08

java에서 recode 형식

JDK 14부터 record라는 녀석이 추가되었는데, getter, equals hashcode, toString 등을 자동으로 만들어주어서, 불변 데이터 객체를 쉽게 만들 수 있게 해주는 좋은 녀석이다. 하지만 조심해야 할 점이 있다.record에 배열을 쓸 때 조심해야 한다.public record Person( String[] names, int age) {}바로 다음과 같이 레코드의 구성요소에 배열 array가 있을 경우이다. 레코드의 구성요소에 배열이 존재할 경우, 레코드가 보일러플레이터들을 자동으로 생성해줘서 equal, hashcode, toString을 재정의해줘야한다. 여기에 SonarQube에서의 major 이슈사례가 등록된 경우도 있다. Java static code analy..

카테고리 없음 2024.11.06

JVM, JDK, JRE 정리

Java 동작구조 Java의 동작 구조를 한 번 살펴 보자. 1. 개발자는 사람이 이해할 수 있는 언어로 소스 코드를 작성한다. Java2. 자바 컴파일러 javac.exe가 자바 소스코드를 읽어서 가상 머신이 이해할 수 있는 바이트 코드로 변환한다.(.class)3. Class Loader를 통해서 .class 파일이 JVM 메모리에 적재된다.4. JVM이 JAVA Interpreter(java.exe) 및 JIT 컴파일러를 이용해서 바이트 코드를 실행한다.5. JVM이 메모리 관리, 스레드 관리 등의 런타임 환경을 제공한다. JVM은JVM은 자바 가상 머신을 자바 바이트코드를 실행하는 플랫폼 독립적인 실행 환경을 제공한다.JVM은 컴파일된 바이트 코드를 해당 운영 체제가 이해할 수 있는 기계어로 변환..

카테고리 없음 2024.11.06

ElastiCache가 잘 생성됐는지 확인 & Spring Boot에 ElastiCache 연결해보기

먼저 ElastiCache 대시보드로 들어가 줍니다.  기본 엔드포인트 주소에서 포트 번호를 빼고 복사해줍니다.(여기서 리더 엔드포인트는 엔드포인트 읽기 전용 주소입니다.) EC2환경에 들어가서 ElastiCache에 접속해줍니다.redis-cli -h {ElastiCache의 기본 엔드포인트}로컬 환경에서 접속되는지 테스트 EC2의 VPC 정보 ElastiCache의 VPC 정보    이제 SpringBoot에 ElastiCache를 연결해봅시다. application.yml 파일에서 prod 환경을 세팅해줍니다.# local 환경spring: profiles: default: local datasource: url: jdbc:mysql://host.docker.internal:3306/..

카테고리 없음 2024.10.14

MySQL 구조 파악 및 SQL 튜닝의 시작

MySQL의 성능을 많이 잡아먹는 부분이 무엇인지 어떤 요인이 주로 문제인지 파악할 있어야 하고, 그 원인이 무엇인지는 MySQL 구조를 알아야 파악할 수 있다. MySQL의 아키텍처- MySQL의 아키텍처를 간단하게 표현하면 위와 같다. 아키텍처에서 SQL문이 어떻게 실행되는 지 과정을 알아보면    1. 클라이언트가 DB에 SQL 요청을 보냄 -> MySQL 엔진에서 옵티마이저가 SQL문을 분석한 뒤에 빠르고 효율적으로 데이터를 가져올 수 있는 계획을 세운다. 어떤 순서로 테이블에 접근할 지, 인덱스를 사용할 지 어떤 인덱스를 사용할 지 등을 결정한다.(옵티마이저가 세운 계획은 완벽하지 않다. SQL 튜닝이 필요하다.) 2. 옵티마이저가 세운 계획 바탕으로 스토리지 엔진에서 데이터를 가져온다. -> ..

카테고리 없음 2024.10.08

항해 DEV LAB 참여 후기

뒤늦은 항해 DEV LAB 참여 후기 8 / 31 토요일 스파르타 코딩클럽에서 항해 DEV LAB 세션을 진행한다 하여 참가하게 되었다. 항해 플러스 백엔드 4기 진행 시 코치진으로 멘토링을 해주신 허재 코치님께서도 계시고 같이 항플 과제를 진행해 나간 멘티분들도 계셔서 인사를 나누고 세션을 듣게 되었다.   AI와 자동화로 주니어 개발자 키우기우선 인프런의 CTO분이신 이동욱 개발자님께서 세션 시작을 해주셨다.인프랩 회사의 구성원을 간략하게 소개해주셨는데 개발자가 30명 초반으로 구성되어 있고 첫 직장 11명이라고 소개를 해주셨다. 이동욱 개발자님의 개발자 채용의 핵심 모티브는 아래와 같았다.1. 자기 동기부여가 강한 사람(self-motivation)2. 제품과 조직의 align이 된 사람3. 해당..

카테고리 없음 2024.09.08

2024 인프콘 신청을 하면서

호기심 가득한 마음으로 인프콘 2024를 신청하게 되었는데 장소는 8월 2일 금요일 아침 9시 50분에 코엑스에서 열리게 된다.   올해 5월 초에 퇴사를 하고 스스로 학습하는 가운데 자주 이용하는 인프런에서 오프라인 이벤트가 열리는 것이었다! 백엔드 개발자로 계속해서 학습을 하는 와중에 인프콘에서 선배 개발자 및 시니어 분들의 노하우가 담긴 강의를 현장에서 느껴보고 싶다.개발직 다양한 분야의 사람들과 오프라인으로 네트워킹도 가능할 것 같아서 꼭 참여해보고 싶고 여러가지 굿즈도 받고 싶은 마음이다. 나만의 인프콘 페이지도 만들 수가 있는데 아래와 같이 만들어 보았다. 오전 시간 부터 오후 시간까지 꽉꽉 시간표를 짜보았고 너무 좋은 세션들이 리스트에 있어서 고민을 많이 하였다. (발표 추가 / 빼기도 가능..

카테고리 없음 2024.07.05

항해 플러스 백엔드 4기 경험 후기 및 수료 인증

항해플러스를 참여하게 된 계기우연히 웹서핑을 하는 중에 하단에 광고로 항해플러스 백앤드 과정 광고를 보게되었다. 중소기업에서 기존에 존재하는 프로젝트를 유지보수하는 업무를 주로 하는 나는 개발 공부를 좀더 폭넓고 깊게 배우고 싶다는 평소 마음가짐을 갖고 4기 커리큘럼을 차근차근 읽었다.  TDD(Test Driven Development), 클린 아키텍처, 서버구축, CI/CD 모니터링, 대용량 트래픽 처리, 장애 대응이라는 처음 보는 키워드가 많고 배우고 싶은 마음이 생겨서 OT를 듣고 바로 신청을 하게 되었다.    항해 플러스 프로젝트 결과물 및 후기10주과정으로 사용자 포인트 처리(TDD 챕터) 및 특강신청 처리(클린 아키텍처 챕터) 마지막으로 이커머스 시나리오(전체적인 과정)를 기반으로 과제를..

카테고리 없음 2024.05.25