전체 글

전체 글

    AWS 의 Elastic Beanstalk 이란?

    개요 Elastic Beanstalk 은 AWS 에서 제공하는 오케스트레이션 서비스이다. 앱 인프라 스트럭처의 배포, 스케일링, 관리를 자동화해준다. 앱과 서비스의 배포 및 관리 프로세스를 간소화하도록 설계됐다. Elastic Beanstalk 이란? 개발자가 인프라 및 배포 프로세스 관리 대신 애플리케이션 코드 작성에 집중할 수 있게 해주는 오케스트레이션 서비스 Java, .NET, PHP, Node.js 등 다양한 언어를 지원 용도 배포: 인프라 걱정 없이 AWS 에서 앱을 신속하게 배포하고 관리해야 하는 경우 확장 (Scaling): 수요에 따라 확장, 축소가 필요한 경우 리소스 관리: AWS 리소스를 보다 유연하게 제어하고 관리하려는 경우 간소화된 관리: 서버 및 인프라의 세부 정보를 직접 관리하..

    Orchestration Service (오케스트레이션 서비스) 란?

    오케스트레이션 서비스 (Orchestration Service) 란? 복잡한 컴퓨터 시스템, 미들웨어, 서비스의 배치, 조정 및 관리를 자동화하는 시스템을 말한다. 특정 비즈니스 혹은 기술 목표를 달성하기 위해 리소스와 서비스를 조정하고 관리하는 것이다. 주요 측면 작업 자동화: 앱 배포, 라이프사이클 관리, 리소스 스케일링, 장애 처리 같은 작업을 자동화한다. 워크플로우 관리: 앱 배포 및 유지 관리를 위한 워크플로우를 만들기 위한 일련의 작업을 정의하고 관리한다. 리소스 조정: 컴퓨팅 인스턴스, 스토리지 및 네트워킹 구성요소와 같은 다양한 리소스를 효율적으로 관리하고 조정한다. 확장성 및 탄력성 (Scalability and Elasticity): 수요에 따라 리소스를 동적으로 확장하여 성능을 유지하..

    다트 (Dart) 의 캐스케이드 연산자 (Cascade operator) 란?

    다트 (Dart) 캐스케이드 연산자 (Cascade operator) 란? .. 을 말한다. 동일한 객체에 대해 일련의 연산을 수행할 수 있다. 예제 코드 1 캐스케이드 연산자의 결과가 계속 Container 객체를 리턴해주기 때문에 아래와 같은 형식으로 값 할당이 가능하다. var container = Container() ..width = 200.0 ..height = 100.0 ..padding = EdgeInsets.all(8.0) ..alignment = Alignment.center ..color = Colors.blue ..child = Text('Hello World'); 예제 코드 2 var list = [] ..add('Apple') ..add('Ba..

    플러터(Flutter) 프로바이더(Provider) 라이브러리란?

    Provider 라이브러리란? 플러터에서 주로 쓰는 전역 상태 관리 솔루션 플러터의 반응형(Reactive) 특성과 잘 어울린다 주요 특징 단순함: 단순해서 중소규모 프로젝트와 초보자들이 사용하기에 적합하다. 효율성: 모델이 변경되면 해당 모델에 의존하는 위젯만 다시 빌드된다. 확장성: 단순하지만, 복잡한 애플리케이션에서도 사용할 수 있다. Flutter 와의 통합: BuildContext 와 상속 위젯(InheritedWidget) 같은 개념을 사용해 플러터 자체 상태 관리 방식과 조화롭게 작동한다. 작동 방식 Provider 생성: 상태를 저장할 프로바이더를 생성 데이터 액세스: 위젯은 컨텍스트를 사용하여 프로바이더가 보유한 상태/데이터에 액세스할 수 있다. 보통 Provider.of(context)..

    Dart 에서 CopyWith 메서드를 쓰는 이유

    Dart 언어에서 copyWith() 메서드는 왜 쓰는 걸까? Dart 언어는 현대 언어로 불변을 통한 코드 안정성을 지향한다. 불변 객체는 말그대로 객체 내부 멤버 값이 변하면 안된다. 객체 내부 멤버 값이 변할 것 같으면 아예 새 객체를 생성한다. 새 객체를 생성하기 위한 수단이 copyWith() 이다. 인자로 새로 받지 않은 값은 기존의 값을 그대로 유지하고 인자로 새로 받은 값은 새로 받은 값으로 업데이트해준다. 예제 코드 id, content, date 중 새로 받은 값만 업데이트된 새 객체를 생성해 반환한다. Post copyWith({ String? id, String? content, DateTime? date, }) { return Post( id: id ?? this.id, conte..

    Dart 에서 import hide 이용하기

    Dart 에서 hide 로 중복 숨기기 패키지를 import 해서 쓰다보면, 기존에 정의했던 클래스 이름과 겹치는 경우가 종종 있다. 자바에서는 앞에 어느 패키지인지 명시하는 방식을 많이 쓴다. ex) java.util.List 다트에서는 hide 를 통해 해당 패키지의 특정 클래스를 사용하지 않는다면 숨길 수 있다. import 'pacakage:drift/drift.dart' hide Column; // Widget 의 Column 과 이름이 겹치니 숨기기 이렇게 겹치는 이름을 hide 를 통해 숨긴다면, 같은 클래스 이름을 쓰는 라이브러리를 임포트했음에도 불편함 없이 Column 클래스를 이용할 수 있다.

    Dart 의 Null-safe 언어적 특성

    null-safe 언어란 객체를 선언하면 기본적으로 null 을 넣을 수 없다. 문법적으로 지정을 해줘야지만 null 값을 가질 수 있게 된다. 이를테면, int number; 는 null 이 가능하다는 ? 키워드 표기 없이 초기화를 하지 않았기 때문에 유효하지 않다. int? number; 는 유효하다. 이러한 null-safe 언어의 특성 때문에 null-safe 가 아닌 언어를 쓰던 사람들에게는 낯선 ? 나 ! 같은 연산자가 매우 자주 쓰인다. 자주 쓰이는 연산자 ? 연산자 ? 연산자는 위에서도 언급했는데 어떤 변수에 null 이 들어갈 수도 있음을 의미한다. int? number; // null 가능 int number; // null 불가능 ! 연산자 ! 연산자는 변수가 null 이 아닌 것으로..

    플러터(Flutter) 에서 자주 쓰는 GetIt 패키지란?

    Get it 라이브러리란? Dart 언어에서 의존성 주입을 위해 사용하는 도구이다. 스프링의 IoC 컨테이너와 다르게 서비스 로케이터로 구현되었다고 한다. 닷넷의 서비스 로케이터 스플랫을 Dart 로 포팅한 것이라고 한다. 서비스 로케이터 패턴이란? 서비스나 의존성을 get_it 에 수동으로 등록하고 필요할 때 코드의 어느 위치에서나 검색할 수 있다. 인스턴스를 쉽게 등록하고 사용할 수 있다. 등록 유형 Factory: 요청될 때마다 새 인스턴스가 생성되도록 등록한다. Singleton: 매번 1개의 동일한 인스턴스를 반환한다. Lazy Singleton: Singleton 과 유사하지만, 처음 호출 때 인스턴스를 생성한다. 특징 비동기 지원: 비동기 팩토리 함수를 지원하여 인스턴스를 생성하는 동안 비동..

    플러터(Flutter) 의 글로벌 키(GlobalKey) 클래스란?

    플러터의 GlobalKey 란? 전체 앱에서 고유한 키이다. 전체 앱에서 위젯을 고유하게 식별하는 데 사용된다. 위젯 트리 전체에서 보존해야 하는 위젯의 상태를 유지하는 것이 목적이다. 상태 보존 GlobalKey 를 사용하면 위젯 트리에서 위젯을 이동해도 연결된 위젯의 상태가 유지된다. 원래 위젯 트리의 일부를 재빌드하면 해당 트리의 위젯 상태가 손실된다. 위젯 트리 전체 액세스 GlobalKey 를 사용하면 앱 어느곳에서나 위젯에 액세스 가능하다. 앱의 다른 부분에서 위젯의 상태나 기능에 액세스해야 하는 경우 유용하다. 고유 식별자 GlobalKey 는 앱 전체에서 고유하다. 사용 사례 앱의 다른부분에서 위젯의 상태에 액세스 위젯 트리 내에서 위젯이 이동할 때 위젯의 상태 유지 ex. 목록 위젯이 다..

    스프링 시큐리티에서 Authority 와 Role 의 차이는?

    스프링 시큐리티에서 Authority 와 Role 의 차이 스프링 시큐리티에서 Role 과 Authority 는 얼핏 보기에 같아 보이지만 서로 다른 개념이다. Authority (권한) '권한' 이라고 해석된다. 세분화된 접근 권한을 이야기한다. ex. 쓰기 권한, 읽기 권한, 삭제 권한 등이 있다. 역할(Role) 이나 기준에 따라 부여된다. 표현: 문자열로 하며 특정 접두사나 형식이 없는 편이다. 유연성: 역할 (Role) 만으로는 충분한 제어가 어려운 복잡한 시스템에서 유용하다. Role (역할) 권한 보다 높은 수준에 있는 권한 그룹이다. 책임과 권한의 집합을 나타낸다. ex. 사용자, 관리자 같은 역할이 있다. 여러 권한을 하나의 레이블로 그룹화하는데 사용된다. 일련의 권한을 한..

    플러터의 Drift 라이브러리(플러그인) 이란?

    Drift 라이브러리란? Flutter 에서 사용하는 ORM이다. 사용 방법 model 생성 RDB 에서 테이블을 정의하는 것과 동치인 코드이다. 마지막에 () 를 한번 더 불러 정의의 끝을 명시한다. import 'package:drift/drift.dart'; class Schedule extends Table { IntColumn get id => integer().autoIncrement()(); // Primary key, 정수, 열 TextColumn get content => text()(); DateTimeColumn get date => dateTime()(); IntColumn get startTime => integer()(); IntColumn get endTime =..

    플러터 (Flutter) 의 initializeDateFormatting() 메서드의 역할과 사용법

    initializeDateFormatting() 메서드란? 날짜/시간 서식 지정 등 국제화 및 로컬라이제이션에 사용되는 intl 패키지에서 제공하는 메서드다. Locale 에 따른 날짜와 시간에 대한 포맷팅을 세팅하는 역할을 한다. 어떻게 동작하는가? 날짜 서식 지정 메서드를 호출하기 전에 적어도 하나의 Locale 에 대해 이 함수를 호출해야 한다. 지정한 Locale 에 따라 날짜 서식 패턴을 초기화한다. 지정하지 않으면, 장치의 기본 Locale 을 사용한다. 지정된 Locale 규칙에 따라 날짜 및 시간 서식을 지정하는데 필요한 데이터를 로드한다. 월, 요일, 일반적인 시간 및 날짜 형식이 포함된다. 주석에 아래와 같이 써져있다. This should be called for at least on..

반응형