hj_kim97의 등록된 링크

 hj_kim97로 등록된 네이버 블로그 포스트 수는 272건입니다.

[Spring]스프링이 지원하는 프록시(프록시 팩토리, 포인트컷, 어드바이스, 어드바이저) [내부링크]

스프링이 지원하는 프록시 - 동적 프록시 기술 - 프록시 팩토리(Proxy Factory) - 포인트컷, 어드바이스, 어드바이저 선행해야 할 내용 Java 동적 프록시 기술: https://blog.naver.com/hj_kim97/223118965106 동적 프록시 기술 동적 프록시 기술은 이름 그대로 개발자가 직접 프록시 객체를 생성하지 않고, 프록시 객체를 동적으로 런타임에 만들어주는 기술이다. 주로 Java의 'java.lang.reflect.Proxy' 클래스를 사용하는 JDK 동적 프록시와 바이트코드 조작 라이브러리인 CGLIB를 사용한다. JDK 동적 프록시: 인터페이스를 기반으로 동적 프록시를 생성한다. CGLIB: 상속(클래스)을 기반으로 동적 프록시를 생성한다. 문제점 JDK 동적 프록시와 CGLIB에서 기반으로 하는 대상이 다르다. 때문에, 인터페이스가 있는 경우에는 JDK 동적 프록시를 적용하고, 그렇지 않은 경우에는 CGLIB를 적용해야 한다. 두 기술을 함께

[JavaScript]비동기 처리(Promise, Async&Await, Fetch API) 사용법 정리 [내부링크]

JavaScript 비동기 처리(Promise, Await&Async, Fetch API) 사용법 정리 - 동기와 비동기 - Promise - async & await - API 호출(Fetch API) 참고하면 좋은 글 AJAX, 동기, 비동기: https://blog.naver.com/hj_kim97/222881703185 Promise: https://blog.naver.com/hj_kim97/222587367534 동기와 비동기 동기(Synchronous) 자바스크립트에서 코드는 기본적으로 작성한 순서에 따라 위에서부터 아래로 순차적으로 실행합니다. 이처럼 순차적으로 코드를 실행하는 것을 동기(Sqynchronous)라고 합니다. 요청을 하면 결과가 주어질 때까지 다른 요청이 처리되지 않으며, 해당 요청 결과가 처리된 후 다음 순서에 맞춰 진행됩니다. 계좌이체 같은 작업은 동기 방식으로 처리 되어야 합니다. 블로킹 방식 // A -> B -> C console.log("A")

[Java]JMH(Java Microbenchmark Harness) 사용법 [내부링크]

JMH(Java Microbenchmark Harness) 사용법 - JMH - JMH 어노테이션 - JMH 사용하기 JMH JMH는 Java Microbenchmark Harness의 약자로, 자바 마이크로벤치마크를 작성하고 실행하기 위한 도구입니다. JMH는 OpenJDK 프로젝트의 일부로 개발되었으며, 자바 가상 머신(Java Virtual Machine, JVM) 상에서의 성능 측정과 비교를 용이하게 해줍니다. JMH는 다양한 유형의 벤치마크를 작성할 수 있는 다양한 어노테이션과 API를 제공합니다. 이를 통해 개발자는 자신의 코드 조각에 대한 성능 테스트를 작성하고, 다른 구현과 비교하여 성능을 평가할 수 있습니다. 즉, JMH는 Micro Benchmark Framework로 JDK를 오픈 소스로 제공하는 OpenJDK에서 만든 성능 측적용 라이브러리입니다. JMH 공식 Github: https://github.com/openjdk/jmh 안정성: JMH는 신뢰할 수 있는

[TypeScript]리액트와 타입스크립트 [내부링크]

