til
88 posts
Jest 테스터 코드 작성하기 (1)

Jest unit testing… 회사에서 개발하기 시작한 서버에서 본격적으로 유닛 테스트를 구현하는 방법에 대한 이해가 필요한 상황이다. 이에 공식 문서를 보면서 좀 정리를 해둘 필요를 느껴 정리해본다… Getting Started 설치 특정 메서드를 생성한다. 테스트 파일을 만들어 보자 그 뒤 에 아래의 내용을 기록하면 된다. 이제는 혹은 을 이용해 jest 테스트를 실행할 수 있다. 그리고 Jest는 다음과 같은 메시지를 띄울 것이다. Test with NestJS 자동화된 테스트는 어떤 진지한 소프트웨어 개발의 필수적인 영역이다. 자동화는 개별적인 테스트의 반복을 쉽게 만들어주고, 개발 과정 동안 테스트를 빠르고 쉽게 하도록 도와준다. 자동화는 개별 개발자들의 생산성을 증대시키며, 소스 코드 제어 체크인, 기능 통합 및 버전 릴리스와 같은 중요한 개발 수명 주기 시점에서 테스트가 실행되도록 보장한다. 이러한 점에서 Nest 프레임워크는 효과적인 테스트를 포함한 개발을 …

June 16, 2024
til
backendd
til ) NestJS + Plasma + MongoDB

서버 설정 및 간단한 가지고 놀아보기 들어가면서 필요한 기술 스텍을 사용하는 방법을 간단하게 적용해보면서 학습해본다. 0. 밑작업 : 몽고 DB Docker 설정 도커파일을 구성 및 도커 컨테이너로 미리 DB를 설치해준다 데이터베이스 설치 1. Prisma 설치 Prisma 를 설치 한다 Prisma 최초 초기화 2. Prisma Connect to DB schema.prisma 파일 설정 환경변수 설정 3. DB 구조를 설정한다 서버 설정 및 간단한 가지고 놀아보기 들어가면서 0. 밑작업 : 몽고 DB Docker 설정 1. Prisma 설치 2. Prisma Connect to DB 3. DB 구조를 설정한다

June 09, 2024
til
backend
til ) AWS 기초 강의 5

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 21: S3 Storage Class 스토리지 클래스 다양한 스토리지 클래스를 제공 클래스 별로 저장의 목적, 예산에 따라 다른 저장 방법을 적용 총 8가지 클래스 S3 스탠다드 99.99% 가용성 99.999999999% 내구성 최소 3개 이상의 가용영역에 분산 보관 최소 보관 기간 없음, 최소 보관 용량 없음 파일 요청 비용 없음(전송 요금은 발생) $0.025/gb(서울 리전 기준) S3 스탠다드 IA 자주 사용되지 않는 데이터를 저렴한 가격에 보관 최소 3개 이상의 가용영역에 분산 보관 최소 저장 용량 : 128kb 최소 저장 기간 : 30일 즉 1일만 저장해도 30일 요금 발생 데이터 요청 비용 발생 : 데이터를 불러올 때마다 비용 지불(GB) 사용 사례 : 자…

June 07, 2024
til
backend
til ) AWS 기초 강의 4

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 16: VPC와 Subnet AWS 의 구조 원칙적으로 VPC는 외부 접근이 안되어야 한다. 하지만 Internet Gateway 가 있기 때문에 접속이 가능한 것일 뿐이다. Virtual Private Cloud(VPC) 개념 : AWS 계정 전용 가상 네트워크이다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있다. VPC 가상의 데이터 센터 외부와 격리된 네트워크 컨테이너 구성 가능 원하는 대로 사설망을 구축 할 수 있다 리전 단위 VPC의 사용 사례 EC2, RDS, Lambda 등의 AWS의 컴퓨팅 서비스 실행 다양한 서브넷 구성 보안 설정(IP Block, 인터넷에 노출되지 않는 EC2 등 구성 ) VPC의 구성요소 서브넷 인터넷 …

June 07, 2024
til
backend
til ) AWS 기초 강의 3

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 11: EC2(5)-EC2 생명 주기 EC2의 생명 주기 중지 중지 중 인스턴스 요금 미 청구 단, EBS 요금, 다른 구성 요소는 청구 중지 후 재시작 시 Public IP 변경 EBS를 사용하는 인스턴스만 중지 가능: 는 중지 불가 재부팅 재 부팅 시에는 Public IP 는 변동 없다 최대 절전 모드 메모리 내용을 보존해서 재시작시 중단 지점에서 시작할 수 있는 정지 모드 12: EC2 Autoscaling 스케일링 수직적 스케일(Vertical Scale) : 성능을 올리는 방식 수평적 스케일(Horizontal Scale) : 규모를 늘려 병렬적으로 처리하는 방식 AWS Auto Scaling 애플리케이션을 모니터링 하고 용량을 자동으로 조정하여, 최대한 저렴하…

June 07, 2024
til
backend
til ) AWS 기초 강의 2

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 6: 가상화란? 리소스를 효율적으로 사용하도록 만드는 것, 가상화(VM) 직접 OS가 하드웨어 설치된 상태(Bare-Metal)로 과거엔 운영했음 가상화의 역사 1세대 : 완전 가상화 (Fully Emulated) 모든 시스템 요소가 에뮬레이터 안에 들어감 하드웨어 리소스(CPU, 하드디스크, 마더보드 등 모든 요소)를 에뮬레이터로 구현하여 OS와 연동 오버헤드 심함 2세대 : Paravirtualization Guest OS는 하이퍼바이저와 통신 하이퍼 바이저 : OS 와 하드웨어 사이에 존재하는 일종의 가상화 매니저 속도의 향상 몇몇 요소의 경우 여전히 에뮬레이터 필요 = 여전히 일정 부분 오버헤드가 발생함 3세대 : Hardware Virtual Machine(HV…

June 07, 2024
til
backend
til ) AWS 기초 강의 1

쉽게 설명하는 AWS 기초 강좌 본 내용은 빠르게 학습 진행 하는 내용이라 전체 내용을 전부 포괄하지 않습니다. 모르는 개념들 위주라 참고용이 아니므로 직접 학습 하시고 요약자료 정도로 생각해주시길 부탁드립니다. 1: 클라우드 컴퓨팅이란? 서버가 존재 하면, 클라이언트 사이의 통신이 아닌 서버와 클라이언트 간의 통신을 통해 정보 처리, 정보 전달 면에서 유효하게 된다. 데이터 센터 : 어플리케이션의 서버를 호스팅하는 실제 시설 하드웨어 네트워킹 장비 전원공급장치 전기 시스템 백업 발전기 환경 제어장치(에어컨, 냉각장치 등) 운영인력 기타 인프라 등등… 데이터 센터는 운영에 비용이 많이 소요됨 건물 유지 비용, 서버 구매 비용, 셋업, 유지 보수 등 한번 구매하면 수요에 상관 없이 계속 보유해야함 느린 구축 시간 유저의 수요에 빠르게 대처 어려움 장애 발생에 대한 대응 느려짐 클라우드의 출현은 필현에 가깝다. 클라우드의 장점 자본 비용을 가변 비용으로 대체 규모의 경제로 얻게 되는 …

June 07, 2024
til
backend
til ) TypeScript 복습하기 05

Object Types JS에서는 근본적으로 객체를 통해 데이터들을 모으고, 전달하며, TS는 이걸 기반으로 타입화 한다. Quick Reference 치트시트를 확인하면 빠르게 사용 방법을 볼 수 있을 거다! Property Modifiers 각 프로퍼티는 객체 안에서 사용되거나, 옵셔널인지 여부 등을 지정해 줄 수 있다. Optional Properties 마크를 붙임으로써 해당 값의 존재 여부를 선택적으로 지정해줄 수 있다. 그리고 이러한 옵셔널한 설정은 와 함께 TS에선 undefined 가 될 잠재성이 있다고 판단하여, 에러를 보여주곤 합니다. 따라서 간단하게 검사를 하는 것을 추가하여 수저을 하거나 JS에서 제공하는 방식을 통해 해결도 가능하다. 구조 분해 패턴, 기본값을 적용하여 내부 값이 옵셔널일 때 기본값을 가질 수 있어서 undefined가 나지 않도록 조치를 취한다. readonly Properties readonly 라는 표시를 한 프로퍼티들은 읽을 순 있으…

June 05, 2024
til
backend
til ) TypeScript 복습하기 04

More on Functions TypeScript에서는 함수들이 호출될 수 있는 방법을 서술하는 방법이 많이 있다. 함수를 설명하는 타입들을 작성하는 방법들을 알아본다. 함수 타입 표현식 함수를 설명하는 가장 간단한 방법은 함수 타입 표현식이다.  라는 문법은 “문자열 타입 를 하나의 매개변수로 가지고 반환값이 없는 함수”를 의미한다. 함수 선언처럼, 매개변수의 타입이 지정되지 않으면, 암묵적으로 가 된다. 매개변수 이름이 필수다. 즉, a라고 이름을 붙이는 것은 필수라고 생각해라. 타입 별칭을 사용해서 함수의 타입에 이름을 붙이는 것도 가능하다. 호출 시그니처 함수들은 호출만 되는게 아니라 프로퍼티를 가질 수 도 있다. 단, 함수 타입 표현식 문법은 프로퍼티를 정의하는 것을 허락하지 않는다. 객체 타입에 호출 시그니처를 활용해야만 함수에 프로퍼티를 추가할 수 있다. 함수 타입 표현식이 아니므로 반환타입을 표현할 때 가 아닌 로 표현한다. 구성 시그니처 호출 시그니처 앞에 …

June 04, 2024
til
backend
til ) TypeScript 복습하기 03

Narrowing 타입 좁히기는 TS가 코드 실행 중, 로직 상에서 가능한 타입을 줄여 나가는 과정을 의미한다. 위의 예시를 보면 typeof 를 활용하여 타입을 좁혀 나가고, 그 외의 경우인 경우를 역시 추론하여 padding 이 string일 수 있다고 생각, return 문을 문제없이 넘어가게 만든다. TS는 이러한 기능을 통해 코드 타입의 안정성을 보장해주고, 이러한 방식으로 조건문, 반복문, 진리성 체크, 삼항 식 등을 통해 코드를 명확하고 오류가 없게 만드는 것이다. typeof type guards JS에서 지원하는 연산자를 TS에서도 동일하게 지원한다. string number bigint symbol undefined object funtion 이러한 기능을 활용하여 연산자를 통해 타입을 축소하는 것을 라고 부른다. Truthiness narrowing 진실성은 사전에 정의된 명칭은 아니지만, JS에서도 TS에서도 사용되는 형태이다. JS에서는 조건을 boolea…

June 04, 2024
til
backend
til ) TypeScript 복습하기 02

Everyday Types 타입은 단지 타입 표기 외에 더 다양한 위치에 나타날 수 있고, 새로운 구조체를 만들고자 할 때 타입을 참조하는 경우도 있다. 원시 타입 : string, number, boolean String, Number, Boolean 과 같은 타입은 유효한 타입이긴 하지만, 특수 내장 타입으로 쓰면 안된다. 쓰지 말고, string, number, boolean을 사용해라. 배열 = 는 튜플 타입으로 배열이 아니다. any 특정 값으로 인하여 타입 검사 오류가 발생하는 것을 원하지 않을 때 사용할 수 있다. 해당 타입은 코드상 특정 라인에 문제가 없다고 TS를 안심시킨다는 목적 단지 하나 때문에 긴 타입을 새로 정의하고 싶지 않을 때 유용하게 사용할 수 있다. : 컴파일 플래그로 any 를 쓰는 것을 강제로 막을 수 있다. 변수에 대한 타입 표기 추론 규칙을 명시적으로 학습하지 않아도 되고, 처음 시작 시에는 굳이 타입 표기를 적게 사용할 수 도 있다. …

