전체 글

전체 글

    TS001. 자바스크립트 -> 타입스크립트 변경 시 이점

    자바스크립트 (동적 타입 언어) 의 한계 자바스크립트는 동적 타입 언어라 태생적 한계가 몇가지 있다. 런타임 타입 오류 함수의 매개변수로 의도치 않은 타입이 들어온다고 해도 런타임에 알 수 있다. 아래의 코드와 같이 무언가를 더하는 add() 라는 함수가 있다면, 들어오는 타입에 따라 반환 결과가 완전히 달라진다. MDN Plus 연산자 스펙 에 따라 문자열과 숫자가 + 연산자를 만나면, 숫자 타입의 매개변수는 "default" 를 힌트로 사용하여 형변환되어 문자가 된다. function add(a, b) { return a + b; } add(1, 2); add(1, "2"); // coersion 발생 아래와 같이 타입 체크를 런타임에 해줄 수 있지만, 말 그대로 런타임에 타입 체크를 하는 것이기 때..

    타입스크립트 설치 후 tsc 명령어가 실행되지 않는다면?

    tsc 명령어가 실행되지 않을 때 타입스크립트 설치 후 tsc 명령어가 실행되지 않는 경우가 있다. ex) tsc --version 이 때, 에러가 UnauthorizedAccess 라면, Powershell 접속 후 Set-ExecutionPolicy Unrestricted 명령어를 실행하여 해결할 수 있다. 명령어의 의미 실행 정책을 설정을 변경하는데 쓰인다. PowerShell 이 스크립트를 실행하고 보안을 구성하는 방법을 결정한다. Set-ExecutionPolicy 뒤에 어떤 타입이 오냐에 따라 보안 설정이 변경된다. Restricted: 스크립트를 실행할 수 없음 AllSigned: 신뢰할 수 있는 게시자가 서명한 스크립트만 실행 가능 RemoteSigned: 다운로드한 스크립트는 신뢰할 수 ..

    안드로이드 스튜디오 에뮬레이터 Location 탭 흰화면만 뜰 때

    안드로이드 스튜디오 에뮬레이터 Location 탭 흰화면만 뜰 때 힌트 링크 SDK 플랫폼이랑 에뮬레이터 버전을 업데이트 해보라고 함 업데이트 하려면 Settings 들어가서 update 검색해보면 나옴

    Elastic Network Adapter (ENA) 란?

    Elastic Network Adapter (ENA) 란? EC2(Elastic Compute Cloud) 서비스에 고성능 네트워크 기능을 제공하는 네트워크 인터페이스다. AWS 의 최신 가상화 컴퓨팅 환경에 특화되어 설계됐다. 주요 특징 높은 처리량과 짧은 지연 시간 (High Throughput and Low Latency): 더 높은 대역폭(bandwidth), 낮은 지연 시간(lower latency), 더 많은 패킷 처리를 지원한다. 향상된 네트워킹 (Enhanced Networking): 기존 가상화 네트워킹 스택 대비 더 높은 성능과 패킷 처리 일관성을 제공 확장성 및 유연성 (Scalability and Flexibility): 인스턴스 유형의 대역폭에 따라 자동으로 확장됨. 강력한 EC2..

    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 과 유사하지만, 처음 호출 때 인스턴스를 생성한다. 특징 비동기 지원: 비동기 팩토리 함수를 지원하여 인스턴스를 생성하는 동안 비동..