리액트와 타입스크립트 - CRA 프로젝트를 타입스크립트 프로젝트로 변환하기 - 상태관리와 Props - TODO 리스트 예제 코드 - 외부 라이브러리 사용하기 - 타입스크립트 템플릿 소개 CRA 프로젝트를 타입스크립트 프로젝트로 변환하기 리액트 프로젝트 생성 (CRA) 타입선언 패키지 설치(@types/*) tsconfig.json 생성 모든 JS 파일 확장자를 JSX로 변경 개별 파일을 하나씩 TSX 파일 확장자로 변경하고 타입 오류 해결 1. 리액트 프로젝트 생성 Create React App(CRA)를 통해 리액트 앱을 생성한다. 1. 프로젝트 폴더 생성 $ mkdir react-typescript $ cd react-typescript 2. 리액트 프로젝트 생성 $ npx create-react-app . 3. 필요없는 파일 삭제 - src/setupTests.js - src/reportWebVitals.js - src/logo.svg - src/App.test.js 4. 필

[Java]try-with-resource (AutoCloseable) [내부링크]

Java try-with-resource (AutoCloseable) - AutoCloseable 인터페이스 - 자동 자원 해제 대상 - JDK 7 버전 이전 자원 해제 - JDK 7 버전 이후 자원 해제 - AutoCloseable 구현 AutoCloseable 인터페이스 AutoCloseable 인터페이스는 JDK 7 버전에 등장하였고, AutoCloseable을 상속받고 있는 구현체가 try-with-resources 구문안에서 선언된 객체들에 대해서 자동으로 자원을 해제(Close)해주는 기능을 제공한다. try-with-resources 문장으로 관리되는 객체에 대해서 자동으로 close() 처리한다. InterruptedException을 던지지 않도록 하는 것을 권장한다. InterruptedException은 쓰레드의 인터럽트 상태와 상호작용하므로 InterruptedException이 억제되었을 때 런타임에서 잘못된 동작이 발생할 수 있다. // try-with-re

[Java]동적 프록시 기술(JDK 동적 프록시, CGLIB) [내부링크]

Java 동적 프록시 기술(JDK 동적 프록시, CGLIB) - 동적 프록시 기술 - JDK 동적 프록시 - CGLIB 선행해야 할 내용 - 프록시 패턴: https://blog.naver.com/hj_kim97/223105067066 - Java 리플렉션: https://blog.naver.com/hj_kim97/223110095000 동적 프록시 기술 동적 프록시(Dynamic Proxy) 기술은 프로그래밍 언어에서 동적으로 인터페이스 구현체를 생성하는 기술을 말합니다. 주로 자바에서 사용되며, 리플렉션(Reflection)을 기반으로 동작합니다. 동적 프록시는 프록시(Proxy) 객체를 생성하여 실제 객체에 대한 대리자 역할을 수행합니다. 이를 통해 프록시 객체는 실제 객체와 동일한 인터페이스를 구현하며, 호출된 메서드를 가로채고 추가적인 동작을 수행할 수 있습니다. 이러한 추가 동작은 메서드 호출 전후에 전처리(pre-processing)와 후처리(post-processing

[JavaScript]모듈 시스템(CommonJS, ES Modules) 사용법 [내부링크]

JavaScritp 모듈 시스템(CommonJS, ES Modules) 모듈 시스템 모듈 등장 배경 CommonJS ESM(ES6 Modules) HTML ESM(ES6 Modules) 사용하기 모듈 시스템 모듈 시스템은 코드를 독립적인 모듈로 구성하고 재사용하기 쉽도록 하는 기능을 제공하는 기술입니다. 이를 통해 코드를 조직화하고 모듈 간의 의존성을 관리할 수 있습니다. 모듈은 자체적으로 독립적인 파일로 구성되며, 하나의 파일이 하나의 모듈을 나타냅니다. 각 모듈은 고유한 이름을 가지며, 모듈 내에서 정의된 변수, 함수, 클래스 등은 해당 모듈 내에서만 유효합니다. 이렇게 모듈화된 코드는 다른 모듈에서 재사용할 수 있으며, 필요한 모듈만 가져와 사용할 수 있습니다. 분리된 파일 각각을 모듈(Module)이라고 부르고, 모듈은 대개 클래스 하나 혹은 특정한 목적을 가진 복수의 함수로 구성된 라이브러리 하나로 구성됩니다. 모듈 등장 배경 자바스크립트 프로그램은 꽤 작게 시작되었습니다.

[TypeScript]타입스크립트 유틸리티 타입 [내부링크]

타입스크립트 유틸리티 타입 - 유틸리티 타입 소개 - 맵드 타입 기반 유티릴티 타입 - 조건부 타입 기반 유틸리티 타입 유틸리티 타입 소개 유틸리티 타입(Utility Types)은 타입스크립트에서 제공하는 미리 정의된 타입 변환 도구입니다. 이러한 유틸리티 타입은 일반적인 타입 조작 작업을 간소화하고 반복적인 작업을 줄여줍니다. 유틸리티 타입은 기존의 타입을 바탕으로 새로운 타입을 만들어내는 타입 연산자입니다. 제네릭, 맵드 타입, 조건부 타입 등의 타입 조작 기능을 이용해 실무에서 자주 사용되는 타입을 미리 만들어 놓은 것 타입스크립트가 자체적으로 제공하는 특수한 타입이다. Partial<T>: T 타입의 모든 속성을 선택적으로 만듭니다. Required<T>: T 타입의 모든 속성을 필수로 만듭니다. Readonly<T>: T 타입의 모든 속성을 읽기 전용으로 만듭니다. Record<K, T>: K 타입의 각 속성을 T 타입으로 매핑하는 객체 타입을 만듭니다. Pick<T, K

[TypeScript]타입스크립트 제네릭(Generic) [내부링크]

타입스크립트 제네릭 - 제네릭 소개 - 타입 변수 응용하기 - map, forEach 메소드 타입 정의하기 - 제네릭 인터페이스 & 제네릭 타입 별칭 - 제네릭 클래스 - 프로미스와 제네릭 제네릭 소개 타입스크립트 제네릭(Generic)은 재사용성을 높이고 다양한 타입에 대해 일반화된 코드를 작성할 수 있도록 도와주는 기능입니다. 제네릭을 사용하면 함수, 클래스, 인터페이스 등에서 타입을 매개변수화하여 유연한 코드를 작성할 수 있습니다. 제네릭 타입은 인터페이스나 클래스, 함수, 타입 별칭 등에 사용할 수 있는 기능으로 해당 심벌의 타입을 미리 지정하지 않고 다양한 타입에 대응하려고 할 때 사용합니다. 제네릭이 필요한 상황 제네릭은 특정 타입을 지정하지 않고, 다양한 타입의 매개변수를 받고 대응하려고 할 때 사용될 수 있습니다. 예를 들어, 다양한 타입의 매개변수를 받고 그대로 반환하는 함수가 있다고 가정합니다. 이후 반환된 값은 any 타입으로 기본 타입의 함수를 호출할 수 없습니

[TypeScript]타입스크립트 타입 조작하기(인덱스드 엑세스 타입, keyof&typeof 연산자, 맵드 타입, 템플릿 리터럴 타입) [내부링크]

타입스크립트 타입 조작하기 - 인덱스드 엑세스 타입 - keyof & typeof 연산자 - 맵드 타입 - 템플릿 리터럴 타입 인덱스드 엑세스 타입 인덱스드 엑세스 타입(Indexed Access Types)은 타입스크립트에서 객체의 특정 프로퍼티 타입을 동적으로 가져오는 방법입니다. 이는 객체의 특정 프로퍼티에 접근하여 해당 프로퍼티의 타입을 가져올 때 유용하게 사용됩니다. 인덱스를 이용해 다른 타입내의 특정 프로퍼티의 타입을 추출하는 타입 type Person = { name: string; age: number; email: string; }; type PersonAge = Person['age']; // number 타입 객체 프로퍼티의 타입 추출하기 인덱스에는 값이 아니라 타입만 들어갈 수 있습니다. 때문에, 특정 문자열을 값으로 다른 변수에 저장하고 인덱스로 사용하면 오류가 발생합니다. interface Post { title: string; content: string;

[TypeScript]타입스크립트 조건부 타입(분산 조건부 타입, infer 키워드) [내부링크]

타입스크립트 조건부 타입 - 조건부 타입 소개 - 분산 조건부 타입 - infer 키워드 조건부 타입 소개 타입스크립트에서 조건부 타입(Conditional Types)은 타입의 조건에 따라 다른 타입을 반환하는 기능입니다. 이를 통해 타입을 동적으로 조작하고 유연한 타입 검사를 수행할 수 있습니다. 조건부 타입 문법 조건부 타입은 extends와 삼항 연산자를 이용해 조건에 따라 각각 다른 타입을 정의하도록 돕는 문법입니다. JavaScript의 삼항 연산자는 변수의 값을 조건에 따라 결정하는 것이라면, TypeScript의 조건부 타입은 값 대신 타입을 조건에 따라 결정하는 것이라고 보면 됩니다. T는 타입 변수 또는 타입 표현식을 나타내고, U는 타입의 조건을 나타냅니다. X는 조건이 참일 때 반환되는 타입이고, Y는 조건이 거짓일 때 반환되는 타입입니다. T의 타입이 특정 타입(U)을 확장하는 타입이면 X 타입이 결정되고, 아니라면 Y 타입이 결정된다. T extends U

[TypeScript]타입스크립트 함수(함수 타입 표현식, 호환성, 오버로딩, 사용자 정의 타입 가드) [내부링크]

타입스크립트 함수 - 함수 - 함수 타입 표현식과 호출 시그니처 - 함수 타입의 호환성 - 함수 오버로딩 - 사용자 정의 타입 가드 함수 함수는 코드 블록을 정의하고, 해당 코드 블록을 실행하기 위해 사용되는 동작 단위입니다. 함수는 특정한 기능을 수행하거나 값을 반환하는 데 사용됩니다. 타입스크립트에서 함수를 정의할 때에는 매개변수와 반환 타입을 명시적으로 지정할 수 있습니다. functionName: 함수의 이름입니다. 함수를 호출하기 위해 사용됩니다. parameter1, parameter2, ...: 함수의 매개변수입니다. 함수가 받는 입력 값으로 사용됩니다. 각 매개변수는 이름과 타입을 가지며, 필요한 만큼 선언할 수 있습니다. type: 매개변수의 타입을 지정합니다. returnType: 함수의 반환 타입을 지정합니다. 함수가 값을 반환하지 않는다면 void 타입을 사용합니다. return value: 함수가 반환하는 값입니다. 반환 타입이 지정되어 있을 때에만 사용됩니다

[TypeScript]타입스크립트 인터페이스(확장, 선언 합침) [내부링크]

타입스크립트 인터페이스 - 인터페이스 - 인터페이스 확장하기 - 인터페이스 선언 합치기 인터페이스 타입스크립트에서 인터페이스(Interface)는 객체의 구조를 정의하는 역할을 합니다. 인터페이스는 객체의 속성과 메서드를 설명하고, 해당 객체가 가져야 하는 타입을 명시합니다. 인터페이스는 객체 간의 계약(Contract)으로 볼 수 있으며, 이를 통해 코드의 일관성과 재사용성을 높일 수 있습니다. 인터페이스란 타입 별칭과 동일하게 타입에 이름을 지어주는 또 다른 문법입니다. 또한 인터페이스는 객체의 구조를 정의하는데 특화된 문법으로 상속, 합침 등의 특수한 기능을 제공합니다. interface Person { name: string; age: number; } const person: Person = { name: "로그", age : 27 }; 선택적 프로퍼티 인터페이스를 설계할 때 어떤 속성은 반드시 있어야 하지만, 어떤 속성은 있어도 되고 없어도 되는 형태로 만들고 싶을 때가

[JavaScript]자바스크립트 클래스(Class) [내부링크]

자바스크립트 클래스(Class) - JavaScript 클래스 - 필드 선언하기 - 필드 접근제어자 - 생성자 선언하기 - 메소드 정의하기 - extends를 통한 클래스 상속 - 클래스 기반으로 객체 생성하기 - 클래스 예제 코드 JavaScript 클래스 JavaScript에서 클래스(Class)는 객체 지향 프로그래밍(OOP)을 구현하기 위한 구조입니다. 클래스는 객체의 속성(상태)과 동작(메서드)을 정의하며, 이를 바탕으로 실제 객체(인스턴스)를 생성할 수 있습니다. JavaScript의 클래스는 ECMAScript 2015(ES6)에서 도입되었으며, 이전에는 프로토타입 기반 상속을 사용하여 OOP를 구현했습니다. 클래스를 사용하면 객체 생성 및 상속 등의 OOP 개념을 보다 명확하고 간결하게 표현할 수 있습니다. 공식 문서: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes 클래스 선언하기 Clas

[TypeScript]타입스크립트 클래스(상속, 접근제어자, 필드생략, 인터페이스) [내부링크]

타입스크립트 클래스 - TypeScript 클래스 - 상속 - 접근 제어자 - 필드 생략하기 - 인터페이스와 클래스 선행해야 할 내용 - 자바스크립트 클래스: https://blog.naver.com/hj_kim97/223115262174 TypeScript 클래스 타입스크립트에서는 클래스의 필드를 선언할 때 타입 주석으로 타입을 함께 정의해주어야 합니다. 그렇지 않으면 함수 매개변수와 동일하게 암시적 any 타입으로 추론되는데 엄격한 타입 검사 모드(strict 옵션이 true로 설정되어 있을 경우)일 때에는 오류가 발생하게 됩니다. 생성자에서 각 필드의 값을 초기화 하지 않을 경우 초기값도 함께 명시해주어야 합니다. 생성자 함수에서 필드의 값들을 잘 초기화 해 준다면 필드 선언시의 초기값은 생략해도 됩니다. class Employee { // 필드 name: string = ""; age: number = 0; position: string = ""; // 생성자 construc

[MyBatis]LOB 데이터 처리(LOB 조회, LOB 저장) [내부링크]

MyBatis LOB 데이터 처리 - 예제 코드용 VO 클래스 - LOB 데이터 저장(INSERT, UPDATE) - LOB 데이터 조회(SELECT) - LOB Object 조회 예제 코드용 VO 클래스 /* LOB(BLOB)안에 byte[] 데이터를 처리하기 위한 VO */ @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class LobVO { private byte[] blobColumn; } /* LOB(CLOB)안에 String 데이터를 처리하기 위한 VO */ @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class BoardVO { private String id; private String title; private String content; } LOB 데이터 저장(INSERT, UPDATE) 바인드 변수에 jdbcType을 직접 명시한다.

[TypeScript]타입스크립트 기본 개념 정리(탄생 배경, 동작 원리, 프로젝트 생성) [내부링크]

타입스크립트 기본 개념 정리 - 타입스크립트 - 타입스크립트 탄생 배경 - 타입스크립트 동작 원리 - 타입스크립트 프로젝트 생성 - ts-node 패키지 - 타입스크립트 컴파일러 옵션 설정 타입스크립트 타입스크립트(TypeScript)는 JavaScript의 확장된 버전으로, Microsoft에서 개발한 프로그래밍 언어입니다. 타입스크립트는 정적 타입을 지원하며, 이는 개발자가 변수의 타입을 명시적으로 선언할 수 있음을 의미합니다. 이는 코드의 가독성과 유지보수성을 향상시키는 데 도움이 됩니다. 타입스크립트는 JavaScript의 모든 기능을 포함하며, ECMAScript 표준에 따라 작성된 JavaScript 코드는 거의 변경 없이 타입스크립트로 변환할 수 있습니다. 또한, 타입스크립트는 ES6(ECMAScript 2015) 이상의 최신 JavaScript 기능을 미리 사용할 수 있습니다. 타입스크립트는 정적 타입 검사기를 통해 코드의 오류를 사전에 발견할 수 있습니다. 이를 통해

[TypeScript]타입스크립트 기본 타입 정리(원시타입, 배열, 튜플, Enum, Any, Unknown, Void, Never) [내부링크]

타입스크립트 기본 타입 정리 - 기본타입 - 타입스크립트 기본 문법 - 원시타입과 리터럴타입 - 배열과 튜플 - 객체 - 타입 별칭과 인덱스 시그니처 - Enum 타입 - Any와 Unknown 타입 - Void와 Never 타입 기본타입 기본 타입이란 타입스크립트가 자체적으로 제공하는 타입들을 말합니다. number: 숫자를 나타내는 타입입니다. 정수 및 부동 소수점 숫자를 포함합니다. string: 문자열을 나타내는 타입입니다. 작은 따옴표(')나 큰 따옴표(")로 묶어서 사용합니다. boolean: 참(true) 또는 거짓(false) 값을 나타내는 타입입니다. null 및 undefined: 값이 없음을 나타내는 타입입니다. 각각 null과 undefined라는 별도의 값으로 사용됩니다. object: 객체를 나타내는 타입입니다. 일반적인 자바스크립트 객체를 의미합니다. array: 배열을 나타내는 타입입니다. 여러 개의 값이 순서대로 저장된 컬렉션입니다. tuple: 고정된

[TypeScript]타입스크립트 타입 호환성 / 타입 추론 / 타입 단언 / 타입 가드 [내부링크]

타입스크립트 타입 호환성 / 타입 추론 / 타입 단언 / 타입 가드 - 타입 호환성 - 타입 계층도 - 객체 타입의 호환성 - 대수 타입 - 타입 추론 - 타입 단언 - 타입 가드 타입 호환성 타입 호환성(Type Compatibility)은 타입스크립트에서 변수 할당, 함수 호출 등의 상황에서 타입이 호환되는지 여부를 결정하는 규칙을 의미합니다. 구조적 타이핑 (Structural Typing) 구조적 타이핑은 타입 호환성을 타입의 구조(멤버의 집합)에 기반하여 결정하는 원칙입니다. 타입스크립트는 변수나 객체의 내부 구조가 일치한다면 타입 호환성을 인정합니다. 이름이 다르거나 타입 어노테이션의 형식이 다르더라도, 속성 이름과 타입이 일치하면 호환성이 성립합니다. interface Person { name: string; age: number; } let person: Person = { name: "John", age: 30 }; let person2: { name: string

개발자로 살아남기 [내부링크]

개발자로 살아남기 저자: 박종천 출판: 골든래빗(주) 발매: 2022/01/01 이 책을 고른 이유 최근 밀리의 서재 구독을 시작했다. 밀리의 서재에서 프로그래밍 관련 키워드로 책을 찾다가 '개발자'라는 키워드로 검색을 하게 됐다. 그 중에서 '개발자로 살아남기' 책의 목차나 리뷰가 괜찮아보여 선택을 하게 됐다. 책의 주요 내용 해당 책의 주요 내용은 30년간 개발자로서 성장하는 방법에 대해서 설명을 한다. 0 ~ 10년 동안에는 주니어 개발자로서 성장하는 방법을 알려주고, 10 ~ 20년 동안에는 중간 관리자의 역할로서 프로젝트를 성공적으로 이끄는 방법과 주니어 개발자들을 성장시키는 방법, 조직에 프로세스를 관리하는 리더십 방법을 알려준다. 20 ~ 30년 동안에는 회사에 최고 관리자의 역할로서 회사의 시스템과 핵심가치를 통해 이룬 사례를 설명하고, 직원을 채용할 때 중요한 점과 실제 블리자드에서 진행한 면접 방법을 알려주고, 마지막으로 기업의 수익을 내기 위한 비즈니스 성장 전략

[Linux]리눅스 시스템 로그 관리(syslog, rsyslog, journal, roglotate) [내부링크]

리눅스 시스템 로그 관리 - 로그(Log) - 로그 관리 정책 - 로그 파일 종류 - syslog와 rsyslog - journal - journalctl - systemd 서비스 구동 앱의 로그 출력 예제 로그(Log) 로그(log)는 시스템 또는 응용 프로그램의 작동 및 이벤트에 대한 기록을 의미합니다. 로그는 일반적으로 중요한 정보, 경고, 오류, 예외 사항 등을 기록하여 시스템 상태를 모니터링하고 문제를 진단하는 데 사용됩니다. 로그는 디버깅, 보안 감사, 성능 분석, 오류 추적 등 다양한 목적으로 활용됩니다. 리눅스 시스템에 관련된 사건이나 커널이나 데몬, 스케줄링, 메일 등 여러 프로그램에서 발생한 이벤트들은 각 서비스별로 구분되어 기록된다. 이때, 발생한 이벤트나 사건에 관련된 기록이 쌓인 파일을 로그라고 부른다. 시스템에 문제가 발생하면 해당 장비와 시간에 기록된 로그 분석을 통해 프로그램에서 발생하는 각종 에러나 경고 메시지를 확인해서 문제를 해결할 수 있다. 때문에

[Linux]리눅스 기본 쉘 명령어 [내부링크]

리눅스 기본 쉘 명령어 - 쉘(Shell) - 쉘 명령어 - 쉘 스크립트(Shell Script) 쉘(Shell) 쉘(Shell)은 컴퓨터 운영 체제와 사용자 사이에서 상호작용할 수 있는 명령어 인터페이스입니다. 운영 체제는 컴퓨터의 하드웨어와 다른 소프트웨어 사이에서 중재자 역할을 하며, 사용자는 쉘을 통해 운영 체제에 명령을 내릴 수 있습니다. 쉘은 명령어를 입력받아 실행하고, 결과를 사용자에게 표시하는 역할을 합니다. 사용자는 터미널 또는 콘솔 창을 통해 명령어를 입력하면, 쉘은 해당 명령어를 해석하고 실행합니다. 쉘은 명령어 해석기로 작동하며, 사용자가 입력한 명령어를 해석하여 운영 체제에 전달합니다. 일반적으로 리눅스와 유닉스 기반 시스템에서는 Bash(Bourne Again SHell)이 기본적으로 제공되며, 대부분의 사용자가 Bash를 사용합니다. 그러나 다른 쉘도 사용할 수 있으며, 사용자는 쉘을 선택하여 사용할 수 있습니다. 사용자 편의 기능이 필요하지 않은 쉘 스크

[AWS]리전과 가용 영역(Region, Availability Zone) [내부링크]

AWS 리전과 가용 영역 - 리전(Region) - 가용 영역(Availability Zone) - 엣지 로케이션(Edge Location) 리전(Region) AWS(Amazon Web Services)는 클라우드 컴퓨팅 서비스를 제공하는 아마존닷컴의 서비스입니다. AWS는 전 세계적으로 여러 개의 리전을 운영하고 있습니다. 각 리전은 AWS의 데이터 센터가 위치한 지리적인 영역을 나타냅니다. 각 리전은 독립된 인프라를 가지고 있으며, 고객은 원하는 리전을 선택하여 자원을 프로비저닝하고 서비스를 이용할 수 있습니다. AWS의 서비스가 제공되는 리소스의 지리적 위치 각 리전 간 글로벌 네트워크 백본(Back born) 연결 각 리전에는 고유의 코드가 부여됨 2023년 05월 기준 - AWS 글로벌 인프라(https://aws.amazon.com/ko/about-aws/global-infrastructure/) - 31개 리전 - 99개 가용 영역 - 400개 이상의 엣지 로케이션과

[AWS]AWS 주요 서비스 소개 [내부링크]

AWS 주요 서비스 소개 - 주요 컴퓨팅 서비스(ec2, lambda) - 주요 스토리지 서비스(S3, EBS, EFS) - 주요 네트워크 서비스(VPC, CloudFront, Route53) - 주요 데이터베이스 서비스(RDS, DynamoDB, Elasticache) - 주요 보안 서비스(WAF, Shield, KMS) - 주요 관리형 서비스(Cloudwatch, SNS, EventBridge) 주요 컴퓨팅 서비스(ec2, lambda) AWS EC2(Elastic Compute Cloud) AWS EC2(Elastic Compute Cloud)는 Amazon Web Services(AWS)에서 제공하는 클라우드 컴퓨팅 서비스 중 하나입니다. EC2는 가상 서버를 프로비저닝하고 관리할 수 있는 기능을 제공하여 사용자가 필요에 따라 컴퓨팅 리소스를 유연하게 확장하거나 축소할 수 있도록 합니다. EC2를 사용하면 사용자는 가상 머신(인스턴스)을 시작하고 종료할 수 있으며, 필요에 따

[Java]리플렉션(Reflection) 개념 및 사용법 [내부링크]

Java 리플렉션(Reflection) 개념 및 사용법 - 리플렉션(Reflection) - 리플렉션(Reflection) 장단점 - 리플렉션(Reflection) 사용법 - 리플렉션(Reflection) 사용 예제 - 리플렉션(Reflection) 잘못 사용한 사례 리플렉션(Reflection) 리플렉션(Reflection)은 컴퓨터 과학 용어로, 컴퓨터 프로그램에서 런타임 시점에 사용되는 자신의 구조와 행위 관리하고 수정할 수 있는 프로세스를 의미합니다. JVM은 클래스 정보를 클래스 로더를 통해 읽어와서 해당 정보를 JVM 메모리에 저장합니다. 그렇게 저장된 클래스에 대한 정보가 마치 거울에 투영된 모습과 닮아있어, 리플렉션이라는 이름을 가지게 되었습니다. 런타임(runtime)에 실행 중인 프로그램의 내부 구조를 분석하고 조작할 수 있는 기능 Reflection을 사용하면 프로그램이 자신의 클래스, 필드, 메서드, 생성자 등에 대한 정보를 동적으로 얻을 수 있으며, 이를 통해

[WAS]Window 톰캣(Tomcat) 서버 죽이기 [내부링크]

개요 이클립스로 톰캣을 띄우고 작업 중에 어떠한 이유로 이클립스가 갑자기 강제로 종료되었을 때 톰캣 서버가 종료되지 않는 경우가 발생할 수 있다. 이때, 작업 관리자로 이클립스와 Java JVM을 종료하더라도 톰캣 서버가 살아있을 수 있다. 이러한 경우 명령 프롬프트(CMD)로 실행중인(Listening) 포트를 확인하고, 해당 프로세스를 직접 종료시켜준다. ※ 이클립스를 재시작하여 서버(Tomcat)를 실행시키더라도 해당 포트가 이미 사용중이기 때문에 'Serveral ports (포트번호, ..) required by project.포트번호 are already in use.' 이미 사용중 경고를 볼 수 있다. Window 톰캣 서버 죽이기 # 1. 사용중인 포트 확인하기 netstat -nao | findstr "8080" # 2. 프로세스 종료하기 taskkill /f /pid "PID 번호" netstat 명령어 표시 명령어를 입력하면 아래와 같은 순서로 정보가 출력된다.

[Linux]리눅스 부팅 및 시스템 관리 데몬 [내부링크]

리눅스 부팅 및 시스템 관리 데몬 - 부팅 프로세스 이해 - 시작 서비스 이해 - Systemd 소개 - 시스템 재부팅 및 종료 부팅 프로세스 이해 바이오스(BIOS) BIOS는 "Basic Input/Output System"의 약자로, 컴퓨터 시스템의 하드웨어와 운영 체제(OS) 간의 상호 작용을 담당하는 펌웨어입니다. BIOS는 컴퓨터가 부팅될 때 가장 먼저 실행되는 소프트웨어로, 주로 컴퓨터의 기본 입력과 출력을 관리하며, 하드웨어 초기화, 자체 진단, 부트 로더 로딩 등의 기능을 수행합니다. BIOS는 ROM(Read-Only Memory)에 저장되어 있으며, 컴퓨터 전원을 켤 때 자동으로 실행됩니다. BIOS는 하드웨어를 초기화하고, 주요 장치 및 구성 요소의 동작을 테스트하며, 운영 체제를 로드할 부트 로더를 찾아 실행하는 역할을 수행합니다. 컴퓨터에 전원이 인가되면 실행이 시작되는 최초의 프로그램으로 마더보드에 연결된 디바이스를 초기화하고 검사하는 역할을 수행한다. ※

[Linux]리눅스 프로세스 관리 [내부링크]

리눅스 프로세스 관리 - 프로세스 구성요소 이해 - 프로세스 라이프 사이클 - 스케줄링과 cron 참고하면 좋은 글 프로세스와 쓰레드: https://blog.naver.com/hj_kim97/222961785980 리눅스 크론탭 사용법: https://blog.naver.com/hj_kim97/222660344997 프로세스 구성요소 이해 프로세스(Process) 리눅스에서 프로세스는 실행 중인 프로그램을 나타내는 단위입니다. 각각의 프로세스는 독립적으로 메모리와 시스템 리소스를 할당받아 실행됩니다. 리눅스는 다중 사용자, 다중 작업 환경을 지원하므로 여러 개의 프로세스가 동시에 실행될 수 있습니다. 프로세스는 운영체제로부터 자원을 할당받아 실행되며, 메모리, CPU 시간, 파일, 네트워크 등의 리소스를 사용할 수 있습니다. 각 프로세스는 고유한 프로세스 ID (PID)를 가지며, 이를 통해 식별됩니다. CPU와 메모리를 할당받아 실행 중인 프로그램 프로세스들마다 고유의 프로세스

[AWS - EC2]기존 시스템 볼륨 추가 및 LVM 디스크 관리 [내부링크]

AWS 기존 시스템 볼륨 추가 및 LVM 디스크 관리 - 기존 시스템 볼륨 추가 - LVM 디스크 관리 참고하면 좋은 글 리눅스 파일 시스템 관리: https://blog.naver.com/hj_kim97/222586695771 리눅스 하드디스크 연결(디스크 마운트): https://blog.naver.com/hj_kim97/222917986474 기존 시스템 볼륨 추가 1. 스토리지 볼륨(EBS) 생성 AWS 웹 콘솔을 통해 새로운 볼륨을 추가하고, 생성된 스토리지 볼륨을 가상머신(EC2)과 연결한다. ※ EBS 볼륨은 가용 영역에 종속적인 자원으로 반드시 마운트할 가상머신(EC2)과 동일한 영역으로 생성해야 한다. 1. 스토리지 볼륨 생성 - EC2 서비스 > Elastic Block Store > 볼륨 > 볼륨 생성 - 볼륨 유형: 범용 SSD - 크기(GIB): 10 - 가용 영역: EC2와 동일한 가용 영역 선택 - 태그(선택사항): Key(Name), Value(ebs-t

[Linux]리눅스 패키지 관리 시스템(rpm, dpkg, yum, apt) [내부링크]

리눅스 패키지 관리 시스템 - 패키지 관리 시스템 - 패키지 관리 시스템 주요 구성 요소 - 리눅스 패키지 설치 과정 - 저수준 패키지 관리 시스템(rpm, dpkg) - 고수준 패키지 관리 시스템(yum, apt-get, apt) - 지정된 버전의 패키지 설치 예제 패키지 관리 시스템 패키지 관리 시스템은 리눅스 시스템에서 소프트웨어 패키지를 관리하고 설치, 업데이트, 제거하는 데 사용되는 도구와 프로세스를 의미합니다. 소프트웨어는 소스코드의 형태로 배포되는 경우와 바이너리 패키지 형태로 배포되는 경우가 있는데, 소스코드의 경우 보통 하나의 아카이브 파일(tar)로 묶은 후 압축하여 배포한다. 바이너리 패키지에는 응용 프로그램, 라이브러리 파일, 버전 정보나 의존성 등의 메타 정보 파일 등이 포함됩니다. 패키지는 저장소(repository)에 저장되어 있으며, HTTP 혹은 FTP 서버를 통해 다운로드 할 수 있습니다. 하나의 패키지가 다른 패키지나 공유 라이브러리 등을 필요로 하

[스프링 DB 접근 기술]스프링 트랜잭션 전파 (Transactional Propagation) [내부링크]

스프링 트랜잭션 전파 - 스프링 트랜잭션 기본 예제 - 스프링 트랜잭션 전파 - 스프링 트랜잭션 전파 예제 - 다양한 전파 옵션 선행해야 할 내용 스프링 트랜잭션 기본 사용법: https://blog.naver.com/hj_kim97/223091852988 참고하면 좋은 글 Spring 트랜잭션 설정 및 개념: https://blog.naver.com/hj_kim97/222716451210 스프링 트랜잭션 이해: https://blog.naver.com/hj_kim97/223057360694 스프링 트랜잭션 기본 예제 트랜잭션 매니저를 직접 사용하여 트랜잭션을 시작하고 종료시킬 수 있다. 기본적인 트랜잭션을 시작하고, 커밋 혹은 롤백하는 예제를 알아보고 이후에 트랜잭션이 2개 이상일 경우 어떻게 동작하는지 알아본다. 기본 예제 코드 @TestConfiguration: 해당 테스트에서 필요한 스프링 설정을 추가로 할 수 있다. PlatformTransactionManager를 의존성

[Java]Java 쓰레드 로컬(ThreadLocal) [내부링크]

Java 쓰레드 로컬(ThreadLocal) - 동시성 문제 - 동시성 문제 예제 코드 - ThreadLocal - 쓰레드 로컬 사용 방법 - 쓰레드 로컬 예제 코드 동시성 문제 동시성 문제란 동일한 하나의 공유 자원을 2개 이상의 쓰레드에서 제어할 때 나타나는 문제입니다. 지역 변수를 사용하는 경우에는 동시성 문제가 발생하지 않는다. 또한, 값을 읽기만 하는 경우에는 발생하지 않는다. 전역 변수나 static 같은 공용 필드에 접근할 때 발생한다. 어디선가 값을 변경하고 어디선가 값을 읽을 때 발생한다. 동시성 문제 예제 코드 FieldService 단순히 파라미터로 넘어온 name을 필드인 nameStore에 저장하고, 1초 뒤에 저장된 nameStore를 반환한다. @Slf4j public class FieldService { private String nameStore; public String logic(String name) { log.info("저장 name={} ->

[Design Pattern]템플릿 메소드 패턴(Template Method Pattern) [내부링크]

템플릿 메소드 패턴(Template Method Pattern) - 템플릿 메소드 패턴 - 템플릿 메소드 패턴 예제 코드 템플릿 메소드 패턴 템플릿 메소드 패턴이란 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내용을 변경하는 패턴입니다. 어떤 작업을 처리하는 일련의 단계를 정의하고, 이 단계 중 일부를 서브 클래스에서 구현할 수 있게 만든다. 템플릿 메소드 패턴은 이름 그대로 템플릿을 사용하는 방식이다. 즉, 기준이 되는 거대한 틀(변하지 않고 반복되는 코드)을 만들어 놓고 해당 템플릿에서 원하는 부분만 동적으로 변경한다. 1. 추상 클래스(Abstract Class): 템플릿 메소드를 포함하는 추상 클래스를 정의합니다. 2. 템플릿 메소드(Template Method): 추상 클래스 안에 정의된 일련의 작업 단계를 정의합니다. 이 작업 단계 중 일부는 추상 메소드나 오버라이딩 가능한 메소드로 정의됩니다. 3. 구현

[Design Pattern]전략 패턴(Strategy Pattern) [내부링크]

전략 패턴(Strategy Pattern) - 전략 패턴 - 전략 패턴 예제 코드 - 전략 패턴 예제 코드2 - 템플릿 콜백 패턴 - 템플릿 콜백 패턴 예제 코드 전략 패턴 전략 패턴은 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화하는 인터페이스를 정의하며, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 패턴입니다. 전략 패턴은 변하지 않는 부분을 Context 라는 곳에 두고, 변하는 부분을 Strategy라는 인터페이스를 만들고 해당 인터페이스를 구현하도록 해서 문제를 해결한다. 상속이 아니라 위임으로 문제를 해결하는 것이다. 전략 패턴은 실행 중에 알고리즘을 선택할 수 있도록 하는 패턴입니다. 여러 알고리즘 중에서 실행할 알고리즘을 선택하는 방법은 컨텍스트 객체에 전략 객체를 주입하는 것입니다. 컨텍스트 객체는 전략 객체를 가지고 있고, 실행 시에 전략 객체를 호출

[Design Pattern]프록시 패턴(Proxy Pattern) [내부링크]

프록시 패턴(Proxy Pattern) - 프록시 패턴 - 프록시 패턴 예제 코드 - 프록시 패턴 예제 코드2 - 데코레이터 패턴 예제 코드 - 데코레이터 패턴 예제 코드2 프록시 패턴 프록시(Proxy)는 대리자, 대변인이라는 의미로 프록시 패턴은 다른 객체를 대신하여 접근할 수 있는 대리자(Proxy) 객체를 제공하는 패턴입니다. 프록시는 원본 객체에 대한 인터페이스를 구현하며, 클라이언트는 프록시를 통해 원본 객체에 접근합니다. 프록시 패턴은 객체 간의 느슨한 결합을 제공하고, 원본 객체에 대한 접근을 제어하거나 부가적인 기능을 추가할 수 있도록 합니다. 이를 통해 코드의 재사용성, 유지보수성, 확장성을 향상시킬 수 있습니다. 접근제어: 권한에 따른 접근 차단, 캐싱, 지연 로딩 부가 기능 추가: 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행한다. (ex: 요청 값이나, 응답 값을 중간에 변형하거나 실행 시간을 측정해서 추가 로그를 남긴다.) ※ GOF 디자인 패턴에서는

[스프링 DB 접근 기술]JPA [내부링크]

스프링 DB 접근 기술 JPA - ORM 소개 - JPA 소개 - JAP 설정 - JPA 적용 - JPA Repository 분석 - JPA 예외 변환 선행해야 할 내용 MyBatis: https://blog.naver.com/hj_kim97/223080765467 참고하면 좋은 글 ORM, JPA, Hibernate 개념 정리: https://blog.naver.com/hj_kim97/222663218689 ORM 소개 ORM은 Object-Relational Mapping의 약자로 객체 관계 매핑을 의미합니다. 즉, 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말합니다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용합니다. 객체 모델과 관계형 모델 간에 불일치가 존재하는데, ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결해줍니다. 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이

[스프링 DB 접근 기술]스프링 데이터 JPA [내부링크]

스프링 데이터 JPA - Spring Data 소개 - Spring Data 주요 기능 - Spring Data JPA 적용 선행해야 할 내용 JPA: https://blog.naver.com/hj_kim97/223082181460 참고하면 좋은 글 Spring Data JPA 기본 사용법: https://blog.naver.com/hj_kim97/222780110215 Spring Data JPA 쿼리 메소드: https://blog.naver.com/hj_kim97/222791359445 Spring Data 소개 Spring Data의 목적은 기본 데이터 저장소의 특수성을 유지하면서 데이터 접근을 위한 친숙하고 일관된 Spring 기반의프로그래밍 모델을 제공하는 프로젝트입니다. 이를 통해서 데이터 액세스 기술, 관계형 및 비관계형 데이터베이스, 맵 축소 프레임워크 및 클라우드 기반 데이터 서비스를 일관적이고 쉽게 사용할 수 있습니다. 데이터베이스의 종류로는 관계형 데이터베이스(

[스프링 DB 접근 기술]QueryDSL [내부링크]

스프링 DB 접근 기술 QueryDSL - QueryDSL 소개 - QueryDSL 주요 기능 - QueryDSL 설정 - QueryDSL 적용 - 활용 방안(실용적인 구조, 다양한 데이터 접근 기술 조합) 선행해야 할 내용 스프링 데이터 JPA: https://blog.naver.com/hj_kim97/223082314210 QueryDSL 소개 Querydsl은 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크입니다. DSL은 도메인 특화 언어(Domain Specific Language)의 약자로 특정한 도메인에 초점을 맞춘 제한적인 표현력을 가진 컴퓨터 프로그래밍 언어입니다. 즉, QueryDSL은 쿼리에 특화된 프로그래밍 언어를 의미합니다. 문자가 아닌 코드로 쿼리를 작성함으로써 컴파일 시점에 문법 오류를 쉽게 확인할 수 있다. 자동 완성 등 IDE의 도움을 받을 수 있다. 동적인 쿼리 작성이 편리하다. 쿼리 작성 시 제약 조건 등을 메소드 추출

제어할 수 없는 것에 의존하지 말자[feat. 주식 가치투자] [내부링크]

최근에 주식을 시작했다. 2차전지에 관련된 영상을 보았고, 3 ~ 10배 가까이 되는 주가가 상승하는 것을 보았다. 나는 이미 과열된 상태에서 주식을 시작했다. 아무 정보 없이 급등주에 탔다가 갑자기 급락이 나서 돈을 잃었고 불안한 마음에 팔고나면 또 오르는 모습을 보았다. 돈을 어느정도 잃고나서 주식 유튜브를 찾아보기 시작했다. '이 종목 다음주에 얼마간다.' 이런식의 내용의 영상을 많이 보게 되었고, 이미 많이 오른 종목에 투자를 했다가 불안한 마음에 손해보더라도 다시 뺴고를 반복했다. 지금의 2차전지에 대한 주가는 IRA 법안이 발표된 이후 해당 기업들에 대한 현재 실적보다는 기대 가치 투자로 인해 주가가 많이 상승되었다. 이제 막 급하게 오른 가치 투자는 실적이 나오기까지는 시간이 걸릴 것이다. 또한, 이러한 기업들에 대해서 얼마나 빠르게 성장할지에 대해서 나는 알지 못한다. 물론 2차전지 테마는 계속해서 성장할 것이지만, 이미 호재를 많이 나온 상태에서 실적이 안나오는 경우

오늘, 또 일을 미루고 말았다. [내부링크]

오늘 또 일을 미루고 말았다. 저자: 나카지마 사토시 출판: 북클라우드 발매: 2017/09/01 이 책을 고른 이유 좋아하는 개발자분들 중 한 분인 향로(이동욱)님의 블로그를 보다가 새로운 책을 출간한 것을 보고 '개발자 원칙' 책을 보게 되었다. 마켓컬리, 레몬트리, 카카오 클라우드, 무신사, 인프런 등 각 기업의 테크 리더를 맡고 있는 9인의 사람마다 자신의 원칙을 설명하는 책으로 개발을 하면서 중요하게 생각하거나, 성장하는 방법에 대해 설명을 하고, 마지막에 해당 원칙에 대해 영감을 받거나 도움이 되었던 책을 챕터마다 소개하게 되어있다. 소개되는 책중에 '오늘, 또 일을 미루고 말았다'라는 책이 있었고, 프로그래머란 어떤 원칙을 가지고 일해야 하며 성과를 내는 프로그래머가 되려면 무엇을 고려해야 하는지 등에 대한 책으로 설명되어 꼭 읽어보고 싶다는 생각을 갖게 되었고, 마침 밀리의 서재에 있어 읽게 되었다. 책의 주요 내용 해당 책은 저자(나카지마 사토시)의 경험을 통해 자신

[스프링 DB 접근 기술]스프링 트래잭션 기본 사용법 [내부링크]

스프링 트랜잭션 기본 사용법 - 스프링 트랜잭션 이해 - 선언적 트랜잭션 관리 - 트랜잭션 예제 - 트랜잭션 옵션 소개 - 예외와 트랜잭션 커밋, 롤백 스프링 트랜잭션 이해 스프링은 트랜잭션 추상화를 제공하여 데이터 접근 기술을 변경하더라도 동일한 트랜잭션 구현 기술을 사용할 수 있도록 한다. 또한, 데이터 접근 기술에 대한 트랜잭션 매니저 구현체로 제공하며, 스프링 부트는 어떤 데이터 접근 기술을 사용하는지 자동으로 인식해서 적절한 트랜잭션 매니저를 선택해서 스프링 빈으로 등록해준다. 선언적 트랜잭션 관리 선언적 트랜잭션 관리는 @Transactional 어노테이션 하나만 선언해서 매우 편리하게 트랜잭션을 적용하는 것을 말한다. @Transactional을 통한 선언적 트랜잭션 관리 방식을 사용하게 되면 기본적으로 프록시 방식의 AOP가 적용된다. 과거에서는 XML을 이용하여 설정하기도 하였다. 다양한 다른 데이터 접근 기술들이 동일한 트랜잭션을 유지하기 위해 스프링 내부에서 트랜

[스프링 DB 접근 기술]트랜잭션 이해 및 스프링 트랜잭션 기술 [내부링크]

트랜잭션 이해 및 스프링 트랜잭션 기술 - 트랜잭션 개념 - 데이터베이스 연결 구조와 DB 세션 - DB 락 개념 - 트랜잭션 사용 예제 - 순수 JDBC 트랜잭션의 문제점 - 스프링에서 제공하는 트랜잭션 기술 - 스프링 트랜잭션 사용 예제 - 스프링 부트의 자동 리소스 등록 - 예외 처리와 반복 문제 해결 (예외 추상화, JdbcTemplate) 트랜잭션 개념 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미합니다. 만약 데이터베이스의 데이터를 수정하는 도중에 예외가 발생되었다면, DB의 데이터들은 수정이 되기 전의 상태로 다시 되돌아가야 하고, 다시 수정 작업이 진행되어야 합니다. 이렇듯 여러 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 트랜잭션입니다. 커밋: 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것 롤백: 작업 중 하나라도 실패해서 이전

[React]리액트 기초 개념 정리 [내부링크]

리액트 기초 개념 정리 - JSX 문법 - React 사용 예제 - useState - 리스트 반복 - 폼 다루기 - useEffect - create-react-app (CRA) JSX 문법 JSX란 JavaScript를 확장한 문법으로 자바스크립트와 html을 동시에 사용하여, HTML 마크업 언어에 자바스크립트 변수들을 바로 사용할 수 있는 일종의 템플릿 언어입니다. JSX로 작성된 코드는 브라우저에서 실행되기 전에 코드가 번들링되는 과정에서 바벨을 사용하여 일반 자바스크립트 형태의 코드로 변환됩니다. ※ 주의점: JSX 문법을 사용할 경우 컴포넌트에 여러 요소가 있을 경우 최상위 요소는 하나여야 합니다. 즉, 부모 요소 하나로 감싸져야 합니다. JSX 내부에서 스타일링을 적용하는 경우 class 대신 className을 사용한다. 또한, style 속성을 적용하기 위해서는 '{}' 내부에 오브젝트를 만들어 해당 오브젝트안에 스타일 속성을 지정하면 된다. (ex: style={

[스프링 DB 접근 기술]스프링 JdbcTemplate [내부링크]

스프링 JdbcTemplate - 기본 프로젝트 구조 - 스프링 JdbcTemplate - JdbcTemplate - 이름 지정 파라미터 - JdbcTemplate - SimpleJdbcInsert - JdbcTemplate 기능 정리 - Repository 테스트 기본 프로젝트 구조 스프링 JdbcTemplate를 적용하기전 기본 프로젝트 구조로 단순히 메모리에 상품 데이터를 저장하는 프로젝트의 예제이다. build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation

[Tibero DB]JDBC-12003:Unable to open a session. [내부링크]

에러 내용 JDBC-12003:Unable to open a session. java.sql.SQLException: JDBC-12003:Unable to open a session. com.tmax.tibero.jdbc.err.TbError.makeSQLException(Unknown Source) com.tmax.tibero.jdbc.err.TbError.newSQLException(Unknown Source) com.tmax.tibero.jdbc.msg.common.TbMsgError.readErrorStackInfo(Unknown Source) 발생 원인 접속 가능한 최대 세션 숫자를 넘을 경우 발생한다. 즉, 최대 20개의 세션이 접속 가능하다고 가정했을 때 21번째에 접속을 하는 경우 해당 에러가 발생한다. 세션이 종료되지 않는 경우 1. 디버그 모드에서 세션이 실행 중인 경우: 세션이 디버그 모드에서 실행 중인 경우, 세션을 종료시켜도 디버그 모드가 해제되지 않으면 세션

[스프링 DB 접근 기술]MyBatis [내부링크]

스프링 DB 접근 기술 MyBatis - MyBatis 소개 - MyBatis 설정 - MyBatis 적용 - MyBatis 기능 분석 - MyBatis 기능 정리 선행해야 할 내용 JdbcTemplate: https://blog.naver.com/hj_kim97/223075752334 참고하면 좋은 글 MyBatis 개념 및 연동 방법: https://blog.naver.com/hj_kim97/222617895949 MyBatis 동적 쿼리 문법: https://blog.naver.com/hj_kim97/222651531009 MyBatis Cache 사용 방법: https://blog.naver.com/hj_kim97/222974741854 MyBatis 공식 문서: https://mybatis.org/mybatis-3/ MyBatis 소개 MyBatis란 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있도록 도와주는 개발 프레임워크로 JDBC를 통

[Spring]파일 업로드 및 다운로드 [내부링크]

Spring 파일 업로드 및 다운로드 - HTML 폼 전송 방식 - MultipartResolver - 서블릿과 파일 업로드 - 스프링과 파일 업로드 - 파일 업로드 및 다운로드 예제 HTML 폼 전송 방식 HTML 폼 데이터 전송 방식으로는 'application/x-www-form-urlencoded'와 'multipart/form-data' 2가지가 제공된다. application/x-www-form-urlencoded: 문자 데이터 전송 multipart/form-data: 문자 + 바이너리(파일) 데이터 전송 application/x-www-form-urlencoded 방식 application/x-www-form-urlencoded 방식은 HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법으로 Form 태그에 별도의 enctype 옵션이 없으면 웹 브라우저는 기본적으로 'application/x-www-form-urlencoded' 방식으로 전송하게 된다. 해당 방식

[스프링 DB 접근 기술]JDBC 이해 [내부링크]

스프링 DB 접근 기술 JDBC 이해 - JDBC 이해 - JDBC 사용 예제 JDBC 이해 JDBC는 Java에서 표준으로 제공하는 데이터 접근 API 입니다. 관계형 데이터베이스는 Oracle, MySQL, MSSQL 등 여러가지가 있습니다. JDBC가 제공되기 전에는 각각의 데이터베이스마다 커넥션을 연결하는 방법, Java에서 SQL을 전달하고, 결과를 응답받는 방법이 모두 다르게 됩니다. 즉, 데이터베이스별로 데이터 접근 방법을 공부하고, 새로 구현해야 했습ㄴ디ㅏ. 때문에, Java에서는 공통적인 데이터베이스 접근 기술인 JDBC를 제공합니다. 이것을 통해 데이터베이스 접근 코드는 같게 되고, 실제 접근 기술에 대해서는 데이터베이스 벤더사에서 해당 DB에 맞도록 구현해 놓은 라이브러리(드라이버)를 제공합니다. JDBC 표준 인터페이스를 통해 어떤 RDBMS든지 상관없이 JDBC 표준 사용법만으로 다양한 데이터 베이스에 접근할 수 있다.. 하지만, DB마다 제공하는 SQL 문법

[스프링 DB 접근 기술]커넥션풀과 데이터소스 이해 [내부링크]

스프링 DB 접근 기술 커넥션 풀과 데이터 소스 - 커넥션 풀(Connection Pool, CP) - DataSource 이해 - DataSrouce 사용 예제 선행해야 할 내용 JDBC 이해: https://blog.naver.com/hj_kim97/223053917377 커넥션 풀 데이터베이스 커넥션을 획득할 때는 아래와 같은 복잡한 과정을 거치게 된다. 1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다. 2. DB 드라이버는 DB와 'TCP/IP' 커넥션을 연결한다. 이 과정에서 3 Way Handshake와 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다. 3. DB 드라이버는 'TCP/IP' 커넥션이 연결되면 ID/ PW와 기타 부가정보를 DB에 전달한다. 4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성한다. 5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다. 6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에

[Linux]리눅스 파일 시스템 확인(포맷 확인) [내부링크]

리눅스 파일 시스템 확인(포맷 확인) - df 명령어 - mount 명령어 - /etc/fstab 파일 - fsck 명령어 - file 명령어 - blkid 명령어 df 명령어 df는 disk free의 약자로 디스크 여유 공간을 확인할 수 있는 명령어입니다. df 명령을 사용하면 리눅스 시스템 전체의 (마운트 된) 디스크 사용량을 확인할 수 있습니다. 기본적으로 파일시스템, 디스크 크기, 사용량, 여유공간, 사용률, 마운트지점 순으로 나타납니다. -a: 모든 파일시스템을 출력한다. -h: 보기 편한 용량 크기로 출력한다. (1K, 20M, 2.0G) -H: 블럭 단위를 1024가 아닌 1000단위로 용량을 계산하여 출력한다. -i: i-node의 남은 공간, 사용공간, 사용량을 출력한다. -t [파일타입]: 지정한 파일타입(nfs, ext4 등)만 파일 시스템을 출력한다. -T: 파일타입 항목을 추가하여 출력한다. -x [파일타입]: 지정한 파일타입(nfs, ext4 등)을 제외하

[Spring]필터와 인터셉터를 이용한 로그인 처리 (Filter, Interceptor, ArgumentResolver) [내부링크]

필터와 인터셉터를 이용한 로그인 처리 - 공통 관심 사항 - 서블릿 필터를 이용한 로그인 처리 - 인터셉터를 이용한 로그인 처리 - ArgumentResolver 활용 선행해야 할 내용 쿠키와 세션을 이용한 로그인 처리: https://blog.naver.com/hj_kim97/223038017794 공통 관심 사항 애플리케이션 여러 로직에서 공통적으로 처리해야 되는 부분을 공통 관심사(cross-cutting concern)라고 합니다. 대부분의 많은 웹 사이트에서는 로그인을 해야 서비스를 이용할 수 있습니다. 때문에, 모든 요청을 받는 부분에 로그인 여부를 검증하는 공통 부분이 존재해야 하는데 모든 컨트롤러에 로그인 검증 로직을 작성하는 것은 매우 비효율적입니다. 이러한 공통 관심사 처리를 위해서 스프링의 AOP, 인터셉터를 이용할 수 있고, 서블릿의 필터를 이용할 수도 있습니다. 웹과 관련된 공통 관심사를 처리할 때는 HTTP의 헤더나 URL 정보들이 필요한데, 서블릿 필터나

[Spring]예외 처리와 오류 페이지 [내부링크]

예외 처리와 오류 페이지 - Exception(예외) - 서블릿 기본 예외 페이지 - 서블릿 커스텀 예외 페이지 - 서블릿 예외 처리 - 필터 - 서블릿 예외 처리 - 인터셉터 - 스프링 부트 - 오류 페이지 선행해야 할 내용 Java 예외 처리: https://blog.naver.com/hj_kim97/222389015969 Exception(예외) Java Application Exception Java의 main 메소드를 직접 실행하는 경우 'main' 이라는 이름의 쓰레드가 실행된다. 만약, 실행중에 발생한 예외를 잡지 못하고 main 메소드를 넘어서 예외가 던져지는 경우 예외 정보를 남기고 해당 쓰레드가 종료된다. 즉, 예외를 잡지 못하고 던져지면 애플리케이션이 종료된다. Web Application Exception 웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고 서블릿 컨테이넝 안에서 실행된다. 만약, 사용자의 요청으로 별도의 쓰레드가 할당되고 해당 쓰레드에서

[Spring]API 예외 처리 [내부링크]

API 예외 처리 - API 예외 처리 개요 - 스프링 부트 기본 오류 처리 - HandlerExceptionResolver - 스프링 부트 기본 ExceptionResolver - ResponseStatusExceptionResolver - DefaultHandlerExceptionResolver - @ExceptionHandler - @ControllerAdvice 선행해야 할 내용 예외 처리와 오류 페이지: https://blog.naver.com/hj_kim97/223040024768 Spring Exception Handling: https://blog.naver.com/hj_kim97/222838956315 API 예외 처리 개요 API 요청 관련된 에러인 경우 단순히 오류 페이지를 보여주는 것이 아닌, 각 오류 상황에 맞는 오류 응답 스팩을 정하고 JSON으로 데이터를 내려주어야 합니다. 쉽게, 브라우저를 통해 클라이언트가 화면을 주고 받는 경우에는 오류 페이지를 반환해

[Spring]스프링 타입 컨버터와 포맷터 (Converter, Formatter) [내부링크]

스프링 타입 컨버터와 포맷터 - 타입 컨버터 개요 - Converter 인터페이스 - ConversionService 인터페이스 - Formatter 인터페이스 - FormattingConversionService - 스프링이 제공하는 기본 포맷터 - 정리 타입 컨버터 개요 기본적으로 HTTP 요청 파라미터는 모두 문자로 들어온다. 따라서 요청 파라미터를 자바에서 다른 타입으로 변환해서 사용하고 싶으면 다른 타입으로 변환하는 과정을 거쳐야 한다. 즉, HttpServletRequest를 이용하여 요청 파라미터를 사용할 경우 기본적으로 문자 타입으로 조회하고, 원하는 타입으로 변경해주어야 한다. 하지만, 스프링에서 제공하는 @RequestParam, @ModelAttribute, @PathVarialbe 같은 어노테이션을 사용하면 스프링이 내부적으로 타입 컨버터를 이용하여 문자형 타입을 지정한 타입으로 변환하여 넣어준다. 쉽게, 쿼리스트링이나 HTML Form으로 파라미터를 요청한 경

[Spring]Thymeleaf 템플릿 조각과 레이아웃(레이아웃 나누기) [내부링크]

Thymeleaf 템플릿 조각과 레이아웃 - 템플릿 조각 - 템플릿 레이아웃 - 템플릿 레이아웃 확장 - 템플릿 레이아웃 플러그인 선행해야 할 내용 Thymeleaf 소개 및 환경 설정 : https://blog.naver.com/hj_kim97/222936919616 Thymeleaf 기본 사용법: https://blog.naver.com/hj_kim97/223031615864 템플릿 조각 웹페이지를 개발을 하게되면 상단 영역(Header), 하단 영역(Footer) 등 공통 영역이 많이 있습니다. HTML 파일마다 이렇게 공통되는 부분을 복사해서 사용한다면 변경시 모든 HTML 파일을 수정해야 하므로 상당히 비효율적입니다. 타임리프는 이런 문제를 해결하기 위해 템플릿 조각과 레이아웃 기능을 지원합니다. th:fragment="이름" 속성을 추가하면 템플릿 조각이되어 다른 곳에서 불러와 사용이 가능해진다. th:insert, th:replace로 템플릿 조각을 가져와 불러올 수 있

[Spring]Thymeleaf(타임리프) 스프링 통합과 폼 (form 관련 기능 정리) [내부링크]

Thymeleaf 스프링 통합과 폼 - 타임리프 스프링 통합 - 입력 폼 처리 - 요구사항 추가 - 체크 박스 - 단일(히든 필드) - 체크 박스 - 단일 - 체크 박스 - 멀티 - 라디오 버튼 - 셀렉트 박스 타임리프 스프링 통합 타임리프는 스프링이 없어도 동작하지만, 스프링과 함께 사용하면 타임리프와 스프링과 통합을 위한 다양한 기능을 편리하게 제공합니다. 기본 메뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 스프링 통합 메뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 스프링 통합으로 추가되는 기능 - 스프링의 SpringEL 문법 통합 - ${@myBean.doSomething()} 처럼 스프링 빈 호출 지원 - 편리한 폼 관리를 위한 추가 속성 - th:object (기능 강화, 폼 커맨드 객체 선택) - th:field ,

[Spring]메시지, 국제화(Message, Internationalization) [내부링크]

스프링 메시지, 국제화(Message, Internationalization) - 메시지 - 국제화 - 메시지 소스 설정 - 메시지 소스 사용하기 메시지 화면에서 공통으로 사용되는 다양한 메시지를 한 곳에서 관리하는 기능을 메시지 기능이라고 합니다. 만약, HTML에 하드코딩으로 문구가 적혀있는 경우 특정 문구가 변경되었을 때 해당 문구가 사용되는 모든 파일을 찾아 수정해주어야 합니다. 스프링에서는 다양한 메시지를 한 곳에서 관리하고 화면(View)에서 정의된 메시지를 사용할 수 있는 메시지 기능을 제공합니다. messages.properties 라는 메시지 관리용 파일을 만들고, HTML안에서 Key 값으로 해당 데이터를 불러올 수 있다. 쉽게, 여러 페이지에서 사용하는 다양한 메시지를 한 곳에서 관리하는 기능이다. <!-- 기존 코드 --> <label for="itemId">상품 ID</label> <input type="text" th:field="${item.id}" rea

[Spring]Validation(데이터 유효성 검증) [내부링크]

Spring Validation(데이터 유효성 검증) - 프로젝트 기본 정보 - 검증 직접 처리 - BindingResult - BindingResult를 이용하여 검증하기 - FieldError와 ObjectError - BindingResult를 이용한 검증 개선하기 - 오류 코드와 메시지 처리 - rejectValue, reject 메소드 - 오류 코드와 메시지 처리 개선 - rejectValue, reject 메소드 - MessageCodesResolver 인터페이스 - rejectValue, reject 메소드 동작 방식 - 오류 코드와 메시지 처리 개선 - 타입 오류 - Validator 분리 - Validator 인터페이스 - Validator 분리 - WebDataBinder - @Validated와 @Valid 참고하면 좋은 글 Spring Validation(데이터 유효성 검증): https://blog.naver.com/hj_kim97/222838863332 프로

[Spring]Bean Validation [내부링크]

Bean Validation - Bean Validation - Bean Validation 사용 준비 - Bean Validation 사용 예제 - Bean Validation - 스프링 적용 - Bean Validation - 에러 코드 - Bean Validation - 오브젝트 오류 - Bean Validation - 한계 - Bean Validation - groups - Form 전송 객체 분리 - Form 전송 객체 분리 - 개발 - Bean Validation - JSON 데이터 선행해야 할 내용 Spring Validation(데이터 유효성 검증): https://blog.naver.com/hj_kim97/223034858427 Bean Validation Bean Validation은 Java에서 지원하는 기술 표준(JSR-380)으로 인터페이스로 제공되어 실제 구현체로는 보통 Hibernate Validator를 사용합니다. 쉽게, Java에서 검증에 대한 기능을

[Spring]쿠키와 세션을 이용한 로그인 처리 [내부링크]

쿠키와 세션을 이용한 로그인 처리 - 프로젝트 기본 정보 - 쿠키를 이용한 로그인 처리 - 쿠키와 보안 문제 - 세션을 이용한 로그인 처리 (직접 구현) - 서블릿 세션을 이용한 로그인 처리 - TrackingModes - 세션 타임아웃 설정하기 선행해야 할 내용 Spring Validation: https://blog.naver.com/hj_kim97/223036873193 프로젝트 기본 정보 예제 코드로 사용될 프로젝트의 기본 내용입니다. 1. 의존 라이브러리 dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' compileOnly

[TIL]Nginx를 이용한 애플리케이션 무중단 배포 [내부링크]

Nginx를 이용한 애플리케이션 무중단 배포 - 무중단 배포를 위한 환경 이해하기 - Nginx를 통한 로드밸런싱 구성 - Artillery를 이용하여 성능 측정하기 선행해야 할 내용 - GCP 도커 및 Jenkins 배포: https://blog.naver.com/hj_kim97/223028332820 무중단 배포를 위한 환경 이해하기 애플리케이션의 변경 사항을 수정한 후 배포를 진행하게 될 경우 서버를 종료시키고, 재실행하는 과정이 일어나게 됩니다. 이때, 서버를 내리고 올리는 시간동안 사용자는 서비스를 이용할 수 없습니다. 즉, 서비스 중단 배포가 진행된 것입니다. 이러한, 서비스 재실행은 종료부터 실행까지 길게는 1분 가량이 소요될 수 있습니다. 이러한 배포 과정에서 중단 현상을 해결하기 위해 애플리케이션 서버를 2대 이상으로 늘리고, 애플리케이션 서버와 사용자 사이에 중계를 진행하는 웹 서버를 하나 생성합니다. (Reverse Proxy) 리버스 프록시: 클라이언트가 Web

[TIL]Github Webhook과 jenkins로 배포 자동화하기 [내부링크]

Github Webhook과 jenkins로 배포 자동화하기 - Github Webhook이란? - Github Webhook 설정 - Jenkins 설정 참고하면 좋은 글 Git 사용법 총정리: https://blog.naver.com/hj_kim97/222869706823 웹훅(Webhook)이란?: https://blog.naver.com/hj_kim97/222431987094 Github Webhook이란? 깃헙에서는 특정 이벤트가 발생하면 다른 URL로 API 호출을 해주는 기능을 제공합니다. Github Webhook으로 Jenkins의 URL을 등록하고, Jenkins는 Gtihub의 API 호출을 받으면 Github 저장소의 소스코드를 다운로드 받고, 해당 소스코드를 빌드하여 jar 파일로 만들고, 만들어진 jar 파일을 배포 스크립트를 통해 배포 자동화를 할 수 있습니다. 즉, 로컬에서 소스 코드를 작업하고 Github으로 push만 하면 자동으로 새로운 소스 코드로

[TIL]I/O bound 애플리케이션 [내부링크]

I/O bound 애플리케이션 - I/O bound 애플리케이션도 서버를 늘리면 성능을 올릴 수 있을까? - DB를 이용한 한 줄 게시판 만들기 - Git Flow 전략 사용 예시 - Artillery를 이용한 성능 테스트 참고하면 좋은 글 CPU 테스트, GCP Docker 및 Jenkins 배포: https://blog.naver.com/hj_kim97/223028332820 Nginx를 이용한 애플리케이션 무중단 배포: https://blog.naver.com/hj_kim97/223028541845 Github Webhook과 Jenkins로 배포 자동화: https://blog.naver.com/hj_kim97/223030288576 I/O bound 애플리케이션도 서버를 늘리면 성능을 올릴 수 있을까? CPU bound 애플리케이션 하드디스크에 저장되어 있던 프로그램이 메모리에 올라가게 되면 프로레스가 되고, 스케줄러에 의해 실행될 프로세스가 CPU에 올라가 실행이 된다.

[TIL]Message Queue를 도입하여 데이터 유실 방지 [내부링크]

Message Queue를 도입하여 데이터 유실 방지 - 서버가 죽는 이유와 Message Queue를 도입하여 얻을 수 있는 장점 - RabbitMQ 도입과 글 목록 캐싱 - Message Queue 정리 서버가 죽는 이유와 Message Queue를 도입하여 얻을 수 있는 장점 1. 서버가 죽는 이유? 서버가 죽었다라는 용어를 증상으로 나누어 보면 일부 요청이 실패하는가, 모든 요청이 실패하는가로 나눠볼 수 있습니다. 이러한 원인은 네트워크 장애, DB 장애 등 여러가지로 나눠볼 수 있습니다. CPU 바운드 애플리케이션에서는 CPU를 과도하게 사용하는 Hash 연산을 다량 요청했을 때 요청이 실패 DB I/O 바운드 애플리케이션에서는 DB로 요청하는 쿼리를 다량 요청했을 때 요청이 실패 2. 톰캣 구조 살펴보기 사용자의 요청은 우선 큐에 들어가고, 큐에 들어간 요청이 놀고 있는(Idle) 쓰레드가 있다면 그 쓰레드에 할당되어 처리된다. 쓰레드가 처리하는 양보다 들어오는 요청이 많

[TIL]검색과 분석을 위한 저장소 ElasticSearch(ES) [내부링크]

검색과 분선을 위한 저장소 ElasticSearch(ES) - Elastic Search란? - Database와 ElasticSearch는 어떻게 다른가? - ElasticSearch 기본 용어 - ElasticSearch와 RDB 용어 비교 - Spring Boot 프로젝트에 Elastic Search 도입 Elastic Search란? 엘라스틱 서치(ElasticSearch)는 루씬 기반의 검색 엔진입니다. 즉, 엘라스틱 서치는 검색, 분석, 데이터 저장소 역할을 합니다. 엘라스틱 스택: 데이터 분석에 필요한 모든 유형의 데이터를 실시간으로 검색, 분석 및 시각화를 할 수 있는 Elastic 사의 오픈소스 데이터 분석 플랫폼을 말합니다. 비츠(Beats): 서버에 에이전트 형식으로 설치하는 오픈소스 데이터 수집기로 데이터를 ES에 직접 전송할 수 있으며, Logstash를 통해서 데이터를 전송할 수도 있습니다. 로그스태시(Logstash): 오픈 소스 서버의 데이터 처리 파이프

[Spring]Thymeleaf(타임리프) 기본 사용법 정리 [내부링크]

Thymeleaf(타임리프) 기본 사용법 정리 - 프로젝트 생성 및 기본 세팅 - 타임리프 소개 - 기본 표현식 - 텍스트 - text, utext - 변수 - SpringEL - 기본 객체들 - 유틸리티 객체와 날짜 - URL 링크 - 리터럴 - 연산 - 속성 값 설정 - 반복 - 조건부 평가 - 주석 - 블록 - 자바스크립트 인라인 프로젝트 생성 및 기본 세팅 1. 프로젝트 만들기 Spring initializr: https://start.spring.io/ Project: Gradle-Groovy Language: Java Spring Boot: 2.7.9 Project Metadata: - Group: hello - Artifact: thymeleaf-basic - Name: thymeleaf-basic - Description: Demo project for Spring Boot - Package name: hello.thymeleaf - Packaging: Jar - Ja

[MyBatis]Error parsing XPath '/sqlMap/select'. Cause: java.util.NoSuchElementException 에러 [내부링크]

에러 내용 nested exception is com.ibatis.common.xml.NodeleteException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMap/select'. Cause: java.util.NoSuchElementException 발생 원인 iBatis 혹은 MyBatis 사용 중에 XxxMapper.xml SQL 문 파싱 오류 보통 파라미터 매핑시 '#'이 들어가는 부분에 대해 오타가 났을 경우 발생 ex) '##name#', '#name' MyBatis를 쓰는 경우 iBatis 문법인 '#name#'을 사용하는 경우 파싱 에러 발생 iBatis를 쓰는 경우 MyBatis 문법인 '#{name}'을 사용하는 경우 파싱 에러 발생 Error parsing XPath '/sqlMap/select' 라면 select 문 확인 Error parsing XPath '

[Linux]Docker 설치 및 실행하기 [내부링크]

Linux Docker 설치 및 실행하기 - 도커(Docker) 설치하기 - Docker 실행해보기 참고하면 좋은 글 GCP 계정 생성 및 인스턴스 만들기: https://blog.naver.com/hj_kim97/223028118056 도커(Docker) 설치하기 1. 레드햇 계열 리눅스 Docker 설치 yum을 이용하여 Docker를 설치합니다. RedHat, Fedora, CentOS # 만약 기존에 도커가 설치되어있다면 삭제 후 진행 # 이전 버전의 Docker는 'docker', 'docker-engin'이라는 이름으로 사용되었습니다. $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 1. Docker Repository 설정 # 1-1. '

[TIL]CPU 테스트, GCP Docker 및 Jenkins 배포 [내부링크]

CPU 테스트, GCP Docker 및 Jenkins 배포 프로그램과 프로세스의 차이 Artillery를 활용한 스트레스 테스트 Dockerized 애플리케이션 GCP에 배포하기 Jenkins를 이용해서 배포하기 프로그램과 프로세스의 차이 컴퓨터의 주요 부품으로는 하드디스크(HDD), 메모리(RAM), CPU가 있습니다. 프로그램(이하 애플리케이션)은 하드디스크(HDD)에 존재합니다. 하드디스크에 있는 프로그램을 실행시키면 메모리(RAM)에 저장됩니다. 이것은 프로세스라고 합니다. 메모리(RAM)에 올라가있는 프로세스 중 일부는 CPU에 의해 실행됩니다. 이때, CPU Scheduling을 통해 어떤 프로세스가 시스템의 자원을 할당받는지 결정됩니다. 즉, 어떤 프로세스가 실행될 지 결정됩니다. 메모리가 존재하는 이유 하드디스크는 굉장히 느립니다. 때문에, CPU가 프로세스를 실행시키기 위해 하드디스크에 직접 요청을 하게 되면, CPU가 아무리 빠르더라도 하드디스크 I/O 속도가 굉장

[Jenkins]관리자 비밀번호 재설정 [내부링크]

Jenkins 관리자 비밀번호 재설정 - 개요 - Jenkins 관리자 비밀번호 재설정 개요 Jenkins를 처음 실행시 플러그인 설치 및 배포 스크립트를 설정하는 것은 무척이나 오래걸립니다. 이때, 처음 설정시 이후에 비밀번호를 까먹은 경우에 Jenkins 설정 파일의 옵션을 변경하면 비밀번호 없이 접속할 수 있습니다. Jenkins 관리자 비밀번호 재설정 1. Jenkins 설정 파일 수정 useSecurity 옵션을 false로 변경한다. vi 편집기로 접속 후 'i'를 입력하면 입력모드로 변경되고, 저장할 때는 ESC 클릭 후 ':wq' 입력한다. # Jenkins 설정 파일 수정 $ sudo vi /var/lib/jenkins/config.xml <!-- Before --> <?xml version='1.1' encoding='UTF-8'?> <hudson> <disabledAdministrativeMonitors/> <version>2.375.3</version> <num

[C++]C++ STL(표준 템플릿 라이브러리) 사용법 (Vector, Map 예시) [내부링크]

C++ STL(표준 템플릿 라이브러리) 사용법 - STL이란? - STL의 구성 요소 · 컨테이너(container) · 반복자(iterator) · 알고리즘(algorithm) - Vector 사용 예시 - Map 사용 예시 STL이란? STL이란 Standard Template Library의 약자로 표준 템플릿 라이브러리를 말합니다. 쉽게, C++에서 제공되는 표준 컨테이너 클래스 템플릿 라이브러리입니다. 벡터, 리스트, 스택, 큐 등의 컨테이너와 이들을 처리하기 위해 사용할 수 있는 여러 가지 연산을 포함합니다. STL의 구성 요소 C++ 표준 템플릿 라이브러리인 STL은 다음과 같은 구성 요소로 이루어진 템플릿을 제공합니다. 컨테이너(container): 데이터 저장 반복자(iterator): 포인터의 역할 알고리즘(algorithm): 데이터 처리 가능 컨테이너(container) STL에서 컨테이너(container)는 같은 타입의 여러 객체를 저장하는 일종의 집합이라고

[C++]C++ 예외처리(Exception Handling) [내부링크]

C++ 예외처리(Exception Handling) - 예외(exception) - 예외처리(exception handling) - try, catch, throw문 - 예외 처리 사용법 - 예외처리 주의점 - 스마트 포인터(smart pointer) - 예외 클래스 - 표준 예외 클래스 - 처리되지 않은 예외 예외(exception) 예외(exception)란 컴퓨터 시스템이 동작하는 도중에 예상하지 못한 오류가 발생하여, 실행되고 있던 프로그램이 중지되는 것을 의미합니다. 프로그램 실행 도중에 발생할 수 있는 비정상적인 사건 예외 상황에 대해 적절한 대비를 하지 않으면 프로그램이 안정적으로 실행되지 않는 문제가 일어날 수 있음 예외처리(exception handling) 예외 처리(exception handling)는 이러한 예외 상황을 처리할 수 있도록 코드의 흐름을 바꾸는 행위를 의미합니다. 프로그램 실행 중 예외가 발생하였을 때를 대비하여 마련해 놓은 처리 절차를 따라 대응

[Linux]리눅스 tar 명령어 사용법(파일 아카이브와 압축) [내부링크]

리눅스 tar 명령어 사용법 - 파일 아카이브(Archive) - 압축(Compression) - tar 명령어 파일 아카이브(Archive) 아카이브(Archive)란 사전적 의미로 역사적 가치 혹은 장기 보존의 가치를 가진 기록이나 문서들의 컬렉션을 의미하며, 동시에 이러한 기록이나 문서들을 보관하는 장소, 시설, 기관 등을 의미합니다. 리눅스에서 아카이브(Archive)란 여러 개의 파일이나 디렉토리들을 하나의 파일로 묶는 것을 말합니다. 아카이브는 단순히 파일의 용량은 줄어들지 않고, 여러 개의 파일들을 하나로 모으는 것을 의미합니다. 쉽게 말하자면, 아카이빙을 통해 여러 개의 파일들이 묶인 *.tar 파일이 생성됩니다. 그리고 *.tar 파일을 복원하면, 기존에 파일과 폴더 구조를 유지한 원본 파일을 얻을 수 있습니다. 압축(Compression) 파일의 크기를 작게 만드는 것을 압축(compression) 이라고 합니다. 기존 파일의 크기를 압축하고, 원래대로 돌리는 것이

[Gradle]Groovy 문법 요약 정리 (클래스, 메소드, 클로저, 조건문, 반복문) [내부링크]

Groovy 문법 요약 정리 - Groovy란? - Groovy 문법 · 생략 가능한 구문들 (Import Statement) · 세미콜론 (Semicolons) · 메소드 (Parentheses) · Getters and Setters · 접근 제어자 (Access Modifiers) · 체크 예외 (Checked Exceptions) · 변수 선언과 값 할당 · 리스트와 맵 데이터 다루기 (Collective Data Types) · 조건문 · 반복문 · 클로저 (Closure) · 클래스 (Class) · Assertions · 동일성, 동등성 검사 Groovy란? 그루비(Groovy)는 JVM에서 실행되는 언어로 자바에 파이썬, 루비, 스몰토크 등의 특징을 더한 동적 객체 지향 프로그래밍 언어입니다. 문법이 Java에 매우 비슷하며, Java와 호환이 되고, Java 클래스 파일을 그대로 Groovy 클래스로 사용할 수 있습니다. Groovy 문법 생략 가능한 구문들 (Imp

[Gradle]build.gradle 작성 방법 및 동작 원리 (Gradle 명령어, Gradle 프로젝트 구조, task 정의) [내부링크]

build.gradle 작성 방법 및 동작 원리 - Gradle이란? - Gradle 프로젝트 구조 - Gradle 명령어 - Gradle task 정의 - build.gradle 프로퍼티 - build.gradle 메소드 Gradle이란? 그래들(Gradle)은 그루비(Groovy)를 기반으로 한 빌드 도구입니다. Ant와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈 소스로 공개된 빌드 도구입니다. Gradle 공식 사이트: https://gradle.org/ Github 공식 문서: https://github.com/gradle/gradle 그루비(Groovy) 기반의 빌드 자동화 도구 XML 기반의 Maven 보다 동적인 빌드를 유연하게 표현할 수 있으며, 가독성이 좋습니다. Gradle 프로젝트 구조 Gradle 프로젝트 구조는 아래와 같습니다. Gradle 프로젝트 초기화 명령어: gradle init --type java-applic

[Spring]Thymeleaf 소개 및 환경 설정 [내부링크]

Thymeleaf 소개 및 환경 설정 - Thymeleaf란? - Thymeleaf 환경 설정 · Spring Legacy xml · Java Config · Spring Boot Themeleaf란? Thymeleaf란 뷰 템플릿 엔진으로 컨트롤러가 전달하는 데이터를 이용하여 동적으로 화면을 구성할 수 있게 합니다. Thymeleaf 공식 사이트: https://www.thymeleaf.org/ 서버 사이드 HTML 렌더링(SSR): 타임리프는 백엔드 서버세엇 HTML을 동적으로 렌더링하는 용도로 사용됩니다. 네츄럴 템플릿: 타임리프는 순수한 HTML을 최대한 유지하려는 특징이 있습니다. JSP와의 큰 차이점으로 타임리프로 작성한 파일의 확장자는 .html이고, 웹 브라우저에서 직접 파일을 열어 내용을 확인할 수 있습니다. 스프링 통합 지원: 타임리프는 스프링과 자연스럽게 통합되어 스프링의 다양한 기능을 쉽게 사용할 수 있습니다. <!DOCTYPE html> <html xmlns:

[Spring]객체 지향 설계와 스프링(스프링 탄생 배경, 객체 지향 프로그래밍, SOLID 원칙) [내부링크]

객체 지향 설계와 스프링 - EJB의 한계 - Hibernate의 탄생 - Spring의 탄생 - 스프링(Spring)이란? - 스프링 프레임워크(Spring Framework) - 스프링 프레임워크의 특징 및 주요 모듈 - 스프링 부트(Spring Boot)란? - 스프링과 객체 지향 - 객체 지향 프로그래밍이란? · 객체 지향 프로그래밍이란? · 다형성(Polymorphism) · 오버라이딩(overriding) · 역할과 구현을 분리 · 다형성의 본질 · 한계점 · 스프링의 핵심 - 좋은 객체 지향 설계의 5가지 원칙(SOLID) 스프링의 탄생 배경 EJB EJB란 Enterprise Java Beans의 약자로 엔터프라이즈급 애플리케이션 개발을 단순화하기 위해 발표한 스팩입니다. Java Bean이란 자바 객체를 재사용 가능하게 컴포넌트화 시킬 수 있는 코딩 방침을 정의한 것을 의미합니다. 즉, EJB는 애플리케이션에서 비즈니스와 관련된 객체가 많기 때문에, 비즈니스 객체들을

[C++]C++ 연산자 다중 정의 [내부링크]

C++ 연산자 다중 정의 - C++ 연산자 다중 정의 - 단항 연산자 다중 정의 - 이항 연산자 다중 정의 - 스트림 출력 연산자 다중 정의 - [] 연산자 다중 정의 - 형 변환 연산자 다중 정의 C++ 연산자 다중 정의 사용자가 선언한 클래스에서 C++에 정의된 연산자를 의미와 목적에 맞게 다중 정의하여 사용할 수 있습니다. 객체에 대해서 + 라는 연산에 곱(*)하거나 빼기(-)로 재정의할 수도 있지만, 연산자의 의미 자체를 바꾸는 것은 옳지 않습니다. 때문에, 연산자의 고유한 특성이 유지되도록 합니다. 클래스의 멤버로 정의하는 방법과 클래스 외부에서 정의하는 방법이 존재합니다. 클래스 외부에서 정의할 경우 클래스의 멤버가 아니기 때문에, 객체의 private 멤버는 직접 사용할 수 없습니다. (friend 키워드 혹은 멤버 접근 함수를 생성하여 사용) 단항 연산자인 ++와 -- 연산자는 전위 표기와 후위 표기 각각에 대해 다중 정의가 가능합니다. 이항 연산자의 다중 정의는 좌측

[iBatis]java.sql.SQLException: Invalid parameter object type 에러 [내부링크]

에러 내용 java.sql.SQLException: Invalid parameter object type. Expected 'java.util.HashMap' but found 'java.lang.String'. 잘못된 매개 변수 개체 유형. 'java.util.HashMap'을 예상했지만 'java.lang.String'을 발견했다. 발생 원인 iBatis 사용시 *Dao.xml에 parameterClass로 명시한 타입과 실제 Dao 쿼리를 수행할 때 넘겨주는 파라미터 타입이 다른 경우 발생 Expected 'java.util.HashMap' but found 'java.lang.String'은 HashMap을 paramaterClass로 정의했지만, String 타입을 넘겨주어서 발생합니다. 해결 방안 xml 파일에 parameterClass의 타입을 변경 Expected 'java.util.HashMap' but found 'java.lang.String' parameterC

[C++]C++ 상속 (기초 클래스, 파생 클래스, 추상 클래스) [내부링크]

C++ 상속 - 상속(inheritance) - 파생 클래스(derived class) - 파생 클래스의 생성자 및 소멸자 - 가시성 지시어 및 상속 - final 클래스 - 이름 은폐 - 클래스 계층구조와 포인터 - 가상함수 - 가상 소멸자 - 업 캐스팅과 다운 캐스팅 - 추상 클래스 상속(inheritance) 객체지향 언어에서 상속은 계층관계를 사용하여 클래스 간의 속성 및 함수를 공유할 수 있도록 지원하는 매우 중요한 개념입니다. 상속은 사용자에게 높은 수준의 코드 재활용성을 제공하며, 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련합니다. 기존에 정의되어 있던 클래스를 기초 클래스(base class) 또는 부모 클래스(parent class), 상위 클래스(super class) 라고도 합니다. 상속을 통해 새롭게 작성되는 클래스를 파생 클래스(derived class) 또는 자식 클래스(child class), 하위 클래스(sub class) 라고도

[C++]템플릿(template) 사용법 & 예제 [내부링크]

템플릿(template) 사용법 & 예제 - 컨테이너 클래스(Container Class) - 템플릿(Template) - 비자료형 템플릿 매개변수 - 함수 템플릿 컨테이너 클래스(Container Class) 컨테이너(container) 클래스란 다른 객체를 저장하는 클래스로서, 그 예로 스택, 큐, 배열, 리스트 등이 있습니다. 만약, int형 자료를 저장할 수 있는 컨테이너 클래스인 스택을 만든다고 할 때, 아래와 같이 될 수 있습니다. 이때, 다른 자료형을 저장하는 스택이 필요하다면 예약어(typedef)로 지정한 자료형을 변경하거나, 예약어만 변경한 동일한 코드의 스택 클래스를 또 생성해야 합니다. 다른 자료형을 저장하는 컨테이너 클래스를 만들고자 할 때마다 클래스를 새로 작성해야 합니다. (중복 코드) #ifndef STACK_H_INCLUDED #define STACK_H_INCLUDED typedef int STACK_ITEM; class Stack { private:

[WEB]JWT 토큰 인증이란?(쿠키, 세션, 토큰, JWT 토큰 인증) [내부링크]

JWT 토큰 인증이란? - HTTP의 특징과 쿠키와 세션을 사용하는 이유 - 쿠키(Cookie) - 세션(Session) - 쿠키와 세션의 차이 - 세션을 사용하면 되는데 왜 쿠키를 사용할까? - 토큰(Token) 인증 - JWT(JSON Web Token)란? - JWT의 구조 - JWT를 이용한 인증 과정 - JWT 토큰 장단점 - Access Token과 Refresh Token - Refresh Token 활용하기 HTTP의 특징과 쿠키와 세션을 사용하는 이유 클라이언트 인증을 확인하는 방식은 대표적으로 쿠키, 세션, 토큰 3가지 방식이 있습니다. HTTP(Hypertext Transfer Protocol)는 인터넷 상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 통신 규약을 말합니다. 이 HTTP 프로토콜에는 비연결성(Connectionless)과 비상태성(Stateless)이라는 특징이 있습니다. 이는 서버의 자원을 절약하기 위해 모든 사용자의 요청마다 연결

[Java]현재 날짜, 시간 구하기(Date, Calendar, SimpleDateFormat, LocalDate, LocalTime, LocalDateTime) [내부링크]

JAVA 현재 날짜, 시간 구하기 - SimpleDateFormat 클래스 - Date 클래스 - Calendar 클래스 - System 클래스의 currentTimeMillis() 이용 - LocalDate 클래스 - LocalTime 클래스 - LocalDateTime 클래스 - ZonedDateTime 클래스 SimpleDateFormat 클래스 SimpleDateFormat 클래스는 날짜-시간 형식에 대해서 사용자 정의 패턴을 정의하여 표현해주는 클래스입니다. · Date, Claendar 클래스를 이용시 해당 클래스를 함께 사용하여 원하는 형태로 출력합니다. import java.text.SimpleDateFormat; import java.util.Date; public class CurrentTime { public static void main(String[] args) { Date today = new Date(); // 포맷 지정 전: Wed Nov 16 19:15

[Spring]Argument Resolver 사용법 [내부링크]

Spring Argument Resolver 사용법 - Argument Resolver란? - Argument Resolver 용도 - Argument Resolver 구현 - 어노테이션 제한하기 Argument Resolver란? Argument Resolver는 어떠한 요청이 컨트롤러에 들어왔을 때, 요청에 들어온 값으로부터 원하는 객체를 만들어 내는 일을 간접적으로 해줄 수 있습니다. Argument Resolver는 HandlerMethodArgumentResolver를 구현함으로써 사용이 가능한데 이것은 공식 문서에 컨트롤러 메소드에서 특정 조건에 맞는 파라미터가 있을 때 원하는 값을 바인딩 해주는 인터페이스라고 명시되어 있습니다. · Servlet과 Controller 사이에서 전달되어진 값을 가공하거나 추가할 필요가 있을 때 사용이 가능합니다. · 쉽게, 사용자 요청이 들어오고, Controller 메소드가 실행되기전에 Argument Resolver로 등록된 객체가 해

[Java]제네릭(Generic) 사용법 정리(제네릭 타입 변수, 와일드 카드, PECS) [내부링크]

Java 제네릭 사용법 정리 - 제네릭(Generic)이란? - 제네릭을 사용해야 하는 이유 - 제네릭 사용법 - 자주 사용하는 타입 인자 - 타입 변수 여러개 지정 - 타입 변수 제한 - 제네릭 메소드 - 와일드 카드의 등장 - 와일드 카드 사용법 - PECS(Producer-Extends, Consumer-Super) 공식 제네릭(Generic)이란? 제네릭(Generic)은 Java에서 소스코드 컴파일 시 타입을 체크해주는 기능입니다. 주로 여러가지 타입을 다루는 클래스나 메소드에 적용하여 사용합니다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안전성을 높일 수 있고, 형 변환의 번거로움을 줄일 수 있습니다. · 파라미터 타입이나 리턴 타입에 대한 정의를 외부로 미룹니다. · 타입에 대한 유연성과 안전성을 확보합니다. · 런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술입니다. 제네릭을 사용해야 하는 이유 제네릭을 사용으로 얻을 수 있는 가장 큰 이점은

[강의 요약]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 요약 [내부링크]

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 요약 - IntelliJ 기본 세팅 - 프로젝트 생성하기 - 예제 프로젝트 환경 - 라이브러리 의존 관계 - Spring 결과 반환 방식 - 스프링 빈과 의존관계(DI) - 스프링 DB 접근 기술 · 1. 데이터베이스 설치 · 2. 순수 JDBC를 이용한 방법 · 3. 스프링 JdbcTemplate를 이용한 방법 · 4. JPA를 이용한 방법 · 5. 스프링 데이터 JPA를 이용한 방법 - AOP IntelliJ 기본 세팅 프로젝트 JDK 설정 File > Project Structure... > Project > SDK 설정 Build 및 Run 도구 변경 File > Settings... > Build, Execution, Deployment > Build Tools > Gradle > Build and run using, Run tests using (IntelliJ IDEA로 변경) 프로젝트 생성하기 I

[JSP]JSTL 및 EL 사용 방법 [내부링크]

JSP JSTL 및 EL 사용 방법 - JSTL이란? - JSTL 설치 및 다운로드 - JSTL 확장 태그 종류 - JSTL 사용 방법 · JSTL Core Library 사용법 · JSTL Formatting Library 사용법 - EL이란? - EL 내장객체 종류 - EL 연산자 종류 - EL 리터럴 표현식 - EL 표기법 - JSTL + EL 사용하기 - 알아두면 좋은 JSTL 표현들 JSTL이란? JSTL은 JavaServer Pages Standard Tag Library의 약어로, Java 코드를 바로 사용하지 않고 HTML 태그(<>) 형태로 직관적인 코딩을 지원하는 라이브러리입니다. Java EE 기반의 웹 애플리케이션 개발 플랫폼을 위한 컴포넌트 모음 XML 데이터 처리와 조건문, 반복문, 국제화와 지역화와 같은 일을 처리하기 위한 JSP 태그 라이브러리 자신만의 태그를 추가할 수 있는 기능을 제공합니다. JSTL 설치 및 다운로드 JSTL을 사용하기 위해서는 JS

[Spring]타일즈(Tiles) 설정 및 사용법 (템플릿엔진, 동적메뉴, ViewPrepare) [내부링크]

Spring Tiles 설정 및 사용법 - Tiles란? - Tiles 관련 용어 - Tiles 사용법 · 1. 의존성 추가 · 2. Tiles 관련 Bean 등록 · 3. Tiles 관련 설정 - Tiles 동적 메뉴 설정하기 · 1. Tiles 관련 Bean에 ViewPrepare 옵션 설정 · 2. ViewPrepare 인터페이스 구현 · 3. MenuPrepare Bean 등록 · 4. tiles 레이아웃 수정 Tiles란? Tiles는 레이아웃 템플릿 엔진으로 중복되는 include 코드를 사용하지 않고도 지정된 페이지 레이아웃에 따라 페이지 타일을 조합하여 완전한 페이지로 만들어줍니다. 반복되는 부분들을 한 곳에서 관리할 수 있게 도와주는 템플릿 프레임워크입니다. JSP Include와 비슷하지만, Tiles는 레이아웃 템플릿 엔진으로 레이아웃을 구성하는데 좀 더 세분화되고 관리하기 쉬워 유지보수에 용이합니다. tiles에는 상속 기능이 있기때문에, 기존의 값을 참조하여

[Spring]Spring Exception Handling(예외 처리) 및 Global Exception Handler(전역 예외 처리) [내부링크]

Spring Exception Handling 및 Global Exception Handler - @ExceptionHandler 어노테이션 - @ControllerAdvice, @RestControllerAdvice 어노테이션 - Global Exception Handling(전역 예외 처리) 전략 - Enum을 이용하여 에러 코드 및 메시지 관리하기 Spring Exception Handling 스프링은 일관성 있는 코드 스타일을 유지하면서 Exception을 처리할 수 있도록 다양하고 막강한 어노테이션을 제공하고 있습니다. · @ControllerAdvice, @RestControllerAdvice, @ExceptionHandler @ExceptionHandler 어노테이션 @ExceptionHandler는 Controller 계층에서 발생하는 에러를 잡아서 메소드로 처리해주는 기능입니다. · Controller 클래스안에 메소드로 정의하거나, @ControllerAdvice,

[Spring Security]Spring Security란 무엇인가? [내부링크]

Spring Securiy란 무엇인가? - Spring Security란? - 인증과 인가 - Spring Security 동작 과정 및 주요 모듈 Spring Security란? Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크입니다. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리하고 있습니다. Filter는 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받지만, Interceptor는 Dispatcher와 Controller 사이에 위치한다는 점에서 적용 시기의 차이가 있습니다. Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자가 일일이 보안 관련 로직을 작성하지 않아도 된다는 장점이 있습니다. · 보안과 관련하여 체계적으로 많은 옵션을 제공하여 편리하게 사용 가능 · fi

[Spring Security]Spring Security 기초 사용법(스프링 시큐리티 기본 API 및 Filter 이해) [내부링크]

Spring Security 기초 사용법 - Spring Security 프로젝트 실행하기 - HttpSecurity 설정 메소드 - Login Form 인증 로직 플로우 - Logout 플로우 - Remember Me 인증 - Remember Me 인증 플로우 - 익명 사용자 인증 필터 - 동시 세션 제어 - 세션 고정 보호 - 세션 정책 - 세션 제어 필터 - 권한 설정 및 표현식(인가 API) - 인가 API 예제 코드 - 예외 처리 및 요청 캐시 필터 - 사이트 간 요청 위조(CSRF) Spring Security 프로젝트 실행하기 1. 의존성(Dependency) · 스프링 시큐리티 의존성을 추가한 것만으로도 서버 기동시 스프링 시큐리티의 초기화 작업 및 보안 설정이 이루어집니다. · 기본적으로 username: "user" / password: "랜덤 문자열" 로 계정이 제공됩니다. 랜덤 문자열 비밀번호는 실행할 때 Console에 출력됩니다. <dependency> <g

[Linux]리눅스 심볼릭 링크 사용법(ln 명령어, 소프트 링크, 하드 링크, inode) [내부링크]

리눅스 심볼릭 링크 사용법 - inode란? - 링크 유형(하드 링크, 심볼릭 링크) - ln 명령어 사용법 - ln 명령어 예시 - 심볼릭 링크와 하드 링크 차이 inode란? inode란 파일을 기술하는 디스크 상의 데이터 구조로서 파일의 데이터 블록이 디스크 상의 어느 주소에 위치하고 있는 지에 대한 파일에 중요한 정보를 갖고 있습니다. Inode에는 파일의 소유권 및 권한 여부에 대한 정보, 파일 내용이 들어있는 디스크 내의 물리적 주소, 파일의 링크 수, 형태, 크기, 만들어진 시간 등을 저장하고 있습니다. 파일을 생성할 때 inode가 i-list 안에 만들어지며 inode의 inumber와 파일 이름이 디렉토리에 등록됩니다. 파일을 삭제할 때는 그 파일에 대한 inode의 파일 링크수가 하나 감소되고 디렉토리 entry 상에는 해당 파일의 inumber가 0으로 변합니다. inode의 파일 링크 수가 0이 되면 파일의 디스크 블록은 free가 되며 inode는 dello

[Linux]리눅스 nohup 명령어 사용법(nohup, &(백그라운드)) [내부링크]

리눅스 nohup 명령어 사용법 - nohup이란? - nohup과 &(백그라운드)의 차이 - nohup 명령어 사용법 - 파일 출력없이 nohup 실행하기 - 표준 출력 파일 변경하기 - nohup 명령어 예시 nohup 이란? nohup은 no hang up의 약어로 해석 그대로 프로세스를 실행한 터미널의 세션 연결이 끊기더라도 지금 실행시킨 프로그램을 종료시키지 않도록 하는 명령어입니다. 기본적으로 터미널 연결이 종료되면 SIGHUP(HUP)이라는 신호(시그널)가 전송됩니다. 때문에, 일반적으로 SSH를 통해 터미널로 접속하여 프로그램을 실행 중일 때, 연결이 끊기거나 세션이 종료되는 경우 HUP signal이 보내지게 되고 터미널에서 실행 중이던 모든 프로세스가 중지됩니다. · SIGHUP(HUP) : 터미널 인터페이스에 의해 연결의 단절이 감지되면 해당 제어 터미널과 연결된 제어 프로세스에게 전달되는 신호입니다. · 즉, nohup은 터미널 세션이 끊겨 HUP signal로

[Node.js]nodemon 설치 및 사용 방법 정리 [내부링크]

nodemon 설치 및 사용 방법 정리 - nodemon 모듈 - nodemon 설치 - nodemon 실행 - nodemon 실행 명령어 설정(package.json) nodemon 모듈 Node.js 애플리케이션 개발 시 서버 코드를 변경할 때마다 변경사항을 확인하기 위해서는 서버를 끄고 다시 실행해야하는 번거로움이 있습니다. nodemon은 node monitor의 약자로, 노드가 실행하는 파일이 속한 디렉토리를 감시하고 있어 파일이 수정되면 자동으로 노드 애플리케이션을 재시작해주는 확장 모듈입니다. 공식 사이트: https://www.npmjs.com/package/nodemon nodemon 설치 nodemon을 사용하려면, 시스템 경로에 전역으로 설치하거나, 로컬 설치를 진행합니다. 로컬 설치를 사용하면 시스템 경로에서 nodemon을 사용할 수 없거나 명령줄에서 직접 사용할 수 없습니다. 대신 npm 스크립트를 사용하여 (ex. npm start) nodemon을 실행할

[Spring Cloud]Spring Cloud Feign 사용법 총정리 [내부링크]

Spring Cloud Feign 사용법 총정리 - Feign이란? - 의존성(Dependency) - @EnableFeignClients 어노테이션 - @FeignClient 인터페이스 구현 - @FeignClient Config 정보 설정 Header - @FeignClient Config 정보 설정 응용 · Logger · Encoder & Decoder · ErrorDecoder · FeignFormatterRegistrar · Retryer · Hystrix Fallback - Error 핸들링 구현 Feign이란? Feign은 Netflix에서 개발한 웹 서비스 클라이언트 도구로 어노테이션을 템플릿화된 ㅛㅇ청으로 처리해 동작하는 Http Clinet Binder 입니다. 인터페이스를 작성하고 어노테이션을 선언하는 방식으로 Feign을 이용하여 웹 서비스 클라이언트를 보다 쉽게 작성할 수 있습니다. · Nextflix에서 개발한 오픈 소스 · 선언적 방식으로 Rest 기반

[node.js]Express dotenv 모듈 사용법 정리(환경 변수 설정) [내부링크]

dotenv 모듈 사용법 정리 · dotenv 모듈이란? · dotenv 사용법 · dotenv 다른 경로에 있는 파일 사용하기 · ES 모듈에서 환경 변수 불러오기 (import) · dotenv DB 연결 예시 dotenv 모듈이란? dotenv는 환경변수를 .env파일에 저장하고 process.env로 로드하는 의존성 모듈입니다. dotenv를 사용하는 이유는 우리가 개발을 하는 과정에서 서버주소, 고유 API KEY 값 등 필요한 정보들을 저장을 하게 된다. 그리고 이러한 정보들은 민감한 정보임과 동시에 보안이 이루어져야 하는 정보들이다. 만약 이러한 정보들이 오픈소스(깃허브)에 공개될 경우, 해킹을 당하거나 보안적인 면에서 위험할 수 있습니다. 이러한 문제로 dotenv패키지를 이용하여 환경변수 파일(.env)을 외부에 만들어 접근할 수 있게 하고, 개발 초기 단계에서 세팅하기를 권고합니다. · 공식 문서: https://www.npmjs.com/package/dotenv

[Node.js]Node MySQL 연동하기(mysql 모듈 사용법) [내부링크]

Node MySQL 연동하기(mysql 모듈 사용법) - mysql 모듈이란? - 연결 설정(Connect) - 연결 종료(end) - 연결 풀링(pool) - 쿼리 수행(Query) - 여러 쿼리문 수행 - 타임 아웃 - Express 및 mysql 모듈 설정 예시 mysql 모듈이란? mysql 모듈은 Node.js용 Mysql 드라이버입니다. JavaScript로 작서되었으며 컴파일이 필요하지 않고, MIT 라이선스로 존재합니다. 공식 문서: https://github.com/mysqljs/mysql → npm install mysql # mysql 모듈 설치 // 1. mysql 모듈 불러오기 const mysql = require('mysql'); // 2. DB Connection 생성 및 연결 const connection = mysql.createConnection({ host : 'localhost', port : 3306, user : 'root', password

[Node.js]Sequelize 기초 사용법(sequelize-cli, CURD 사용하기) [내부링크]

Sequelize 기초 사용법(sequelize-cli, CRUD 사용하기) - ORM이란? - Sequelize란? - Sequelize 사용하기 · 프로젝트 초기화 진행 · 초기 파일 설명 · model 만들기 · model 옵션 추가하기 · CRUD 사용하기 ORM이란? ORM은 Object Relational Mapping의 약자로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말합니다. 객체 지향 프로그래밍에서는 클래스를 사용하고, 관계형 데이터베이스에서는 테이블을 사용합니다. 때문에, 객체 모델과 관계형 모델 간에 불일치가 존재합니다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결할 수 있습니다. · SQL 쿼리가 아닌 직관적인 코드로 데이터를 조작할 수 있어 개발자가 객체 지향 프로그래밍을 하는 데 집중할 수 있습니다. · 개발자는 Object에 집중함으로써 극단적으로 DBMS를 교체하는 작업에도 비교적 적은 리

[Node.js]EJS 템플릿 엔진 사용법(node 동적 화면 만들기) [내부링크]

EJS 템플릿 엔진 사용법 - ejs란? - ejs 기본 문법 - Express 연동 - Express 연동 예시 ejs란? ejs는 Embedded JavaScript Template의 약자로 node.js 진영에서 많이 사용하는 템플릿엔진입니다. ejs는 지정된 태그를 통해 스크립트 내용을 하나의 요소처럼 사용될 수 있게 합니다. 또한 서버에서 보낸 변수를 가져와 사용할 수 있습니다. · 공식 문서: https://ejs.co/#promo · Java에서 JSP 파일을 이용하여 Java 코드 블록을 사용했던 것과 같이 Node에서 EJS 파일을 이용하여 JavaScript 코드 블륵을 사용할 수 있습니다. · 정적인 .html 파일이 아닌, .ejs라는 파일안에 HTML 문법과 ejs 문법을 사용하여 동적인 화면을 제공합니다. → npm install ejs # ejs 모듈 설치 ejs 기본 문법 주석 : <%# ... %> JS 코드 : <% ... %> 변수 출력(html e

[Node.js]request 모듈 사용법(HTTP 요청 라이브러리) [내부링크]

request 모듈 사용법 - request 모듈이란? - 요청 메소드 - 단순 GET 요청 - GET 요청(QueryString 포함) - POST 요청(Form 요청) - POST 요청(JSON 요청) - POST 요청(Multipart) - 사용자 정의 HTTP 헤더 - Promise 및 Await/Async 이용하기 request 모듈이란? request 모듈은 node.js가 클라이언트가 되어 서버에 요청을 보낼 수 있는 기능을 제공하는 HTTP 요청 모듈입니다. 상당히 다양한 HTTP request 형식을 지원하고, npm 초창기부터 있던 모듈로 사용법이 간단합니다. ※ 2020년 2월 11일 요청이 완전히 중단되어 deprecated 되었습니다. → npm install request # request 모듈 설치(promise 기반이 아님) → npm install request-promise-native # promise를 이용한 request 모듈 요청 메소드 //

[Git]Git 사용법 총정리(Git, Github, 워킹디렉토리, 스테이지, 지역저장소, 원격저장소) [내부링크]

Git 사용법 총정리 - Git이란? - 형상 관리 방식 · 공유 폴더 방식 · 클라이언트/서버 방식 · 분산 저장소 방식 - Git의 Workflow · 워킹 디렉토리(Working Directory) · 스테이지(Staging Area) - Git 초기 설정 · Config 설정 · 사용자 설정 · CRLF 설정 · 명령어 Alias 설정 · .gitignore 파일 · 코드 에디터 설정 - Git 명령어 · 깃 초기화 : git init · 상태 확인 : git status · 변경된 내용 확인 : git diff · 버전 히스토리에 저장하기 : git commit · 버전 히스토리 확인하기 : git log · 파일 변경 및 삭제하기 : git rm, git mv · 버전 이력에 태그 지정하기 : git tag · 브랜치 관련 명령어 : git branch, git switch, git checkout, git merge · 병합 충돌 문제 : conflict · 버전 이력

[Node.js]Node json-server를 이용하여 Mock Server 만들기 [내부링크]

Node json-server를 이용하여 Mock Server 만들기 - Mock Server 개요 - Mock Server란? - json-server 사용하기 · 1. data.json 파일 작성하기 · 2. json-server 실행하기 · 3. API 테스트하기 Mock Server 개요 일반적으로 프로젝트를 진행할 때 프론트엔드 개발자와 백엔드 개발자가 서로 협력하여 하나의 애플리케이션을 개발합니다. 이때, 프론트엔드 개발자 입장에서 백엔드 개발자가 서버 프로그램 API 개발이 완료되지 않으면, 화면에서 사용할 데이터를 받지 못하여 서버 프로그램이 개발될 때까지 개발을 못하고 기다리게 됩니다. 이때, Mock 서버를 이용하여 서버 API 구축이 되지 않아도, 프론트엔드 개발을 진행할 수 있도록 도움을 받을 수 있습니다. Mock Server란? Mock 서버란 실제 서버처럼 클라이언트로부터 요청을 받으면 응답을 하는 가짜 서버를 말합니다. 서버와 클라이언트 간의 API가 정

[Node.js]express 사용법 총정리(Express 실행, 라우팅, app.use, 에러처리, 정적 파일 제공하기) [내부링크]

express 사용법 총정리 - Express란? - Express 실행하기 - Express 라우팅 처리 · 라우트(Route) 경로 · 라우트(Route) 핸들러 · 응답 메소드 · 라우트(Route) 체인 · app.use() 함수 · 모듈식 라우터 - Express 에러 처리하기(Exception Handling) - 정적 파일 제공하기 Express란? Express는 가장 인기있는 Node 웹 프레임워크로 웹 및 모바일 애플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Bode.js 웹 애플리케이션 프레임워크입니다. Node.js는 오픈 소스, 크로스 플랫폼이며, 개발자가 모든 종류의 서버 사이드 도구들과 애플리케이션을 JavaScript로 만들 수 있도록 해주는 런타임 환경입니다. Express는 이런 Node.js의 원칙과 방법을 이용하여 웹 애플리케이션을 만들기 위한 프레임워크입니다. · 최소한의 기능만을 탑재하였지만, 개발자들이 거의 모든 웹 개발의

[Node.js]Express 미들웨어 모듈 정리(body-parser, cookie-parser, express-session, cors, morgan, multer) [내부링크]

Express 미들웨어 모듈 - 미들웨어 모듈 - 데이터 파싱 : body-parser 미들웨어 - 데이터 압축 : compression 미들웨어 - 쿠키 관리 : cookie-parser 미들웨어 - 쿠키 세션 : cookie-session 미들웨어 - 세션 관리 : express-session 미들웨어 - CORS 관리 : cors 미들웨어 - 로깅 관리 : morgan 미들웨어 - 파일 업로드 : multer 미들웨어 - 코드 실행 시간 측정 : response-time 미들웨어 - 타임아웃 설정 : connect-timeout 미들웨어 선행해야 할 내용 · express 사용법 총정리 : https://blog.naver.com/hj_kim97/222913693753 미들웨어 모듈 Express는 웹 서버 운영을 위한 다양한 미들웨어 모듈을 제공합니다. 미들웨어 모듈 설명 body-parser HTTP 요청 bot를 파싱합니다. · 내장 함수 : express.bodyPars

[Linux]리눅스 새로운 하드디스크 연결하기(파티션 추가 및 디스크 마운트) [내부링크]

리눅스 새로운 디스크 연결하기 - 개요 - VMWare를 이용하여 가상 디스크 설정하기 - 새로운 하드디스크 연결하기 개요 윈도우에서 하드디스크같은 보조기억장치를 연결할 때 용량에 따라 파티션 및 포맷여부 등을 설정해야 사용할 수 있습니다. 리눅스에서도 마찬가지로 새로운 하드디스크를 추가하기 위해서는 장치에 파일시스템을 설치한 뒤 특정 디렉토리에서 마운트해서 사용해야합니다. 또한 재시작할 때 마다 해당 장치를 자동으로 읽어오기 위해서는 별도의 설정이 필요합니다. · 쉽게, 하드 디스크를 연결 후 OS에서 이것을 인식하고 사용하기 위해서 물리적 공간(하드디스크)과 소프트웨어(OS)를 연결시켜 실제로 컴퓨터에서 사용할 수 있도록 마운트해야합니다. · fdisk: 디스크 현황 및 파티션 현황 확인, 디스크의 파티션 관리 · mkfs: 파티션의 파일 시스템 생성 · mount: 파티션을 경로에 연결, ㄹ파티션의 파일 시스템을 확인 · fsck: 파티션의 파일 시스템을 확인 VMWare를 이

[Spring]Spring Redirect 및 Forward 사용법 [내부링크]

Spring Redirect 및 Forward 사용법 - Redirect와 Forward의 차이 - Spring 처리 방식 - Spring Redirect, Forward 예시 - Redirect 시 파라미터 넘기기 Redirect와 Forward의 차이 Redirect Redirect는 서버에 요청이 들어온 후 서버에서 실제로 클라이언트로 HTTP Status Code 302를 전송합니다. 전송된 응답을 클라이언트에서 받아서 302 응답 코드를 확인하고 응답의 Location 헤더에서 URL을 읽어들여 해당 URL로 다시 요청을 보냅니다. · 실제적으로 클라이언트측에서 2번의 요청을 보내게 되고, URL이 변화된 것을 알게 됨 · 클라이언트에서 새로운 Location에 대해 요청을 하기 때문에 Web Container 내부에서 자원을 공유할 수 없습니다. 자원을 공유하기 위해서는 QueryString을 이용하여 사용합니다. Forward Forward는 서버에 요청이 들어온 후 서

[Docker]도커 컴포즈(docker compose)란? (도커 컴포즈 사용법 및 문법 정리) [내부링크]

도커 컴포즈 사용법 및 문법 정리 - 도커 컴포즈(docker compose)란? - 도커 컴포즈 문법 - 도커 컴포즈 명령어(커맨드) - 도커 컴포즈 사용 예시 도커 컴포즈(docker compose)란? Compose란 사전적 의미로 "구성하다"라는 뜻으로, Docker Compose란 여러개의 컨테이너를 모아서 하나의 어플리케이션을 구성하는 것을 말합니다. 만약에 A 컨테이너에 Node.js 앱에서 B 컨테이너에 레디스 서버를 접근한다고 한다면, 서로 다른 컨테이너끼리는 아무 설정 없이는 접근이 불가능합니다. 때문에 멀티 컨테이너 상황에서 쉽게 네트워크를 연결시켜주기 위해 Docker Compose를 이용할 수 있습니다. · 다중 컨테이너 도커 어플리케이션을 정의하고 실행하기 위한 도구 · yaml 파일을 사용하여 어플리케이션의 서비스를 구성 · 도커 컴포즈로 실행된 컨테이너는 기본적으로 같은 네트워크로 실행하기 때문에 따로 설정이 필요없습니다. 단일 컨테이너들을 같은 네트워크

[Docker]복잡한 애플리케이션 환경 구성하기(Node + React + Nginx + DB) [내부링크]

Docker 복잡한 애플리케이션 환경 구성하기 - Back-End 서버 생성하기 - Front-End 서버 생성하기 - Docker 환경 구성하기 · Front-End(React) 도커 환경 구성 · Back-End(Node) 도커 환경 구성 · DB(MySQL) 도커 환경 구성 · Nginx(리버스 프록시 기능)을 위한 도커 환경 구성 · docker-compose 작성 - 운영 환경 구성시 추가 작업 애플리케이션 구조 Back-End 서버 생성하기 1. package.json · 프로젝트에 대한 설명과 의존성 모듈에 대한 정의가 명시된 파일입니다. · express : 웹 애플리케이션을 구축하기 위한 서버 모듈 · mysql : MySQL 커넥션 연결 및 쿼리를 사용하기 위한 모듈 · nodemon : 디렉토리를 감시하여 파일 내용 변경시 서버 재실행없이 변경 내용을 적용해주는 모듈 · body-parser : HTTP 본문(body)의 내용을 쉽게 파싱하여 사용하기 위한 기능을

[DevOps]CI/CD란? [내부링크]

CI/CD란? - CI/CD란? · - CI란? - CI가 적용이 안된다면? - CI가 적용이 된다면? · - CD란? - CD가 적용이 된다면? · - CI/CD의 최종 비즈니스 이점 - CI/CD 툴 종류 CI/CD란? 이미지 출처 - 인코덤(https://incodom.kr) CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법입니다. CI는 지속적인 통합(Continuous Integration), CD는 지속적인 배포(Continuous Deployment) 또는 지속적인 서비스 제공(Continuous Delivery)을 의미합니다. 이미지 출처 - https://techblogpedia.com/ (CI/CD 절차) CI/CD는 애플리케이션 구축, 테스트 및 배포에 자동화를 적용하여 개발 및 운영 활동과 팀 간의 격차를 해소하기 위해 고안된 방법입니다. 개발자가 만든 코드 변경 사항을 컴파일한 다음 이를 소프트웨어 결과물에

[MySQL]MySQL 초기 설정(데이터베이스 생성, 계정 생성, 권한 설정) [내부링크]

MySQL 기초 - 데이터베이스(DataBase) - MySQL 초기 설정 - 데이터 베이스 목록 확인 - 데이터 베이스 생성 - 데이터 베이스 CharSet 설정 데이터베이스(DataBase) 데이터베이스(DB:DataBase)는 통합하여 관리되는 데이터의 집합체를 의미합니다. MySQL에서는 스키마(Schema)와 데이터베이스(DataBase)는 동일한 의미를 갖습니다. ※ 다른 DBMS에서는 스키마와 데이터베이스가 다른 의미로 구별 되기도 합니다. Oracle - 오라클에서 스키마는 사용자(USER)가 생성한 모든 오브젝트(테이블, 인덱스, 프로시저 등)를 의미합니다. - 스키마에 각각의 사용자에게 선택적인 권한을 부여합니다. - 오라클에서 데이터베이스는 실제 물리적인 데이터베이스를 의미합니다. MySQL/MariaDB - 데이터베이스와 스키마가 같은 의미로 테이블 등의 오브젝트 집합입니다. PostgreSQL - 데이터베이스는 스키마의 상위 개념입니다. - 데이터베이스가 다르

[SQL]엑셀(Excel)로 SQL 쿼리 만들기 [내부링크]

엑셀(Excel)로 SQL 쿼리 만들기 - 개요 - 엑셀(Excel)로 SQL 쿼리 만드는 방법 개요 업무를 하다보면 운영팀에서 특정 정보를 일괄 등록에 대한 요청이 옵니다. 이때 엑셀로 등록할 정보를 받게 되는 경우가 많은데, 엑셀 파일로 SQL문을 만들어 해당 쿼리를 이용하여 등록을 진행할 수 있습니다. 아니면, 특정 정보는 조회한 후 DB 툴을 이용하여 조회한 정보를 엑셀로 다운받을 수 있습니다. 이때 다운받은 엑셀로 데이터를 비교하고, 수정이 필요한 값이 있을 경우 엑셀로 SQL 쿼리를 만들어 사용할 수 있습니다. · 대용량 데이터가 아닌, 500개 이하의 데이터에 대한 UPDATE나 INSERT시 유용 · 간단한 쿼리의 테스트 데이터를 여러개 넣을 때에도 유용 엑셀(Excel)로 SQL 쿼리 만드는 방법 좌측에는 조회한 정보가 정렬되어 있고, 정보 우측 셀을 클릭하여 쿼리를 생성합니다. 셀 내용은 ="쿼리문" 으로 시작하여, 셀 위치에 '"&셀 좌표&"'로 특정 셀의 정보를

[Docker]도커 기본 개념 및 사용법 정리 [내부링크]

도커 기본 개념 및 사용법 정리 - 도커 이미지(Docker Image)란? - 이미지와 레이어(Layer) - 도커 컨테이너(Docker Container) - 도커 컨테이너(Docker Container) 작동 원리 - docker run 명령어 사용 흐름 - docker run 명령어 사용 예시 - docker run <이미지> <실행파일> 사용 예시 선행해야 할 내용 서버 가상화 기술 종류 : https://blog.naver.com/hj_kim97/222563588022 도커 설치(Windows) : https://blog.naver.com/hj_kim97/222301189018 도커 이미지(Docker Image)란? 이미지는 도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 Docker Image라고 합니다. 다시 말해, 특정 프로세스를 실행하기 위한 모든 파일과 설정값을 지닌 것으로, 더 이상의 의존성 파일을 컴파

[Oracle/Tibero]INSERT, UPDATE 문법 정리(SELECT INSERT, INSERT ALL, INSERT FIRST, UPDATE JOIN, MERGE) [내부링크]

INSERT, UPDATE 문법 정리 INSERT 문법 정리 · 일반 형식 · 일반 형식 : 컬럼명 생략 · 서브쿼리 INSERT(SELECT INSERT) · INSERT ALL · INSERT FIRST UPDATE 문법 정리 · 일반 형식 · WHERE 절에 EXSISTS 함수 사용 · 조인하여 UPDATE하는 방법(UPDATE JOIN) · MERGE INTO 구문 INSERT 문법 정리 일반 형식 · INTO 절의 컬럼 개수와 데이터 타입이 VALUES 절의 컬럼 개수와 데이터 타입이 동일해야 합니다. INSERT INTO emp ( emp_no, ename, job, mgr, hiredate, sal, dept_no ) VALUES ( 1000, 'SCOTT', 'DEVELOPER', 2000, SYSDATE, 3000, 20 ) 일반 형식 : 컬럼명 생략 · 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있습니다. ※ 테이블에 컬럼에 추가되거나 삭제되었을 경

[jQuery]ajax 사용법 정리 [내부링크]

jQuery ajax 사용법 정리 - AJAX란? - 동기와 비동기 - AJAX의 장단점 - AJAX를 사용하는 방법 - jQuery를 이용한 Ajax AJAX란? AJAX란 비동기 자바스크립트와 XML (Asynchronous JavaScript And XML)을 말합니다. 간단히 말하면, 서버와 통신하기 위해 XMLHttpRequest 객체를 사용하는 것을 말합니다. JSON, XML, HTML, 일반 텍스트 형식 등을 포함한 다양한 포맷을 주고 받을 수 있습니다. AJAX의 주요 특징으로는 페이지를 새로고침하지 않아도 수행되는 '비동기성' 입니다. 이러한 비동기성을 통해 사용자의 Event가 있으면 전체 페이지가 아닌 일부분만을 업데이트 할 수 있게 합니다. · 자바스크립트를 이용해서 비동기식으로 XML을 이용하여 서버와 통신하는 방식 · 최근에는 XML보다 JSON 형식을 더 많이 사용합니다. 동기와 비동기 동기(Synchronous) 동기는 말 그대로 동시에 일어난다는 뜻으

SQLD 시험 후기 및 공부 방법(노랭이, 하양이, SQL 개발자 과외노트) [내부링크]

SQLD 시험 후기 및 공부 방법 정리 - SQLD 신청 조건 및 접수 방법 -SQLD 시험 과목 및 합격 기준 - 시험 공부 방법 · 1. 문제집 선택 · 2. 문제집 및 공부 방법 정리 - 시험 후기 및 결과 SQLD 신청 조건 및 접수 방법 SQLD는 응시자격이 따로 존재하지 않습니다. 아래 데이터 자격 검정 사이트에서 SQLD 시험 접수가 가능합니다. · 시험 일정 : 1년에 총 4번 · 시험 응시료 : 50,000원 · 공식 사이트 : https://www.dataq.or.kr/www/main.do 데이터자격시험 연간일정 자격소개 시험접수 시험결과조회 자격증발급 민원접수 공지사항 더보기 · 제26회 데이터분석 전문가(ADP) 실기시험 응시안내 · 신분증 인정범위(모바일 신분증 포함) · 사전점수 공개 및 재검토 신청 안내 · 데이터자격검정 응시자 유의사항(2022.09) · 코로나19 관련 자격검정 수수료 환불신청 안내 · 제46회 SQL 개발자 인천(옥련중학교) 고사장 변

[Docker]Node.js 프로젝트를 도커로 생성하기 [내부링크]

Node.js 프로젝트를 도커로 생성하기 - Node.js 프로젝트를 도커로 생성하기 · 1. Node.js 설치하기 · 2. Node.js 프로젝트 생성하기 · 3. Node.js 프로젝트 웹 서버 구성하기 (express 모듈) · 4. Dockerfile 작성하기 · 5. dockerfile 빌드 및 실행 - 프로젝트 재빌드 - 프로젝트 재빌드 개선 - docker run VOLUME 옵션 사용 선행해야 할 내용 도커 기본 개념 및 사용법 정리 : https://blog.naver.com/hj_kim97/222870522243 Dockerfile이란? : https://blog.naver.com/hj_kim97/222316420960 Node.js 프로젝트를 도커로 생성하기 1. Node.js 설치하기 먼저 Node.js 프로젝트를 생성하기 위해서는 컴퓨터에 node.js가 설치되어야 합니다. · Node.js 다운로드 : https://nodejs.org/ko/download

[FileZilla]Error: open for write: permission denied 에러 [내부링크]

에러 내용 Error: 파일명: open for write: permission denied Error: File transfer failed all transfers have finished. files could not translate. 발생 원인 FTP를 이용해 서버에 파일을 옮길 때, 해당 디렉토리에 파일에 대한 쓰기 권한이 없는 경우 발생 · 디렉토리안에 파일을 옮길 수 있는 권한이 없음 해결 방안 해당 디렉토리에 권한을 추가 · root 계정 혹은 해당 홈 디렉토리의 유저 계정으로 진행 ※ FileZilla로 로그인한 계정으로 업로드한 파일의 권한이 적용되니, 권한 변경이 필요하다면 chown <계정>:<그룹> [업로드한파일명] 명령어로 권한을 변경합니다. # 해당 디렉토리의 권한만 변경시 → chmod 777 /var/www/html # 해당 디렉토리와 하위 모든 파일의 권한 변경시 → chmod -R 777 /var/www/html 출처 티스토리 블로그(threeid

보이스피싱 대처 방법 [내부링크]

최근 부모님께서 보이스 피싱을 당하셨습니다. 피해 금액이 엄청나게 크지 않아서 다행이었지만, 휴대폰 원격 허용과 개인정보가 모두 노출되어 처리해야 할 것이 많았습니다. 보이스 피싱을 처음 당했다보니 대처하는 것에도 번거로움이 많아 대처에 대해서 글을 정리하게 되었습니다. 보이스 피싱을 당하고 나서 관련 글을 찾아보니 주말에 처리할 수 있는 일이 적다보니 금요일에 많이 보이스 피싱을 한다고 합니다. 때문에 실시간으로 대처할 수 있는 일과 영업일(평일)에만 대처할 수 있는 일을 정리하려고 합니다. 먼저 시간에 관계없이 보이스피싱 피해 신고와 계좌 지급정지 신청이 가능하고, 개인정보노출 등록 신청을 통해 대리명의로 계좌 개설 및 카드 발급 등을 막을 수 있습니다. 하지만, 늦게 등록 신청되어 이미 휴대폰 개통 혹은 계좌가 발급되었다면 취소되지는 않는 것 같습니다. 또 118에 연락하여 공동인증서 폐기를 할 수 있다고 하는데, 어카운트 인포를 통해 통합계좌조회(계좌, 카드, 대출 정보) 등

[C++]C++ 기초문법 정리(선행처리, 입출력 스트림, 명칭공간, 자료형, 조건문, 반복문, 포인터, 참조, 함수, 값 호출, 참조 호출) [내부링크]

C++ 기초문법 정리 - C++ 언어의 소개 - C++ 언어의 표준 - C++ 프로그램의 작성 및 빌드 - C++ 언어의 기초 · 주석 · 선행처리 · 입출력 스트림(cout, cin) · 명칭공간 · 키워드 · 식별자 · C++ 자료형 · 상수의 표현 · const와 constexpr · 흐름제어 구조(조건문, 반복문) · 구조체 · 배열 · 포인터와 동적 메모리 할당 · 참조 · 함수 · 인수의 전달(값 호출, 참조 호출, 디폴트 인수, 함수 다중정의) C++ 언어의 소개 C++ 언어는 C 언어의 문법적 토대 위에 객체지향 프로그래밍을 비롯한 진보된 프로그래밍 기법을 지원할 수 있도록 만들어진 언어입니다. 따라서 C언어가 가지고 있는 모든 기능이 C++ 안에 포함되어 있으며, 이와 더불어 몇가지 새로운 내용이 C++에 추가되었습니다. · 1979년 Bell 연구소의 Bjarne Stroustrup이 C 언어를 확장하여 만든 프로그래밍 언어 · C언어는 절차적 프로그래밍 언어이지만

[C++]C++ 기초 문법 정리(클래스) [내부링크]

C++ 기초 문법 정리 - 객체(Object)란? - 클래스(Class)란? - 클래스 기본 특징 - 객체의 정의 및 사용 - 생성자 - 소멸자 - 디폴트 생성자 - 객체 배열의 선언 - 복사 생성자 - rvalue 참조 - 이동 생성자 - static 데이터 멤버와 static 멤버 함수 - 위임 생성자 - 초기화 리스트 생성자 클래스 선언과 객체 정의 객체(Object)란? 객체란 소프트웨어 시스템 안의 어떠한 대상을 표현한 것으로 상태(state)와 행동(behavior)으로 구성됩니다. · 정해진 처리를 수행할 수 있습니다. (행위, 메소드, 멤버함수) · 처리 과정에 따라 내부 상태가 변화할 수 있습니다. (속성, 데이터 멤버) · 다른 객체와 상호작용 할 수 있습니다. (메시지 전달, 멤버함수 호출) 클래스(Class)란? 클래스란 객체를 만들어내기 위해 정의된 설계도(틀)로 객체가 포함할 데이터 멤버와 멤버함수의 정의를 포함합니다. · 추상 자료형을 표현하기 위해 사용되

[Oracle/Tibero]Oracle PL/SQL 문법 정리(선언부, 실행부, 예외처리부, 프로시저, Procedure, 함수, Function) [내부링크]

Oracle PL/SQL 문법 정리 - PL/SQL이란? - PL/SQL의 기본 구조(선언부, 실행부, 예외처리부) - 프로시저(Procedure) - 함수(Function) PL/SQL이란? PL/SQL은 Oracle's Procedural Language extension to SQL의 약자로 SQL의 확장된 개념으로 ORACLE에서 제공하는 프로그래밍 언어의 특성을 수용한 SQL 확장 문법입니다. PL/SQL Block 내에서 SQL의 DML(데이터 조작어)문과 Query(검색어)문, 절차형 언어(if, loop) 등을 사용하여 절차적 프로그래밍을 가능하게 한 강력한 트랜잭션 언어입니다. * PL/SQL의 종류 * 1. 익명 Procedure -> 이름없이 사용되는 PL/SQL 블록 -> DB에 저장되지 않고 사용자가 필요할 때마다 반복적으로 작성, 실행 2. Stored Procedure -> 생성 이후 DB에 정보가 저장됨 -> 실행하려는 로직을 처리하고 PL/SQL 블록의

[Oracle/Tibero]그룹 함수 및 윈도우 함수 정리 [내부링크]

그룹 함수 및 윈도우 함수 정리 - 그룹 함수란? · 집계 함수 : COUNT, SUM, AVG, MAX, MIN · 소계(총계) 함수 : ROLLUP, CUBE, GROUPING SETS - 윈도우 함수란? · 순위 함수 : RANK, DENSE_RANK, ROW_NUMBER · 집계 함수 : COUNT, SUM, AVG, MAX, MIN · 행 순서 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD · 비율 함수 : RATIO_TO_REPORT, PERCENT_RANK, CUME_DIST, NTILE 선행해야 할 내용 - 데이터 조작어(DML) : https://blog.naver.com/hj_kim97/222827309207 그룹 함수란? 데이터를 GROUP BY 하여 나타낼 수 있는 데이터를 구하는 함수입니다. 역할에 따라 집계 함수와 소계(총계) 함수로 나눌 수 있습니다. · 집계 함수 : COUNT, SUM, AVG, MAX, MIX 등 · 소계(총계

[Spring JPA]Entity Listener(엔티티 이벤트 리스너, @EnableJpaAuditing, @MappedSuperclass) [내부링크]

Entity Listener(엔티티 이벤트 리스너) - Entity Listener란? - Entity Listener 예제 코드 - EntityListeners 어노테이션 - EntityListener를 이용하여 History 테이블 생성하기 - @EnableJpaAuditing 어노테이션 - @MappedSuperclass 어노테이션 Entity Listener란? Entity Listener는 엔티티의 변화를 감지하고 테이블의 데이터를 조작하는 일을 합니다. JPA에서는 7가지 Event를 제공합니다. · 공식 문서 : https://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/listeners.html · JPA Entity에 이벤트가 발생할 때 콜백처리를 할 수 있도록 지원해주는 서비스 어노테이션 기능 @PrePersist persists 메소드가 호출되기 전에 실행되는 메소드 · INSERT 쿼리전에 호

2022 한강나이트워크 22K 후기 [내부링크]

2022 한강나이트워크 22K 후기 - 한강나이트워크 신청 및 시작 - 한강나이트워크 기념품 - 한강나이트워크 대회 방식 - 한강나이트워크 22K 후기 한강나이트워크 신청 및 시작 공식 사이트 : https://urbansports.kr/ 인스타 : https://www.instagram.com/urbansports.kr/ 늘 혼자 마라톤 신청해서 완주했었는데, 이번에는 작년 한강나이트워크때 알게된 친구들과 함께 참가하게 되었습니다. 작년 2021년 한강나이트워크 완주하기 직전에 우연히 알게 되었는데, 나이도 동갑이었던 터라 인연이되어 일년후인 2022년 한강나이트워크를 같이 참가하게 되었습니다. 대회는 2022/07/30일 토요일에 시작하고, 티켓 신청은 2022/05/27일 금요일로 2달전에 신청을 받았습니다. 티켓 공지에 대한 내용은 작년에는 홈페이지에서 확인할 수 있었으나, 이번에는 홈페이지가 이전되었고, 신청할 당시 초기에 관리가 잘 안되었던 것 같아 인스타로 일정을 확인할

[Spring]Spring Validation(데이터 유효성 검증) [내부링크]

Spring Validation(데이터 유효성 검증) - Spring Validation - Spring Validation 어노테이션 - Spring Validation 사용하기 - Valid 결과 제어하기(BindingResult) - AssertTrue/False 어노테이션 사용방법 - Custom Validate 어노테이션 만들기 Spring Validation 올바르지 않은 데이터를 걸러내고 보안을 유지하기 위해 데이터 검증(Validation)은 여러 계층에 걸쳐서 적용됩니다. Client의 데이터는 조작이 쉬울 뿐더러 모든 데이터가 정상적인 방식으로 들어오는 것이 아니기 때문에, Client Side 뿐만 아니라 Server Side에서도 데이터 유효성을 검사해야 할 필요가 있습니다. 스프링부트에서는 @Validated를 이용해 유용성을 검증할 수 있습니다. Spring Validation 어노테이션 어노테이션 설명 @Size(min=값, max=값) 문자 길이 제한 @

[통합 인증]SSO(Single Sign-On, SAML, OAuth) [내부링크]

SSO(Single Sign-On, SAML, OAuth) - SSO란 무엇인가? - SSO의 등장 배경과 주요 기능 및 특징 - SSO 구축 유형(Delegation, Propagation) - SSO 인증 흐름 및 토큰 유효성 검사 방법 - SSO 주요 보안 요구 사항 - SSO 구현 방식(SAML, OAuth, OIDC) SSO란 무엇인가? SSO는 Single Sign-On의 약자로 하나의 로그인 인증 정보를 사용해 여러 애플리케이션에 접근할 수 있는 중앙화된 세션 및 사용자 인증 서비스입니다. 지정된 플랫폼 하나에서 인증되면 이후 매번 로그인과 로그아웃을 반복할 필요없이 다양한 서비스를 사용할 수 있습니다. · 한 번의 인증만으로 모든 서비스를 사용 가능케 해주는 유용한 통합인증 기능 SSO의 등장 배경과 주요 기능 및 특징 최근 회사들이 그룹화 되거나 대형화가 되어서 여러 사이트들을 통합 관리하는 경우 SSO를 사용합니다. 이때, 통합 인증 SSO를 사용하게 되면, 관리자

[Oracle/Tibero]데이터 제어어(DCL, Data Control Language) [내부링크]

데이터 제어어(DCL) - 데이터 제어어(DCL, Data Control Language) - GRANT / REVOKE 명령어 - COMMIT 명령어 - ROLLBACK 명령어 - SAVEPOINT 명령어 데이터 제어어(DCL, Data Control Language) DCL은 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는 데 사용하는 언어입니다. · 데이터베이스 관리자(DBA)가 데이터 관리 목적으로 사용 명령어 기능 COMMIT 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알림 ROLLBACK 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구 GRANT 데이터베이스 사용자에게 사용 권한을 부여 REVOKE 데이터베이스 사용자의 사용 권한을 취소 GRANT / REVOKE 명령어 데이터베이스 관리자가 데이터베이스 사용자에게 권한을 부여하거나 취소하기 위한 명령어입니다. · G

[Oracle/Tibero]데이터 조작어(DML, Data Manipulation Language) [내부링크]

데이터 조작어(DCL) - 데이터 조작어(DML, Data Manipulation Language) - 삽입문(INSERT) - 삭제문(DELETE) - 갱신문(UPDATE) - 검색문(SELECT) · WHERE 절 조건 연산[비교, 논리, LIKE, 특수 연산자] · 그룹 지정 및 그룹 함수[GROUP BY, SUM, AVG, ..] · WINDOW 함수[ROW_NUMBER(), RANK()] · 집합 연산자[UNION, UNION ALL, INTERSEPT, EXCEPT] · JOIN · INNER JOIN[INNER JOIN, NATURAL JOIN, JOIN USING] · OUTER JOIN[LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN] · SELF JOIN(셀프 조인) · CROSS JOIN(교차 조인) 데이터 조작어(DML, Data Manipulation Language) DML은 데이터베이스 사용자가 저장된 데이터를 실질적으로 관리하는데 사

정보처리산업기사 시험 후기(신청 방법, 시험 과목, 합격 기준, 필기, 실기 시험후기) [내부링크]

정보처리산업기사 시험 후기(신청 방법, 시험 과목, 필기, 실기 시험후기) - 정보처리산업기사 신청 조건 - 정보처리산업기사 시험일정 및 응시료 - 정보처리산업기사 시험과목 및 합격 기준 - 정보처리산업기사 필기 시험 후기 - 정보처리산업기사 실기 시험 후기 - 정보처리산업기사 결론 정보처리산업기사 신청 조건 1. 관련학과 2년제 전문대졸 또는 졸업예정 (2년이상) 2. 동일, 유사 분야의 실무경력 2년 이상 3. 기능사 + 실무경력 1년 3. 학점은행제 41학점 이수자 정보처리산업기사 시험일정 및 응시료 국가 기술 자격증 시험으로 1년에 총 3회 응시 가능 · 필기시험 응시료 : 19,400 원 · 실기시험 응시료 : 20,800 원 · 보통 필기 시험의 경우 3, 5, 8월에 진행 · 처음 원서 접수할 때 응시자격서류 제출을 해야하는데, [큐넷 홈페이지 > 로그인 > 마이페이지 > 응시자격 > 응시자격서류 온라인 제출] 페이지에서 학력 증명서를 제출 후 제출한 서류로 계속하여 접

[MySQL]MySQL 다운로드 및 설치(MySQL Server, 환경 변수 등록) [내부링크]

MySQL 다운로드 및 설치(MySQL Server, 환경 변수 등록) - MySQL 다운로드 - MySQL 설치하기 - MySQL 실행하기 - Mysql 환경 변수 설정하기 MySQL 다운로드 1. MySQL 다운로드 페이지 이동 · MySQL 공식 사이트 : https://www.mysql.com/ · MySQL 다운로드 페이지 : https://dev.mysql.com/downloads/mysql/ · MySQL 사이트 접속 > 하단에 DOWNLOADS 메뉴 > MySQL Community Server 클릭 > Go to Download Package 클릭 > 다운로드 진행 2. Download 클릭 · MySQL 다운로드 페이지 : https://dev.mysql.com/downloads/windows/installer/8.0.html · 2022년 7월기준 MySQL 8.0.30 버전 · 5.5M 파일 : 인터넷을 통해 필요한 소프트웨어를 받을 수 있는 프로그램 · 448.

[Spring JPA]JPA 어노테이션 정리(@Entity, @Table, @Id, @Column, , @Enumerated, ..,하이버 네이트 초기화 전략) [내부링크]

JPA 어노테이션 정리 - JPA 어노테이션 - JPA 어노테이션 예시 - 기본키 SEQUENCE 전략 예시 - 기본키 TABLE 전략 예시 - @Access 어노테이션 예시 - 하이버네이트 초기화 전략 JPA 어노테이션 · 객체와 테이블 매핑 : @Entity, @Table · 기본키 매핑 : @Id, @GeneratedValue, @SequenceGenerator, @TableGenerator · 필드와 컬럼 매핑 : @Column, @Enumerated, @Temporal, @Lob, @Transient · 연관 관계 매핑 : @OneToOne, @OneToMany, @ManyToOne, @ManyToMany, @Joincolumn 어노테이션 적용 위치 기능 @Entity 클래스 해당 클래스를 테이블과 매핑한다고 JPA에게 알려줍니다. @Entity가 사용된 클래스를 엔티티 클래스라고 합니다. @Table 클래스 엔티티 클래스에 매핑할 테이블 정보를 지정합니다. @Table 어

[CentOS]CentOS7 Nginx 설치 및 실행 방법 [내부링크]

CentOS7 Nginx 설치 1. yum 외부 저장소 추가 2. Nginx 라이브러리 설치 3. 방화벽 포트 개방 4. Nginx 포트 설정 5. Nginx 데몬 실행 6. 실행화면 1. yum 외부 저장소 추가 yum 저장소에는 nginx가 없기 때문에 외부 저장소를 추가합니다. 1. vi 편집기를 통해 ningx.repo 파일 생성 → vi /etc/yum.repos.d/nginx.repo 2. nginx.repo 내용 작성 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 2. Nginx 라이브러리 설치 저장소를 추가하였다면 설치를 진행합니다. → yum install -y nginx 3. 방화벽 포트 개방 웹 서버의 8080 포트를 사용할 계획이라면, 8080 포트를 개방합니다. · 기본 설치시 방화벽 설정이 안되어있어 따로 해당 작업을 하지 않아도

[네트워크/통신]HTTPS란 무엇인가? (HTTPS, SSL, TLS, SSL 개념 및 동장방식, SSL 핸드셰이크) [내부링크]

HTTPS란 무엇인가? - HTTPS란? - SSL이란? - TLS란? - SSL 동작 방식 - SSL 핸드셰이크 HTTPS란? HTTP란 HyperText Transfer Protocol의 약자로 하이퍼텍스트(HyperText)를 전송(Transfer)하기 위해 사용되는 통신 규약(Protocol)입니다. 즉, 인터넷에서 HTML과 같은 문서를 사용자 컴퓨터에 설치된 웹 브라우저가 웹 서버에 요청할 때의 규칙이라고 할 수 있습니다. HTTPS란 HTTP에 S(Secure Socket)가 추가된 하이퍼텍스트 전송 프로토콜 보안을 나타냅니다. 쉽게, HTTPS의 기본 골격이나 사용 목적 등은 HTTP와 거의 동일하지만, 데이터를 주고 받는 과정에 '보안' 요소가 추가되었다는 것이 가장 큰 차이점입니다. 쉽게, HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화됩니다. http 는 브라우저와 웹 서버 간에 하이퍼텍스트 형식으로 데이터를 전송하는 반면 https는 암호

[Web Server]Nginx SSL 인증서 적용하기(HTTPS 적용) [내부링크]

Nginx SSL 인증서 적용하기 - CSR(인증서 서명 요청) - HTTPS 키 발급받기(SSL 인증서) - 도메인, SSL 인증서 무료 발급받기 - SSL 인증서 적용하기 · SSL 인증서 파일 병합하기 · SSL 인증서 파일 병합시 주의점 · Nginx에 HTTPS 적용하기 · Nginx 개인키 적용시 주의점 - Nginx 서버 재실행 선행해야 할 내용 SSL 개념 및 동작방식 : https://blog.naver.com/hj_kim97/222806086679 SSL 인증서 CSR 생성 : https://blog.naver.com/hj_kim97/222806162156 CSR(인증서 서명 요청) 웹사이트에 대한 SSL 인증서를 얻으려면 인증서 서명 요청(CSR)을 생성하여 CA(인증 기관)에 제출해야 합니다. CSR이란 SSL 인증서를 받기 위해 신청자가 CA에 제출한 인코딩된 메시지입니다. 즉, 디지털 인증서를 발급받기 위해 신청자가 CA에 요청하는 것입니다. CSR에는 공개

SSL 인증서(개인키 및 CSR 생성, CA, CSR, SSC, openssl) [내부링크]

SSL 인증서(개인키 및 CSR 생성, CA, SCR, SSC, openssl) - SSL 인증서 - CA(Certicate Authority) - CSR(Certifiacate Signing Request) - SSC(Self Signed Certificate) 선행해야 할 내용 SSL 개념 및 동작방식 : https://blog.naver.com/hj_kim97/222806086679 SSL 인증서 SSL 인증서는 클라이언트와 서버간의 통신을 제 3자가 보증해주는 전자화된 문서입니다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달하게 됩니다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증안 후에 다음 절차를 수행합니다. · 이 인증서를 이용한다면 서로간의 통신 내용을 보호할 수 있고, 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지 판단이 가능합니다. 또 통신 내용의 악의적인 변경을 방지할 수 있습니다. · 클라이언트가 접속한

[Oracle/Tibero]오라클 중복 데이터 제거(ROWID, 중복행삭제) [내부링크]

오라클 중복 데이터 제거 - 오라클 중복 데이터 제거하는 방법 - ROWID란? - 중복 데이터 제거하기 오라클 중복 데이터 제거하는 방법 중복된 데이터를 제거하기 위해 테이블의 PK를 이용합니다. 하지만, 테이블의 PK가 모호하거나 PK가 없는 로그성 테이블일 경우, 특정 행을 구분할 수가 없는데, 이때 오라클 함수 ROWID를 이용하여 구분할 수 있습니다. ROWID란? ROWID PseudoColumn : 테이블의 레코드(행, ROW, RECORD)를 유일하게 구별하는 행의 주소 값으로 테이블에 행이 삽입되면 자동으로 생성된다. 테이블의 행을 액세스하기 위한 가장 빠른 방법으로 사용자 임의로 변경은 불가능 하며 10 bytes로 구성됩니다. ROWID는 의사칼럼으로 DB저장되어 있지는 않지만 SELECT, WHERE절에 사용될 수 있고 INSERT, UPDATE, DELETE등 으로 변경할 수는 없습니다. 유일한 주소값이지만 테이블의 PK(Primary Key) 처럼 사용될 수

[Oracle/Tibero]데이터 정의어(DDL, Data Define Langauge) [내부링크]

데이터 정의어(DDL) - SCHEMA 정의 - DOMAIN 정의 - TABLE 정의 - VIEW 정의 - INDEX 정의 - ALTER 명령어 데이터 정의어(DDL, Data Define Language) DDL은 DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어입니다. 명령어 기능 CREATE SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의 ALTER TABLE에 대한 정의를 변경하는 데 사용 DROP SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제 SCHEMA 정의 스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것으로 데이터 개체, 속성, 관계 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의합니다. # 1. SCHEMA 생성 CREATE SCHEMA 스키마명 AUTHORIZATION 사용자ID; # 2. SCHEMA 삭제 DROP SCHEMA

[Spring JPA]JpaRepository 기본 사용법 [내부링크]

JpaRepository 기본 사용법 - Spring Data JPA - Spring Data JPA 사용하기 - JPA를 사용한 데이터베이스 초기화 - JpaRepository 메소드의 실제 쿼리 확인 · findAll(), findAllById(), · saveAll() · getOne(), findById() · flush(), saveAndFlush() · count(), existsById() · delete, deleteById, deleteAll() · deleteInBatch(), deleteAllInBatch() - 페이징 처리 - QueryByExample 사용법 - update 쿼리 사용법 Spring Data JPA JPA는 인터페이스로서 자바 표준 명세서입니다. 인터페이스인 JPA를 사용하기 위해서는 구현체가 필요한데, 대표적으로 Hibernate, Eclipse Link 등이 있습니다. 하지만 Spring에서는 JPA를 사용할 때 이 구현체들을 직접 다루지

[JavaScript]난수(랜덤 숫자) 및 문자열 생성하기(Math.random(), 36진수) [내부링크]

JavaScript 랜덤 숫자 및 문자열 생성하기 - Math.random() 메소드 - 두 값 사이의 정수 난수 생성하기(범위 지정) - 랜덤 문자열 생성하기 Math.random() 메소드 Math.random() 함수는 0이상 1미만의 구간에서 근사적으로 균일한 부동소수점 의사난수를 반환하며, 이 값은 사용자가 원하는 범위로 변형할 수 있습니다. ※ Math.random()은 암호학적으로 안전한 난수를 제공하지는 않음 ※ Web Crypto API의 window.crypto.getRandomValues() 메소드를 이용하는 것이 안전 // 0 ~ 1 랜덤 숫자 Math.random(); // 0 ~ 9 Math.floor(Math.random() * 10); // 1 ~ 10 Math.floor(Math.random() * 10) + 1; // 0 ~ 99 Math.floor(Math.random() * 100); 두 값 사이의 정수 난수 생성하기(범위 지정) // min <=

[Spring JPA]Spring Data JPA 쿼리 메소드(Query Method) [내부링크]

Spring Data JPA 쿼리 메소드(Query Method) - 쿼리 메소드란? - 쿼리 메소드 필터 조건 · 지원되는 접두어 키워드 · 지원되는 쿼리 조건자 키워드 - 쿼리 메소드 예시 - 테스트 코드 작성 - 쿼리 메소드 정렬 및 페이징 처리 · 페이징과 정렬 사용 예제 · 페이징 실행 코드 · 스프링 MVC에서 JPA 페이징 쿼리 메소드란? 쿼리 메소드란 Repository 인터페이스에 간단한 네이밍 룰을 이용하여 메소드를 작성하면 원하는 쿼리를 실행할 수 있습니다. · 메소드 이름으로 쿼리 생성 · 메소드 이름으로 JPA NamedQuery 호출 · @Query 어노테이션을 사용하여 레포지토리 인터페이스에 쿼리 직접 정의 · 스프링 데이터 JPA가 제공하는 특별한 기능 쿼리 메소드 필터 조건 쿼리 메소드를 사용하기 위해서는 Repository 인터페이스에 네이밍 룰에 해당하는 메소드 명으로 메소드를 생성하는 것만으로 원하는 쿼리를 생성할 수 있습니다. ※ 리턴 타입은 v

[Linux]리눅스 SSH Key 생성하기[비밀번호 없이 SSH 접속하기] [내부링크]

리눅스 SSH Key 생성하기 - SSH Key 만들기 - 퍼미션(Permission) 문제 - SSH 설정 문제 SSH Key 만들기 SSH Key를 통해서 서버에 접속 할 때 Unix 계열(리눅스, 맥)에서는 ssh-keygen이라는 프로그램을 이용하면 됩니다. 윈도우 머신에서는 SSH Client 프로그램이 자체적으로 제공하는 키 생성 프로그램을 이용하면 됩니다. · 공개키 인증으로 SSH 접속시 Password 없이 접속이 가능 · 비밀번호 보다 높은 수준의 보안을 필요로 할 때 사용 · 로그인 없이 자동으로 서버에 접속할 때 사용 1. 키 생성 SSH 키를 저장할 위치를 지정합니다. 엔터를 누르면 기본 경로에 저장됩니다. 기본 경로는 로그인 한 사용자의 홈디렉토리 아래에 .ssh이다. ($HOME/.ssh) SSH Client는 기본적으로 이 디렉토리에 있는 키를 이용해서 인증을 시도합니다. · -t : 어떤 암호화 방식을 사용할 것인지 지정(default: rsa) · 지

[Linux]리눅스 파일 권한 및 소유자 설정(chmod, umask, chown, chgrp, 파일특수권한) [내부링크]

리눅스 파일 권한 및 소유자 설정 - 파일 및 디렉터리 권한 - 허가권(Permission) - chown 명령어(사용자 및 그룹 소유자 변경) - chgrp 명령어(그룹 소유권 변경) - umask 명령어(접근권한 기본값 설정) - chmod 명령어[파일 접근권한 변경) - 파일 특수 권한(SetUID, SetGID, Sticky-Bit) 파일 및 디렉터리 권한 리눅스는 여러 사용자가 들어와 상요하는 멀티유저 시스템입니다. 따라서 여러 사용자가 들어와 사용하다보면, 서버에 올려진 비밀자료 열람과 그것을 변조, 수정, 삭제할 우려가 높아지게 됩니다. 이 문제를 극복하기 위해 리눅스에 권한(Permission) 이라는 기능이 추가되었습니다. 권한(Permission) 기능으로 사용자들은 자신한테 읽기 퍼미션이 부여된 파일만 읽을 수 있고, 쓰기 퍼미션이 부여된 파일만 쓰기와 수정이 가능하며, 실행 퍼미션이 부여된 파일만 실행이 가능하게 됩니다. · 사용자 부류에 따라 읽기/쓰기/실행

[Android Studio]안드로이드 기본 위젯 종류 및 기능(TextView, ImageView, Button, EditText) [내부링크]

안드로이드 위젯 종류 및 기능 - TextView 위젯 - ImageView 위젯 - Button 위젯 - EditText 위젯 - ImageButton 위젯 - CheckBox 위젯 - ToggleButton 위젯 - Switch 위젯 - RadioButton 위젯 TextView 위젯 화면에 문자열(텍스트)을 출력하는 위젯으로, 문자열을 출력하거나 다른 위젯의 제목을 표시할 때 사용됩니다. · TextView의 속성은 Button, EditText 등의 파생 클래스에게도 공통적으로 사용됨 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="문자열" android:textSize="30dp" /> 사용 속성 속성 설명 android:text="문자열" 출력할 문자열을 지정합니다. · strings.xml에 문자열을 정의해놓고 id 속성값을 지정하여 사용할 수 있

[Visual C++]MFC 프로젝트 컨트롤 생성 및 메시지 처리 [내부링크]

MFC 프로젝트 컨트롤 생성 및 메시지 처리 - MFC 컨트롤 클래스 · 버튼 컨트롤 생성 · 리스트 박스 생성 · 진행바 생성 - 메시지 처리 선행해야 할 내용 SDI 기초 사용법 : https://blog.naver.com/hj_kim97/222691801025 MFC 컨트롤 클래스 MFC에서는 버튼이나 콤보 박스, 리스트 박스와 에디터 박스 등의 컨트롤들도 MFC 클래스로 구성되어 있어 객체 생성 후 사용하면 쉽게 사용할 수 있습니다. · 버튼(CButton), 리스트 박스(CListBox), 진행바(CProgressCtrl), 콤보 박스(CComboBox), 에디터(CEdit), .. 등 컨트롤 Create() 함수 형식 CButton BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); CListBox BOOL Create( DWORD dwStyle, con

[Visual C++]MFC 프로젝트 메모장 프로그램 만들기(MDI 방식) [내부링크]

MFC 프로젝트 메모장 프로그램 만들기(MDI 방식) - MDI 프로젝트란? - MDI 프로젝트 생성 - 메시지 처리기 추가 - 메모장 기능 코드 작성 선행해야 할 내용 컨트롤 생성 및 메시지 처리 : https://blog.naver.com/hj_kim97/222692790669 SDI 기초 사용법 : https://blog.naver.com/hj_kim97/222691801025 MDI 프로젝트란? SDI 으용 프로그램은 한 번에 하나의 Document만을 편집할 수 있는 것에 반해 동시에 여러 개의 Document를 열어 놓고 편집할 수 있도록 하는 기능을 제공해 주는 응용 프로그램의 인터페이스를 MDI(Multiple Document Interface).라고 합니다. MDI 응용 프로그램은 한 종류의 Document의 객체를 여러 개 생성하고 여러 개의 View 윈도우를 통해서 각각의 Document 데이터를 편집할 수 있게 해주는 것이 일반적인데, 각기 다른 종류의 Docu

[MyBatis]org.apache.ibatis.binding.BindingException: Parameter '파라미터명' not found. 에러 [내부링크]

에러 내용 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '파라미터명' not found. Available parameters are [arg1, arg0, param1, param2] .. Caused by: org.apache.ibatis.binding.BindingException: Parameter '파라미터명' not found. Available parameters are [arg1, arg0, param1, param2] .. 발생 원인 MyBatis를 이용한 SQL Mapper의 메소드는 하나의 파라미터만을 읽음. 즉, 파라미터의 개수가 2개 이상일 때 발생 발생 예시 - 하나의 파라미터만 읽기 때문에 2개 이상에 파라미터를 주는 경우 해당데이터가 어떤 것인지를 명시하지 않으면 에러 발생 // Mapper

[Oracle/Tibero]오라클 날짜 검색(Date 타입 컬럼 조회) [내부링크]

1. Date 자료형을 문자열로 변경 후 조회 ※ 비교의 대상이 되는 컬럼을 가공하는 경우 인덱스를 타지 않으니 주의(좌변을 가공 X) -- YYYYMMDD 형식 SELECT * FROM 테이블명 WHERE TO_CHAR(MY_DATE, 'YYYYMMDD') = '20220614'; -- YYYY-MM-DD 형식 SELECT * FROM 테이블명 WHERE TO_CHAR(MY_DATE, 'YYYY-MM-DD') = '2022-06-14'; 2. 문자열을 Date형으로 변경 후 조회 ※ TO_DATE를 이용하여 Date 형의 값을 만들경우 시, 분, 초는 00으로 만들어짐 ※ 때문에 해당 Date 자료인 해당 날짜 조회시 범위를 이용하여 조회 -- 2022-06-14 00:00:00 SELECT TO_CHAR(TO_DATE('2022-06-14'), 'YYYY-MM-DD HH24:MI:SS') FROM DUAL; -- 2022-06-14 23:59:59 SELECT TO_CHAR(TO

[Spring JPA]JdbcSQLSyntaxErrorException: Syntax error in SQL statement ... expected "identifier" 에러 [내부링크]

에러 내용 Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "..." expected "identifier"; 발생 원인 테이블 이름을 SQL에 존재하는 키워드 혹은 예약어를 테이블 이름으로 사용할 때 발생합니다. - SQL의 키워드를 테이블명으로 사용 불가 - ex) GROUP, ORDER 발생 예시 // domain @Entity public class Group { .. } // crud @Test void crud() { repository.save(new Group()); } 해결 방안 @Table(name = "이름") 어노테이션 이용 @Entity @Table(name = "GROUP_TBL") public class Group { .. } 출처 POP it, https://www.popit.kr/가짜뉴스아웃-하이버네이트-데이터베이스-스키마/, 2019/08/30 Fwant

[Spring]Spring Filter(필터) 개념 및 사용법(web.xml, @WebFilter, 스프링 빈, 로깅, 로그인 인증) [내부링크]

Spring Filter 개념 및 사용법 - 필터(Filter)란? - 필터(Filter) 인터페이스 · init 메소드 · doFilter 메소드 · destory 메소드 - 필터(Filter) 사용법 · web.xml을 이용한 방법 · @WebFilter 어노테이션을 이용한 방법 · Spring 어노테이션을 이용한 방법 - 필터(Filter) 응용 예시 · Request Body 내용 읽기(로깅) · 로그인 인증 체크 필터(Filter)란? 필터(Filter)는 J2EE 표준 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 URL 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공합니다. 클라이언트로부터 오는 요청(reuqest)과 최종 자원(Servlet/Jsp/기타 문서) 사이에 위치하며 클라이언트의 요청 정보를 알맞게 변경할 수 있으며, 또한 필터는 최종 자원과 클라이언트로 가는 응답(response) 사이에 위

[Spring]Spring Interceptor(인터셉터) 개념 및 사용법 [내부링크]

Spring Interceptor 개념 및 사용법 - 인터셉터(Interceptor)란? - HandlerInterceptor 인터페이스 · preHandle 메소드 · postHandle 메소드 · afterCompletion 메소드 - 인터셉터(Interceptor) 사용법 · *.context.xml 파일을 이용한 방법 · 스프링 어노테이션을 이용한 방법 - 인터셉터(Interceptor) 응용 예제 · 동작 시간 로깅하기 · 로그인 인증하기 인터셉터(Interceptor)란? 인터셉터(Interceptor)는 J2EE 표준 스팩인 필터(Filter)와 달리 스프링이 제공하는 기술로서, 디스패처 서블릿이 컨트롤러 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공합니다. · 필터(Filter)는 웹 컨테이너에서 동작 · 인터셉터(Interceptor)는 스프링 컨텍스트에서 동작 출처 - https://sallykim5087.tistory.com/158 Ha

[Spring]Spring 트랜잭션(Transaction) 설정 및 개념 [내부링크]

Spring 트랜잭션(Transaction) 설정 및 개념 트랜잭션(Transaction)이란? 트랜잭션(Transaction)의 성질 · Atomicity(원자성) · Consistency(일관성) · Isolation(독립성, 격리성) · Durablility(영속성, 지속성) JDBC를 이용한 트랜잭션 Spring이 제공하는 트랜잭션 핵심 기술 · 트랜잭션(Transaction) 동기화 · 트랜잭션(Transaction) 추상화 · AOP를 이용한 트랜잭션(Transaction) 분리 Spring 트랜잭션 설정 및 사용법 · AOP : <tx:advice> 태그를 이용한 방법 · Annotation : @Transactional 어노테이션을 이용한 방법 · AOP : JavaConfig를 이용한 방법 · JavaConfig : @Transactional 어노테이션을 이용한 방법 Spring 트랜잭션 관련 설정 속성 · 트랜잭션 격리 수준 : isolation 속성 ·

[Java]Java AES 암호화 하기(AES-128, AES-192, AES-256) [내부링크]

Java AES 암호화(AES-128, AES-192, AES-256) 대칭키 암호란? AES 암호화란? 블록 암호 운용 방식 · 전자 코드 북(ECB, Electronic Code Book) 모드 · 암호 블록 연결(CBC, Cipher Block Chaining) 모드 · 암호 피드백(CFB, Cipher FeedBack) 모드 · 출력 피드백(OFB, Output FeedBack) 모드 · 카운터(CTR, CounTeR) 모드 패딩 기법 · PKCS5 · PKCS7 Java AES 암복호화 사용법 · AES 암호화에 필요한 자바 클래스 · AES ECB 모드 사용 예시 · AES CBC 모드 사용 예시 대칭키 암호란? 암호화와 복호화에 하나의 같은 비밀키를 사용하는 암호 방식으로 쉽게 말해, 하나의 키로 암복호화 모두 수행합니다. 암호화와 복호화에 쓰이는 키 크기가 상대적으로 작고 암호 알고리즘 내부 구조가 단순하여, 시스템 개발 환경에 용이하고, 비대칭키에 비해 암호

[Java]Java RSA 키 생성 및 암복호화 하기(공개키, 개인키) [내부링크]

Java RSA 암호화 하기(공개키, 개인키) 공개키 암호란? RSA 암호화란? Java RSA 암복호화 사용법 · RSA 암호화에 필요한 자바 클래스 · RSA 키 생성 및 암복호화 예시 공개키 암호란? 공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 탄생했습다. 공개키와 개인키라는 한 쌍의 키가 존재하며, 개인키는 특정 사람만이 가지고 있고, 공개키는 누구나 가질 수 있습니다. 공개키 암호화 방식은 암호학적으로 연관된 두 개의 키를 만들어서 하나는 자기가 안전하게 보관하고 다른 하나는 상대방에게 공개합니다. 개인키로 암호화 한 정보는 그 쌍이 되는 공개키로만 복호화가 가능하고, 공개키로 암호화한 정보는 그 쌍이 되는 개인키로만 복호화가 가능합니다. · 공개키 : 모든 사람이 접근 가능한 키(공개) · 개인키 : 각 사용자 자신만이 소유하는 키(비공개) · RSA, ElGamal, ECC, 전자서명, .. 등 RSA 암호화란? RSA 암호화는 현재 SSL/T

[Java]Java MD5, SHA256 암호화 하기(MessageDigest, 단방향 암호화) [내부링크]

Java MD5, SHA256 암호화 하기 단방향 암호화란? MD5(Message-Digest algorithm 5) SHA(Secure Hash Algorithm) Java MD5, SHA 암호화 사용법 · MD5, SHA 암호화에 필요한 자바 클래스 · Java MD5, SHA 암호화 사용 예시 단방향 암호화란? 단방향 암호화(One-Way Encryption)란 한쪽 방향으로만 암호화를 한다는 의미로, 평문을 암호문으로 바꾸는 암호화는 가능하지만, 암호문을 평문으로 바꾸는 복호화는 불가능합니다. 즉, 암호화만 가능하기 때문에 단방향 암호화라고 합니다. · 주로 암호화 해시 함수를 이용한 Hash 암호화 방식을 사용 · 데이터의 진위 여부는 확인하고 싶으나, 본 데이터의 Privacy를 지키고 싶은 경우 사용(ex. 비밀번호, 주민번호) · hash할 때, hash 값은 크기와 알고리즘에 따라 암호문의 결과라 완전 상이함 · 대표적으로 MD5와 SHA 해시 알고리즘이 있음

[Android Studio]안드로이드 액티비티와 뷰, 뷰그룹, 위젯 / Activity and View, View Group, Widget [내부링크]

액티비티와 뷰, 뷰그룹, 위젯 - 액티비티와 View 개요 - 액티비티(Activity)란? - 뷰(View) - 뷰 그룹(View Group) - 위젯(Widget) - 정리 액티비티와 View 개요 안드로이드 애플리케이션 개발을 처음 시작하게 되면, 용어에 대한 정의에서 굉장히 헷갈리는 부분이 있습니다. 그 중 가장 처음으로 액티비티와 View 그리고 View Group, Widget 등이 나오는데, 안드로이드에서 위젯은 원래 알고 있던 위젯과 다르게 사용되고 있고, 또 액티비티는 앱의 화면을 구성하는 단위로 뷰의 개념과 헷갈리게 설명되어 이해하기가 힘듭니다. 이 포스트에서는 액티비티, 뷰, 뷰 그룹, 위젯이 무엇인지 간단하게 설명하고자 합니다. 액티비티(Activity)란? 액티비티는 사용자에게 UI가 있는 화면을 제공하는 앱 컴포넌트로 애플리케이션 구성요소로서, 일을 하기 위해 상호작용할 수 있는 화면을 제공하고 액티비티마다 창이 하나씩 주어져 이곳에 사용자 인터페이스를 끌어

[Android Studio]안드로이드 View의 속성 / id, clickable, longClickable, background, padding, layout_margin [내부링크]

View의 속성 - id 속성 : 고유 식별자 - layout_width/layout_height 속성 : 뷰의 크기 - clickable/longClickable 속성 : 클릭 이벤트 여부 - background 속성 : 배경 지정 - padding 속성 : 안쪽 여백 - layouy_margin 속성 : 바깥쪽 여백 - visibility 속성 : 화면 노출 여부 - focusable 속성 : 키보드 포커스 허용 여부 View의 속성 id 속성 : 고유 식별자 xml에서 작성한 뷰들을 조작하기 위해서는 각 뷰들은 고유의 식별자(id)를 가지고 있어야 합니다. 해당 뷰를 유일하게 식별하기 위한 값으로, xml안에 해당 id값을 문자열로 설정하게 되면 어플리케이션이 컴파일될 때 정수로써 레퍼런스 됩니다. · XML 문서에 ID를 지정해 놓으면, R.java에 정수 상수로 정의됩니다. · Java 프로그램이나 XML 문서에서 View를 참조할 때 id 속성을 사용하므로 의미를 잘 설명

[컴퓨터 보안]방화벽이란 무엇인가? [내부링크]

방화벽이란 무엇인가? - 침입차단 시스템(방화벽, Firewall) - 방화벽의 구성 방식 · 패킷 필터링(Packet Filtering) · 서킷 게이트웨이(Circuit Gateway) · 애플리케이션 게이트웨이(Application Gateway) · 하이브리드(Hybrid) 방식 - 방화벽의 구축 형태 · 스크리닝 라우터(Screening Router) · 단일 홈 게이트웨이(Single-Homed Gateway) · 듀얼 홈 게이트웨이(Dual-Homed Gateway) · 스크린 호스트 게이트웨이(Screened Host Gateway) · 스크린 서브넷 게이트웨이(Screened Subnet Gateway) - 방화벽 구축시 고려사항 침입차단 시스템(방화벽, Firewall) 침입차단 시스템은 방화벽(firewall)이라고도 하는데, 방화벽은 기본적으로 내부 네트워크의 컴퓨터들을 외부로부터 보호하기 위한 보안정책과 이를 수행하는 하드웨어 및 소프트웨어 등 침입차단을 위한

[Visual C++]MFC 프로젝트 생성 및 SDI 기초 사용법 [내부링크]

MFC 프로젝트 생성 및 SDI 기초 사용법 - MFC란 무엇인가? - MFC 프로젝트 생성하기 - MFC 프로젝트 주요 클래스 · HelloMFC.cpp · MainFrm.cpp - 차일드 윈도우 생성하기 - 차일드 윈도우에 문자열 출력하기 - 차일드 윈도우 추가하기 선행해야 할 내용 - Visual Studio 설치하기 : https://blog.naver.com/hj_kim97/222659253958 - 윈도우 프로그래밍 개요 : https://blog.naver.com/hj_kim97/222659201453 MFC란 무엇인가? Visual C++은 Microsoft 사에서 만든 것으로 마이크로소프튿사에서 제공하는 윈도우 응용 프로그램 개발 키트를 통해서 개발하는 방식으로, C/C++ 언어를 이용하여 응용 프로그램을 쉽게 만들 수 있도록 개발 툴을 붙여놓은 것입니다. MFC는 Microsoft Foundation Class의 약자로 마이크로소프트사에서 만든 클래스라고 할 수 있

[Java]Java Base64 인코딩, 디코딩(encoding/decoding) [내부링크]

Java Base64 인코딩, 디코딩(encoding/decoding) - Base64 인코딩 개요 · 인코딩이란? · 디코딩이란? · Base64 인코딩이란? · Base64 인코딩 과정 - Java Base64 Encode, Decode · Java 8 기본 라이브러리(java.util.Base64) · Apache Commons 라이브러리(org.apache.commons.codec.binary.Base64) · Java 6 기본 라이브러리(javax.xml.bind.DatatypeConverter) Base64 인코딩 개요 인코딩이란? 인코딩(encoding)이란 파일에 저장된 정보의 형태나 형식을 데이터 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태로 변환하는 처리 혹은 그 처리 방식을 말합니다. · 문자나 기호들의 집합을 컴퓨터에 저장하거나 통신에 사용할 목적으로 부호화하는 방법입니다. 디코딩이란? 인코딩의 반대 작업으로 복호화라고 하는데, 부호

[Visual C++]WindowsAPI(WinAPI) 사용법 [내부링크]

WindowsAPI(WinAPI) 사용법 - WinAPI 프로그램 개요 - WinAPI 프로그램 흐름 - WinMain 함수 - WinMain 함수 작성 방법 - 윈도우 클래스(WNDCLASS) - 윈도우 생성 : CreateWindow - 화면에 윈도우 보여주기 : ShowWindow - 이벤트와 메시지 처리 - MSG 구조체 - 윈도우 프로시저 - 차일드 윈도우 - 윈도우 컨트롤 - 메시지 박스 - 버튼으로부터 메시지 받기 - 윈도우 프로그램 예제 WinAPI 프로그램 개요 윈도우 프로그램을 개발하기 위해서는 운영체제가 제공해주는 함수를 통해서 개발하는 방식인 C/C++ 언어로 윈도우 API를 호출해서 프로그램을 구현하는 방식과 Visual C++을 통해서 마이크로소프트사에서 제공하는 윈도우 응용 프로그램 개발 키트를 통해서 개발하는 방식이 있습니다. Windows API는 응용 프로그램을 개발할 때 사용할 수 있게 Windows 운영체제에서 제공하는 라이브러리입니다. 이번 포스

[WAS]Tomcat 기본 가이드 및 폴더 구조 [내부링크]

Tomcat 기본 가이드 및 폴더 구조 - Web Server와 WAS · Web Server · Web Application Server(WAS) - Apache Tomcat · 톰캣(Tomcat)이란? · 톰캣(Tomcat) 설치하기 · 톰캣(Tomcat) 폴더 구조 · 톰캣(Tomcat) 주요 설정 파일 · server.xml 태그 설명 · server.xml 기본 설정(포트 변경, 프로젝트 경로 설정) Web Server와 WAS Web Server 웹 브라우저 클라이언트로부터 HTTP 요청을 받고, 정적인 콘텐츠(html, css, .. 등)를 제공하는 컴퓨터 프로그램 · 정적 콘텐츠를 제공하는 서버 · apache, nginx, gws, .. 등 Web Application Server(WAS) 인터넷 상에서 HTTP 프로토콜을 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 동적 서버 콘텐츠를 수행하는 것으로 웹 서버와 구별되며, 주로 데이터베이

[C언어]C언어 기초 문법 정리[배열, 포인터] [내부링크]

C언어 기초 문법 정리 - 배열(Array) · 배열(Array)이란? · 1차원 배열 · 배열의 초기화 · 다차원 배열 · char형 배열과 문자열 포인터(Pointer) · 포인터(pointer)란? · 포인터 변수의 선언 · 포인터 변수의 참조 · 일반 변수와 포인터 변수의 비교 · void형 포인터 · 포인터 연산 · 포인터와 배열의 관계 · 이중 포인터 배열(Array) 배열(Array)이란? 배열(array)은 같은 타입의 변수들로 이루어진 유한 집합입니다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자는 인덱스(index)라고 합니다. C언어에서 인덱스는 0부터 시작하며, 0을 포함한 양의 정수만을 가질 수 있습니다. · 하나의 변수 이름에 순서에 의한 번호를 부여한 자료들의 리스트 · 동일한 자료형을 갖는 자료들의 리스트 · 선언 형태에 따라 1차원, 2차원, 3차원 배열 등으로 구분함 1차원 배열 1차원 배열이란 배

[C언어]C언어 기초 문법 정리[구조체와 공용체] [내부링크]

C언어 기초 문법 정리 - 구조체(structure) · 구조체란? · 구조체의 필요성 · typedef 키워드 · 구조체 변수의 초기화 · 구조체 멤버의 참조 · 구조체 배열 · 구조체 포인터 - 공용체(union) · 공용체란? 구조체(structure) 구조체란? 구조체(structure)란 서로 다른 자료형을 갖는 자료의 모임을 하나의 자료형으로 정의하여 사용하는 자료형을 말합니다. · 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입 · 배열이 같은 타입의 변수 집합이라고 한다면, 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 나타낸 것 # 구조체 정의 struct 구조체명 { 멤버변수타입 멤버변수명; 멤버변수타입 멤버변수명; .. }; # 구조체 변수의 선언 struct 구조체명 변수명; # 구조체 정의와 구조체 변수 선언을 동시에 하기 struct 구조체명 { 멤버변수타입 멤버변수명; 멤버변수타입 멤버변수명; .. } 구조체변수명; 구조

[C언어]C언어 파일 입출력[파일 읽기/쓰기] [내부링크]

C언어 파일 입출력[파일 읽기/쓰기] - 파일 입출력 개요 - 파일의 구분 - 파일 입출력 수행 과정 - 파일 입출력 함수 - 파일 입출력 수행 방법 · 1. 파일 포인터 선언 · 2. 파일 열기 · 3. 파일 닫기 - 파일 읽기/쓰기 예제 · 1. 문자 단위 쓰기 · 2. 문자열 단위 쓰기 · 3. 타입지정 쓰기 · 4. 문자 단위 읽기 · 5. 문자열 단위 읽기 · 6. 타입지정 읽기 파일 입출력 개요 파일 입출력이란 파일에 대한 입력과 출력을 의미합니다. 파일에 대한 입력이란 디스크상의 특정 위치에 수록되어 있는 자료를 읽어 들여 기억공간에 수록하는 절차라고 할 수 있고, 파일에 대한 출력이란 기억공간에 있는 자료를 디스크상의 특정 위치에 수록하는 절차라고 할 수 있습니다. C언어에서는 포인터를 사용하여 자료의 입출력을 수행합니다. 즉, 모든 파일 입출력함수는 파일이 어디에 있는지를 가리키는 파일 포인터를 사용하며, 파일 입출력시 디스크에 저장된 자료ㅕ를 기억공간으로 읽ㅅ어 들

[C언어]C언어 메모리 동적 할당(malloc, calloc, realloc, memcmp, memcpy, memset) [내부링크]

C언어 메모리 동적 할당(malloc, calloc, realloc) - C 언어 기억공간 개요 - 메모리 정적 할당 - 메모리 동적 할당 · 메모리 동적 할당 순서 · malloc() 함수 · calloc() 함수 · realloc() 함수 - 기억공간 관리 · memcmp() 함수 · memcpy() 함수 · memset() 함수 C 언어 기억공간 개요 컴퓨터는 CPU, 주기억장치, 보조기억장치 등으로 구성되어 있습니다. 프로그램은 하드 디스크와 같은 보조기억장치에 저장되어 있다가 프로그램이 시작되면 주기억장치인 RAM에 적재되어 CPU의 연산 장치에 의해 실행됩니다. 즉, 컴퓨터 프로그램의 실행을 위해서는 기억공간이 필요합니다. C 언어를 이용하여 프로그램을 작성할 때 지역변수나 전역변수 등을 선언해 준것도 사용할 기억공간을 확보하는 것입니다. 이와 같이 프로그램엑서 사용하게 될 기억공간을 마련하는 방법에는 크게 메모리 동적 할당과 메모리 정적 할당이라는 두 가지 방법이 있습니

[컴퓨터 보안]사이버 공격 종류(악성코드, 네트워크 공격) [내부링크]

사이버 공격 종류(악성코드, 네트워크 공격) 악성 코드(Malicious Code, Malware) · 바이러스(Virus, Computer Virus) · 웜(Worm) · 트로이 목마(Trojan Horse) · 바이러스, 웜, 트로이 목마의 특징 비교 · 백도어(Backdoor) · 스파이웨어(Spyware) · 랜섬웨어(Ransom Ware) 네트워크 공격 · 스캐닝(Scanning) · 스푸핑(Spoofing) · 스니핑(Sniffing) · 서비스 거부(DoS, Denial of Service) · 분산 서비스 거부(DDoS, Distributed Denial of Service) 그 외 사이버 공격 · 스팸 메일(Spam Mail) · 피싱(Phishing) 사이버 공격 인터넷을 통해 다른 컴퓨터에 불법 접속하여 상대방 국가나 기업, 개인에 손상을 입히려는 행동을 뜻합니다. 사이버 공격은 악성 코드를 사용하여 컴퓨터 코드, 논리 또는 데이터를 변경하여 데이터를 손상시키고

[Android Studio]안드로이드 스튜디오 프로젝트 생성 및 폴더 구조 및 초기 설정(SDK Manager, AVD 가상 디바이스) [내부링크]

안드로이드 스튜디오 프로젝트 생성 및 폴더 구조 및 초기 설정 - 프로젝트 생성하기 - 프로젝트 폴더 구조 - Android Studio 초기 설정 · SDK Manager(SDK Playforms, SDK Tools) · 자동 재실행 설정 · AVD Manager(가상 디바이스) 프로젝트 생성하기 1. Android Studio를 실행 후 New Project 클릭 2. 메인 화면을 선택하고, Next 클릭 · Phone and Tablet > Basic Activity > Next · Phone and Tablet : 핸드폰 & 태블릿 · Wear OS : 안드로이드 웨어러블 · Android TV : TV 제품 · Automotive : 자동차 제품 3. 프로젝트에 대한 설정 화면입니다. · Name : 애플리케이션의 이름 · Package Name : 생성할 메인 액티비티(클래스)의 패키지 · Save location : 프로젝트 저장 위치 · Language : 사용할 프로

[컴퓨터 기초 지식]네트워크 동작 및 구성요소 / NIC, 허브, 스위치, 브릿지, 게이트웨이, 라우터, LAN, MAN, WAN, .. 등 [내부링크]

네트워크 동작 및 구성요소 - 네트워크 구성과 동작 · 네트워크란? · 네트워크에서의 정보전달 · 유선 전송 매체의 종류 - 주변에 사용되는 무선통신 기술 · 블루투스 · LTE · UWB · Li-Fi - 네트워크 접속장치 · 네트워크 인터페이스 카드(NIC) · 허브(Hub) · 스위치(Switch) · 브릿지(Bridge) · 게이트웨이(Gateway) · 라우터(Router) - 네트워크의 종류 · LAN · CAN · MAN · WAN 네트워크 구성과 동작 네트워크란? 네트워크는 Net + Work의 합성어로 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 ㅇ통신 이용 형태를 의미합니다. 즉, 몇 개의 독립적인 장치가 적절한 영역내에서 적당히 빠른 속도의 물리적 통신 채널을 통하여 서로가 직접 통신할 수 있도록 지원해주는 데이터 통신 체계를 말합니다. · 그물처럼 서로 연결되어 동작하는 것 · 링크를 통해 서로 간의 회선과 패킷을 교환함으로써 데이터 통신을 함 네트워크에서

[Java]순수 자바 이해하기 / 명령 프롬프트 실행, 환경 변수, 클래스 패스 설정 [내부링크]

순수 자바 이해하기 - 순수 자바 명령 프롬프트로 실행하기 - 클래스패스(classpath)란? - 환경 변수 설정 - JAVA_HOME · 환경 변수란? · Java 명령어 환경변수 등록하기 - 패키지 구조 갖추기 · 패키지 생성 및 실행하기 · jar 파일 생성 및 실행하기 순수 자바 명령 프롬프트로 실행하기 1. 바탕화면에 작업을 진행할 폴더 생성 · 필자는 바탕화면에 "java" 라는 폴더를 생성하였습니다. 2. 메모장으로 Main.java 파일 생성 class Main { public static void main(String[] args) { System.out.println("Hello World!"); } } 3. 명령 프롬프트를 통해 java 파일 컴파일 ※ 현재 java 폴더에 환경 변수를 잡아주지 않은 상태 3-1. java를 다운받은 폴더로 이동 · javac.exe 파일이 bin 폴더에 존재하여 java폴더/bin 폴더로 이동 · cd 폴더경로 3-2. 작성한

[Android Studio]안드로이드 스튜디오 설치 및 실행하기 [내부링크]

안드로이드 스튜디오 설치 및 실행하기 - 안드로이드 스튜디오란? - Android Studio 설치하기 - Android Studio 실행하기 안드로이드 스튜디오란? Android 스튜디오는 Android 앱 개발을 위한 공식 통합 개발 환경(IDE)이며 IntelliJ IDEA를 기반으로 합니다. IntelliJ의 강력한 코드 편집기와 개발자 도구 외에도, Android 스튜디오는 Android 앱을 빌드할 때 생산성을 높여주는 다음과 같은 기능을 제공합니다. · 유연한 Gradle 기반 빌드 시스템 · 빠르고 기능이 풍부한 에뮬레이터 · 모든 Android 기기용으로 개발할 수 있는 통합 환경 · 앱을 다시 시작할 필요 없이 변경사항을 적용하여 실행 중인 앱에 코드 및 리소스 변경사항을 푸시 · 일반적인 앱 기능을 빌드하고 샘플 코드를 가져오는 데 도움이 되는 코드 템플릿과 GitHub 통합 · 광범위한 테스트 도구 및 프레임워크 · 성능, 사용성, 버전 호환성 및 기타 문제를

[C언어]C언어 기초 문법 정리[제어문, 조건문, 반복문, 함수, 기억클래스] [내부링크]

C언어 기초 문법 정리 - 선택제어문과 반복제어문 · 제어문 · 선택제어문(if / else if / else, switch) : 조건문 · 반복제어문(for, while, do-while) : 반복문 · 기타 제어문(continue, break, goto) - 함수와 기억 클래스 · 함수란? · 표준 함수 · 사용자 정의 함수 · 기억 클래스(storage class) · 유효 범위(지역변수, 전역변수) · 초기화, 존속 기간, 범위(자동변수, 전역변수, 외부변수, 레지스터변수) 선택제어문과 반복제어문 제어문 프로그램은 명령어의 집합입니다. 이러한 명령어는 컴퓨터에 의해 하나씩 순서대로 처리되는데, 경우에 따라서는 명령을 건너뛰기도 해야 하고, 또 어떠한 명령어들은 여러 번 반복하여 수행해야 하는 경.......

[Visual C++]윈도우 프로그래밍 개요 [내부링크]

Visual C++ 윈도우 프로그래밍 개요 - 윈도우 프로그램이란? - 윈도우 프로그램의 특징 - 기초 용어 - 윈도우 프로그래밍 개발 방법 - API란 무엇인가? 윈도우 프로그램이란? 윈도우 프로그램이란 Windows 운영체제에서 실행할 수 있는 응용 프로그램을 말합니다. 윈도우 운영체제에서 구동되는 응용 프로그램으로 사용자에 의해 발생하는 이벤트에 의해 실행이 됩니다. 이는 이벤트 기반, 메시지 기반 프로그래밍이라고도 불립니다. · 윈도우(Window)는 사용자 화면에 표현되는 일부분으로 프로그램이 출력 결과를 내보내고, 사용자로부터 입력을 받아들이고, 독립적으로 동작하는 화면의 일부분을 말합니다. (메뉴바 윈도우, 버튼 윈도우, 스크.......

[Visual C++]Visual Studio 2022 설치하기(Windows 데스크톱 개발) [내부링크]

Visual C++ Visual Studio 2022 설치하기(Windows 데스크톱 개발) Visual Studio 2022 개요 Visual Studio 2022 설치하기 Visual Studio 2022 실행하기 Visual Studio 2022 개요 비주얼 C++은 마이크로소프트사에서 발표한 언어로, 개발 환경을 통합개발환경(IDE)으로 Windows 운영체제에 저갛ㅂ하게 제작한 것이 비주얼 스튜디오(Visual Studio)입니다. 비주얼 스튜디오는 여러 에디션이 있지만, 커뮤니티(community) 에디션을 사용하여 학생이나 독립된 개인 개발자로 이용에 제한없이 상업용 프로그램을 개발하는 것이 가능하며, 교육, 학술적 연구 수행, 오픈 소스 기여 목적으로 무료로 무제한 이용이 가능합니다. Visual Studio 2022 설치.......

[Linux]리눅스 크론탭(Crontab) 사용법 [내부링크]

리눅스 크론탭(Crontab) 사용법 - 크론(Cron)과 크론탭(Crontab) - craontab 명령어 - 크론탭(Crontab) 파일 작성법 - crontab 변경내용 적용 크론(Cron)과 크론탭(Crontab) Unix 기반의 리눅스 시스템에는 지정된 시간에 맞추어 주기적으로 수행되는 계획된 작업을 수행할 때 cron 서비스를 사용합니다. 보통 cron을 사용하는 목적은 고정된 시간과 날짜 그리고 간격에 따라 주기적으로 예약된 잡들을 실행시키는 데 있으며, 예약된 작업은 셸 명령어들이 주어진 일정에 주기적으로 실행하도록 규정해놓은 crontab(cron table) 파일에 의해서 동작합니다. 실제 cron 서비스는 시스템 부팅후부터 계속 수행되고 있는 crond라는 이름의 데몬 프로.......

[C언어]C언어 기초 문법 정리[개요, 자료형, 선행처리기, 입출력함수, 연산자] [내부링크]

C언어 기초 문법 정리 - C 언어의 개요 · C 언어의 역사와 특징 · C 프로그램 개발 단계 · C 프로그램 구조 및 특징 · C 프로그램 명칭 규칙 · C 언어 주석 문법 - 자료형과 선행처리기 · 상수와 변수 · 자료형과 변수 선언 · 선행처리기 - 입출력함수와 연산자 · 표준 입출력함수 · 연산자 C 언어의 개요 C언어의 역사 및 특징 C 언어는 1972년 미국 벨 연구소의 데니스 리치(Dennis Ritchie)가 개발한 시스템 기술용 언어로, 유닉스(UNIX)라는 운영체제 개발에 사용할 목적으로 만들어졌습니다. 당시 대부분의 컴퓨터에서 채택한 유닉스 운영체제는 어셈블리 언어로 만들어졌기 때문에 하드웨어의 의존도가 높아 컴퓨터 기종에 따라 프로그램을.......

[Linux]리눅스 원격 서버 접속 및 파일 전송, 복사(telnet, ftp, rcp, ssh, sftp, scp, OpenSSH) [내부링크]

리눅스 원격 서버 접속 및 파일 전송, 복사 - 전통적인 방식 · 원격 접속 개요 · 원격 접속 : telnet · 원격 파일 전송 : ftp · 원격 파일 복사 : rcp - SSH(Secure Shell) · SSH(Secure Shell) 개요 · OpenSSH 패키지 · 원격 접속 : ssh · 원격 파일 전송 : sftp · 원격 파일 복사 : scp 전통적인 방식 원격 접속 개요 리눅스 시스템은 네트워크를 통해 원격에서 접속하여 다양한 작업을 수행할 수 있도록 여러 가지 방법을 제공합니다. 접속하는 방식과 수행할 수 있는 작업에 따라 telnet, rlogin, rsh, ftp, rcp 등으로 나누어집니다. · telnet, rlogin, rsh, ftp, rcp, .. 등 · 암호화가 되지 않은 데이터를 주고 받기 때문에 도청이나 위변.......

[Spring JPA]ORM, JPA, Hibernate, Spring Data JPA 개념 정리 [내부링크]

ORM, JPA, Hibernate, Spring Data JPA 개념 정리 - ORM(Object-Relational Mapping) · ORM의 장단점 - JPA의 등장과 개념 · JPA 개요 · JPA란 무엇인가? · Hibernate란 무엇인가? · JPA와 Hibernate의 상속 및 구현 관계 · Spring Data JPA란 무엇인가? · Spring Data JPA의 특징 및 장점 ORM(Object-Relational Mapping) ORM은 Object-Relational Mapping의 약자로 객체 관계 매핑을 의미합니다. 의미 그대로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말합니다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용합니다. 이렇듯이 객체 모델과 관계형 모델 간에 불일치가 존재하.......

[Python]파이썬 파일 읽기, 쓰기(open, read, write, close, pickle 모듈) [내부링크]

파이썬 파일 읽기, 쓰기(open, read, write, close) - 파일 다루기 - 파일 조작 메소드 - with 구문 - pickle 모듈 - csv 모듈 파일 다루기 파이썬에서는 표준 입출력 함수인 input()과 print() 함수를 사용하여 프로그램과 사용자 사이의 입출력 작업을 수행할 수 있습니다. 그리고 프로그램과 파일 사이의 입출력 즉, 파일에 저장된 내용을 읽고 쓰는 동작은 파일 객체(file object)를 사용하여 수행할 수 있습니다. · 파일을 조작하기 위해서는 파일을 열어야 하는데, open() 함수를 사용하여 파일을 열 수 있습니다. · 파일의 내용을 읽기 위해서는, read(), readline(), readlines() 함수를 사용하여 파일의 내용을 읽을 수 있습니다. · 파.......

[Python]파이썬 예외처리(try, except, finally, else) [내부링크]

파이썬 예외처리(try, except, finally, else) - try &#38; except - try &#38; except 발생오류 - try &#38; except 발생오류 as 메시지변수 - try &#38; except &#38; else - try &#38; except &#38; else &#38; finally - 예외 발생시키기 (raise) - 예외 만들기 (Exception 상속) - 파이썬 예외 계층도 1. try &#38; except · 오류의 종류에 상관없이 무조건 예외처리 · Exception을 이용하여 모든 오류를 처리할 수도 있음 2. try &#38; except 발생오류 · 오류가 발생했을 때 except문에 미리 정의해놓은 오류 이름과 일치할 때만 except 블록을 수행 · 특정 예외만 처리하기 3. try &#38; except 발생오류 as 메시지변수 · 오류가 발생했.......

[MyBatis]MyBatis 동적 쿼리 문법 정리(if, choose, trim, where, set, foreach, selectKey) [내부링크]

MyBatis 동적 쿼리 문법 정리 - 동적 SQL - 조건문(if, choose, when, otherwise) - 조건 특화 엘리먼트(trim, where, set) - 반복문(foreach) - 다중 쿼리(selectKey) 동적 SQL MyBatis의 강력한 기능중 하나는 동적 SQL를 처리하는 방법입니다. 동적 SQL이란 상황에 따라 분기 처리를 통해 SQL문을 동적으로 만드는 것입니다. 조건문(if, choose, when, otherwise) 단일 조건 : &#60;if&#62; 다중 조건 : &#60;choose&#62;, &#60;when&#62;, &#60;otherwise&#62; 조건 특화 엘리먼트 동적 SQL : &#60;where&#62; · &#60;where&#62; 내부에는 조건을 표현할 수 있는 &#60;if&#62;나 &#60;choose&#62;가 사용될 수 있습니다. · &#60;where&#62; 내부 코드가 추가되.......

[Spring]Spring Swagger 사용법 정리(API 문서 자동화하기) [내부링크]

Spring Swagger 사용법 정리(API 문서 자동화하기) - Swagger란 - Swagger 기능 - Swagger 사용법 · 1. 의존성 추가 · 2. Swagger 어노테이션 · 3. Swagger 설정 정보 클래스 · 4. Controller 클래스에 API 명세 정의(어노테이션 이용) · 5. Swagger UI 확인하기 Swagger란 공식사이트 : https://swagger.io/ Swagger(스웨거)는 개발자가 개발한 REST API 서비스를 편리하게 문서화 해주고, 이를 통해서 관리 및 제 3의 사용자가 편리하게 API를 호출하고 테스트할 수 있는 프로젝트입니다. · REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크 · API 정보 현행화(자.......

[Spring]Spring properties 사용법 정리(@Value, @PropertySource, &lt;context:property-placeholder/&gt;) [내부링크]

Spring properties 사용법 정리 - properties 개요 - properties 사용법 · 1. properties 파일 작성 · 2. properties 파일 불러오기(로드) · Spring Legacy 프로젝트 xml에서 프로퍼티 로드 · Java를 통한 프로퍼티 로드 · 3. properties 값 사용(주입) · 4. properties 값 사용 응용하기(List, Map, random) properties 개요 프로젝트를 진행하다보면 외부에서 특정 값들을 주입받아야 하는 경우가 있습니다. 예를 들어, DB 접속 정보, 메일 계정 정보, API Key, .. 등 이러한 값들을 소스 코드에 하드 코딩한다면, 재사용이 힘들고, 여러 곳에 사용하는데 키값이 변하게 된다면 처리해야 하는 일이 많아집니다. 또한 public 저장소에 저장하는.......

[jQuery]요소의 조작 - 동적으로 태그 추가하기[append(), prepend(), before(), after(), html()] [내부링크]

jQuery 요소의 조작 - 기존 요소의 내부에 추가 · append(), prepend(), appendTo(), prependTo() - 기존 요소의 외부에 추가 · before(), after(), insertBefore(), insertAfter() - 기존 요소를 포함하는 요소의 추가 · wrap(), wrapAll(), wrapInner() - 기존 요소의 내부 변경 · html(), text() 기존 요소의 내부에 추가 append() 메소드 선택한 요소의 마지막에 새로운 HTML 요소나 콘텐츠를 추가합니다. · 선택한 요소의 마지막에 자식 태그 추가 prepend() 메소드 선택한 요소의 첫번째에 새로운 HTML 요소나 콘텐츠를 추가합니다. · 선택한 요소의 첫번쨰 자식 태그 추가 appendTo() 메소드 선택한 요소를 해당 요소의 마지막에 추가합니.......

[JavaScript]팝업창 띄우기(window.open, CORS, postMessage) [내부링크]

JavaScript 팝업창 띄우기(window.open) - window.open() 함수 - 팝업 옵션(windowFeatures) - 팝업창 열기 예제 - 부모, 자식 팝업창 간의 함수 호출 및 값 전달 · 부모창에서 자식창 제어하기 · 자식창에서 부모창 제어하기 - 데이터를 전송하여 팝업창 생성하기(submit) - 부모, 자식 팝업창 간의 함수 호출시 CORS 문제 · Window.postMessage() 메소드 · postMessage() 메소드 예제 window.open() 함수 Window 인터페이스인 open() 메소드는 명시된 리소스를 명시된 이름으로 브라우징 컨텍스트에 로드합니다. · url : 로드할 리소스의 URL · windowName : 팝업창의 이름 · windowFeatures : 팝업 옵션(창의 크기, 스크롤, 리사이즈, .. 등의.......

[H2 Database]H2 Database 설치 및 간단 사용법 [내부링크]

H2 Database - H2 Database란? - H2 Database 설치 및 서버 구동 - H2 웹 콘솔 H2 Database란? H2 Database는 자바 기반의 오픈소스 관계형 데이터 베이스 관리 시스템(RDBMS) 입니다. 서버(Server) 모드와 임베디드(Embedded) 모드의 인메모리 DB 기능을 지원하며, 브라우저 기반의 콘솔모드를 이용할 수 있으며, 별도의 설치 과정이 없고 용량이 매우 가벼워 개발용 로컬 DB로 사용하기 좋은 데이터베이스입니다. · Java로 작성된 오픈소스 RDBMS · 스프링 부트가 지원하는 인메모리 관계형 데이터베이스입니다. · 인메모리로 띄우면 애플리케이션을 재시작할 때마다 초기화됩니다. · 별도의 설치가 필요 없습니다. · 로컬 환경, 테스트 환경에.......

[Spring]Spring 의존성 주입(DI, Dependency Injection) [내부링크]

Spring 의존성 주입(Dependency Injection) - 제어의 역전(IoC, Inversion of Control) - 의존성 주입(DI, Dependency Injection) - 의존성 주입(DI)를 사용하는 이유 - 스프링 빈(Bean) - 스프링 의존성 주입(DI) - 스프링 IoC 컨테이너 - 스프링 빈 등록 방법 - 의존 객체 자동 주입 · 생성자 주입 - @Autowired · 수정자 주입 - @Autowired · 필드 주입 - @Autowired · 필드 주입 - @Resource, @Injection 제어의 역전(IoC, Inversion of Control) IoC는 Inversion of Control의 약자로 제어의 역전이라는 뜻을 갖고 있습니다. 스프링에서는 일반적인 Java 객체를 개발자가 new로 생성하여 관리하는 것이 아닌 Spring Container가 객체를 생성.......

[프로그래머스]Level1. 신규 아이디 추천 [내부링크]

프로그래머스 Level1. 정수 제곱근 판별 링크 : https://programmers.co.kr/learn/courses/30/lessons/72410 문제 설명 카카오에 입사한 신입 개발자 네오는 &#34;카카오계정개발팀&#34;에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. &#34;네오&#34;에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. · 아이디의 길이는 3자 이상 15자 이하여야 합니다. · 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑.......

[Spring]Spring 관점지향 프로그래밍(AOP, Aspect Oriented Programming) [내부링크]

Spring 관점지향 프로그래밍(AOP, Aspect Oriented Programming) - 관점지향 프로그래밍(AOP) 개요 - 관점지향 프로그래밍(AOP, Aspect Oriented Programming) - AOP 주요 용어 - AOP 주요 어노테이션 - Pointcut 표현식 사용법 - AOP 사용하기(인터페이스) - Spring AOP - AOP 사용하기(어노테이션) - AspectJ · XML 기반의 POJO 클래스를 이용한 AOP 구현 · @Aspect 어노테이션을 이용한 AOP 구현 - 포인트컷 응용(커스텀 어노테이션) 관점지향 프로그래밍(AOP) 개요 프로그래밍을 하다보면, 공통적인ㄱ ㅣ능이 많이 발생합니다. OOP에서 이런 공통된 기능을 재사용하는 방법으로는 상속이나 위임을 사용합니다. 하지만, JAVA에서는 다중 상속.......

[Spring Batch]Spring Batch 메타 데이터 테이블 [내부링크]

Spring Batch란? - Batch Processing이란? - Spring Batch란? - Spring Batch 메타 데이터 테이블 · BATCH_JOB_INSTANCE · BATCH_JOB_EXECUTION · BATCH_JOB_EXECUTION_PARAM · BATCH_JOB_EXECUTION_CONTEXT · BATCH_STEP_EXECUTION · BATCH_STEP_EXECUTION_CONTEXT - 메타 데이터 테이블 생성하기 Batch Processing이란? 일괄 처리(Batch Processing)란 사전적 용어로 컴퓨터 프로그램 흐름에 따라 순차적으로 자료를 처리하는 방식을 뜻합니다. 쉽게 말해, 개별적으로 어떤 요청이 있을 때마다 실시간으로 통신하는 것이 아닌 한꺼번에 일괄적으로 대량 건을 처리하는 것입니다. 이러한 일괄 처리 시스템은 일정 기간마다 주기적으로 한꺼번에.......

[Python]파이썬 기본 문법 정리[자료형, 시퀀스자료형, 연산, 제어문] [내부링크]

파이썬 기본 문법 정리 - 자료형 · 숫자 자료형 · 문자 자료형 · 불린형 - 시퀀스 자료형 · 튜플(tuple) · 딕셔너리(dictionary) · 리스트(list) · 집합(set) - 연산 · 대입 연산 · 산술 연산 · 비교 연산 · 논리 연산 · 멤버십 연산 - 제어문 · 조건문(if) · 반복문(while, for) 자료형 변수(Variable) 변수(Variable)란 데이터를 저장할 공간이라고 할 수 있습니다. 파이썬에서는 변수를 선언할 때 따로 자료형을 지정하지 않고, 변수의 이름만을 선언하면 됩니다. · 숫자 자료형, 문자 자료형, 불린형 숫자 자료형 1, 2, 0, -1, 1.5 등은 숫자의 형태이며, 이러한 값들을 저장하는 변수를 숫자형 변수라고 부릅니다. 숫자형 변수는 크게 정수.......

[Python]파이썬 기본 문법 정리[함수, 클래스, 모듈, 패키지] [내부링크]

파이썬 기본 문법 정리[함수, 클래스, 모듈, 패키지] - 함수(function) · 함수를 사용하는 이유 · 매개변수와 인수 - 클래스(class) · 상속 · 클래스 더 알아보기 · 객체와 인스턴스 - 모듈(Module) · 모듈 만들기 - 패키지(package) · 패키지 구조 함수(function) 함수(function)란 하나의 특정한 목적의 작업을 수행하기 위해 독립적으로 구성된 프로그램 코드의 집합을 말합니다. · 입력받은 값에 따라 새로운 값을 산출해 내는 것 · def라는 예약어를 사용하여 함수를 정의합니다. [define의 약자 def] 함수를 사용하는 이유 반복적으로 사용되는 부분을 수 작업으로 매번 작성하기 보다는 해당 부분을 한 뭉치로 묶어 함수화하여 사용하면 코.......

[Rest Client 툴]포스트맨(POSTMAN) Mock Server 만들기 [내부링크]

포스트맨(POSTMAN) Mock Server 만들기 - 포스트맨(POSTMAN)이란? - Mock Server란? - Mock Server 만들기 포스트맨(POSTMAN)이란? 포스트맨(POSTMAN)은 REST API 설계, 개발, 테스팅을 할 수 있는 GUI 툴로 개발 생산성을 높여주는 프로그램입니다. API 구축의 각 단계를 단순화하고 협업을 간소화하여 더 나은 API를 더 빠르게 만들 수 있도록 합니다. · API 개발을 위한 협업 플랫폼 · 포스트맨(POSTMAN) 관련 설명 : [Rest Client 툴]포스트맨(POSTM.. : 네이버블로그 (naver.com) Mock Server란? Mock 서버란 실제 서버처럼 클라이언트로부터 요청을 받으면 응답하는 가짜 서버를 말합니다. 서버와 클라이언트 간의 API가 정의된 상태이고, .......

[JavaScript]HTML Media Capture and Streams API(MediaStream, MediaStreamTrack) [내부링크]

HTML Media Capture and Streams API - Media Streams API란? - MediaStream 사용 방법 · MediaStream 객체 · MediaStream 생성 · MediaDevices.getUserMedia(constraints) 사용 방법 · 실시간 영상 재생 예시 - MediaStreamTrack 사용 방법 · MediaStreamTrack 객체 · MediaStreaemTrack 생성 · MediaStreamTrack을 얻어 새로운 스트림 생성 예시 Media Streams API란? Media Streams API, 짧게는 MediaStream API라고 불리는 Media Capture and Streams API는 오디오와 비디오 데이터 스트리밍을 지원하는 WebRTC 관련 API 입니다. 쉽게 말해, 마이크, 카메라 등을 이용해 들어오는 (Media Stream: 오디오, 비디오, 화면 등) 데이터를 다룹니다.......

[JavaScript]HTML MediaStream Recording API(MediaRecorder, 녹음/녹화) [내부링크]

HTML MediaStream Recording API - MediaStream Recording API란? - MediaRecorder 사용 방법 · MediaRecorder 생성 · MediaRecorder 메소드 · MediaRecorder 이벤트 핸들러 - 녹음 프로세스 개요 - 저장된 미디어 데이터 후처리 · 미디어 요소에 재생 · 파일 다운로드 · 서버 업로드 선행해야할 내용 Media Capture and Streams API : [JavaScript]HTML Media Ca.. : 네이버블로그 (naver.com) MediaStream Recording API란? MediaStream Recording API는 Media Capture and Stream API, WebRTC API을 유용하게 사용할 수 있도록 제공된 API입니다. MediaStream, HTMLMediaElement, HTMLCanvasElement 객체 등에서 전달되는 데이터를 분석, 처.......

[IntelliJ]IntelliJ IDEA 학생 인증 무료 설치하기 [내부링크]

IntelliJ IDEA 학생 인증 무료 설치하기 - 개요 - 학생 계정 인증하기 - IntelliJ IDEA 다운로드 및 라이선스 등록 개요 IntelliJ IDEA는 젯브레인스(JetBrains) 사에서 제작한 Java 개발을 위한 툴로 유료 버전(Ultimate)과 무료 버전(Community) 에디션이 제공됩니다. 유료 버전을 이용하는 경우 다양한 기능 및 프로젝트를 쉽게 만들 수 있지만, 기업용 월 $49.90, 개인용 $14.90가 청구됩니다. 이러한 IntelliJ IDEA를 학생 인증을 통하여 무료로 사용할 수 있고, 학생 계정 인증시 졸업년월을 기준으로 라이선스 유효기간이 적용되는데, 학생 계정 라이선스 갱신은 만료 일주일 전 젯브레인 가입 계정으로 연장 메일이 발송되어, 해당 메일.......

[Java]Java Builder Pattern(빌더 패턴, 점층적 생성자 패턴, 자바빈즈 패턴) [내부링크]

자바 빌더 패턴(Java Builder Pattern) - 인스턴스화(Instantiate) - 점층적 생성자 패턴(Telescoping Constructor Pattern) - 자바빈즈 패턴(JavaBeens Pattern) - 빌더 패턴(Builder Pattern) - 자바빈즈와 빌더 패턴 응용(mutable) - 자바빈즈와 빌더 패턴 응용(immutable) - Lombok @Builder 어노테이션 이용 - Builder 패턴을 마치며 인스턴스화(Instantiate) 클래스를 인스턴스화(객체 생성)할 때 생성자를 통해서 할 수 있습니다. 단순히 생성자만을 사용하여 값을 설정하는 경우, 생성자에 많은 인자를 받게되고, 때문에 어떠한 인자 값이 어떤 값을 나타내는지 확인하기 어렵고, 가독성이 매우 떨어집니다. 점층적 생성자 패턴(Telescop.......

[IntelliJ]finished with non-zero exit value 1 에러 [내부링크]

에러 내용 Execution failed for task &#x27;:MvcApplication.main()&#x27;. &#62; Process &#x27;command &#x27;C:/Program Files/Java/jdk-11.0.12/bin/java.exe&#x27;&#x27; finished with non-zero exit value 1 * Try: &#62; Run with --stacktrace option to get the stack trace. &#62; Run with --info or --debug option to get more log output. &#62; Run with --scan to get full insights. 발생 배경 IntelliJ Gradle 환경에서 프로젝트 첫 실행시 발생 해결 방안 Gradle을 통하지 않고, IntelliJ에서 바로 실행하도록 변경 1. File &#62; Settings 메뉴 클릭 (Ctrl + Alt + S) 2. Build, Execution, Deployment &#62; Build Tools &#62; G.......

[Spring]Spring Util Assert 클래스 [내부링크]

Spring Util Assert 클래스 - Assert 클래스 - 주요 메소드 - Assert 사용 목적 Assert 클래스 스프링 프레임워크를 사용하면 org.springframework.util 패키지 안에 다양한 편의성을 제공해주는 Util 클래스들이 존재하는데, Assert 클래스는 인수의 유효성을 검사하는데 도움을 주는 클래스로 인수를 검증하고 조건에 맞지않는 경우 IllegalArgumentException 또는IllegalStateException를 발생시킵니다. 공식 API 문서 : https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/Assert.html · 인수 검증에 유용한 Util 클래스 · org.springframework.util 패키지 · Null 체크, 빈값 체크, 문자열인지 체.......

[Java]URL & URLConnection & HttpURLConnection [내부링크]

URL &#38; URLConnection &#38; HttpURLConnection - URL(Uniform Resource Locator) - URL 관련 용어 예시 - URL Class - URLConnection Class - HttpURLConneciton class URL(Uniform Resource Locator) URI의 하위 개념이며 컴퓨터 네트워크 상의 자원을 모두 나타낼 수 있습니다. URL은 Uniform Resource Locator의 약자로 URL은 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약으로 흔히 웹 주소 또는 인터넷 주소라고도 불리며 URI (uniform resource identifier)의 한 유형으로 리소스의 위치와 액세스에 사용되는 프로토콜을 나타냅니다. URL 관련 용어 예시 URL Class URL 클래스는 URL을 추상화하여 만든 클래스입니다. URL .......

[Vue]Vue 기초 문법 배우기 4. 이벤트 핸들링(v-on) [내부링크]

Vue 기초 문법 배우기 4. 이벤트 핸들링(v-on) - 이벤트 처리(v-on) - 시스템 수식어 - 메소드 작성(Vue 인스턴스, methods) - 클릭 이벤트 예시(v-on:click) - 키 이벤트 예시(v-on:keyup) - 값 변경 이벤트(v-on:change) 이벤트 처리(v-on) Vue 컴포넌트에서 이벤트를 처리할 때는 &#34;v-on&#34; 디렉티브를 사용합니다. v-on 디렉티브는 유저가 버튼을 클릭하거나 키보드를 통해 키입력을 하는 등의 &#34;이벤트&#34;가 발생할 때 Vue 메소드를 실행시키는 이벤트 핸들러입니다. ※ v-on 디렉티브는 자주 쓰이는 기능으로 심볼 @로도 사용가능합니다. ※ 메소드는 Vue 인스턴스에 methods 옵션을 추가하여 만듭니다. 시스템 수식어 Vue 2.......

[Vue]Vue 기초 문법 배우기 5. 조건과 반복(v-if, v-show, v-for) [내부링크]

Vue 기초 문법 배우기 5. 조건과 반복(v-if, v-for) - v-if 디렉티브 - v-show 디렉티브 - v-for 디렉티브 · 단순 배열 값 표시 예제 · 오브젝트 배열 값 표시 예제 · 지정한 횟수만큼 반복 예제 - 배열 데이터 추가와 삭제 - 조건과 반복 조합 v-if 디렉티브 조건에 따라 HTML을 표시하고 싶거나 지우고 싶을 때 &#34;v-if&#34; 디렉티브를 사용합니다. ※ 표시/비표시를 바꾸기만 할지, 표시 내용을 변경할지에 따라 사용 방법이 다릅니다. ※ v-if 디렉티브, v-else-if 디렉티브, v-else 디렉티브 단순 표시/비표시 예제 조건에 따라 표시 태그 변경 예제 v-show 디렉티브 &#34;v-show&#34; 디렉티브는 HTML 요소를 미리 만들어놓고, 이미.......

[Vue]Vue 기초 문법 배우기 6. 데이터 변화 감지(computed, watch) [내부링크]

Vue 기초 문법 배우기 6. 데이터 변화 감지(computed, watch) - computed, watch 속성 개요 - computed 속성 - watch 속성 - computed와 watch - 사용 예제 computed, watch 속성 개요 Vue에서 계산한 데이터의 값을 표시하고 싶거나 문자를 추가하여 표시하고 싶은 경우 머스태시 안에 JavaScript를 직접 사용할 수 있습니다. 하지만 이렇게 처리하는 것은 코드의 전체 관계를 정확히 머릿속에 두고 있지 않은 사람이라면 해당 값이 무엇인지 직관적으로 알기 어렵습니다. 때문에 HTML만 보고 무엇을 표시하려고 하는 지 알 수 있어야 좋습니다. HTML을 보고 &#34;무엇을 표시하려는가?&#34;를 알고 JavaScript를 보고 &#34;구체적으로 어떤.......

[Vue]Vue Markdown 에디터 만들기 [내부링크]

Vue Markdown 에디터 만들기 - 마크다운(Markdown)이란? - 마크다운(Markdown)의 장단점 - Vue Markdown 에디터 만들기 마크다운(Markdown)이란? Markdown은 텍스트 기반의 마크업언어로 2004년 존그루버에 의해 만들어졌으며 쉽게 쓰고 읽을 수 있으며 HTML으로 변환이 가능합니다. 특수 기호와 문자를 이용한 매우 간단한 구조의 문법을 사용하여 웹에서도 보다 빠르게 컨텐츠를 작성하고 보다 직관적으로 인식할 수 있습니다. - 문장/문서를 가볍게 작성할 수 있는 &#34;문장 작성법&#34; 중 하나 - 간단한 기호를 사용하여 표제나 강조 등을 표시하고 HTML 변경이 가능 마크다운(Markdown)의 장단점 장점 1. 간결하다. 2. 별도의 도구없이.......

[Vue]Vue 기초 문법 배우기 7. 애니메이션 효과(transition 컴포넌트) [내부링크]

Vue 기초 문법 배우기 7. 애니메이션 효과(transition 컴포넌트) - Vue transition 개요 - transition 컴포넌트 - CSS 클래스 - JavaScript 훅 - transition 예제 · 토글 버튼 · 글자 서서히 변하기 - transition-group 예제 · 리스트 트랜잭션 Vue transition 개요 트랜지션의 일반적인 정의는 DOM의 삽입, 삭제, 갱신 등에 관련된 효과라고 볼 수 있습니다. Vue.js 에서는 DOM에 삽입, 갱신 또는 제거 될 때 CSS transition 효과를 빠르고 간단하게 구현할 수 있도록 transition 컴포넌트를 제공합니다. · CSS 트랜지션 및 애니메이션을 위한 클래스를 자동으로 적용 transition 컴포넌트 transition 컴포넌트의 애니메이션 효과는 추가, 삭제.......

[Vue]Vue 기초 문법 배우기 8. 컴포넌트 등록 및 사용법(전역 컴포넌트, 지역 컴포넌트, props) [내부링크]

Vue 기초 문법 배우기 8. 컴포넌트 등록 및 사용법 - 컴포넌트란 무엇인가? - 컴포넌트를 등록하는 방법[전역(Global), 지역(Local)] - 컴포넌트 옵션 요소 - 컴포넌트 데이터 전달(부모 props, 자식 event) - props란? - props를 이용하여 자식 컴포넌트에게 데이터 전달하기 - 컴포넌트 props 사용 예시 컴포넌트란 무엇인가? 컴포넌트(Componenet)란 좋바하여 화면을 구성할 수 있는 블록을 의미합니다. 컴포넌트를 활용하면 화면을 빠르게 구조화하여 일괄적인 패턴으로 개발할 수 있으며, 코드를 쉽게 이해하고 재사용할 수 있습니다. 컴포넌트는 Vue의 가장 강력한 기능 중 하나입니다. 기본 HTML 엘리먼트를 확장하여 재사용 가능한 코드.......

[Vue]Vue 기초 문법 배우기 9. 컴포넌트 데이터 전달($emit, $on, slot) [내부링크]

Vue 기초 문법 배우기 9. 컴포넌트 데이터 전달 및 커스텀 이벤트 - 커스텀 이벤트 : $emit과 $on - 부모 컴포넌트에서 자식 컴포넌트로 데이터 전달 : props - 부모 컴포넌트에서 자식 컴포넌트의 이벤트 실행 : $refs, $emit, $on - 자식 컴포넌트에서 부모 컴포넌트로 이벤트 전달 : $emit - 자식 컴포넌트에서 부모 컴포넌트로 데이터 전달 : $emit - 비 부모-자식간 통신 : $emit, $on - 슬롯(slot)이란? - 양방향 데이터 바인딩 · .sync 수식어 · v-model 커스텀 이벤트 : $emit과 $on $on(eventName)을 이용하여 이벤트를 감지할 수 있고, $emit(eventName)을 이용하여 이벤트를 트리거할 수 있습니다. 이벤트 트리거 : $emit(&#x27;event.......

[JavaScript]HTML Geolocation API(GPS) [내부링크]

HTML Geolocation API(GPS) - Geolocation API란? - Geolocation API 인터페이스 - Geolocation API 사용법 - 예제) 현재 위치 정보 얻기 - 예제) 연속적인 위치 정보 얻기 예제) 구글 지도 API에 현재 위치 마커 출력하기 Geolocation API란? Geolocation API는 사용자의 현재 위치 정보를 가져올 때 사용하는 자바스크립트 API입니다. 개인 정보 보호를 위해, 브라우저는 위치 정보를 제공하기 전에 사용자에게 위치 정보 권한에 대해 확인을 받습니다. 이것을 이용하면 사용자의 위치를 지도에 표시하거나, 사용자 근처의 상점을 찾아주는 등의 위치기반 서비스를 할 수 있습니다. - HTML 5에 추가된 API - 사용자의 위치 정보 - window.navig.......

[Linux]리눅스 네트워크 설정 및 점검(ifconfig, ping, arp, traceroute, route, netstat, nslookup 명령어) [내부링크]

리눅스 네트워크 설정 및 점검 - 네트워크 OSI 7계층과 TCP/IP 4계층 - 네트워크 인터페이스 카드 - ifconfig 명령어 - 네트워크 설정 파일 - ping 명령어 - arp 명령어 - traceroute 명령어 - route 명령어 - netstat 명령어 - nslookup 명령어 네트워크 OSI 7계층과 TCP/IP 4계층 OSI 7계층이란? OSI 모형은 국제 표준화 기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 자인과 통신을 계층으로 나누어 설명한 것으로, 일반적으로 OSI 7 계층이라고 합니다. 네트워크의 연결은 각기 다른 역할을 담당하는 기능 및 장비들에 의해 어떠한 절차와 복잡한 규약을 바탕으로 한 논리 구조위에서 이루어지는데, 이 기능과 절차를 1983년도에 표.......

[Vue]Vue 기초 문법 배우기 1. 데이터 표시(CDN 설치, Vue 인스턴스, Vue 데이터 표시) [내부링크]

Vue 기초 문법 배우기 - Vue 설치(사용환경 만들기) - Vue 시작하기(Vue 인스턴스) - Hello Vue.js 출력하기 - Vue.js 데이터 표시(문자열, HTML, 배열, 오브젝트) Vue 설치(사용환경 만들기) Vue.js를 설치하는 방법에는 &#34;CDN을 사용하는 방법&#34;, &#34;다운로드하는 방법&#34;, &#34;Vue-CLI로 시작하는 방법&#34; 등 여러 가지가 존재합니다. Vue에 대한 기초 문법을 공부하기 위해서는 입문자가 가볍게 시작할 수 있는 &#34;CDN을 이용하는 방법&#34;을 사용하는게 가장 편리합니다. 공식 사이트 : https://kr.vuejs.org/v2/guide/installation.html Vue 시작하기(Vue 인스턴스) Vue.js로 화면을 만드는 것은 먼저 Vue 인스턴.......

[Oracle/Tibero]시노님(Synonym) 개념 및 사용법 [내부링크]

데이터베이스 시노님(Synonym) 개념 및 사용법 - 시노님(Synonym)이란? - 시노님(Synonym)을 사용하는 이유 - 시노님(Synonym)의 종류 - 시노님(Synonym) 사용법 · 시노님 권한 부여 · 시노님 생성 · 시노님 삭제 · 시노님 조회 - 시노님(Synonym). 사용 예제 시노님(Synonym)이란? 데이터베이스 객체는 각자 고유한 이름을 갖고 있습니다. 이 객체들에 대한 동의어를 만드는 것이 바로 시노님입니다. 쉽게 말해, 객체에게 별칭을 주어 해당 별칭으로 객체를 사용할 수 있습니다. - 보통 다른 유저의 객체(테이블, 뷰, 프로시저, 함수, 패키지, 시퀀스 등)를 참조할 때 많이 사용합니다. - 테이블, 뷰, 프로시저, 함수, 시퀀스 등에 별칭을 부여.......

[Vue]Vue 기초 문법 배우기 2. 속성 바인딩(v-bind) [내부링크]

Vue 기초 문법 배우기 2. 속성 바인딩(v-bind) - v-bind 디렉티브(속성 표기) - 이미지 지정하기 : src 속성 - 링크 지정하기 : href 속성 - 스타일 지정하기 : style 속성 - 클래스 지정하기 : class 속성 v-bind 디렉티브 태그의 속성을 데이터로 지정할 때는 &#34;v-bind&#34; 디렉티브를 사용합니다. ※ v-bind 디렉티브는 자주 쓰이는 기능으로 생략이 가능합니다. 이미지 지정하기 : src 속성 링크 지정하기 : href 속성 v-bind 디렉티브를 이용한 화면에 소스를 보면 결과적으로 속성(attribute)에 데이터 바인딩되어 결과가 처리된 것을 확인할 수 있습니다. 스타일 지정하기 : style 속성 스타일에서 사용하는 속성은 &#34;카멜 표기.......

[Vue]Vue 기초 문법 배우기 3. 입력 폼 데이터 바인딩(v-model) [내부링크]

Vue 기초 문법 배우기 3. 입력 폼 데이터 바인딩(v-model) - Form 입력 데이터 바인딩 - Input type&#x3D;text(텍스트) - Textarea(여러줄 텍스트) - Input type&#x3D;checkbox(체크박스) - Input type&#x3D;radio(라디오 버튼) - Select(선택) - 수식어 사용 Form 입력 데이터 바인딩 웹 페이지에서 사용자로부터 데이터를 입력받을 수 있는 필드를 Form Element라고 합니다. 입력 폼 데이터 바인딩을 사용하기 위해서는 &#34;v-model&#34; 디렉티브를 사용합니다. &#34;v-model&#34; 디렉티브는 Vue 인스턴스의 데이터가 웹 페이지에 표시되고 웹 페이지에서 입력한 값이 Vue 인스턴스의 데이터에 반영되므로 양방향으로 데이터 바인딩 설.......

[Linux]리눅스 쉘 스크립트(Shell Script) 총정리 [내부링크]

리눅스 쉘 스크립트(Shell Script) - 쉘 스크립트란(Shell Script)? - 쉘 스크립트 실행 방법 - 쉘 스크립트 문법 · 기본 출력 및 사전 정의된 지역 변수 · 주석(Comments) · 변수(Variable) · 예약변수(Reserved Variable) · 연산자(Operator) · 조건문(if..elif..else..fi) · 선택문(case) · 반복문(for, while, until) · 함수(function) 쉘 스크립트란(Shell Sqcript)? 쉘은 명령어 해석기이자 스크립트 언어입니다. 쉘 스크립트는 쉘에 의해 수행되도록 작성된 프로그램으로 제어 구조에 따라 쉘 명령어나 함수를 실행할 수 있습니다. - 평문의 텍스트 파일로 하나의 명령어처럼 실행될 수 있는 실행 가능한 프로그램 - 쉘이 파일의 내용을 읽.......

[HTML]HTML 미디어 관련 태그(embed, audio, vedio, 미디어 파일 제어(JS)) [내부링크]

HTML 미디어 관련 태그 - &#60;embed&#62; 태그 - &#60;audio&#62; 태그 - &#60;video&#62; 태그 - 미디어 파일 제어(JavaScript) &#60;embed&#62; 태그 HTML &#60;embed&#62; 요소는 외부 어플리케이션이나 상호 작용 콘테츠를 포함시킬 수 있는 컨테이너(container)를 정의할 때 사용하는 태그입니다. 오래전부터 많은 웹 브라우저가 &#60;embed&#62; 요소를 지원했지만, HTML4까지는 정식으로 명세에 포함되지 않았지만, HTML5에서 표준 요소로 추가되어 사용됩니다. 사용할 수 있는 속성 사용 예시 &#60;audio&#62; 태그 HTML &#60;audio&#62; 요소는 문서에 음악이나 오디오 스트림과 같은 사운드를 정의할 때 사용하는 태그입니다. &#60;audio&#62; 요소 내에.......

[JavaScript]드래그 앤 드롭(Drag & Drop) API [내부링크]

드래그 앤 드롭(Drag &#38; Drop) API - 드래그 앤 드롭(Drag &#38; Drop)이란? - Drag &#38; Drop API 용어 - 드래그 속성 - 드래그 이벤트 - dataTransfer 객체 - 예제) 이미지 드래그로 옮기기 드래그 앤 드롭(Drag &#38; Drop)이란? 드래그 앤 드롭이란 마우스를 이용하여 특정 콘텐츠를 끌어다 놓는 것을 말합니다. 파일 탐색기에서 파일을 복사하거나 이동할 때, 또는 웹 메일에서 파일을 첨부할 때 마우스로 파일을 선택한 후 끌어다가 놓는 것으로 업로드 하는 드래그 앤 드롭 방식이 사용됩니다. - HTML 5에서 드래그 앤 드롭을 위한 전용 API 제공 Drag &#38; Drop API 용어 드래그 대상(Source) 드래그 대상은 말 그대로 드래그하기 위.......

[JavaScript]웹 스토리지(Web Storage) API [내부링크]

웹 스토리지(Web Storage) API - 웹 스토리지(Web Storage)란? - 웹 스토리지와 쿠키 비교 - 웹 스토리지 종류(Session, Local) - 웹 스토리지 API - 예시)팝업창 오늘하루 보지않기 웹 스토리지(Web Storage)란? 웹 스토리지(Web Storage)는 서버가 아닌, 클라이언트에 데이터를 저장할 수 있도록 지원하는 HTML 5의 새로운 기능입니다. 웹 스토리지 API는 기존 쿠키(Cookie)의 사용에 대한 불편함과 제약으로 인한 문제점을 극복하기 위해 기능이 생겨났습니다. - 클라이언트에 데이터를 저장하기 위한 영역 - HTML 5에 웹 스토리지 API 제공 - 쿠키의 단점을 보완하기 위해 사용 - 키/값(key/value)의 쌍으로 저장 웹 스토리지와 쿠키 비교 웹.......

[JavaScript]파일 접근 API(FileList 객체, File 객체, FileReader 객체) [내부링크]

FileReader 객체(파일 접근 API) - 파일 접근 API - FileList 객체 - File 객체 - FileReader 객체 예제) 이미지파일 선택시 이미지 출력하기 예제) Drag&#38;Drop 파일 읽기 파일 접근 API HTML5 에서는 웹 애플리케이션이 자바스크립트로 로컬 컴퓨터에 있는 파일데이터에 직접 접근할 수 있도록 파일 API를 지원하는데, 보안상의 문제 없이 안전하게 접근하기 위해서 모든 파일에 접근을 허용하는 것이 아니며, 또한 해당 파일의 수정이나 삭제는 제공하지 않고 읽기 전용의 접근만 허용합니다. - 읽기 전용 API(수정/삭제 불가) - 읽기 가능한 파일 : 사용자가 드래그 앤 드롭한 파일, &#60;input type&#x3D;&#34;file&#34;&#62;에서 선택한.......

[Linux]리눅스 vi 편집기 사용법 총정리(명령모드, 입력모드, 라인모드) [내부링크]

리눅스 - 리눅스 텍스트 편집기 종류 - vi 편집기 사용법 - vi 편집기의 세가지 모드 - 라인 모드 - 입력 모드 - 명령 모드 - 커서 및 화면 이동 - 텍스트 삭제 명령 - 텍스트 변경(혹은 치환) 명령 - 텍스트 복사/붙여넣기 - 블록 지정하기 - 명령의 취소와 기타 명령 - 검색 명령 - 검색과 대치(치환) 리눅스 텍스트 편집기 종류 gedit GNOME 데스크톱에서 제공하는 작고 가벼운 편집기로 X윈도 기반이기 때문에 X윈도를 사용하지 않는 서버 기본 텍스트모드에서는 사용할 수 없습니다. - 그래픽 모드에 부팅된 X윈도에 기본 GUI 에디터 emacs Editor Macros의 약자로 리처드 스톨만이 매크로 기능이 있는 텍스트 교정 및 편집기로 개발하였습.......

[Linux]리눅스 파일 찾기와 문자열 검색(locate, find, grep 명령어) [내부링크]

리눅스 파일 찾기와 문자열 검색 locate 명령어(파일 찾기) find 명령어(파일 찾기) grep 명령어(문자열 찾기) locate 명령어 문자열 패턴이 파일 이름에 포함될 떄, 해당 파일의 이름을 출력하는 명령어입니다. - 절대 경로 상의 디렉터리나 파일 이름에 문자열이 포함되면 출력 - 접근할 수 없는 파일은 출력이 안됨 - 리눅스 어딘가에 저장되어 있는 파일 목록 DB를 참조해 검색을 진행하여 속도가 매우 빠름 - updatedb 명령어를 실행해서 DB를 업데이트 해야함 - 기본적으로 상위 경로에 해당 파일명이 포함되면 모두 검색되어 -b 옵션을 통해 최상위 파일명이나 최상위 디렉토리명으로 검색 사용 방법 주요 옵션 find 명령어 find 명령어는.......

[Linux]리눅스 파일 시스템 관리(마운트, 파티션 관리, 볼륨 관리) [내부링크]

리눅스 파일 시스템 관리(마운트, 파티션 관리, 볼륨 관리) - 마운트(mount)란? - /etc/fstab 파일 - mount 명령어(마운트) - umount 명령어(마운트 해제) - 파티션(Partition)이란? - 파티션의 종류 - 파티션 관리도구 - parted 사용법 - 볼륨(Volumn)이란? - LVM 유틸리티 마운트(mount)란? 디스크에 프로그램과 데이터를 저장하기 위해서는 먼저 파팃견을 만들고 파티션에 파일 시스템을 만들어 주어야 합니다. 또 저장 장치를 사용하기 위해서는 전체 디렉터리 트리의 어딘가에 붙여야하는데, 이것을 마운트라고 합니다. 즉, 리눅스는 보조기억장치(HDD, FDD, CD-ROM 등)나 기타 외의 물리적인 장치를 사용하기 위해서는 파일 시스템으로 인.......

[JavaScript]Promise 사용법 총정리 [내부링크]

JavaScript Promise 총정리 - 프로미스(Promise)란 무엇인가? - 동기와 비동기의 차이점 - 프로미스(Promise)를 사용하는 이유 - 기존 비동기 함수 후속 처리 예시(콜백 이용) - 프로미스(Promise) 사용법 · 프로미스(Promise) 기본 골격 · 프로미스(Promise)의 3가지 상태(Status) · 프로미스(Promise) 동작 설명 · 여러 개의 프로미스를 순차적으로 실행하는 방법 · 여러 개의 프로미스가 모두 완료되었을 때 실행하는 방법 프로미스(Promise)란 무엇인가? 프로미스(Promise)는 자바스크립트 비동기 처리에 사용되는 객체입니다. 여기서 비동기 처리란 특정 코드의 연산이 끝날 때 까지 코드의 실행을 멈추지 않고, 순차적으로 다음 코드를 먼.......

[Linux]사용자 관련 파일 및 관련 명령어 총정리(su, sudo, useradd, passwd, chage, usermod, groupadd, gpasswd, .. 등) [내부링크]

Linux 사용자 관련 명령어 총정리 - 사용자 관리 - 사용자 계정 생성 절차 - 사용자 관련 파일 - 그룹 계정 - 그룹 계정 관련 파일 - su 명령어(사용자 전환) - sudo 명령어(다른 유저의 권한 사용) - useradd 명령어(사용자 생성) - passwd 명령어(비밀번호 지정) - chage 명령어(비밀번호 만기 정보 설정) - usermod 명령어(사용자 정보 수정) - userdel 명령어(사용자 삭제) - groupadd 명령어(그룹 생성) - gpasswd 명령어(그룹 관리) - groupmod(그룹 정보 수정) - groupdel(그룹 삭제) - groupmems(그룹 구성원 관리) - groups(사용자 그룹 확인) 사용자 관리 관리자 입장에서 사용자 계정 별로 접근 권한을 통제할 수 있습니다. - 리눅스.......

[CSS]CSS 변형(transform) 속성 총정리 [내부링크]

CSS 변형(transform) 속성 총정리 - CSS 변형(transform)이란? - 변형(transform) 관련 속성 - 2D 변형(transform) 함수 - 3D 변형(trnasform) 함수 - translateX 예시 CSS 변형(transform)이란? CSS3의 transform 속성으로 요소를 회전하거나 확대/축소 및 모양, 크기, 위치 등을 자유롭게 바꿀 수 있습니다. CSS3에서는 transform 속성을 사용하여 2D 변형(transform)과 3D 변형(transform)을 모두 제공합니다. - 제공 속성 : translate(이동), rotate(회전), scale(크기 변경), skew(기울임) 변형(transform) 관련 속성 2D 변형(transform) 함수 3D 변형(transform) 함수 translateX 예시 마우스 호버시 왼쪽에서 오른쪽으로 이동하는 예시 출.......

[CSS]CSS 전환(transition) 속성 총정리 [내부링크]

CSS 전환(transition) 속성 총정리 - CSS 전환(transition)이란? - 전환(transition) 관련 속성 - 전환(transition) 효과 지정 방법 예시 - 전환(transition) 사용 예시 CSS 전환(transition)이란? CSS3의 transition 속성으로 어떤 이벤트에 대해서 지정한 시간 내에 속성의 특정 상태가 다른 상태로 부드럽게 변화하는 효과를 줄 수 있습니다. - 스타일의 점진적인 변화 → 애니메이션과 같은 효과 부여 - 변형(transform) 속성과 함께 사용하여 이동 효과를 적용할 수 있음 전환(transition) 관련 속성 전환(transition) 효과 지정 방법 예시 전환(transition) 사용 예시 transition-property값을 width주고 마우스를 갖다대는 경우 height, w.......

[Spring]Spring JSON 데이터 받는 방법 총정리(JSON, JSONArray) [내부링크]

Spring json 데이터 받기 - JSON이란? - JSON 특징 - JSON 문법 - JSON 데이터 만들기 - Maven Dependency - Spring JSON 데이터 받기 참고해야 할 내용 - Jackson 라이브러리 : https://blog.naver.com/hj_kim97/222391370482 JSON이란? JSON은 JavaScript Object Notation의 약자로 쉽게 데이터를 교환하고 저장하기 위하여 만들어진 텍스트 기반의 데이터 교환 표준입니다. 이러한 JSON은 XML의 대안으로서 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 고안되었습니다. - 데이터 포맷, 단순히 데이터를 표시하는 표현 방법 - 경량의 DATA 교환 형식 JSON 특징 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용됩니다. 자바스크립트 객.......

[JSP]쿠키(Cookie) 생성, 변경, 삭제 [내부링크]

JSP 쿠키(Cookie) 생성, 변경, 삭제 - 쿠키(Cookie)란 무엇인가? - 쿠키(Cookie)의 구성요소 - 쿠키(Cookie)의 사용방법 - 쿠키(Cookie)의 용도 - 쿠키(Cookie) 클래스의 메소드(JSP) - 쿠키(Cookie)의 생성과 전송(JSP) - 쿠키(Cookie)의 값 읽기(JSP) - 쿠키(Cookie)의 값의 변경 및 삭제(JSP) - 쿠키(Cookie)의 도메인(JSP) 쿠키(Cookie)란 무엇인가? 쿠키(Cookie)란 ㄹ하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫습니다. - 임의 조각의 데이터로, 웹 브라우저에 의해 클라이언트 컴퓨터.......

[JSP]세션(Session) 사용하기 [내부링크]

JSP 세션(Session) 사용하기 - 세션(Session)이란 무엇인가? - 세션(Session)의 특징 - 세션(Session)의 동작 순서 - 세션(Session) 내장 객체(JSP) - 세션(Session) 클래스의 메소드(JSP) - 세션(Session) 속성 사용하기(JSP) - 세션(Session) 삭제하기(JSP) - 세션(Session)의 유효 시간 설정하기(JSP) - getSession() 메소드 주의점 세션(Session)이란 무엇인가? 사용자가 웹 브라우저를 통해 웹서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점까지, 같은 사용자로부터 오는 일련의 요청을 하나의 상태로 보고, 그 상태를 일정하게 유지하는 기술입니다. 쉽게 말해, 방문자가 웹 서버에 접속해있는 상태를 하나의 단위.......

[Microsoft Azure]리소스 그룹 및 가상머신 만들기 [내부링크]

Microsoft Azure 리소스 그룹 및 가상머신 만들기 - 리소스 그룹이란? - 리소스 그룹 생성하기 - 가상 머신이란? - Azure 가상 머신 시리즈 종류와 크기 - 가상 머신 생성하기 리소스 그룹이란? 리소스 그룹은 Azure 솔루션에 관련된 리소스를 보유하는 컨테이너입니다. 리소스 그룹에는 솔루션에 대한 모든 리소스 또는 그룹으로 관리하려는 해당 리소스만 포함될 수 있습니다. 사용자의 조직에 가장 적합한 내용에 따라 리소스 그룹에 리소스를 어떻게 할당할지 결정합니다. 일반적으로 쉽게 배포, 업데이트하고 그룹으로 삭제할 수 있도록 동일한 리소스 그룹에 대해 동일한 수명 주기를 공유하는 리소스를 추가합니다. - 영역을 구분하기 위.......

[Microsoft Azure]SQL 데이터베이스 만들기 [내부링크]

Azure SQL 데이터베이스 만들기 - SQL 데이터베이스 만들기 - SQL 데이터베이스 서버 접근하기 SQL 데이터베이스 만들기 1. Azure Portal에서 SQL 데이터베이스를 검색하고 클릭합니다. 2. 만들기 버튼을 클릭합니다. 3. SQL 데이터베이스 기본 탭을 설정합니다. 구독 : 청구 계정 리소스 그룹 : 리소스 그룹 데이터베이스 이름 : 계정 내에서만 중복되지 않으면 됩니다. 서버 : 데이터베이스를 사용하기 위한 서버(VM), 데이터베이스 서버용 서버 3-1. SQL 데이터베이스 서버 만들기 서버 이름 : 전세계에서 유니크한 이름을 사용 위치 : 서버 리전 위치 계정 암호 : 영문자 + 숫자 + 특수문자 형태로 입력합니다. 3-2. 데이터베이스 구성 변경.......

[Bootstrap]부트스트랩(Bootstrap) 개념 및 사용법 [내부링크]

부트스트랩(Bootstrap) 개념 및 사용법 - 부트스트랩(Bootstrap) 개요 - 부트스트랩(Bootstrap)이란? - 부트스트랩(Bootstrap) 적용 - 부트스트랩(Bootstrap) 사용하기 부트스트랩(Bootstrap) 개요 부트스트랩의 원래 이름은 Twitter Blueprint로 Mark Otto와 Jacob Thornton이 만들었습니다. 기존에 여러 인터페이스에 대응하기 위한 다양한 라이브러리들이 존재했지만 정형화되지 않아 유지, 보수에 어려움이 있었습니다. 트위터의 개발자였던 Mark Otto는 이를 통합하기 위해 부트스트랩을 만들었고 트위터의 다른 개발자들이 개발에 기여하기 시작했습니다. 부트스트랩이라는 이름은 2011년 8월 19일 오픈 소스가 발표되면서 지어졌습니다 - .......

[JSP]자바빈(JavaBean) 사용하기 [내부링크]

JSP 자바빈(JavaBean) 사용하기 - 자바빈(JavaBean)이란? - 자바빈(JavaBean) 설계 규약 - 자바빈(JavaBean) 관련 액션 태그(JSP) - 자바빈(JavaBean) 관련 액션 태그 처리 과정(JSP) - 자바빈(JavaBean) 사용 예제 자바빈(JavaBean).이란? JavaBean API Specification(자바빈 API 스펙)에 따라 작성된 사용자 정의 자바 클래스입니다. JSP 페이지의 디자인과 로직을 분리시키기 위해서 나온 자바 클래스의 설계 규약, 즉 표준입니다. - 자바빈 규약을 따르는 클래스 - JSP 페이지에서 사용할 데이터를 다루려는 목적 - DTO(Data Transfer Object)나 DAO(Data Access Object) 클래스의 객체 JSP 페이지에서 사용할 목적 - 스프링의 &#60;bean&#62;,.......

[자료구조]트리(Tree) [내부링크]

자료구조 트리(Tree) - 트리(Tree)의 정의 - 트리(Tree) 관련 용어 - 이진 트리(Binary Tree) - 이진 트리(Binary Tree)의 종류 - 이진 트리(Binary Tree) 구현 방법 - 이진 트리(Binary Tree) 순회 - 이진 트리(Binary Tree) 구현 트리(Tree)의 정의 트리(Tree)란 계층적인 자료를 표현하는데 이용되는 자료구조입니다. 트리는 정점(Node, 노드)과 선분(Branch, 가지)을 이용하여 사이클을 이루지 않도록 구성한 Graph의 특수한 형태입니다. - 데이터 사이의 계층 관계를 노드로 나타낸 자료구조 트리(Tree) 관련 용어 노드(Node) : 트리의 기본 요소로서 자료 항목과 다른 항목에 대한 가지(Branch)를 합친 것 - 트리의 구성요소 하나하나 루트.......

[Java]자바 JDBC 사용법(Statement, PreparedStatement) [내부링크]

자바(Java) JDBC 사용법 - 자바(Java) JDBC란? - 자바(Java) JDBC 사용 방법(Statement, PreparedStatement) - 이클립스에서 JDBC 사용하기 자바(Java) JDBC란? JDBC는 Java DataBase Connectivity의 약자로 Java 프로그램에서 관계형데이터베이스(RDBMS: Relational Database Management System)와 연동할 수 있도록 제공하는 표준 API입니다. RDBMS와 연동하려면 RDBMS 의 표준 질의어인 SQL을 프로그램 내에서 처리할 수 있어야 하는데 JDBC가 제공하는 API를 통해 간으하게 해줍니다. JDBC API는 RDBMS 제조사가 제공하는 JDBC 드라이버(Driver)를 통해 구현되기 때문에 특정 RDBMS와 연동하는 Java 프로그램을 작성하려면 해당 RDBMS 제조사.......

[MyBatis]java.sql.SQLException: 부적합한 열 유형: 1111 [내부링크]

에러 내용 java.sql.SQLException: 부적합한 열 유형: 1111 Caused by: org.apache.ibatis.type.TypeException: Error setting null for parameter #3 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111 발생 원인 MyBatis에서 parameterType으로 넘겨 바인드 변수로 사용하는 값 중에 NULL 이 존재할 때 발생 에러 내용에 Error setting null for parameter #3 with JdbcType은 3번째 해당하는 바인드 변수가 NULL 이라는 것을 확인할 수 있음. - insert나 update에서 parameter 값으로 사용하는 바인.......

[jQuery File Download]jQuery 파일 다운로드 플러그인 사용법 [내부링크]

jQuery File Download 공식사이트 : Jquery.fileDownload.js | johnculviner.com 깃헙 주소 : https://github.com/johnculviner/jquery.fileDownload 요구 사항 : jQuery 1.6 이상 파일 다운로드시 파일 다운로드 이후 콜백 처리를 쉽게 할 수 있는 플러그인 예를 들어 대용량 데이터를 조회하여 엑셀 파일을 다운로드를 하는 경우 속도가 오래 걸리기 때문에 사용자에게 progressbar를 보여주고 다운로드가 완료되었을 때 종료를 알려주어야 하는데 이때 완료 콜백 처리를 쉽게 구현할 수 있습니다. 사용 방법 1. Front 단에서 파일 다운로드 처리 생성 2. Back 단에서 Header에 쿠키 정의 Front 단(HTML, JS, ..) Back 단(java, ..) 출처 최고.......

[CSS]CSS 애니메이션(Animation) 속성 총정리 [내부링크]

CSS 애니메이션(Animation) 속성 총정리 - CSS 애니메이션(Animation)이란? - 키 프레임(keyframes) - 키 프레임(keyframes) 문법 - 애니메이션 관련 속성 - 애니메이션 예시(공튀기기) - 애니메이션 예시(로딩바) CSS 애니메이션(Animation)이란? 애니메이션(Animation) 효과는 HTML 요소에 적용되는 CSS 스타일을 다른 CSS 스타일로 부드럽게 변화시키는 효과입니다. 애니메이션은 애니메이션을 나타내는 CSS 스타일과 애니메이션의 sequence를 나타내는 복수의 키프레임(@keyframes)들로 이루어집니다. - 각 프레임을 연결하여 동작을 완성 키 프레임(keyframes) 애니메이션 효과를 사용하기 위해서는 키프레임을 이용하여 애니메이션의 중간.......

[Cloud Computing]클라우드 서비스 모델(IaaS, PaaS, SaaS) [내부링크]

클라우드 서비스 모델(IaaS, PaaS, SaaS) - 클라우드 서비스 모델 - 온프레미스 - IaaS(Infrastructure as a Service) - PaaS(Platform as a Service) - Saas(Software as a Service) 클라우드 서비스 모델 클라우드 컴퓨팅은 인터넷으로 가상화된 IT 리소스를 서비스로 제공하는 것을 의미합니다. 그리고 클라우드 컴퓨팅에서 가상화하여 서비스로 제공하는 대상은 서버, 플랫폼, 소프트웨어, .. 등이 있습니다. 클라우드 서비스 환경에 따라 4가지 모델로 나눌 수 있습니다. 쉽게 말해, 사용자가 얼마만큼 관리하고, 클라우드에서 제공받는가에 따라 [온프레미스, IaaS, PaaS, SaaS] 네 가지로 나눌 수 있습니다. 온프레미스 자세한 내용은 링.......

[Cloud Computing]서버 가상화 기술 정리(호스트, 하이퍼바이저, 컨테이너) [내부링크]

서버 가상화 기술 정리 - 가상화(Virtualization)란? - 호스트 가상화 방식 - 하이퍼 바이저 가상화 방식 - 컨테이너 가상화 방식 가상화(Virtualization)란? 가상화는 하드웨어에 종속된 리소스를 사용해 유용한 IT 서비스를 만들 수 있는 기술입니다. 쉽게 말해, 컴퓨터 안에 독립적인 컴퓨터를 만드는 것입니다. 가상화를 사용하는 주요한 목적 중 하나는 물리적인 리소스를 여러 사용자 또는 환경에 배포해서 제한된 리소스를 최대한 활용하기 위함입니다. 예를 들어 다음과 같이 각각 용도가 다른 3개의 물리 서버가 있다고 가정합니다. 하나는 메일 서버, 하나는 웹 서버, 하나는 내부 레거시 애플리케이션 실행 서버 각 서버는 잠재적인 실.......

[Cloud Computing]네트워크 가상화 기술 [내부링크]

네트워크 가상화 기술 - 네트워크 가상화 기술 - 네트워크 가상화의 장점 - VLAN (Virtual LAN) 가상화 - VPN (Virtual Private Network) - NVF (Network Functions Virtualization) - SDN (Software Defined Network) 네트워크 가상화 기술 네트워크 가상화(Network Virtualization)는 하나의 물리적 네트워크가 마치 여러 개의 다른 기종 프로토콜이 운영되는 논리적 오버레이 네트워크로 운용되는 것을 말합니다. 클라우드 컴퓨팅과 미래 인터넷에서 핵심기술로 대두되고 있으며, 인터넷에서 요구하는 가상화 기술에는 호스트 가상화, 링크 가상화, 라우터 가상화, 스위치 가상화 등이 있습니다. 네트워크 가상화의 장점 네트워크 리소스 보.......

[CSS]CSS 배경(background) 관련 속성 [내부링크]

CSS 배경(background) 관련 속성

[CSS]CSS 테두리(border) 및 아웃라인(outline) 관련 속성 [내부링크]

테두리(border) 및 아웃라인(outline) 관련 속성

[CSS]CSS 리스트(list) 및 테이블(table) 관련 속성 [내부링크]

CSS 리스트 및 테이블 관련 속성 사용 예시 리스트의 마커를 이미지로 사용하기 리스트의 마커를 특정 글자로 사용하기

[CSS]CSS 그라데이션(gradient) 속성 [내부링크]

CSS 그라데이션(gradient) 속성 - 그라데이션(gradient)이란? - 색상 진행 방향 - 선형(linear) 그라데이션 - 방사형(radial) 그라데이션 그라데이션(gradient)이란? 그라데이션(gradient)이란 둘 이상의 색 사이의 색상 표현을 부드럽게 전환해주는 효과를 의미합니다. - 두 개 이상의 색상 사이에서 색상의 점진적인 변화 - 선형 그라데이션 : linear-gradient(..) - 선형 그라데이션 반복 : repeating-linear-gradient(..) - 방사형 그라데이션 : radial-gradient(..) - 방사형 그라데이션 반복 : repeating-radial-gradient(..) 색상 진행 방향 선형(linear) 그라데이션 색상의 변화가 한 직선 방향으로 변하는 효과 - linear-gradient() - r.......

[자료구조]배열(Array) [내부링크]

자료구조 배열(Array) - 배열의 정의 - 배열의 추상 자료형 - 배열의 연산의 구현 - 1차원 배열 및 배열의 확장 - 희소행렬의 개념 배열의 정의 사전적 의미로 배열은 동일한 특성을 가지며 일정한 규칙에 따라 여러 요소가 나열되어 있는 데이터들의 집합입니다. 의미그대로 배열은 같은 형태를 지닌 데이터들이 동일한 크기의 순서를 갖고 나열되어 있는 집합입니다. 배열은 원소의 메인 메모리 공간에서의 물리적인 위치를 순서적으로 결정하는 특징이 있어 배열의 순서는 메모리 공간에서 저장되는 원소값의 물리적 순서입니다. 쉽게 말해, 물리적으로 보이는 배열의 인덱스 순서대로 실제 메모리에서도 같은 순서로 저장되어 있습니다. - 차.......

개발자로서 도움이 되는 글 모음 [내부링크]

키워드 : 개발지식, 기술스택, 스타트업, 취업, 면접, 조언, 동기부여, 자격증 #기술스택 #개발지식 복잡한 업무 코드 빠르게 분석하기 https://www.popit.kr/복잡한-업무-코드를-빠르게-분석하기/ 2019/12/09, 유영모 #기술스택 #스타트업 스타트업을 위한 기술 스택 http://www.codeok.net/스타트업을%20위한%20기술%20스택 2015/01/26, Youngrok Pak #취업 #면접 2년차 개발자가 이직을 하면서 배우고 느낀점 https://okky.kr/article/861866 2021/01/30, salsal #취업 #면접 비전공자, 상시 채용을 통해 네카라 신입으로 합격했습니다. https://okky.kr/article/800361 2020/10/21, 히알 #동기부여 #조언 흔하지 않고 좋은 웹 개발자가 되는.......

2021 한강나이트워크 42K 후기 [내부링크]

2021 한강나이트워크 42K 후기 - 한강나이트워크 신청 및 시작 - 한강나이트워크 기념품 - 한강나이트워크 대회 방식 - 한강나이트워크 42K 후기 한강나이트워크 신청 및 시작 공식 사이트 : 2021 한강나이트워크42K (nightwalk42k.co.kr) 2019년 한강나이트워크 25K를 했던 기억으로 작년에는 코로나로 인해 일정이 취소되었고, 이번 년도에 새로 시작하게 되어서 신청을 하게 되었습니다. 그간 운동을 하지 않았던 터라 25K를 신청할 지, 42K를 신청할 지 고민이 되었는데 걷기 마라톤이기도 하고 이왕 하는거 최선을 다해보자는 마음으로 42K를 신청하게 되었습니다. 신청 기간은 원래 6월 23일 부터 시작하여 9월 달에 시작하는 것으로 되어.......

[자료구조]큐(Queue) [내부링크]

자료구조 큐(Queue) - 큐의 정의 - 큐의 예시 - 사용 용어 - 큐의 추상 자료형 - 큐의 구현 - 선형 큐와 원형 큐 큐의 정의 큐(Queue)는 컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식을 말합니다. 영어 단어 queue는 표를 사러 일렬로 늘어선 사람들로 이루어진 줄을 말하기도 하며, 먼저 줄을 선 사람이 먼저 나갈 수 있는 상황을 생각하면 됩니다. - 나중에 집어 넣은 데이터가 먼저 나오는 스택과는 반대되는 개념 - 선입선출(FIFO, First In First Out) 큐의 예시 1. 택시를 타기 위해 서 있는 행렬 2. 병원의 접수대 3. 은행의 예금 인출기 4. 백화점의 계.......

[MyBatis]invalid comparison: java.util.ArrayList and java.lang.String 에러 [내부링크]

에러 내용 java.util.ArrayList and java.lang.String ### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.ArrayList and java.lang.String ### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.ArrayList and java.lang.String 발생 원인 MyBatis에서 사용하는 비교(if)문에서 배열(Array) 혹은 리스트(List) 객체를 문자열과 비교할 때 발생 발생 예시 해결 방안 배열(Array) 혹은 리스트(List) 객체를 문자열과 비교하지 않고 해당 객체의 크기를 비교 ex) &#60;if test&#x3D;&#x27;LIST.size !&#x3D; 0&#x27;&#62; 출처 사용자 Bulbasaur, https://055055.ti.......

[HTML]HTML 캔버스(Canvas) 총정리 [내부링크]

HTML 캔버스(Canvas) 총정리 HTML 캔버스(Canvas) 태그란? HTML 캔버스 사용하는 방법 HTML 캔버스 메서드 HTML 캔버스 속성 캔버스 메서드 사용 예시 HTML 캔버스(Canvas) 태그란? Canvas API는 JavaScript와 HTML &#60;canvas&#62; 엘리먼트를 통해 그래픽을 그리기위한 수단을 제공합니다. 무엇보다도 애니메이션, 게임 그래픽, 데이터 시각화, 사진 조작 및 실시간 비디오 처리를 위해 사용됩니다. - 별도의 프로그램 설치 없이 사용 가능 - 단순히 그림을 표현하는 기능 이외에 그림의 합성, 변환, 애니메이션과 같은ㄷ ㅏ양한 효과의 표현 가능 HTML 캔버스 사용하는 방법 1. HTML에 &#60;canvas&#62; 태그를 생성합니다. - canvas 요소를 사용.......

[HTML]HTML SVG 태그 총정리 [내부링크]

HTML SVG 태그 총정리 SVG란? SVG와 캔버스의 차이 SVG 요소 내에서 사용할 수 있는 도형 태그 SVG 요소 내에서 사용하는 속성 SVG 사용 예시 SVG란? Scalable Vector Graphics의 약자로 벡터 기반 그래픽을 XML 형식으로 정의하는 것을 의미합니다. - XML 기반의 2차원 벡터 그래픽을 위한 플랫폼 - 웹에서 사용하는 확장 가능한 벡터 그래픽 - XML, JPEG/PNG, DOM, CSS, XSL 등의 다른 표준을 기반/준수 - W3C에 의한 로열티가 없는 벤더 중립적인 공개 표준 SVG와 캔버스의 차이 SVG 사용법 1. SVG 태그를 이용하는 방법 - svg 요소를 이용하여 직접 HTML 페이지에 삽입 2. 별도의 소스 파일(*.svg)로 작성하는 방법 - iframe 요소나 a 요소로.......

[CSS]CSS 포지션(position) 속성 [내부링크]

CSS 포지션(position) - CSS 포지션(position) 속성이란? - 정적 위치(static position) 지정 방식 - 상대 위치(relative position) 지정 방식 - 절대 위치(absolute position) 지정 방식 - 고정 위치(fixed positioin) 지정 방식 - 요소안에서 사용하는 속성 CSS 포지션(position) 속성이란? HTML 요소에 사용되는 위치 설정 방식을 지정하는 속성입니다. CSS에서 요소의 위치를 결정하는 방식에는 다음과 같이 4가지 방식이 있습니다. - 정적 위치(static position) 지정 방식 - 상대 위치(relative position) 지정 방식 - 고정 위치(fixed positioin) 지정 방식 - 절대 위치(absolute position) 지정 방식 정적 위치(static position) 지정 방.......

[CentOS]CentOS 다운 및 설치하기(VMware 사용) [내부링크]

CentOS 설치하기 - CentOS - CentOS의 주요 기능 - CentOS 최소 사양 - CentOS 다운로드 - CentOS 설치하기(VMware) - CentOS 실행하기(VMware) 선행해야 할 내용 가상머신이란? : [Virtual Machine]가상머신(VM).. : 네이버블로그 (naver.com) VMware 다운로드 및 설치하기 : [VMware]VMware 다운로드 및 설치하기 : 네이버 블로그 (naver.com) CentOS 공식 홈페이지 : The CentOS Project CentOS란 Red Hat 엔터프라이즈 리눅스의 소스코드 기반으로 만들어진 무료 배포판입니다. Red Hat 리눅스가 엔터프라이즈 버전을 출시하고, 이것에 대한 업데이트, 기술 지원 및 품질 보증에 대해 연간 사용료를 지급하도록 하는 것에 반해, CentOS는 무.......

[자료구조]스택(Stack) [내부링크]

스택(Stack) 스택(Stack)이란? 스택 추상 자료형 스택의 구현 스택의 활용 예시 스택(Stack)이란? 스택은 나중에 들어온 것이 먼저 나가는 후입선출(LIFO, Last In First Out) 구조를 가진 자료 구조입니다. 쉽게 말해 스택(Stack)은 말 뜻 그대로 쌓아 올린다는 것을 의미하며, 차곡차곡 쌓아 올린 형태의 자료구조를 말합니다. - 가장 먼저 입력된 자료가 가장 나중에 출력 - 가장 나중에 입력된 자료거ㅏ 가장 먼저 출력 - 후입선출(LIFO, Last In First Out) 예를 들어 일상 생활에서 티슈를 생각할 수 있는데, 티슈는 먼저 저장된 것을 제일 마지막에 사용하게 되고, 가장 나중에 저장된 티슈를 먼저 사용하는 후입선출 구조라고 생각할 수.......

[HTML]HTML 시맨틱 태그(Semantic Tag) [내부링크]

HTML 시맨틱 태그(Semantic Tag) - HTML 시맨틱 태그란? - 시맨틱 태그를 사용하는 이유 - 시맨틱 태그의 종류 - 웹사이트 태그 구조 - 중요한 태그들(헷가리는 태그) HTML 시맨틱 태그란? Semantic이란 의미있는 혹은 의미의 라는 뜻으로, 뜻 그대로 표현 중심이 아닌 의미 있는 구조의 문서 작성을 위한 요소입니다. HTML5에 도입된 시맨틱 태그를 이용하여 개발자와 브라우저에게 의미있는 태그를 제공합니다. - 검색 엔진, 문서 해석시 등의 프로그램에 의한 문서 처리와 해석도 가능 시맨틱 태그를 사용하는 이유 1. SEO(Search Engine Optimization) - 검색엔진 최적화 검색 엔진이 검색을 수행할 때에는 HTML 내에 있는 태그를 분석합니다.......

[Cloud Computing]온프레미스(On-Premise) [내부링크]

온프레미스(On-Premise) - 온프레미스(On-Premise)란? - 다양한 서버의 종류와 기능 - 데이터 센터란? - 온프레미스 시스템 구축 단계 온프레미스(On-Premise)란? IT 서비스 제공에 요구되는 데이터 센터에 H/W 및 S/W 서비를 자체적으로 보유하고 운용하는 방식입니다. 즉, 자체적으로 보유한 전산실 서버에 직접 설치하여 운영하는 방식을 뜻합니다. 반대로 클라우드 방식의 서비스를 오프-프레미스(Off-Premise)라고 합니다. - 클라우드 컴퓨팅 기술이 나오기 전까지 기업의 인프라 구축의 일반적인 방식 - 개인 혹은 기업이 IT 서비스를 제공하기 위하여 서버 구축 다양한 서버의 종류와 기능 데이터 센터란? 위에 언급된 다양한 서버들을 한.......

[Microsoft Azure]학생용 계정 만들기 [내부링크]

Microsoft Azure 학생용 계정 만들기 - 학생용 계정 - 학생용 계정 만들기 학생용 계정 학생용 이메일 주소를 통해 인증을 받고 가입을 하는 경우 100USD의 크레딧을 제공받을 수 있습니다. 계정을 만들기 위해서는 우선 학교 홈페이지에서 학생용 메일 계정을 만들어야 합니다. 학생용 계정을 사용하는 경우 아래 서비스들을 제공받을 수 있습니다. 또한 학생용 계정을 만들기 위해서는 별도의 신용카드 정보가 필요하지 않기 때문에 과금 걱정을 하실 필요가 없습니다. 일반 계정에 경우 평가 기간이 끝나면 자동으로 유료로 전환이 되지만 학생용 계정은 카드 정보를 입력하지 않았기 때문에 자동으로 사용이 정지가 됩니다. 학생용 계정 만들.......

[Linux]쉘 변수(Shell Variables) [내부링크]

쉘 변수(Shell Variables) - 쉘 변수 - 환경 변수 - 변수 사용하기(쉘 변수, 환경 변수 만들기) - 자주 사용되는 환경 변수 쉘 변수 쉘도 단순한 프로그램으로, 다른 프로그램처럼 변수를 만들어 사용할 수 있습니다. - 현재 쉘에서만 사용이 가능하고 서브 쉘로는 전달되지 않는 지역변수로 만들어집니다. 환경 변수 현재 쉘뿐만 아니라 서브 쉘로도 사용할 수 있는 전역 변수로 만들어집니다. - 보통 변수 이름으로 대문자를 사용합니다. - 모든 환경 변수와 값을 출력하기 위해 printenv 명령을 사용할 수 있습니다. 변수 사용하기 1. 쉘 변수 만들기 - 공백이 포함되면 안됩니다. 2. 쉘 변수를 환경 변수로 만들기 3. 한번에 환경 변수 만들.......

[Linux]cd 명령어(디렉토리 이동) 및 절대경로, 상대경로 [내부링크]

cd 명령어 - cd 명령어 - 사용 방법 - 사용 예시 - 절대경로 및 상대경로 cd 명령어 CD는 Change Directory의 약자로 디렉토리의 경로를 이동할 때 사용하는 명령어입니다. 사용 방법 사용 예시 절대경로 및 상대경로 [1] 절대 경로 절대경로란 최상위 디렉토리 (/)부터 싲가해서 목표 디렉토리까지 가는 경로를 전부 기술하는 방식입니다. - 현재 위치에 상관없이 최상위 루트 디렉토리부터 하위로 이동하여 해당 디렉토리가 위치하는 곳 까지의 경로를 모두 기술합니다. 예를 들어, doran이라는 사용자 홈 디렉토리에 test라는 폴더로 이동하는 경우 아래와 같이 모두 기술합니다. - 현재 작업 디렉토리는 사용자 홈 디렉토리라고 가정합니다. .......

[Linux]파일 내용 확인하기(more, less, head, tail, cat 명령어 및 입출력 리다이렉션) [내부링크]

파일 내용 확인하기 - more 명령어 - less 명령어 - head 명령어 - tail 명령어 - cat 명령어 - 입출력 리다이렉션 특수 문자를 이용한 cat 명령어 more 명령어 파일의 내용을 화면 단위로 출력하는 명령어입니다. 왼쪽 하단에 화면에 출력된 내용이 전체의 몇 % 인지를 표시하며, Enter 키를 입력하면 한 줄씩 출력되고, Space bar를 입력하면 한 화면씩 출력됩니다. - 한 화면을 보여준 상태에서 멈춤 - Space Bar를 누르면 다음 화면으로 이동 - Enter를 누르면 한 라인씩 이동 - q를 누르면 종료 ※ 이 명령어는 위에서 아래 방향으로 출력되기 때문에 지나간 내용을 다시 볼 수 없는 단점이 있습니다. 사용 방법 옵션 조작 버튼 less 명령어.......

[HTML]HTML 색상을 표현하는 방법(색상명, RGB 색 모델, 16진수 색상값, HSL 색 모델) [내부링크]

HTML 색상을 표현하는 방법 - 색상명을 이용한 방식 - RGB 색 모델을 이용한 방식 - 16진수 색상값으로 표현 - HSL 색 모델을 이용한 방식 색상명을 이용한 방식 색상명에 해당하는 영어 단어를 직접 사용 - W3C에서 정의한 16개의 HTML 색상 이름은 다음과 같습니다. - 색상 이름은 대소문자를 구분하지 않습니다. - 현재 주요 브라우저들은 140개의 색상 이름을 모두 지원 RGB 색 모델을 이용한 방식 삼원색의 성분이 더해져서 색을 만드는 가산색 모델 - RGB 색상의 기본색(Red, Green, Blue)은 각각 0부터 255까지의 범위를 가집니다. - RGB 함수를 이용합니다. → rgb(R, G, B) : R, G, B의 각 값을 0 ~ 255 사이의 10진수로 표시 → rgb(R%.......

[VMware]VMware 다운로드 및 설치하기 [내부링크]

VMware 다운로드 및 설치하기 - VMware - 주인(Host)과 손님(Guest) - VMware의 장단점 - VMware의 작동 구조 - 가상 머신의 하드웨어 - VMware 다운로드 및 설치하기 - VMware 실행하기 선행해야 할 내용 가상머신(Virtual Machine)이란? : https://blog.naver.com/hj_kim97/222497427027 VMware VMware는 가상 머신 소프트웨어로 보통 하나의 PC를 가지고 여러 대의 PC가 있는 효과를 누리기 위해 사용되고 있습니다. 주인(Host)과 손님(Guest) VMware와 같은 가상 머신에서 가장 중요한 개념 중에 하나가 바로 Host(호스트)와 Guest(게스트)의 개념입니다. Host는 단어 그대로 주체가 되는 주인을 의미하며 Guest는 이러한 주인을 이용하는 손.......

[Microsoft Azure]Microsoft Azure란? [내부링크]

Microsoft Azure - 클라우드 서비스 - 클라우드 컴퓨팅의 보급 원인 - Microsoft Azure - Microsoft Azure 서비스 클라우드 서비스 클라우드 컴퓨팅은 IT 자원을 구매하거나 소유할 필요 없이 필요한 만큼 사용료를 주고 쓰는 서비스를 말합니다. 중앙 집중화된 대형 데이터 센터에서 서비스를 받고 소프트웨어나 프프로그램을 인터넷을 통해 자유롭게 빌려쓰는 방식입니다. - 클라우드 &#x3D; Cloud &#x3D; 구름 &#x3D; 구름은 형태가 보이지만 만질 수 없는 것처럼 클라우드 서비스도 존재하지만, 어딘가에 있는 가상공간을 빌려쓴다는 생각으로 자원을 빌려쓴다고 생각하시면 됩니다. 클라우드 컴퓨팅의 보급 원인 1. 서버의 유휴 리소스 활용.......

[코딩테스트]코딩테스트 사이트 모음 [내부링크]

국내 코드업 기초 100제 https://codeup.kr/ 구름레벨 https://level.goorm.io/ 해커링크 https://www.hackerrank.com/ 백준온라인저지 https://www.acmicpc.net/ 프로그래머스 https://programmers.co.kr/ 정올 http://www.jungol.co.kr/ 삼성 역량테스트 https://swexpertacademy.com/main/main.do 코더그라운드 https://codeground.org/ 코드업 https://codeup.kr/ 코딩도장 https://codingdojang.com/ 해외 해커링크 https://www.hackerrank.com/ 릿코드 https://leetcode.com/ 코딜리티 https://www.codility.com/ 코드포스 https://codeforces.com/ 탑코더 https://www.topcoder.com/ 긱스포긱스 https://geeksforgeeks.com/

[HTML]HTML 이미지맵(image map) 총정리 [내부링크]

HTML 이미지맵(image map) 이미지맵이란 한 이미지를 여러 개의 구역으로 나누어 링크를 거는 것 사용해야 하는 태그 1. 이미지 태그 : &#60;img src&#x3D;&#34;사진경로&#34; usemap&#x3D;&#34;#이미지맵&#34;/&#62; 2. 이미지 맵 태그 : &#60;map&#62; 3. 이미지 안에 구역을 나눌 태그 : &#60;area shape&#x3D;&#34;형태&#34; coords&#x3D;&#34;좌표값&#34; href&#x3D;&#34;링크&#34; target&#x3D;&#34;_blank&#34;/&#62; area 태그 사용 속성 값 shape : 이미지에 구역을 나눌 때 사용할 모양을 지정합니다. - rect : 사각형 - circle : 원 - poly : 다각형 coords : 모양에 따른 좌표를 지정합니다. - 사각형일 경우 : &#34;시작x좌.......

[Virtual Machine]가상머신(VM)이란? [내부링크]

가상화 기술 H/W를 S/W적으로 애플리케이션, 서버, 스토리지, 네트워크와 같은 컴퓨팅 리소스를 논리적으로 분할/통합하여 리소스의 이용률과 가용성을 높이는 기술입니다. CPU, GPU, 메모리, 스토리ㅣ지와 같은 물리적 리소스와 운영체제, 런타임 등 논리적 리소스를 가상화하여 소프트웨어 플랫폼의 역할을 합니다. - 물리적 IT 리소스를 가상의 IT 리소스로 전환 - 가상화 기술을 활용하여 하나의 서버로 여러 실행 환경 구성 - 물리적 리소스의 소유 비용을 감축 - 간편한 유지보수 가상 머신(Virtual Machine)이란? 가상 머신은 물리적 컴퓨터와 동일한 기능을 제공하는 소프트웨어 컴퓨터입니다. 가상 머신은 물리적 컴퓨터처럼 애플리케이.......

[Linux]리눅스 표준 디렉토리 구조 및 기능 [내부링크]

리눅스 표준 디렉토리 구조 리눅스의 디렉토리 구조는 전체적으로 트리(Tree) 구조를 가지며, 명령어의 성격과 내용 및 사용 권한 등에 따라 디렉토리로 구분되고 있습니다. 리눅스 파일 시스템 구조는 기본적인 구조를 제외하고는 사용자의 설정에 따라 달라질 수 있습니다. 하지만 리눅스의 디렉토리 구조는 파일 시스템 표준안(FSSTND, Linux File System Standard)을 기반으로 하는 것이 바람직합니다. - 대부분의 리눅스 배포판들은 기본 골격이 같음 루트 디렉토리 : / 마운트되는 모든 파일 시스템을 포함하는 디렉토리로, 파일 시스템에 존재하는 모든 파일의 조상이 되는 최상위 디렉토리입니다. 파일이나 디렉토리의 절대경로를 표기할.......

[AWS - EC2]AWS EC2 Java 설치 및 환경변수 설정 [내부링크]

AWS EC2 Java 설치 및 환경변수 설정 - 설치 가능한 Java 버전 조회 - Java 1.8 설치 - 설치 확인 - 환경변수 설정 선행해야할 내용 - AWS EC2 인스턴스 생성 : AWS, 로그의 개발일지 : 네이버 블로그 (naver.com) 설치 가능한 Java 버전 조회 : yum list Java 1.8 설치 : yum install 설치 확인 : java -version 환경변수 설정 1. 절대 경로 찾기 1-1. Java 위치 찾기 : which java 1-2. 절대 경로 찾기 : readlink -f /usr/bin/java 1-3. 절대 경로 복사 : Ctrl + Shift + C 2. 환경변수 등록하기 2-1. vi 편집기로 환경 변수 설정 파일 접근 : vi 파일명 2-2. 편집기 마지막으로 이동 : Shift + G 2-3. 수정 모드로 변경 : i 2-4. 환경 변수 내.......

[프로그래머스]Level1. 정수 제곱근 판별(Java) [내부링크]

프로그래머스 Level1. 정수 제곱근 판별 링크 : 코딩테스트 연습 - 정수 제곱근 판별 | 프로그래머스 (programmers.co.kr) 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. ※ 제한 조건 n은 1이상, 50000000000000 이하인 양의 정수입니다. 예시 답안 - 정수의 제곱은 1 -&#62; 4 -&#62; 9 -&#62; 16 -&#62; 25 -&#62; .. 로 현재값 + (3 + 2n) 으로 커짐 Math 메소드 이용 - Math.sqrt(int num) : 루트, 값의 제곱근 - ex) Math.sqrt(25) : 루트25 &#x3D; 5 .......

[프로그래머스]Level1. 정수 내림차순으로 배치하기(Java) [내부링크]

프로그래머스 Level1. 정수 제곱근 판별 링크 : https://programmers.co.kr/learn/courses/30/lessons/12933 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. ※ 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 예시 답안 - 숫자를 배열로 만들고 난 후, Arrays.sort() 메소드를 이용하여 오름차순 정렬 후 값을 반대로 가져옴 - 내림차순으로 할 경우 Arrays.sort(배열, Collections.reverseOrder());

[프로그래머스]Level1. 상위 N개 레코드(Oracle, MySQL) [내부링크]

프로그래머스 Level1. 상위 N개 레코드 링크 : https://programmers.co.kr/learn/courses/30/lessons/59405 문제 설명 예시 답안 MySQL : limit Oracle : rownum

[자료구조]자료구조의 개념(자료와 정보, 선택 기준, 특징, 분류) [내부링크]

자료구조의 개념 - 자료와 정보 - 자료구조가 필요한 이유 - 자료구조의 선택 기준 - 자료구조의 특징 - 자료구조의 분류 자료와 정보의 관계 자료 : 현실 세계에서 관찰이나 측정을 통해서 수집된 값(value)이나 사실(fact) 정보 : 어떤 상황에 대해서 적절한 의사결정(decision)을 할 수 있게 하는 지식(knowledge) 쉽게 말해, 자료는 처리되지 않은 데이터이고 정보는 자료가 사용될 수 있는 형태로 가공된 2차 처리 결과물이라고 할 수 있습니다. 자료 &#x3D; 도서관의 무수한 책 구조 &#x3D; 특정한 규칙과 방법에 따라 책장에 정리하는 방식 정보 &#x3D; 규칙에 따라 정리된 책 자료구조가 필요한 이유 데이터를 효율적으로 저장, 관리하여.......