June 03, 2024
til
backend
til ) TypeScript 복습하기 01

TypeScript 들어가면서 좀 더 진지하게, 타입스크립트 언어에 대해 베이직을 제대로 정리 해놓으려고 한다. 어떤 개발자가 될지는 어쩌면 시작에서 결국 결정나니까..! 본 정리는 TypeScript 공식 문서를 요약한 내용이며, 전체 내용을 담고 있진 않으니까 레퍼 문서를 꼭 참고하실 것..! TypeScript for Java / C# Programmers JavaScript 함께 배우기 (Co-learning JavaScript) TypeScript는 JS와 동일한 런타임을 사용하므로, 특정한 런타임 동작의 구현에 필요한 리소스는 JS에서도, TS에서도 잘 적용된다. TS에 국한하여 특정된 리소스에만 제한을 두지 말 것 클래스 다시 생각하기 C#, Java 는 명시적 OOP 언어이다. 그러나 TS는 이러한 방식과 차이를 가진다. 자유로운 함수와 데이터 JS에서부터 시작하여 함수, 데이터는 미리 정의된 클래스나, 구조에 속하지 않고 자유롭게 데이터를 전달할 수 있는 유연성을 …

June 03, 2024
til
backend
til ) NestJS 를 공부하자 - 02

NestJS Zero to Hero - Modern TypeScript Back-end Development Creating a Task Service 서비스 생성하기 생성자를 활용해서 DI 진행하기 이렇게 private 라는 접근 지시어를 넣어줌으로써, 기존의 OOP 들이 특정 기능을 의존성 주입하는 방식들로 하지 않고, 생성자에서 인자로 넣어주는 것 만으로도 프로퍼티로 사용할 수 있도록 해줄 수 있다. 이러한 특징이 타입스크립트가 더 짧고, 가독성이 좋게 만들어주는 요소라고 할 수 있겠다. NestJS Zero to Hero - Modern TypeScript Back-end Development Creating a Task Service 생성자를 활용해서 DI 진행하기

June 03, 2024
til
backend
til ) NestJS 를 공부하자 - 01

NestJS Zero to Hero - Modern TypeScript Back-end Development 들어가면서 들어가기로 확정된 회사에 대해, 기술 스택이 기존에 써봤던 nestJS 를 기반으로 한다기에 급하게, 아주 핵심만 정리하는 그런 학습이다. 인강을 기준으로, 필요한 내용이나, 핵심 위주만 정리를 할 예정이다. Installation 주의 : 윈도우 권한 문제 발생 시 파워쉘 보안 정책 문제 해결 <- 이 내용을 통해 보안사항을 수정하면 해결된다. npm vs yarn vs pnpm npm, Yarn, pnpm은 모두 JavaScript 패키지 매니저로, 패키지 관리와 의존성 설치를 위한 도구입니다. 그러나 각각의 특징과 차이점이 있습니다. 속도 및 성능 npm: 기본적으로 속도가 느릴 수 있지만, 최근 버전에서는 속도가 많이 개선되었습니다. Yarn: 병렬 처리를 통해 속도가 빠르며, 캐시 시스템을 사용하여 재설치 시 더 빠른 성능을 제공합니다. pnpm: 하드…

June 03, 2024
til
backend
cote) Full HD 화면 상의 직사각형들이 차지하고 있는 총면적

Full HD 화면상의 직사각형들이 차지하고 있는 총면적 문제 1920x1080 픽셀을 가진 Full HD 화면상에 수직선,수평선으로만 이루어진 직사각형들이 놓여 있습니다. 이 직사각형들은 홀로 떨어져 있거나, 일부 겹치거나, 변 또는 꼭지점이 접하거나, 포함관계에 있을 수 있습니다. 이 직사각형들이 차지하고 있는 총면적을 구하는 프로그램을 작성해서 보내주세요 작성하세요. 프로그래밍 언어는 가장 자신있는 것을 사용하세요. 예로 10x10 픽셀을 가진 화면상에 아래와 같은 직사각형들이 있을 수 있습니다. 입력 각각의 사각형이 하나의 입력줄이 되며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어집니다. 좌표는 왼쪽 위가 (0,0)이고 오른쪽 아래가 (1920, 1080) 입니다. 첫 두 정수는 사각형의 왼쪽 위 꼭지점의 x, y좌표이고 다음 두 정수는 오른쪽 아래 꼭지점의 x, y좌표입니다. 위 예는 아래와 같은 입력을 갖습니다. 입력은 별도 파일에서 읽어와도 되고 소스코…

May 28, 2024
til
algorithm
react-frontend) til - 20240528

모던 리액트 Deep Dive 들어가면서 해당 내용은 인강을 통해 들었던 내용이 있으나, 개념적으로 부족한 부분이 있는 것으로 판단되어, 조금 더 기본이 되는 근본적인 내용을 정리하기 위하여 초반 부분의 독서 및 정리한 내용이다. 필요하거나, 중요하다고 생각하는 내용만을 담고 있다. 주의! 챕터 상의 3차 목차에 대해서 제목으로 지정하며, 보고 알아둬야 하는 부분은 페이지까지 기록한다. 01 장 리액트 개발을 위해 꼭 알아야 할 자바스크립트 1.2.3 다양한 함수 살펴보기 즉시 실행 함수 43p 함수를 정의하고 즉시 실행됨 : 글로벌 스코프를 오염시키지 않는 독립적인 함수 스코프를 운용할 수 있다. 고차 함수 43p 함수를 인수로 받거나 결과로 새로운 함수를 반환시킬 수 있다. 이런 역할을 하는 함수를 고차 함수(Higher Order Function)라고 한다. 이 특징을 사용하면 함수형 컴포넌트를 인수로 받아 새로운 함수형 컴포넌트를 반환하는 고차함수를 만들 수 있고, 이를…

May 28, 2024
til
frontend
react-frontend ) til - 20240527

모던 리액트 Deep Dive 들어가면서 해당 내용은 인강을 통해 들었던 내용이 있으나, 개념적으로 부족한 부분이 있는 것으로 판단되어, 조금 더 기본이 되는 근본적인 내용을 정리하기 위하여 초반 부분의 독서 및 정리한 내용이다. 필요하거나, 중요하다고 생각하는 내용만을 담고 있다. 주의! 챕터 상의 3차 목차에 대해서 제목으로 지정하며, 보고 알아둬야 하는 부분은 페이지까지 기록한다. 01 장 리액트 개발을 위해 꼭 알아야 할 자바스크립트 1.1 자바스크립트의 동등 비교 리액트와 함께 사용 가능한 다른 라이브러리들 21p~ 상태관리 : Redux, Zustand, Recoil, Jotai 서버 사이드 렌더링 : Next.js, Remix, Hydrogen 애니메이션 : Framer Motion, react-spring, React Move 차트 : Rechats, visx, nivo 폼 : React Hook Form, Fromik, React Final Form JS에서 un…

May 27, 2024
til
frontend
cote) 암아존 배조스씨를 위한 계좌이체 한글 음성 안내

암아존 배조스씨를 위한 계좌이체 한글 음성 안내 우리말을 쓰는 평범한 사람이라면 1억원 1조원을 일억원, 일조원이라 하지 억원, 조원이라 읽지는 않습니다. 반면에 1만원, 1천원, 1백원의 경우는 일만원, 일천원, 일백원이라 하지 않고 만원, 천원, 백원, 십원이라 읽습니다. 또한 ‘80,270원’처럼 금액의 표기는 천단위로 콤마를 찍지만 실제로 읽을 때는 ‘팔만 이백칠십원’처럼 만단위로 분리하여 읽습니다. “배조스님의 계좌에서 사이냅소프트님의 계좌로 일조 사천 일백 팔십 오억 원을 이체합니다. 동의하시면 1번을…” 계좌이체 음성안내의 부자연스러운 금액 표현과 띄어읽기가 거슬렸던 암아존 배조스씨를 위해 이체금액을 한글로 자연스럽게 읽을 수 있는 프로그램을 작성해서 보내주세요 작성하세요. 프로그래밍 언어는 가장 자신있는 것을 사용하세요. 입력 암아존 배조스님의 은행 이체한도는 100조원으로 설정돼 있으므로 입력 금액의 범위는 1원에서 100조원까지입니다. 모든 금액은 천단위 구분자인…

May 25, 2024
til
algorithm
docker-kubernetes ) til - 20240524

색션 13. Kubernetes로 데이터 & 볼륨 관리하기 213. Kubernetes 볼륨 시작하기 데이터를 저장하고 불러오는 기능을 포함하는 서비스를 쿠버네티스를 통해 올리는 순간 문제에 봉착하게 된다. 이는 바로 어떤 이유에서든지 재 시작되었을 때의 문제이다. 일전 강의를 위하여 준비된 프로젝트는 재시작의 확실한 방법이 없는 상태인데, 이러한 일들이 발생할 수 있다는 점은 어떤 시나리오에서든지 예상을 해야한다. 그리고 이런 상황에서 쿠버네티스가 다시 시작 될 때 볼륨을 사용하지 않았기 때문에 지금의 상황으로는 모든 데이터가 손실되고 만다. 당연하게도 이를 해결하는 것이 바로 볼륨이며, 공식문서를 보면 엄청나게 많고 다양한 종류의 볼륨이 등장한다. 이를 보면 압도당할 수는 있다. 하지만, 필요한 순간에 찾으면 되는 것이고, 다양한 유형의 볼륨 및 드라이버는 그때그때 보고 익히면 될 문제다. 상당히 많은 종류가 존재하며, deprecated 된 것도 존재한다. 본 강의에서는 …

May 24, 2024
til
backend
react-frontend ) til - 20240516

섹션 6 State and Lifecycle State 와 Lifecycle의 정리⭐ state state 란 리액트 Componenet의 상태를 의미한다. 여기서 상태란 정상 / 비정상의 의미 보다는 데이터라는 쪽에 가까운 의미를 내포하고 있다. 즉, state 는 리엑트 컴포넌트에서 변경 가능한 데이터를 의미한다. 여기서 state를 사용하는 가는 각 개발자의 정의에 따라 움직인다고 보면된다. 렌더링이나 데이터 흐름에 사용되는 값만 state 에 포함시켜야 한다. 왜냐하면 결국 state란 데이터의 변경과 함께 렌더링이 발생하기 때문에 불필요한 데이터를 등록했다간, 리엑트의 state는 JavaScript 객체라고 봐도 무방하다. state 는 직접 수정할 순 없다. (하면 안된다) 왜냐하면 렌더링과 연관된 값들이기 때문에 개발자의 의도한 렌더링과는 다르게 나오게 만들 수도 있기 때문이다. Lifecycle 생명주기 리엑트 컴포넌트가 생성되는 시점, 사라지는 시점이 정해져 있다…

May 23, 2024
til
frontend
react-frontend ) til - 20240516

