전체 글 39

[Spring] Spring Security - 1

이번 시간에는 Spring Security 에 대해서 자세하게 알아보는 시간을 가져보도록 하겠습니다.지금부터 서술될 내용들은 https://docs.spring.io/spring-security/reference/index.html 문서를 번역 및 첨언한 것들입니다.개요Spring Security는 인증, 인가 및 일반적인 공격으로부터의 보호를 제공하는 프레임워크입니다. Spring Security는 명령형(Imperative) 애플리케이션과 반응형(Reactive) 애플리케이션 모두를 안전하게 보호하는데 뛰어난 지원을 제공하며, Spring 기반 애플리케이션 보안의 사실상 표준으로 자리잡고 있습니다. Spring Security는 애플리케이션의 보안을 강화하기 위해 다양한 기능을 제공합니다. 여기에는 ..

Spring 2024.09.03

[Spring] Spring Framework Overview - 2

지난 시간에 이어서 IoC Container 관련 내용들을 마무리지어보겠습니다.지금부터 서술될 내용들은 전부 스프링 공식문서(https://docs.spring.io/spring-framework/reference/overview.html) 에서 발췌된 것임을 알립니다.Customizing the Nature of a Bean in SpringSpring 프레임워크는 빈의 동작을 사용자 정의할 수 있는 다양한 인터페이스와 방법들을 제공합니다. 이러한 인터페이스와 방법들을 사용하면 빈의 생명 주기(lifecycle)를 제어하고, 특정 이벤트가 발생했을 때 맞춤형 작업을 수행할 수 있습니다. 이 섹션에서는 생명 주기 콜백과 Aware 인터페이스에 대해 설명합니다. Lifecycle Callbacks (생명 ..

Spring 2024.08.22

[Spring] Spring Framework Overview - 1

이번 시간에는 스프링 프레임워크의 기본적인 컨셉과 기능에 대해서 알아보도록 하겠습니다.지금부터 서술될 내용들은 전부 스프링 공식문서(https://docs.spring.io/spring-framework/reference/overview.html) 에서 발췌된 것임을 알립니다.개요스프링은 자바 엔터프라이즈 애플리케이션을 쉽게 만들 수 있게 해주는 프레임워크입니다. 자바 언어를 엔터프라이즈 환경에서 활용할 수 있도록 필요한 모든 것을 제공하며, JVM 기반의 대안 언어로서 Groovy 와 Kotlin 도 지원합니다. 스프링 프레임워크 6.0 버전부터는 Java 17 이상이 필요합니다. 스프링이 자바 엔터프라이즈 애플리케이션을 쉽게 만들 수 있는 이유1. 의존성 주입(Dependency Injection, ..

Spring 2024.08.21

[Architecture] 다양한 아키텍처들

이번 시간에는 다양한 아키텍처 패턴에 대해서 알아보는 시간을 가져보겠습니다. Layered Architecture소프트웨어 시스템을 여러 계층(Layer) 으로 나누어 설계하는 아키텍처 패턴입니다. 각 계층은 특정한 역할과 책임을 가지며, 상위 계층은 하위 계층의 기능을 이용하여 동작합니다. 이 아키텍처는 시스템의 복잡성을 관리하고 유지 보수를 용이하게 하기 위해 자주 사용됩니다. 기본 개념레이어드 아키텍처는 시스템을 여러 개의 계층으로 분리하여 설계하는 방식입니다. 이 계층들은 일반적으로 다음과 같은 주요 기능에 따라 나누어집니다.Presentation LayerApplication Layer 혹은 Service LayerDomain Layer 혹은 Business Logic LayerData Acce..

Clean Architecture 2024.08.15

[Kotlin] Asynchronous Programming Techniques - 2

지난 시간에 이어서 코틀린의 비동기 프로그래밍 기술에 대해서 알아보겠습니다.Asynchronous Flow코틀린 플로우는 비동기적으로 여러 값을 반환하기 위한 방법을 제공합니다. 이는 컬렉션과 시퀀스를 사용하는 방법과 유사하지만, 플로우는 비동기적으로 값을 계산하고 반환할 수 있다는 점에서 차이가 있습니다. Representing Mutiple Values코틀린에서 여러 값을 표현하는 기본적인 방법은 컬렉션을 사용하는 것입니다. 예를 들어, 세 개의 숫자를 포함하는 리스트를 반환하는 간단한 함수는 다음과 같습니다.fun simple(): List = listOf(1, 2, 3)fun main() { simple().forEach { value -> println(value) } }// 출력 결과12..

Kotlin 2024.08.07

[Kotlin] Asynchronous Programming Techniques - 1

Asynchronous Programming Techniques비동기 프로그래밍은 응용 프로그램이 차단되지 않도록 하는 데 중요한 역할을 합니다. 이는 데스크탑, 모바일 또는 서버 측 응용 프로그램을 개발할 때 사용자 대기 시간을 줄이거나 병목 현상을 방지하여 애플리케이션의 확장을 방해하지 않도록 하는 데 필수적입니다. 코틀린에서는 여러 가지 비동기 프로그래밍 기법을 지원합니다. Threading스레드는 가장 널리 알려진 비동기 프로그래밍 접근 방식입니다. 스레드를 사용하면 메인 스레드의 차단을 방지할 수 있습니다. 예를 들어, 오래 실행되는 작업을 별도의 스레드에서 실행하여 UI 스레드의 차단을 피할 수 있습니다.fun postItem(item: Item) { val token = prepareP..

Kotlin 2024.08.05

[Kotlin] Types

개요이번 시간에는 코틀린의 타입에 대해서 알아보겠습니다.Basic Types코틀린은 기본 타입을 객체로 취급합니다. Java 와는 다르게 모든 것이 객체입니다.Numbers Integer Types코틀린은 다양한 크기의 정수 타입을 제공합니다. 각 타입은 고정된 크기와 범위를 가지고 있습니다.Byte크기: 8비트범위: -128 ~ 127val byteValue: Byte = 1Short크기: 16비트범위: -32,768 ~ 32,767val shortValue: Short = 10Int크기: 32비트범위: -2^31 ~ 2^31-1val intValue: Int = 100Long크기: 64비트범위: -2^63 ~ 2^63-1정수 리터럴은 기본적으로 Int 타입입니다. 더 큰 숫자를 표현하기 위해 Long..

Kotlin 2024.08.01

[Kotlin] Basic Syntax

지난 시간에는 코틀린이라고 하는 프로그래밍 언어가 가지고 있는 특성 위주로 공부해보았습니다. 이번 시간에는 코틀린에서 사용하는 기본적인 문법에 대해서 깊게 파고드는 시간 가져보겠습니다. Package Definition and Imports패키지 선언은 소스 파일의 최상단에 위치해야 합니다.package my.demoimport kotlin.text.*// ... 파일 디렉터리와 패키지를 일치시킬 필요는 없습니다. 소스 파일은 파일 시스템에 임의로 배치할 수 있습니다. Packages and Imports소스 파일은 패키지 선언과 같은 레벨에서 시작할 수 있습니다. 다음 예제를 참고해주세요.package org.examplefun printMessage() { /*...*/ }class Message {..

Kotlin 2024.07.31

[Kotlin] 언어 소개

https://kotlinlang.org/docs/getting-started.html개요이번 시간에는 코틀린이라고 하는 언어의 기본적인 특징에 대해서 알아보겠습니다.소개코틀린은 Java, Scala, C# 및 Groovy 를 포함한 여러 프로그래밍 언어에서 영감을 받았습니다. 코틀린의 주요 아이디어 중 하나는 실용적이라는 것입니다. 즉, 일상적인 개발에 유용한 프로그래밍 언어로써, 기능과 도구를 통해 사용자들이 작업을 완료할 수 있도록 돕는다는 것입니다. 따라서 많은 설계 결정이 코틀린 사용자에게 얼마나 유익한지에 따라 영향을 받았습니다. 코틀린은 멀티플랫폼, 정적 타입, 범용 프로그래밍 언어입니다. 현재 1.9 버전 기준으로 다음 플랫폼에 대한 컴파일을 지원합니다.1. JVM (Java Virtual..

Kotlin 2024.07.21

[Database] PostgreSQL - Transaction

이번 시간에는 PostgreSQL 에서 트랜젝션이 어떻게 동작하고 어떠한 특성을 가지고 있는지 알아보겠습니다. 개요트랜잭션은 BEGIN 혹은 START TRANSACTION 을 사용하여 명시적으로 생성하고 COMMIT 혹은 ROLLBACK 을 사용하여 종료할 수 있습니다. 명시적 트랜잭션 외부의  SQL 문은 자동으로 단일 문 트랜잭션을 사용합니다. 모든 트랜잭션은 백엔드 ID와 각 백엔드에 로컬로 순차적으로 할당된 번호, 즉 localXID 로 구성된 고유한 VirtualTransactionId 로 식별됩니다. 예를 들어, 가상 트랜잭션 ID 4/12532 의 백엔드 ID 는 4이고 localXID 는 12532 입니다. PostgreSQL 클러스터 내의 모든 데이터베이스에서 사용하는 글로벌 카운터에서..

Database 2024.07.18