전체 글 79

[TS] Type Guard 와 as 키워드

TypeScript를 사용하다보면 유니온 타입(|) 을 자주 만나게 됩니다. 유니온 타입은 여러 타입이 혼합된 경우를 의미하는데, 코드의 안전성을 높여주지만, 다양한 타입이 섞여 있으면 원하는 기능을 작성하기 어려울 수 있습니다. 이때 타입 가드(type guard)를 사용하면 특정 타입을 확인하고 좁힐 수 있어, 더 안전한 코드를 작성할 수 있습니다.타입 가드(Type Guard)란?타입 가드(type guard)는 특정 조건을 통해 유니온 타입을 특정 타입으로 좁히는 방법입니다. 이를 통해 TypeScript는 조건문 내부에서 해당 타입을 안전하게 사용할 수 있게 도와줍니다. in 연산자를 활용한 타입가드 예시type Dog = { bark: () => void };type Cat = { meow: ..

[Airflow] Python Operator로 외부 모듈을 Import하는 방법

1. Python Operator와 모듈 경로 이해하기Airflow에서 PythonOperator를 사용해 작업을 정의할 때, 외부 함수가 필요하면 해당 모듈을 DAG 내에서 import할 수 있습니다. 이때 import 경로를 정확히 지정하는 것이 중요합니다.Python 경로 설정 기본 원칙실행 중인 Python 파일과 동일한 디렉토리에 있는 모듈은 자동으로 import됩니다.pip로 설치한 라이브러리들은 자동으로 sys.path에 포함됩니다.sys.path 변수에 경로를 추가해, Python이 모듈을 찾을 수 있도록 설정할 수 있습니다.Airflow의 기본 sys.path 구성Airflow는 dags와 plugins 폴더를 자동으로 sys.path에 포함합니다. 따라서 이 두 폴더에 외부 모듈을 배치..

MLOps/Airflow 2024.10.30

[Airflow]Python Operator

Airflow의 python operator는 파이썬 함수를 직접적으로 실행할 수 있도록 해주는 오퍼레이터이다.이를 통해 특정 로직을 처리하거나 데이터를 가공하는 파이썬 함수를 작성한 뒤, ETL 파이프라인을 통해 작업을 간편하게 실행할 수 있다.PythonOperator 예제1. Airflow DAG 설정from airflow import DAGfrom airflow.operators.python_operator import PythonOperatorfrom datetime import datetime# 간단한 Python 함수 정의def my_python_function(): print("Hello from Python Operator!")# Airflow DAG 정의with DAG( 'p..

MLOps/Airflow 2024.10.26

[JS] every 메소드로 객체 속 값 비교하기

JavaScript에서 배열이나 객체의 값을 비교할 때 every 메소드는 아주 유용하다. 이 메소드는 배열의 모든 요소가 주어진 조건을 만족하는지 확인해주는데, true나 false를 반환하는 게 특징이다. 객체의 속성값을 비교할 때도 이를 잘 활용하면 깔끔하게 비교 작업을 처리할 수 있다.every 메소드 every 메소드는 배열의 모든 요소가 특정 조건을 만족하는지 확인할 때 사용된다. 모든 요소가 조건을 만족하면 true, 하나라도 만족하지 않으면 false를 반환한다.const numbers = [2, 4, 6, 8];const allEven = numbers.every(num => num % 2 === 0);console.log(allEven); // true위 코드에서는 배열 numbers의..

[TS] interface와 type 비교 및 상속, 그리고 Omit과 Pick 활용

TypeScript를 사용하다 보면 객체의 구조를 정의할 때 가장 자주 사용하는 것이 바로 interface와 type입니다. 이 둘은 매우 유사하지만, 용도와 사용 방식에서 미묘한 차이가 있습니다. 이번 글에서는 interface와 type의 차이를 살펴보고, 어떻게 상속받거나 확장할 수 있는지 알아보겠습니다. 또한, Omit과 Pick 같은 유틸리티 타입을 통해 좀 더 유연하게 타입을 관리하는 방법을 배워보겠습니다.1. interface와 type의 차이interface란?interface는 주로 객체의 구조를 정의할 때 사용합니다. 특히 객체 지향 프로그래밍 스타일에 익숙하다면, 상속을 통해 인터페이스를 확장하는 방식이 매우 자연스러울 것입니다.interface Person { name: stri..

[Angular] ngOnChanges() 훅 제대로 이해하기

Angular는 컴포넌트 간의 상호작용을 효과적으로 관리하기 위해 다양한 생명주기 훅(Lifecycle Hook)을 제공한다. 그 중 하나가 바로 ngOnChanges()인데, 이 훅은 @Input() 속성 값이 변경될 때마다 호출되며, 컴포넌트가 부모로부터 전달받은 데이터가 변했을 때 적절한 처리를 할 수 있도록 도와준다.ngOnChanges()란?ngOnChanges()는 Angular 컴포넌트의 생명주기 훅 중 가장 먼저 실행되는 메서드이다. 이 훅은 @Input() 데코레이터로 부모 컴포넌트로부터 전달받은 값이 변경될 때마다 호출된다. 변경된 값뿐만 아니라 이전 값도 확인할 수 있어, 값이 변할 때마다 원하는 로직을 수행할 수 있다.ngOnChanges()가 호출될 때ngOnChanges()는 다..

FE/Angular 2024.10.19

[Angular] @Input()과 @Output()

Angular를 사용하다 보면 부모 컴포넌트와 자식 컴포넌트 간의 데이터 통신이 필수적이다. 이때 중요한 두 가지 데코레이터가 바로 @Input()과 @Output()이다. 이 글에서 각각의 역할과 사용법을 예시를 통해 쉽게 설명하려고 한다.@Input() – 부모에서 자식으로 데이터 전달@Input()은 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달할 때 사용한다. 예를 들어, 부모 컴포넌트에서 자식 컴포넌트에 텍스트 메시지나 객체와 같은 데이터를 보내고 싶을 때 유용하다.@Input() 사용 예시1. 부모 컴포넌트 (ParentComponent)부모 컴포넌트에서 자식 컴포넌트에 메시지를 전달하고자 한다.부모 컴포넌트// parent.component.tsimport { Component } from..

FE/Angular 2024.10.18

[JS] Prototype과 __proto__

JavaScript를 사용하면서 한 번쯤 들어봤을 프로토타입(prototype)과 __proto__. 이 둘은 JavaScript의 객체지향 프로그래밍에서 매우 중요한 개념이지만, 처음 접할 때는 다소 혼란스러울 수 있다. 이번 글에서는 ES6 문법을 바탕으로 이 개념들을 쉽게 이해할 수 있도록 설명하려고 한다.1. Prototype의 역할JavaScript는 프로토타입 기반 상속을 사용한다. 즉, 각 객체는 다른 객체로부터 속성이나 메서드를 상속받을 수 있는데, 이때 사용되는 것이 바로 prototype이다. 모든 함수(클래스 포함)는 생성될 때 prototype 객체를 가지고 있으며, 이 객체에 있는 메서드와 속성을 다른 객체들이 공유하게 된다.class A { constructor() { t..

[Angular] EventEmitter

Angular에서는 컴포넌트 간에 데이터를 주고받을 때, 주로 부모-자식 관계를 활용한다. 그중에서 자식 컴포넌트에서 부모 컴포넌트로 이벤트를 전달할 때 사용하는 것이 바로 @Output() 데코레이터와 EventEmitter이다.1. 자식 컴포넌트에서 EventEmitter 선언먼저, 자식 컴포넌트에서 @Output() 데코레이터로 이벤트를 선언한다. 이 이벤트는 부모 컴포넌트에 전달되어 특정 작업을 실행하게 만든다. 예를 들어, 자식 컴포넌트에서 버튼을 클릭했을 때 부모에게 그 정보를 전달하고 싶을 때 사용할 수 있다.import { Component, Output, EventEmitter } from '@angular/core';@Component({ selector: 'app-child', t..

FE/Angular 2024.10.16

정보처리기사 실기 3회 모의고사 오답

Java - do while 문do { 코드 1} while (조건문)코드 2Do while 문은 반드시 1번 이상 실행된다.Do 블럭의 코드 1을 실행한다.While 조건문에 맞지 않는다면, 아래 코드 2를 실행한다.Do 블럭의 코드 1을 실행한다. While 조건문에 맞는다면, 다시 Do 블럭의 코드 1을 실행한다.While 조건에 맞지 않게 된다면 코드 2를 실행한다.C언어 - | 연산 (or 비트연산) 4 = 2진수 -> 0 1 0 07 = 2진수 -> 0 1 1 1or 비트연산 -> 0 1 1 1 -> 10진수 = 7or(|)는 둘 다 참이어야 한다.xor(^)는 둘 다 달라야 참이다. 화이트 박스 테스트 (구 결 조 조 변 다 기 제 데 루)구문 커버리지(= 문장 커버리지)명령문을 적어도 한 ..