섹션 5 Components and Props Components 와 Props의 정의 ⭐ 반드시 완벽하게 이해해야 한다. Components Component-Based : 여러 컴포넌트들이 하나의 부품들이 되고, 그 부품들의 모음의 구조로 짜여지는 코드의 형식이 리엑트의 큰 구조라고 할 수 있다. 에어 비앤비 페이지의 컴포넌트들 기본적으로 작은 컴포넌트들이 모여 큰 컴포넌트로, 큰 컴포넌트들이 모여 페이지 전체를 구성하게 된다. 그렇기에 개념적으로 보면 자바스크립트의 함수와 유사하다고 볼 수 있으나, React 컴포넌트들의 입력과 출력은 다소 다르다고 할 수 있다. React Component의 입력과 출력을 보면, 위의 사진처럼 되어 있어 JS의 함수와는 차별이 된다. Props(속성)을 넣으면, 이를 화면에 맞추어 표현해주는 것이 React Component인 것이다. 이러한 구조는 객체지향의 클래스-인스턴스의 관계와 닮아 있게 생성되는데, Component들을 만들…

May 21, 2024
til
frontend
cote) 얼른 마스크씨 회사 전기 자동차의 행복한 일련번호

‘얼른 마스크’씨 회사 전기 자동차의 행복한 일련번호 마스크를 쓰지 않고는 밖을 다니면 안 되는 코로나19 시대입니다. 코로나19가 장기화되면서 코로나 블루라는 말이 나올 정도로 우울한 사람들이 많아지고 있습니다. 세계적인 전기자동차 회사 경영자인 **‘얼른 마스크’**씨는 자신의 전기자동차를 타는 고객들이 조금이라도 행복할 수 있기를 바라며 판매하는 전기자동차 번호판 일련번호 4자리를 **행복 수(happy number)**로 채우고자 합니다. 행복 수는 각 자릿수의 제곱의 합으로 변환하는 과정을 반복할 때 언젠가는 1에 도달하는 수입니다. 예로, 13 → 1x1 + 3x3 = 10 → 1x1 + 0x0 = 1이므로 13은 행복 수입니다. 행복 수가 아닌 것은 슬픈(sad) 수 또는 불행(unhappy) 수라고 불립니다. 예로, 4 → 4x4 = 16 → 1x1 + 6x6 = 37 → 3x3 + 7x7 = 58 → … → 4 로 순환하여 결코 1에 도달할 수 없으니 4는 슬픈 수…

May 20, 2024
til
algorithm
react-frontend ) til - 20240516

색션 4 Rendering Elements Elements의 정의와 생김새 Elements란? 리액트 앱을 구성하는 가장 작은 블록들 본 이미지는 DOM Elements들을 의미하며, 기본적으로 태그 형태의 노드들로 구성되어 있다. 일반적인 DOM Elements와 React Elements DOM elements : 화면에 나타나는 내용을 기술하는 자바스크립트 객체. Descriptor 라는 명칭이었으나, 이후 바뀌어 지금의 구조로 바뀌었다. React Elements : Virtual DOM에 존재하는 Elements들을 일컫는 말이라고 보면 된다. 즉, DOM Elements의 가상 표현이 React Elements 라고 볼 수 있다. 또한 Render라는 작업 전의 데이터를 모두 가지고 있는 만큼 React Elements는 렌더 후의 그것보다 상대적으로 무겁다. 결론적으로 React Elements가 화면에 표시될 것들을 기술하는 것이라고 보면된다. Elements…

May 16, 2024
til
frontend
docker-kubernetes ) til - 20240513

색션 13. Kubernetes로 데이터 & 볼륨 관리하기 211. Kubernetes 볼륨 : 이론 & Docker 와의 비교 당연한 말이지만 Pod의 일부로 시작되는 컨테이너에 볼륨을 탑재 하며, 탑재해야하는 내용에 대해 Pod Template 에 추가할 수 있다. 이러한 점에서 쿠버네티스는 다양한 형태와 드라이버를 제공하고 기본적으로 큰 기준으로는 과 정도로 나눌 수 있다. 여기서 핵심은 볼륨의 라이프타임, 생명주기가 Pod의 생명주기에 의존한 단 부분일 것이다. 즉, 볼륨도 쿠버네티스에 의해 시작되고, Pod와 함께하는, Pod의 일부다. 그렇다는 말은 Pod에 따라 볼륨은 달라지고, 대게 문제는 없으나, 때론 이 과정에서 문제가 발생하니 이를 이해하고, 잠재적인 문제 해결 방안을 아는게 핵심이라고 볼 수 있다. 볼륨의 수명 볼륨의 수명은 Pod 와 함게 한다고 보면 된다. 따라서 내부의 컨테이너의 수명과는 관련이 없어서, 컨테이너를 다시 시작하고, 제거해도 살아남는다…

May 15, 2024
til
backend
react-frontend ) til - 20240513

색션 3 JSX JSX의 정의와 역할 JSX 란? JavaScript = JS JSX = A Syntax Extension to Java Script = 자바 스크립트 문법의 확장 = Java Script + XML/HTML JSX 코드 = JS + XML/HTML 의 구조를 보여준다. JSX의 역할 내부적으롷 XML, HTML 코드를 JS 코드로 변환해주는 역할을 한다. 이러한 역할을 하는 것이 React.createElement 코드이다. JSX를 사용한 코드 JSX 를 사용하지 않은 코드 두 코드를 비교하면 JSX를 사용하면 모두 createElement 코드부분이 변화되어 XML, HTML 형식이라는 걸 알 수 있다 위의 코드는 React.createElement 의 결과로 아래와 같은 객체가 생성되게 된다. 지금까지의 내용을 볼 때, JSX를 사용하냐 안하냐는 필수 불가결 하지는 않다. 하지만… 가독성 : JSX에서는 HTML 과 유사한 구문을 사용하니, 개발자가 컴포넌…

May 13, 2024
til
frontend
docker-kubernetes ) til - 20240513

색션 13. Kubernetes로 데이터 & 볼륨 관리하기 208. 모듈 소개 우리는 쿠버네티스를 활용하여 컨테이너를 배포하는 기능들을 실습했고, 이를 minikube 위에서 진행했다. minikube 는 하나의 호스트 머신이자 로컬 호스트의 가상 머신이기도 하다. 하지만 이것으로 끝이 아니라 쿠버네티스는 궁극적으로 애플리케이션을 다중 시스템, 다중 노드 클러스터에 배포한다는 목표까지 나아가야 한다. 이러한 점에서 우리는 도커를 배울 때와 비슷한 문제를 직면하게 되는데, 즉, 데이터를 저장하고 관리하는 방법에 대한 명확한 길이 제시 되어야한다. 왜냐하면, 컨테이너가 종료되거나, 쿠버네티스가 관리 과정에서 Pod의 제거, 확장, 노드 간의 이동 등으로 데이터를 적절하게 유지되도록 보장하게 만들 수 있는가가 매우 중요하기 때문이다. 따라서 이번 챕터는 볼륨에 대해 도커에서의 개념을 다시 한 번 살펴보고, 쿠버네티스의 볼륨의 작동, 유지 방법에 대해 알아볼 것이다. 일반볼륨, 영구 볼…

May 13, 2024
til
backend
java) til - 20240512

자바 ORM 표준 JPA 프로그래밍 - 기본편 객제지향 쿼리 언어 2 - 중급 문법 : 경로 표현식 경로 표현식 개념 : 테이블 간의 관계를 통해 복합 객체 내의 속성에 접근할 수 있도록 돕는 것을 말한다. 경로 표현식을 사용하는 이유 복합객체접근 : JPA 엔티티의 관계를 활용하여 복합 객체 내의 속성을 접근할 수 있다. 쿼리 간소화 : 복잡한 쿼리를 더 간단하고 읽기 쉽게 만들어준다. 이로써 개발자는 복잡한 조인 연산 없이도 필요한 데이터를 쉽게 접근이 가능하다. ORM과의 호환성 : 현대 ORM 프레임워크는 경로 표현식을 사용하여 데이터베이스와 객체 지향 프로그래밍 언어 사이의 간격을 연결한다. 점을 찍어 객체 그래프를 탐색하는 것 경로 표현식 용어 정리 상태 필드(state field) : 단순히 값을 저장하기 위한 필드(ex: m.username) 연관 필드(association field) : 연관관계를 위한 필드 단일 값 연관 필드 : , , 대상이 엔티티(ex: te…

May 12, 2024
til
java
java) til - 20240512

자바 ORM 표준 JPA 프로그래밍 - 기본편 객체지향 쿼리 언어 1 - 기본문법 : 소개 JPA는 다양한 쿼리 방법을 지원한다 JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 JPQL 이란 가장 단순한 조회 방법 객체 그래프 탐색() JPA를 사용하면 엔티티 객체를 중심으로 개발 문제는 검색 쿼리 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색해야한다. 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 애플리케이션이 필요한 데이터만 DB에서 불러오려면 검색 조건이 포함된 SQL이 필요 JPA는 SQL을 추상화한 JPQL 이라는 객체 지향 쿼리 언어 제공 SQL 과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 자원 JPQL 은 엔티티 객체를 대상으로 쿼리 SQL은 데이터베이스 테이블을 대상으로 쿼리 테이블이 아닌…

May 12, 2024
til
java
java) til - 20240512

자바 ORM 표준 JPA 프로그래밍 - 기본편 값 타입 - 기본값 타입 JPA의 데이터 타입 분류 Entity Type 로 정의하는 객체 데이터가 변해도 식별자로 지속적으로 추적 가능 Value Type int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경 시 추적 불가 값 타입 분류 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long, …) String 임베디드 타입(embedded type, 복합값 타입) 컬렉션 값 타입(collection value type) 기본값 타입 생명주기를 Entity 에 의존한다. 예시 ) 회원 삭제 -> 내부 나이 필드 함께 삭제 됨 값타입은 공유하면 안됨 예시 ) 회원 이름 변경 시, 다른 회원의 이름도 함께 변경되면 안됨 [참고] 자바의 기본타입은 공유되지 않는다 java의 구조상 primitive type은 stack에 저장되므로, …

May 12, 2024
til
java
java) til - 20240511

자바 ORM 표준 JPA 프로그래밍 - 기본편 프록시와 연관관계 정리 - 프록시 프록시 기초 멤버를 조회할 때 팀도 함께 조회해야 하는가? 쿼리가 나갈 때 한 번에 검색되어 나오는게 좋지 않을까? 반대로 연관관계가 있다고 해서, 사용하지 않고 멤버만 사용한다면? 결국 경우에 따라 비즈니스 로직, 실제 쿼리가 달라질 수 있다. 이러한 상황을 JPA는 프록시와 지연 로딩을 활용하여 해결한다. vs em.find() : 데이터베이스를 통해 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 즉, 이후 실제 값을 접근하려고 하면, 그 때 쿼리를 날려 실제 데이터를 가져 온다. 프록시 특징 실제 클래스를 상속 받아서 만들어짐 실제 클래스와 겉 모양 동일 사용 입장에선 객체와 프록시 객체 구분 하지 않고 사용하면 됨(이론상) 프록시 객체는 실제 객체의 참조(target)을 보관 프록시 객체를 호출하면 프록시 객체는 실제 …

May 11, 2024
til
java
react-frontend ) til - 20240510

색션 1 리액트 소개 리액트는 무엇인가? 라이브러리? 자주 사용되는 기능들을 정리해 모아둔 것 사용자 인터페이스(User Interface, UI) 사용자가 입력하는 것들 모든 것, 그리고 이러한 것들을 모아 둔 것이 UI 라이브러리 - react는 이러한 사용자 인터페이스의 컴포넌트들의 모음이다. 화면을 그리는 대표적인 UI 라이브러리들은 다음과 같다. 앵귤러(구글) 프레임워크 : 구글에서 시작 되었으나, 이젠 지원 끊김 리액트(페이스북, 메타) : 2013년 처음 출시, 가장 많이 사용되는 라이브러리 Vue.js 프레임워크 : 중국인 개발자로부터 시작한 오픈소스 프로젝트, 영향력이 커져 이제는 리액트와 함께 거론되는 대형 라이브러리가 됨. 프레임워크 vs 라이브러리 프로그램의 흐름에 대한 제어 권한이 개발자에게 있으면 라이브러리, 프로그램에게 있다면 프레임워크이다. 웹 개발의 트렌드 - 한 가지 기술이 평생 대세가 되는 구조는 아니므로, 다양하게 접근하고 관심을 가질 필요가 있…

May 10, 2024
til
frontend
react-frontend ) til - 20240508

색션 0 HTML 과 CSS JavaScript 소개 및 자료형 정식 이름은 ECMAScript 동적인 데이터들을 다룰 때 사용된다. Script Language 는 런타임때 코드의 해석이 실행된다는 특징이 있다. 현재의 표준버전 ES6(ECMASCirpt 2015, ES2015) JavaScript 의 문법 - 이미 배운 내용이기에 다 기록하진 않고, 까먹었던 부분들 위주로 정리한다. 자료형(Data Type) Dynamic Typing : 동적 타이핑이라고도 부르며, 코드가 실행되고 데이터가 담길 때 그 타입이 결정되는 방식의 언어들을 말한다. Number, String, Boolean, Null, Undefined, Array, Object Type이 존재한다. Array 타입은 다양한 타입의 데이터를 넣고 구성할 수 있고, 다양한 자료형을 하나의 배열에 함께 사용도 가능하다. Object 타입은 기본적으로 객체라고 하지만, JavaScript 에서는 키와 값으로 이루어진 쌍…

May 10, 2024
til
frontend
docker-kubernetes ) til - 20240510

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 203. Label & Selector selector 에 대해 다시 이야기를 해보고자 한다. 이는 다른 리소스를 리소스에 연결하는데 사용하는 용도라는 중요한 기능을 가지고 있기 때문이다. selector 는 기본적으로 서비스나, deployment를 모니터링하고 연결시키는 역할을 한다. 최근의 현대적 selector는 이라는 것이 있고, 거기서 더 나아가서 이라는 개념을 사용한다. 이는 좀더 다양한 기능들을 지원한다. 기본적으로 -(하이픈)을 통해 구성이 되며, 중괄호 내의 키와 값으로 구성되어 있다. 추가로 Operator 가 들어갈 수 있다는 점이 차이점이다. In이란 값을 가지면, 각 키의 값들에 포함되면 감지가 되는 구조라고 보면 된다. 더 많은 자원 제어와, 유연성이 필요하면 가 적절하다 그러나 기본적인 경우에는 어지간하면 쓰지 않아도 충분하다. 더불어 하나 알아둘 것이 metadata는 키값=쌍의 구…

May 10, 2024
til
backend
java) til - 20240424

자바 ORM 표준 JPA 프로그래밍 - 기본편 고급 매핑 - 상속관계 매핑 상속관계 매핑 관계형 데이터 베이스는 상속 관계X 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속 관계 매핑 : 객체의 상속과 구조, DB의 슈퍼 타입 서브타입 관계를 매핑하는 것을 말한다. 슈퍼타입 / 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브 타입 테이블로 변환 -> 구현 클래스 마다 테이블 전략 조인 전략 결과적으로 하위 객체들은 ID가 PK이자 FK로 갖추게 되고, ITEM을 자동으로 일괄 정리가 된다. : 해당 내용을 넣어주면 좋다. (각 자식을 구분하기 위한 컬럼을 자동 생성한다.) : 자식객체 엔티티에 등록하면 해당 값으로 DTYPE 을 지정해주게 된다. 기본적으로 사용하기 적절한 전략이라고 생각하면 좋다. 장점 테이블 정규화 외래키 참조 무결성 제약 조건 활용 가능 저장공간 효…

April 27, 2024
til
java
docker-kubernetes ) til - 20240424

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 200. 선언적으로 service 만들기 service.yaml 이렇게 구동한 다음 서비스에 접근하게 되면 어플리케이션에 접근이 가능해진다. 여기까지를 통해 어플리케이션을 선언적 방식을 통해 띄우는 것 까지 가능했다. 이를 통해 우리는 에러, 명령적으로 매번 쳐줘야할 번거로움을 해결했다. 201. 리소스 업데이트 & 삭제 어떻게 바꾸면 되는가? YAML 파일에 변경할 내용을 수정한 뒤 간단하게 apply 를 하면 된다. 즉, YAML 에서 설정 가능한 부분은 수정하고 적용하면 쉽게 구성을 바꿀 수 있는 것이다. 어떻게 삭제하면 되는가? 기존에 방식으로 명령어를 통해 하는 것도 가능하다. 하지만 -f 옵션과 함께 해당 config 파일을 지목해주면, 이 역시 동일하게 지정한 것들을 삭제하는 것이 가능해진다. 202. 다중 vs 단일 config 파일 master-deployment.yaml 개발자가 원하면 ya…

April 26, 2024
til
backend
intelliJ) Jar 파일 생성하기

introduce IntelliJ IDEA를 이용하여 Java 프로젝트를 Jar파일로 내보내는 방법을 정리한 글이다. 향후 정리할 예정이다. 원본 글 링크 making jar file 참고로 JAR(Java Archive) 파일이란  .jar 확장자 파일에 Class와 같은 Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있어 JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일입니다. JAR ( Java Archive ) / WAR ( Web Application Archive ) / EAR (Enterprise Archive) 파일의 특징,차이점에 관련된 내용이나 예제에서 사용하는 IntelliJ 에서 Java Project 생성에 대해 궁금하신 분들은 아래 포스팅을 참고바랍니다.  [Java] JAR WAR 차이점 및 특징 ( + EAR )  [IntelliJ] Java 프로젝트 생성하기 (HelloWorld 출력) 그럼 먼저 Jar파일을…

April 25, 2024
til
java
java) til - 20240424

자바 ORM 표준 JPA 프로그래밍 - 기본편 다양한 연관관계 매핑 - 일대다 일대다 단방향 실무에서 연관관계의 주인이 Team이 되는 경우를 말한다. 대충 상황적으로 Team 입장에서 Member를 기록해야 하나, Member는 Team을 고려하지 않는 경우 나올 수 있는 설계다. 그런데 실질적인 테이블 데이터 간의 연관관계를 생각해보면, Team 은 외래키를 가질 수가 없다. 여기서 이 관계의 핵심문제는 개발자 입장에서 일 쪽에 작업을 한것 뿐이라고 생각했는데, 관계 특성 상 다(N)에 해당하는 쪽에도 영향을 미쳤다는 점이다. 일대다 단방향 정리 일대다 단방향은 일대다에서 일(1)이 연관관계의 주인이 되는 것 테이블 일대다 관계는 항상 다(N) 쪽에 외래키가 있다. 객체와 테이블의 차이 때문에 반대편 테이블의 외래키를 관리하는 특이한 구조 을 꼭 사용해야함. 그렇지 않으면 조인 테이블 방식을 사용해야 한다. (중간 테이블을 하나 추가해야한다.) 일대다 단방향 매핑의 단점 엔…

April 24, 2024
til
java
docker-kubernetes ) til - 20240424

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 198. Pod와 컨테이너 사양(Spec) 추가 Spec 추가 template는 항상 Pod 를 대변하는 객체이다. 따라서 최초에 를 통해 deployment 를 설정한 것과는 다르게 설정되는 것이다. 더불어 이렇게 설정하는 것은 전체 Pod에 대한 설정이라고 생각하면 된다. Pod 설정하기 - 개체 -f 는 파일을 인식시키기 위한 옵션 값, 여러 개를 인식 시킬 때는 이 옵션을 여러번 사용하면 된다. 우선 이렇게 해보면 에러메시지로 가 필요하다고 이야기 한다. selector란 어떻게 하는 것인가. deployment 는 쿠버네티스 속에서 동적인 객체다. Pod의 확장 명령이 떨어지면 deployment 가 지속적으로 감시하며 살핀다. 이때 제어야 할 필요가 있을 때 가 필요해진다. Pod에 대한 라벨링, 티어 설정 등은 자유롭게 할 수 있고, 그걸 지정한 뒤 selector가 이걸 가리킴으로써 deploy…

April 24, 2024
til
backend
docker-kubernetes ) til - 20240423

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 196. 명령적 접근방식 vs 선언적 접근방식 명령적 접근방식에서 선언적인 방식으로 여러가지 명령어를 통해 쿠버네티스를 구동하는 것을 배웠다. 그러나 이러한 방식의 단점은? 어렵진 않으나 명령어를 외워야 한다. 매번 작업에 적용해야 한다. 이러한 점들은 docker 때와 비슷하게 불편할 수 있고, docker compose를 배운 뒤 훨씬 편해졌고, 이러한 내용이 kubectl에도 적용될 수 있다. A Resource Definition 위에서 언급한 것처럼 파일 내의 구성을 기반으로 deployment 를 생성할 수 있고, 이를 쿠버네티스는 지원한다. YAML 파일 형태를 지원한다. 예시파일 비교 명령적 접근방식 선언적 수행방식 개별 명령어를 쳐서 접근하고 실행시킨다 파일 기반으로 상태가 적용되고 수정된다. docker run과 유사 docker compose 와 유사 197. 배포 구성 파일 생성하기(선언…

April 23, 2024
til
backend
java) til - 20240423

자바 ORM 표준 JPA 프로그래밍 - 기본편 다양한 연관관계 매핑 - 다대일 연관관계 매핑 시 고려사항 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 어노테이션은 JPA가 제공하며, DB랑 매핑을 위해 만들어진 것들이다. 다대일 : 일대다 : 일대일 : 다대다 : -> 쓰면 안된다. 단방향, 양방향 테이블 외래키 하나로 양쪽 조인이 가능하다. 사실 방향이란 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 / 아니면 양방향 연관관계의 주인 테이블은 외래키 하나로 두 테이블의 연관관계를 맺음 객체의 양방향 관계는 A->B B->A처럼 참조가 2군데 객체 양방향 관계는 둘 중 테이블의 외래키를 관리할 곳을 지정해줘야 한다. 연관관계의 주인 = 외래키를 관리하는 참조 주인의 반대편 = 외래키에 영향을 주지 않고, 단순 조회만을 진행한다. 다대일 [N : 1] 다대일 관계에서 외래키는 반드시 다 쪽에 있어야 한다. 다대일 단방향 정리 가장…

April 23, 2024
til
java
java) til - 20240421

자바 ORM 표준 JPA 프로그래밍 - 기본편 연관관계 매핑 기초 - 양방향 연관관계와 연관관계의 주인 1 양방향 연관관계 양쪽에서 참조해서 갈 수 있도록 만드는 것. 테이블의 연관관계는 기존의 단방향과 달리 차이가 없다. 여기서 테이블을 기준으로 곰곰히 생각해보면, 어떤 관계량 양쪽에서 어느쪽 외래키를 가지고 있기만 해도 실질적으로 양방향인 것을 의미한다고 볼 수 있다. 이렇게 설정하면 이제 Team, Member 각 객체에서 양방향으로 연결되고 서로 왔다갔다 하면서 데이터를 접근할 수 있게 바뀐다. 물론, 이렇게 양방향인 것보다 객체 중심으로 생각해보면 단방향인게 나을 수 있지만 이는 후술할 예정… 연관관계의 주인과 mapped by mapped by = JPA 의 이해 난이도를 높이는 주범 객체와 테이블 사이에 연관관계를 맺는 차이를 이해해야 한다. 객체와 테이블이 관계를 맺는 것의 차이점 객체 연관관계 = 2개(객체의 참조는 양쪽에서 가능하게 된다.) 회원 -> 팀 연관관계…

April 22, 2024
til
java
cote) til - 20240421

n^2 배열 자르기 문제 설명 정수 , , 가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. 행 열 크기의 비어있는 2차원 배열을 만듭니다. 에 대해서, 다음 과정을 반복합니다. 1행 1열부터 행 열까지의 영역 내의 모든 빈 칸을 숫자 로 채웁니다. 1행, 2행, …, 행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 이라 할 때, , , …, 만 남기고 나머지는 지웁니다. 정수 , , 가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤  ≤ 107 0 ≤  ≤  < n2  -  < 105 입출력 예 n left right result 3 2 5 4 7 14 입출력 예 설명 입출력 예 #1 입출력 예 #2 나의 풀이 최초에는 이중 for문을 활용하여 해당하는 경우의 숫자배열을 다 만들었다. 하지만 이러한 형태는 n의 값이 조금만 늘어도 시간 …

April 22, 2024
til
algorithm
java) til - 20240421

자바 ORM 표준 JPA 프로그래밍 - 기본편 연관관계 매핑 기초 - 단방향 연관관계 목표 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 방향(Direction): 단방향, 양방향 다중성(Multiplicity): 다대일, 일대다, 일대일, 다대다의 이해 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요 예제 시나리오 회원, 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다 회원과 팀은 다대 일 관계이다. 객체를 테이블에 맞추어 모델링 연관관계를 고려하지 않은 객체 설계 이렇게 구조를 짜면 이러한 데이터를 생성할 때 애매함을 우선 보여준다. 뿐만 아니라 값을 찾을 때도 문제가 된다. 객체를 테이블에 맞춘, 데이터 중심의 모델링은 협력관계를 만들 수 없다. 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. 객체는 참조를 사용해서 연관된 객체를 찾는다. 테이블과 객체 사이에는 이런 큰 간격이 있다. 객체 지향 …

April 21, 2024
til
java
docker-kubernetes ) til - 20240421

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 195. Deployment 롤백 & 히스토리 rollout undo image를 잘못 설정 하는 등의 문제가 발생할 수 있다. 이렇게 된 상태에서 상태를 보기 위해서는 rollout 커맨드를 활용할 수 있다. 이렇게 되면 문제가 발생하고 이때 상태를 보고자 커맨드를 활용하면 대화용 세션으로 들어가게 된다. 실제로 이렇게 되면 대시보드에서도 pod에 문제가 발생하게 된다. 오래된 복제본이 종료가 발생하지 않으며, 신규 pod은 계속 pending 상태를 유지하는 것이다. 이렇게 되는 이유는 kubernetes에서는 정책상 신규 pod 가 정상 실행 전 까지는 이전 이미지를 담은 구버전 pod 가 종료되지 않으며, 이를 통해 서비스가 계속 유지 되도록 만드는 것이다. 이러한 에러가 발생해서 다시 정상적인 버전으로 이미지를 돌려야 한다. 이렇게 하고 나니 pod 의 문제가 해결되고 기존 버전으로 돌아오게 된다. r…

April 21, 2024
til
backend
docker-kubernetes ) til - 20240420

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 192. 컨테이너 재 시작 실습에서 /error 이라는 라우팅과 함께 Node 예제를 종료 시키는 코드를 갖고 있었다. 해당 URL 에 접근하게 되면, process 가 종료하게 되면서 에러가 발생하게 된다 . 이때 이렇게 되는 것은 pod와 pod의 컨테이너 상태를 모니터링 되고 있고, 모닌터링 과정에서 실패가 발생하면 다른 걸로 교체가 되거나 하는게 아닌, 일단은 해당 pod와 pod 내의 컨테이너를 다시 시작한다. 또한 이 내용은 kubernetes dashboard에서도 볼 수 있는 것이다. 또한 해당 pod로 들어가면 세부적으로 그러한 행동이 나타났다는 로그 등도 함께 확인이 가능하다. 193. 실제 스케일링 재시작과 관련한 유용한 명령이 하나 더 있다. 오토 스케일링 기능이 없다고 생각하면 kubectl 은 자동으로 pod의 숫자를 늘리거나 줄이지 않는다. 이럴 때 트래픽이 더 많이 유입될 것이라고 …

April 20, 2024
til
backend
java) til - 20240420

자바 ORM 표준 JPA 프로그래밍 - 기본편 준영속 상태 준영속 영속 -> 준영속 영속 상태의 Entity가 영속성 컨텍스트에서 분리(detached) 영속성 컨텍스트가 제공하는 기능을 사용하지 못하는 상태를 의미한다. 준영속 상태로 만드는 방법 : 특정 Entity 만 준 영속상태로 전환한다. : 영속성 컨텍스트를 완전히 초기화 한다. : 영속성 컨텍스트를 종료 시킨다. Entity Mapping : 객체와 테이블 매핑 Entity 매핑 소개 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity JPA가 관리하며 entity 라고 부른다. JPA 를 사용해서 테이블과 매핑할 클래스는 @Entity 가 필수로 붙어야 한다. 주의사항 기본 생성자 필수(파라미터가 없는 public 또는 private 생성자) final 클래스, enum, in…

April 20, 2024
til
java
java) til - 20240419

자바 ORM 표준 JPA 프로그래밍 - 기본편 플러시 플러시 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것. 플러시 발생 데이터 트랜잭션이 일어나고 끝나면 플러시는 발생한다. 이때는 커밋이 일어난게 아니므로 보내기만 한 상태를 의미 한다. 알아두면 좋은 것!, 플러시가 발생한다고 1차 캐시가 지워지는 것이 아니다. 즉 영속성 컨텍스트 자체는 유지되고 데이터베이스에 반영만 우선 시키는 것이고 커밋으로 확정 전 상태를 만들어 두는 것이다. 변경감지 수정된 Enitty 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시 하는 방법 : 직접 호출, 테스트용 혹은 강제 수동 쿼리로 쿼리 날아가는 것을 보고 싶을 때 사용이 가능하다. 트랜잭션 커밋 : 플러시 자동 호출 JPQL 쿼리 실행 : 플러시 자동 호출 JPQL 쿼리 실행 시 플러시가 자동 호출 되는 이유는? Flush 모드 옵션 굳이…

April 19, 2024
til
java
cote) til - 20240418

괄호 회전하기 리벤지 기존의 풀었던 방식은 테스트 코드에선 성공적이었으나, 실제 체점에서 엣지케이스를 잡지 못하여 다시 도전한다. 문제 설명 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. , ,  는 모두 올바른 괄호 문자열입니다. 만약 가 올바른 괄호 문자열이라면, , ,  도 올바른 괄호 문자열입니다. 예를 들어,  가 올바른 괄호 문자열이므로,  도 올바른 괄호 문자열입니다. 만약 , 가 올바른 괄호 문자열이라면,  도 올바른 괄호 문자열입니다. 예를 들어,  와  가 올바른 괄호 문자열이므로,  도 올바른 괄호 문자열입니다. 대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 가 매개변수로 주어집니다. 이 를 왼쪽으로 x (0 ≤ x < (의 길이)) 칸만큼 회전시켰을 때 가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 s의 길이는 1 이상 1,000 이하입니다. 입출력 예 s result …

April 18, 2024
til
algorithm
java) til - 20240416

자바 ORM 표준 JPA 프로그래밍 - 기본편 영속성 컨텍스트(1) JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping) 영속성 컨텍스트 Entity Manager Factory, Entity Manager 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 엔티티를 영구 저장하는 환경이라는 의미를 가진다. DB와 관련이 있으면서도 없다. 영속성 컨텍스트는 일종의 논리적 개념으로, manager를 통해서 접근이 가능해진다. J2SE 환경 Entity Manager 와 영속성 컨텍스트는 1:1로 생성이 된다. J2EE, Spring 프레임워크와 같은 컨테이너 환경 Entity Manager 와 영속성 컨텍스트는 N:1 의 관계를 가진다. Entity 의 LifeCycle DB에서 가져오는 객체 Entity 는 나름의 생명 주기를 갖고 있다. 비영속성(new / transient) : 영속성 컨텍스트와 전혀 관계가 없는…

April 18, 2024
til
java
cote ) til - 20240416

[PCCE 기출문제] 8번 / 창고정리 문제 설명 선빈이는 게임을 즐기던 중 가지고 있는 물건이 너무 많아 창고 정리를 하기로 했습니다. 선빈이가 보유한 게임 속 창고는 여러 칸으로 나누어져 있고 각 칸에는 물건들이 담겨있습니다. 창고를 정리할 방법을 고민하던 선빈이는 같은 물건이 여러 칸에 나누어 들어있는 것을 발견하고 우선 같은 물건끼리 최대한 겹쳐쌓는 방식으로 창고를 정리하기로 했습니다. 선빈이의 창고에 들어있는 물건의 이름과 개수는 리스트 형태로 주어지며, 한 칸에 겹쳐질 수 있는 물건의 개수에는 제한이 없다고 가정합니다. 예를 들어 창고의 각 칸에 담겨있는 물건의 이름이, 각 물건의 개수가 이라면 연필과 책을 한 칸에 각각 겹쳐 쌓아 간단하게 , 로 만들 수 있습니다. pencil book javacpp.jpg 주어진 solution 함수는 정리되기 전 창고의 물건 이름이 담긴 문자열 리스트 와 각 물건의 개수가 담긴 정수 리스트 이 주어질 때, 정리된 창고에서 개수가 가…

April 16, 2024
til
algorithm
docker-kubernetes ) til - 20240416

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 188. 첫 번째 Deployment - 명령적 접근 방식 사용 쿠버네티스를 배우면서 생기는 가장 기본적인 망각 중에 하나가, 바로 도커를 결국 사용은 한다는 점이다. 반대로 도커를 자체적으로 컨테이너를 실행하지 않는 다는 것이다. 필요한 프로그램, 도커 파일이 준비되어 있다면 docker 이미지를 준비한다. 이미지가 빌드 되고 나면 이미지를 이제 쿠버네티스 클러스터로 보내면 된다. (Pod) Pod 가 이를 실행하고 관리할 것이다 deployment 올릴 쿠버네티스에 상태를 파악해야 하므로 minikube status 로 상태를 파악한다. 이때 동작하는 minikube가 정상이 아니라면, 다시 minikube를 재시작 하면 된다. kubectl 을 기억하자. : 지난 시간에 이 툴을 설치했음. 해당 툴은 항상 로컬 기준으로 존재하고, 로컬 시스템에서 실행하는 명령이다. 마스터 노드와 해당 클러스터의 컨트롤러라고 …

April 16, 2024
til
backend
java) til - 20240416

자바 ORM 표준 JPA 프로그래밍 - 기본편 Hello JPA - 애플리케이션 개발 주의 Entity Manager 는 하나만 생성해서 애플리케이션 전체에서 공유한다. Entity Manager 는 thread 간의 공유가 아니라, 사용하고 버리는 구조다 JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다. 위의 내용 덕분에 데이터의 트랜잭션 사이에서 데이터 객체는 변동 사항이 발생하면 자동으로 알아서 데이터의 변화를 저장하고 반영이 된다. JPQL 소개 JPA 를 사용하면 Entity 객체 중심의 개발이 가능해진다. 기본적인 데이터의 탐색은 Entity Manager를 활용해도 된다. 하지만 JPA 에서 디테일하게 검색을 하기 위한 방식은? 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 JPQL은 테이블이 아닌 객체를 대상으로 검색하는 객체 지향 쿼리로 기존의 쿼리와는 약간 다르다. SQL 에 의존적이지 않음 이후 뒤에서 자세히 배울 예정 자바 ORM 표준 JPA…

April 16, 2024
til
java
java) til - 20240403

자바 ORM 표준 JPA 프로그래밍 - 기본편 자바에 다양한 것들이 있겠지만 SQL 을 이해하고 JPA 활용도를 높이기 위해 해당 내용을 우선적으로 강의를 듣고 정리해보고자 한다. Hello JPA - 프로젝트 생성 프로젝트 생성, 옛날엔 좀 그랬으나 지금은 intelliJ 를 활용해서 편하게 할 것 h2 가 연습용으론 좋다 빈 프로젝트를 생성하고, hibernate, h2 database driver를 설치한다. 이때 기존의 강좌와는 다르게 작성해야 한다. 더불어 사용 시 spring boot 를 사용하는 만큼 스프링부트 기반으로 버전 관리를 해주면 좋다. 4.0.0 자바 ORM 표준 JPA 프로그래밍 - 기본편 Hello JPA - 프로젝트 생성

April 03, 2024
til
java
cote ) til - 20240328

2016년 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각  입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 “TUE”를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예 a b result 5 24 “TUE” ```python # 내 마음데로 풀어보기 # 윤력은 2월 마지막이 29일 # 30, 31일 조심! 1, 3, 5, 7, 8, 10, 12월이 31일이가 def solution(a, b): 가운데 글자 가져오기 문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면…

March 28, 2024
til
algorithm
cote ) til - 20240326

해시 > 포켓몬 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫 번째(3번), 네 번째(3번) 폰켓몬을 선택 두 번째(1번), 세 번째(2번) 폰켓몬을 선택 두 번째(1번), 네 번째(3번) 폰켓몬을 선택 세 번째(2번), 네 …

March 26, 2024
til
algorithm
docker-kubernetes ) til - 20240320

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 183. Kuberntes: 요구 설정 & 설치 단계 로컬 머신에서 쿠버네티스를 다루기 위해 설치해야 할 구성요소는 다음과 같다: 클러스터: 쿠버네티스 클러스터는 마스터 노드와 하나 이상의 워커 노드로 구성되며, 이 클러스터는 실제 머신이나 가상 인스턴스에 분산되어 운영될 수 있다. 마스터 노드 소프트웨어: 마스터 노드에는 쿠버네티스의 핵심 구성 요소인 API 서버, 스케줄러 등이 설치되어야 한다. 워커 노드 소프트웨어: 워커 노드에는 Docker와 같은 컨테이너 런타임과 kubelet이 설치되어야 한다. kubectl: 쿠버네티스 클러스터와 통신하기 위한 커맨드 라인 인터페이스 도구로, 개발자와 관리자는 이를 사용하여 클러스터에 명령을 보낼 수 있다. 로컬에서 쿠버네티스를 실험하기 위해서는 다음 도구도 필요하다: minikube: 로컬 머신에서 쿠버네티스 클러스터를 쉽게 생성하고 관리할 수 있는 도구로, 가상 머…

March 25, 2024
til
backend
java) til - 20240320

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 15강. printf() 사용법, system.in.read() 사용법, Scanner 클래스의 여러 메소드 사용법 printf 사용법 정리 Java의 메소드는 출력 형식을 지정할 때 사용되며, 객체를 통해 콘솔에 텍스트를 출력하는데 유용합니다. 여기서 핵심 포인트를 세 가지로 정리됨 기본 사용법: 는 포맷 지정자를 사용하여 변수의 값을 문자열로 변환하고, 지정된 형식에 맞춰 출력한다. 기본 구조는 이다 포맷 지정자: 포맷 지정자는 기호로 시작하며, 출력할 데이터의 타입과 형식을 지정한다. 예를 들어, 는 정수를, 는 문자열을 나타낸다. 정밀도, 폭, 사용할 공간, 숫자 형태 등을 세밀하게 조정할 수 있다 예시: 정수 출력: → 101 소수점 아래 두 자리까지 출력: → 123.46 문자열…

March 25, 2024
til
java
cote ) til - 20240322

이진 변환 반복하기 문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 “c를 2진법으로 표현한 문자열”로 바꿉니다. 예를 들어, 이라면, x에 이진 변환을 가하면  이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 “1”이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 s의 길이는 1 이상 150,000 이하입니다. s에는 ‘1’이 최소 하나 이상 포함되어 있습니다. 입출력 예 s result 입출력 예 설명 입출력 예 #1 “110010101001”이 “1”이 될 때까지 이진 변환을 가하는 과정은 다음과 같습니다. 회차 이진 변환 이전 제거할 0의 개수 0 제거 후 길이 이진 변환 결과 1 “11001…

March 22, 2024
til
algorithm
네이버 코테를 위한 마지막 몸부림

드디어… 네이버 공채가 열렸다는 소식이 들렸다. 작년에도 1차 서류 통과는 했었고 드디어 때가 온 게 아닌가 싶다. 사실 대단한 일은 아니라고 생각한다. 아마 성실하게 하신 분들이라면 어렵지 않게 통과할 것이다. 작년 같은 경우에도 지금보다도 포트폴리오는 준비가 확실하지 않았으나 1차를 합격했었던 것으로 미루어 볼 때 진짜는 코딩 테스트를 통과 이후가 아닐까 싶다. 적성 검사까지 잘 맞을 수 있을지, 걱정 보단 조금이라도 손을 놀려서 파이썬 문제 풀이 방식을 익혀야지 ㅠ 코테.. 자신이 없긴 하지만 그래도 작년과는 다르다..! 마지막 스퍼트로 python 핵심 코테 기술들 위주로 정리하면서 학습 하려고 한다. 토요일 오전에 치는 시험… 목표는 3문제 중 2문제라도 맞추기다. 😂😂 알게된 핵심 내용 위주 사전 자료형에서 데이터를 찾아 탐색하는 것은 생각보다 시간 복잡도가 크지 않아 탐색 시 속도가 빠르다. 단 키가 주어질 때 이야기다 정규식을 활용하기 위해 re 라이브러리를 i…

March 22, 2024
til
algorithm
cote ) til - 20240321

나머지가 1이 되는 수 찾기 문제 설명 자연수 이 매개변수로 주어집니다. 을 로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 3 ≤  ≤ 1,000,000 입출력 예 n result 10 3 12 11 입출력 예 설명 입출력 예 #1 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다. 입출력 예 #2 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다. 음양 더하기 문제 설명 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solu…

March 21, 2024
til
algorithm
cote ) til - 20240320

크레인 인형뽑기 게임 문제 설명 게임개발자인 “죠르디”는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. “죠르디”는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. crane_game_101.png 게임 화면은 “1 x 1” 크기의 칸들로 이루어진 “N x N” 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 “5 x 5” 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 “1 x 1” 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음 그림은 [1번, 5번, 3번] 위치에서 순서대로 인형을…

March 20, 2024
til
algorithm
docker-kubernetes ) til - 20240320

색션 12. 실전 Kubernetes - 핵심 개념 자세히 알아보기 181. 모듈 소개 본 모듈에서 진행할 학습 내용은 총 3단계 Kubernetes, 테스팅 환경 구축해보기 Kubernetes 객체들과 작업 진행해보기 실제로 예제를 통해 배포를 진행해보기(local 환경으로) 182. Kubernetes 는 인프라를 관리하지 않습니다. 쿠버네티스가 해주는 작업과 아닌 작업을 구분을 명확하게 하는 것이 해당 도구를 효과적으로 사용하는 가장 핵심 중에 핵심이다. 쿠버네티스가 할 수 없는 것은 머신의 구체적인 가상 인스턴스나 컴퓨터에 대해 전혀 모르며 쿠버네티스 API 서버, Kublet 및 다양한 서비스는 매뉴얼하게 스스로 설정해줘야 한다. 인스턴스나 시스템을 업데이트 하고, 운영체제 업데이트를 유지하며, 전체 네트워크 보안 그룹 항목의 관리 등은 결국 개발자의 몫이다. 쿠버네티스가 관심 가지는 영역은 실패한 컨테이너에 대해선 관심을 가진다. 포드를 생성, 포드에서 컨테이너를 실행…

March 20, 2024
til
backend
java) til - 20240320

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 12강. 실수 연산에서의 자동 타입 변환, + 연산에서의 문자열 자동 타입 변환, 문자열을 기본 타입으로 강제 타입 변환 1. 실수 연산에서의 자동 타입 변환 실수 타입의 기본형은 double 이다. 따라서 산술 연산식에서 실수 연산이 이루어지면 double 타입으로 자동 타입 변환되어 사용된다. (설령 int 타입 등과 혼합으로 계산이 되어도) 만약 정수 타입으로 연산이 반드시 필요하면, double 타입을 강제로 int로 변환해야 한다. 자바에서 소문자 또는 대문자 F가 없는 실수 리터럴을 double 타입으로 해석한다. 따라서 실수 리터럴 등을 연산한 뒤에 float 타입에 저장하면 컴파일 에러가 발생한다. 위 사진을 보면 중요한 부분을 시사 한다. 방법 1 의 경우 0을 얻는다. 왜냐면 서순…

March 20, 2024
til
java
cote ) til - 20240319

실패율 실패율 failture_rate1.png 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.…

March 19, 2024
til
algorithm
cote ) til - 20240318

비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 인 정사각형 배열 형태로, 각 칸은 “공백”(” ”) 또는 “벽”(”#”) 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 “지도 1”과 “지도 2”라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. “지도 1”과 “지도 2”는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 , 공백 부분을 으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다. secret map 네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의…

March 18, 2024
til
algorithm
cote) til - 20240318

part2. 알고리즘 유형 분석 - DFS, BFS, 백트레킹 그래프 자료구조 Graph Vertex(= node) edge 방향성 무방향 그래프 (= 양방향 그래프) 방향 그래프 순환 여부 순환 그래프(Cyclic Graph) 비순환 그래프(Acyclic Graph) 연결요소 Connected Component 정점 연결선(간선) 트리 자료구조(tree) 순환성이 없는 무방향 그래프 형태 트리는 특정하지 않는 한 어떤 노드이든 루트root 가 될 수 있다. 가장 바깥쪽 노드는 리프 노드 leaf node 라고 한다. node A에서 B로 가는 경로는 반드시 존재 하며 유일하다. (반드시 1개 존재) 노드개수 = 간선 개수 + 1 전산적으로 사용되는 구조에서는 이런 특징을 가진다. 자료구조에서의 트리는 부모 -> 자식 관계가 있는 방향 그래프이다. 루트 root 는 하나다 코드로 그래프를 나타내는 방법 1. 인접행렬 방향성이 있는 경우 같은 짝일 때 비대칭 구조가 되지만, …

March 18, 2024
til
algorithm
java) til - 20240315

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 09강. 실수 타입, 논리 타입, 변수의 참조 타입, String 클래스, Object클래스, toString(), 이스케이문자 왜 뒤에 f 등을 붙여서 실수를 표현하는가? 컴파일러에게 float 타입임을 알리기 위함 정밀도 면에서 float보단 당연히 double 이 정밀도가 높다 C언어에서는 논리타입은 존재하지 않는다(0, 1이를 대신함) 자바 타입은 참과 거짓을 의미하는 true, false를 논리 리터럴로 사용한다. (1byte) 자바의 참조타입(String, Object… etc) String 은 클래스 타입이며, 기본타입이 아닌 참조 타입임. 자바의 클래스의 최고 종상 클래스는 Object 클래스를 상속 받는다 기본적으로 참조 타입의 구조는 stack 에 heap에 생성되는 데이터의 주소값…

March 15, 2024
til
java
docker-kubernetes ) til - 20240315

kubernetes 가 정확히 무엇인가? 쿠버네티스는 기존 강의에서 언급한 수동으로 배포 및 웹 프로바이더들에 제약이 되는 등의 문제를 개선하는, 어떤 웹 클라우드 서비스에서도 독립적으로 구축이 가능한 오픈소스 시스템이다. 컨테이너 배포 관리, 컨테이너 오케스트레이션 가능, 자동 배포, 스케일링, 로드 밸런싱, 배포나 관리 등을 전반적으로 도와준다. 특히, 컨테이너를 모니터링하다, 다운이 되면 자동으로 교체하는 등에서 도움이 된다. kubernetes configuration 만 작성하면 쉽게 구성이 가능하다. 더불어 특정 도구로 클라우드나 어떤 머신이든 해당 속성으로 자동으로 배포 및 설정을 가능케 해준다.(즉 표준일 뿐 아니라 도커-컴포즈에서 좀더 확장되어 서버 전체를 설정, 관리 정책을 담은 일종의 통합 도구인 셈이다.) 여기에 더 나아가서 혹여 특수한 클라우드 프로바이더들 사이에 옵션을 추가하면, 해당 클라우드 프로바이더에 특화도 가능하며, 반대로 다른 클라우드에서 사용시 …

March 15, 2024
til
backend
cote) til - 20240315

part 2. 알고리즘 유형 분석 - 탐욕법 Greedy Algorithm 1 탐욕법 Greedy Algorithm 매 순간마다 최선의 경우만 골라서 선택하는 방식의 알고리즘 다른 경우는 고려하지 않고, 나중은 생각하지 않는다. 모든 경우를 다 보진 않아서, 완전탐색 알고리즘 보단 빠르다 어떤 경우가 최선인지 찾아야 하고, 규칙성을 발견하는게 포인트 당연한 말이지만 그렇다고 완벽하게 이상적인건 아니니 주의 2 동전 거스름돈 문제 A : 10, 50, 100, 500원 동전을 무한하게 갖고 있다. 손님에게 800원을 거슬러주려고 할 때 동전을 최소한으로 주는 방법은? 큰 단위부터 우선적으로 주는게 가장 효과적~ B: 만약 100, 400, 500원 동전을 무한하게 갖는경우? 400원짜리 2개 주는게 이득임(그리드로 풀수 없는 반례) 이러한 경우가 발생하는 이유는 A는 단위가 배수관계로 증대됨, B는 그렇지 않음. 배수의 관계로 B에서는 500원만으로 400원짜리 기준으로 만드는걸 만…

March 15, 2024
til
algorithm
cote) til - 20240314

part 2. 알고리즘 유형 분석 - 완전탐색 Chapter 2. 완전탐색 - 브루트포스 완전탐색 장점 : 모든 경로를 본다 = 결국 답을 발견한다. 단점 : 모든 경로를 본다 = 리소스를 많이 먹고, 모든 연산을 끝내야만 한 브루트 포스 Brute-force (무차별 대입) 모든 경우의 수를 다 넣어 답을 맞추는 방식 무식하지만 확실히 쓰인다. 암호학, 수학 등 학계에서나 ProblemSolving(PS)에서도 널리쓰인다. 우선 이 방식으로 답을 찾고 최적화하는 방법을 쓰기도 한다. Chapter 2. 완전탐색 - 예제문제(1) 그냥 완전탐색으로 값을 구할 수 있다. 하지만 그냥 하게 된다고 하면 입력의 값의 크기로 인해 1초라는 시간 안에 해결이 안됨. () 고려해 볼 만한 방법 정렬을 사용해 본다. : 보통 의 시간 복잡도가 소요됨 가장 큰 값이 들어올 때마다 기록하고, 모든 입력이 마무리 되면 더한다 : 의 시간복잡도가 예상된다. Chapter 2. 완전탐색 - 순열 …

March 14, 2024
til
algorithm
cote) til - 20240313

part 2. 알고리즘 유형 분석 - 자료구조 Chapter 1. 자료구조 - 배열, 벡터, 연결리스트 배열 Array 삽입 / 삭제 : O(N) - 삽입이나 삭제는 결국 내부 데이터를 옮기거나 하므로 최악의 경우를 상정하여 속도가 설정됨. 탐색 : O(1) - 메모리 상의 위치를 계산해서 접근하므로 접근의 속도가 매우 빠른 것이다. C++에서 사이즈 변경 불가 / Python은 리스트를 사용 벡터 Vector 삽입 / 삭제 : O(N) 탐색 : O(1) 동적 배열 : 사이즈 수정 가능 연결 리스트 Linked List 삽입 / 삭제 : O(1) 탐색 : O(N) - 노드 구조다 보니, 삽입이나 삭제는 노드들의 주소값 연결만으로 해결되지만 탐색은 모든 노드를 찾아 다녀야 한다. 자주 쓰이는 구조는 아니지만 다른 자료 구조들을 구현할 때 많이 쓰인다. Chapter 1. 자료구조 - 스택, 큐 스택 Stack(파이썬은 그냥 리스트로…) 큐 Queue Chapter 1. 자료…

March 13, 2024
til
algorithm
도커-쿠버네티스) til - 20240312

색션 11. Kubernetes 시작하기 모듈 소개 도커 컨테이너 배포 섹션에서 도커 컨테이너를 배포하는 방법은 배웠음 쿠버네티스란 실제로는 도구라기 보단 프레임워크, 개념 모음, 표준 이라고 할 수 있다. 모듈 컨텐츠 컨테이너 배포를 할 때 생기는 문제 이해하기 쿠버네티스가 무엇이며 왜 써야 하는가? 쿠버네티스의 개념과 컴포넌트들 수동 배포의 더 많은 문제점들 쿠버네티스 공식 사이트를 찾아보면 쿠버네티스에 대하여 “Kuberneetes is an open-source system for automating deployment, scaling, and management of containerized applications” 라고 부른다. 이를 통해 알 수 있는 것은 쿠버네티스가 단일 소프트웨어가 아닌 시스템이란 점이다. 컨테이너 배포에 도움이 되는 일체를 갖고 있다는 것을 알 수 있다. 우리는 아마도 문제 상황에 직면하게 된다. 컨테이너를 수동으로 배포하는 것에 대해 생각해보자.…

March 12, 2024
til
backend
cote) til - 20240312

part 0. 소개 강의 안내 강의 진행 언어 : python 가끔 C++ 섞을 예정 강의 구성 소개 part 1. 코딩테스트 준비 어떻게 해야 하나요 1. 코딩테스트란 2. 코딩 테스트 출제 경향 3. 코딩 테스트 채점 기준 4. 문제 해결 시작하기 part 2. 알고리즘 유형 분석 1. 자료구조 2. 완전탐색 3. 탐욕법 4. DFS, BFS, 백트래킹 5. 이분 탐색 6. 동적 계획법 part 1. 코딩 테스트 준비 어떻게 해야 하나요? chapter 1. 코딩테스트란? 온라인 저지를 꾸준하게 활용하는게 당연히 좋다. 본 강의는 백준을 주로 활용한다. << 나도 꾸준하게 풀긴 해야함 언어 고르기 무슨 언어로 문제를 풀어야 하는가? 3대장 : C++, java, python 본 강의는 파이썬 위주 진로가 확고하면 해당 언어로 연습하는 것이 좋다. 단, 마이너한 언어를 쓰면 문제 해결 시 난감할 수 있다. 기업 코텍에서는 언어 특성 차이로 인한 이슈는 없도록 내는 편 IT 기업들…

March 12, 2024
til
algorithm
자바 ) til - 20240304

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 08강 변수의 기본 타입 - 실수, 논리, 변수의 참조 타입, 이스케이프 문자 기억할 것들 실수 타입 자바는 기본적으로 실수 리터럴을 double로 해석하고 double타입 변수에 저장해야 한다. 위에 말은 반대로 말하면 실수를 float 에 저장시 컴파일 에러를 발생시킨다. 따라서 이를 해소하려면 숫자 뒤에 f, F 를 붙여야 한다. 이때 float , double 각 타입은 허용되는 최대 소숫점 이하 자리가 각 17, 15자리이다. 또한 정밀도는 double이 float 대비 2배 정도 좋은 편이다. 기본타입인 경우 자바여도 동일하게 C와 유사하게 동작하며, 기본타입이 아닌 것들이 전부 참조 타입으로 동작한다. 생각해볼 것들 TIL of Java Spring 08강 변수의 기본 타입 - 실수, 논…

March 04, 2024
til
java
개발자 영어 - 16

Introduce 본 내용은 Udemy를 통해 학습한 내용중 기억할 사항들을 정리한 내용들이다. 영어로 주석 제대로 달기 코드 주석 코드 주석의 목적 : 이해를 돕는 역할, 코드 수행하면서 머리 속에 정보를 정리 한다. 주의 나쁜 코드에 주석을 달지 말고 새로 짜라 - 브라이언 W. 커니핸, P.L. 플라우거 주석은 오래될 수록 코드에서 멀어진다. 따라서 잡음은 줄이고 의도는 명확하게 해야 한다. 당연한 것은 배제하고, 정말 필요한 것만을 남겨야 한다. 애초에 주석으로 설명할게 아니라 애초에 메소드의 명, 변수 명을 활용하여 주석 대신 설명할 수 있는게 낫다. 설명하지 말아야 할 내용 코드만 보면 누구나 알 수 있는 내용 나쁜 함수/ 변수명을 설명하려는 내용 설명하면 좋은 내용 코드가 특정 방식으로 작성된 이유 코드에 담긴 결함이나 향후 할 일 어떤 상수가 특정 값으로 정해진 이유 평범한 사람이 예상치 못한 특이한 동작 파일/클래스 수준에서 큰 그림을 설명하는 주석 코드 문서화 J…

January 04, 2024
til
자바) til - 202401020949

TIL of Java Spring 본 내용은 Udemy를 통한 학습 내용이다. 복습 및 완벽 정리가 아닌, 핵심이나 놓치지 말 것들 위주의 정리인 만큼, 내용이 온전히 담기진 않는다. 05 강 변수 선언, 초기화, 사용, 값을 바꾸는 방법, 주석의 의미, main()의 개념, … 기억할 것들 클래스 명은 가능하면 대문자로 시작해라 main()은 프로그램의 시작점 변수의 사용에 있어 반드시 초기화가 원칙 -> 실제 사용시 @Builder 를 통해 필요 없을 수 있는데, 더 자세히 이부분에 대해 이해해야 할 것 같다. 생각들 딱히 아직은 기초 내용을 복습하는거라 크게 문제는 없기도 하고 궁금한 사항들은 적은 것 같다. 계속 빠르게 복습하고 훑어야지… TIL of Java Spring 05 강 변수 선언, 초기화, 사용, 값을 바꾸는 방법, 주석의 의미, main()의 개념, … 기억할 것들 생각들

January 02, 2024
til
java
개발자 영어 - 13 ~ 15

Introduce 본 내용은 Udemy를 통해 학습한 내용중 기억할 사항들을 정리한 내용들이다. 13. 도입 코드 변수명과 주석의 연관성은? 물론 주석을 통해 정리할 수 있지만 변수명을 통해 오히려 주석을 적지 않아도 비즈니스 로직을 구체화 할 수 있다. 커밋 메시지의 중요성 바람직하게 커밋 메시지를 적어두면, 문제가 발생했을 때의 해결이 쉬워진다. 14.프로그래밍 과정에서 이름짓기와 관련된 심리학 여기서 다룰 내용 프로그래밍 과정에서 이름 짓기와 관련된 심리학 프로그램 개발 과정에서 영어로 이름 짓기 영어로 주석 제대로 달기 영어로 커밋 메시지 제대로 만들기 영어로 오류 메시지 제대로 만들기 이름의 중요성 스트루프 효과 [!스트루프 효과] 스트루프 효과 스트루프 효과는 심리학에서 널리 알려진 현상으로, 인간의 지각과 반응 사이에 발생하는 간섭을 설명합니다. 이 현상의 핵심은 다음과 같습니다: 색상과 단어의 불일치: 스트루프 효과는 특히 단어의 색상이 그 단어의 의미와 일치하지 않…

January 02, 2024
til
TIL_of_Network

TIL of Network 네트워크에 대한 이해도가 필요한 시점이 왔다고 생각했다. 백엔드 개발도 해보았고, 보안이나 연결도 얼추 해보았으나, 정작 네트워크에 대한 이해도가 높은지 애매했다. 그 와중에 이런 책을 발견하였다. 내용 구성이나, 이제는 읽어 볼 때 이해가 안되진 않을거란 생각이 들었고, 틈틈히 읽을 때마다 읽은 만큼 키워드를 저장 해 놓으려고 한다. 웹 정복은 한참 걸리겠지만…! 그래도 꾸준히 정리 해놓자. 1 네트워크는 어떻게 인터넷이 될까? 각 센터는 서로 직간접적으로 연결되어 있으며, 이러한 센터를 라고 부른다. 는 정보를 주고 받는 모든 네트워크 상의 기기들을 말하며, 노드의 공통점은 주소가 존재한다는 점이다.(IP) 네트워크를 걸쳐서 데이터를 전달해주는 중간 노드들 인터넷 트래픽을 구성하는 데이터 조각을 가리킨다. - : 는 네트워크 상에서 서비스를 제공하는 대상이며, 다른 노드로부터 정보를 전송 및 수신하여 사용하는 쪽 노드를 라고 부른다. …

December 18, 2023
til
TIL_of_Spring_230507

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 회원 관리 예제 - 백엔드 개발 회원 레포지터리 테스트 케이스 작성 main 메서드에서 실행하거나 웹 어플리케이션의 컨트롤러를 통해 기능 실행 여부를 판단이 가능하나 이는 시간도 걸리고 반복실행이 어렵다. 이에 자바는 이라는 프레임 워크로 테스트를 실행해서 이런 문제를 해결한다. 해당 방식이로 할 때 주의점은 전체 테스트를 돌릴 때, 과거의 테스트에 사용한 변수나, 데이터를 그대로 접근하게 되는 경우가 발생한다. 따라서 테스트가 하나 끝날 때 데이터를 초기화해주는 작업을 각 테스트별로 넣는게 용이하다. 해당 내용이 를 설정하는 것이다. 이렇게 테스트 케이스들을 전부 넣어서 tes…

May 07, 2023
til
java
TIL_of_Spring_230425

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 회원 관리 예제 - 백엔드 개발 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 회원 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 간단하게 하는 이유는 스프링 생태계 파악용이니까.. 너무 복잡하게 생각하진 말자. 컨트롤러 : 웹 MVC 컨트롤러 역할, 웹 환경에서의 다양한 요청의 1차적 집합소(?) 서비스 : 핵심 비즈니스 로직을 구현, 룰, 제한사항, 서비스의 설계에서 가이드 역할을 해주는 공간 레포지터리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리하는 역할 도메인 : 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주…

April 24, 2023
til
java
TIL_of_Spring_230424

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. MVC와 템플릿 엔진 MVC : Model, View, Controller 요즘은 MVC 스타일로 많이 사용한다. view 란 화면 자체를 그리는 것에만 집중해야 한다. 이에 비해 controller는 비즈니스 로직과 관련이 있거나 내부적 처리에 집중하느 것을 의미한다. 이것을 Model, view, controller 로 분리해서 집중한다는 말은, 한 마디로 내부 구조를 명확하게 구분지어 화면을 뿌리는 요소와 내부 로직을 명확하게 구분지어주는 것을 의미한다. 위의 예시로 작성을 하게 되면 localhost:8080/hello-mvc 로 GET 할 경우, 값을 받아야 함을 지정해줄 …

April 24, 2023
til
java
TIL_of_Spring_230419

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 빌드하고 실행하기 실제 동작하는 프로그램으로 만드는 것은 매우 간단하다. Mac OS 기준 명령어를 통해 알아서 돌아가게 된다. 빌드를 마친 후에는 경로를 따라 들어가면, 빌드가 된 완성 jar 파일이 눈에 들어올 것이다. 그 뒤 실행은 으로 정상 실행되는 것을 확인하면 빌드가 마무리 된 것이다. 이렇게 완성된 빌드 파일을 서버에 올리고 실행을 시키면 기본적인 서버가 구성이 되어 서버로 동작하게 될 것이며, 여기에 각종 파이프나 포트를 통해 마이크로서버의 구축이나, 도커를 활용한 컨테이너 기법을 통해 시스템의 구조를 여러모로 수정할 수도, 제작할 수도 있는 것이다. 추가로 …

April 19, 2023
til
java
반복문 - 25314 15552 11021

TIL of Algorithm 25314 - 코딩은 체육과목 입니다 문제 오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다. C++ 책을 열심히 읽었던 혜아는 간단히 두 수를 더하는 코드를 칠판에 적었다. 코드를 본 면접관은 다음 질문을 했다. “만약, 입출력이 �$N$바이트 크기의 정수라면 프로그램을 어떻게 구현해야 할까요?” 혜아는 책에 있는 정수 자료형과 관련된 내용을 기억해 냈다. 책에는 는 4$4$바이트 정수까지 저장할 수 있는 정수 자료형이고 는 8$8$바이트 정수까지 저장할 수 있는 정수 자료형이라고 적혀 있었다. 혜아는 이런 생각이 들었다. “ 앞에 을 하나씩 더 붙일 때마다 4$4$바이트씩 저장할 수 있는 공간이 늘어나는 걸까? 분명 는 12$12$바이트, 는 16$16$바이트까지 저장할 수 있는 정수 자료형일 거야!” 그렇게 혜아는…

April 19, 2023
til
TIL_of_Spring_230417

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 라이브러리 살펴보기 이전에 프로젝트를 생성하면서 라이브러리를 많이 받아오진 않았다. 하지만 막상 실제 다운로드 받아진 라이브러리는 정말 많은 것을 알 수있다. 요즘의 웹 어플리케이션 빌드에서 보통 몇 십메가 정도의 라이브러리들은 자동으로 다운로드가 되고 사용된다. Gradle이나 Maven 같은 빌드 툴들은 를 관리해주는 기능을 갖고 있다. 우리가 사용하려는 라이브러리를 선택하면, 해당 라이브러리가 동작하기 위한 의존 관계의 것들을 모두 자동으로 다운받고, 관리해주는 것이다. 인텔리제이의 우측에 보면 Gradle 항목이 있고, 이를 누르면 실제 의존관계를 확인할 수 있다. 또한…

April 17, 2023
til
java
반복문 - 8293 25304

TIL of Algorithm 8293 - 합 문제 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다. 출력 1부터 n까지 합을 출력한다. 예제 입력 / 예제 출력 작성 코드 후기 반복문의 구조에 부합하게 짜봤지만 제일 빠른 코드는 수학 방정식을 들고와 버리는 것이었구요;; 역시 수학이 필요하다는 건가 싶기도 하다. 25304 - 영수증 문제 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다. 영수증에 적힌, 구매한 각 물건의 가격과 개수 구매한 물건들의 총 금액 을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자. 입력 첫째 줄에는 영수증에 적힌 총 금액 X 가 주어진다. 둘째 줄에는 영수증…

April 17, 2023
til
TIL_of_Spring_230413

TIL of Java Spring 본 내용은 JAVA 기초 학습 이후 백앤드 스프링 기초를 배우기 위해 김영한 교수님의 “스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술” 의 내용 중 기억할 내용들을 메모하는 포스팅이다. 백앤드.. 배우려면 열심히 해야지. 취업까지 한 고지다. 강의 소개 목표 => 간단한 웹 어플리케이션 개발 스프링 부트 프로젝트 생성 스프링 부트로 웹 서버 실행 회원 도메인 개발 웹 MVC 개발 DB 연동 - JDBC, JPA, 스프링 데이터 JPA 테스트 케이스 작성 ~ 큰그림과 핵심 기술들을 돌려보면서, 어디서 무엇이 어떻게 왜 쓰이는지를 파악하자 가 목표! 내가 이 강의에서 지켜 나가고, 배워가야할 것 첫 감 잡기에 만족하자 스프링 기술에 매몰되지 말자 실무에서 안 쓰는 건 과감히 제거하자. 김영한 교수님의 강의 시리즈를 다 볼 수 있을지는 애매하다(무엇보다 돈이;;). 일단 기본만 하고 실 프로젝트에 들어가봐야 알것 같긴한데… 흠…

April 13, 2023
til
java
반복문 - 10950

TIL of Algorithm 문제 두 정수 A와 B를 입력 받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다(0 < A, B < 10) 출력 각 테스트 케이스마다 A+B 를 출력한다. 예제 입력 예제 출력 작성 코드 후기 2739번도 풀었다. 하지만 워낙 쉬운 문제이기 때문에 스킵함. 오늘 느낀 거지만 파이썬 형변환도 그렇고 너무 쉬운거 아닌가.. range함수의 경우 사용 방식이 여러가지라 처음엔 어떻게 넣어야 정상 작동하는지 헷갈렸다. 지금은 완벽… TIL of Algorithm 문제 입력 출력 예제 입력 예제 출력 작성 코드 후기

April 13, 2023
til
조건문 - 2480

TIL of Algorithm 문제 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.  같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.  같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.  모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.   예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다. 3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오. 입력 첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 …

April 12, 2023
til