기타 51

[Yaml] null 표현하기

개요최근 yaml 형식의 문서에 null 값을 명시적으로 지정해야 하는 일이 생긴 김에, 방법을 기억해 두고자 적어둔다.설정한 값은 PyYAML을 사용해 어떻게 인식되는지 확인해본다.  null 키워드yaml에서 빈 값을 지정하는 가장 기본적인 방법은 null 키워드를 사용하는 것이다.key: null  테스트import yamlyaml_txt = """key: value1: null"""print(yaml.safe_load(yaml_txt))  ~~ 문자를 사용하여 null을 표현할 수도 있다.key: ~ 테스트import yamlyaml_txt = """key: value1: null2: ~"""print(yaml.safe_load(yaml_txt)) 생략키-값을 기재할 때 값을 생략해도 null로 ..

기타 2024.11.07

[기록] API 개발 시 주의할 점

개요최근 API 개발 업무를 담당하고 있다. 기능 개발 자체는 애플리케이션 내부에서 발생하기 때문에 크게 어려움이 없었는데, 애플리케이션 외부와의 요청 및 응답을 처리하는 과정에서 애로사항이 발생했다.관련해서 기억해 둘 만한 부분을 적어둔다. 참고로 대단히 경험적인 이야기다…….  JSON 데이터 생성은 생성기를 사용한다.일반적으로 데이터를 주고받는 형식 중 하나인 JSON은 문자열 데이터이다. 프로그래머가 코드에서 문자열 객체로 JSON 데이터를 만들거나 프로그래밍 언어에서 지원하는 JSON 관련 라이브러리로 데이터를 만들 수 있다. 당연한 말이지만 JSON 형식 데이터를 문자열로 직접 생성하는 것은 지양하는 것이 좋다. 사람이 JSON 문자열을 다루는 경우에는 큰따옴표가 아니라 따옴표를 사용하여 문자..

기타 2024.11.06

[HTTP] header - Content-Type, Accept

개요최근 API 개발 업무를 담당하고 있는데, API 정의서에 Content-Type, Accept라는 HTTP 헤더에 대한 내용이 기재되어 있었다. 두 헤더 모두 데이터 형식과 관련된 것으로 보이는데, 각각의 개념에 대해서 적어둔다.  Content-TypeHTTP 메시지 본문(Body)의 미디어 타입, 즉 전송된 데이터의 유형을 나타낸다.Content-Type: text/html; charset=utf-8Content-Type: application/json; charset=utf-8Content-Type: multipart/form-data; boundary=somethingHTTP 표준을 따르는 브라우저와 웹 서버는 Content-Type 헤더를 기준으로 HTTP 메시지 내 데이터를 해석한다.참고..

기타 2024.11.05

[Pycharm] 파일 변경 사항 복원

개요Python 개발을 할 때 Pycharm을 사용하고 있는데 간혹 변경한 부분은 다시 원복해야 하는 경우가 종종 있다. 근데 그 양이 많아서 실행 취소로 할 수 없는 수준이라 곤란했었는데, Pycharm에서 파일 변경 사항을 추적하는 기능을 제공해주고 있어 정리한다.  로컬 히스토리로컬 히스토리 기능은 Git과 같은 형상 관리와 별도로 프로젝트에서 발생한 변경 사항을 지속적으로 추적하는 기능이다.커밋 간의 차이점만 추적하는 Git과는 다르게, 코드 편집, 테스트 실행, 애플리케이션 배포 등의 작업을 할 때 프로젝트의 상태를 자동으로 기록한다. 따라서 삭제한 파일을 복원하는 등의 작업을 수행할 수 있게 된다. 다만 Git과 같은 형상 관리를 대체하지 못하고, 보관 주기와 보관 용량에 한계가 있다.  이력..

기타 2024.09.27

[OOP] 객체 지향 - 추상화

개요객체 지향 프로그래밍(Object Oriented Programming, OOP)이란, 데이터를 입력받아 순서대로 처리하고 결과를 도출하는 절차적 프로그래밍(Procedure Programming) 관점에서 벗어나 여러 객체가 유기적으로 협력하면서 데이터를 처리하는 프로그램 설계 방식을 말한다.객체 지향 프로그래밍은 프로그램을 단위로 구분하여 프로그램을 유연하고 쉽게 변경할 수 있도록 만든다. 물론 객체 지향 프로그래밍의 장점을 잘 살릴 수 있도록 프로그램을 설계하기 위해서는 객체 지향 프로그래밍의 특징을 잘 이해하고 있어야 한다.이번 글에서는 객체 지향 프로그래밍의 특징 중 하나인 추상화(Abstraction)에 대해서 정리해보려고 한다.   추상화사전적으로 추상화란, 사물이나 표상을 어떤 성질, ..

기타 2024.09.06

[Excel] 테이블 INNER JOIN하기

개요2024.02.08-[Excel] 파워 쿼리 - 테이블 교차 조인 수행하기에서 Excel을 이용해 Cross Join은 수행해 보았는데, 정작 Inner Join 수행 방법을 몰라서…… 이 글에서 정리해 둔다.   테스트 데이터아래와 같이 두 개 표가 존재한다고 하자. 두 개 테이블을 Logic 컬럼을 기준으로 Join 해보자.   표 생성ctrl + t를 눌러 두 개 테이블을 표로 생성한다.  Query 생성생성한 표의 데이터를 Power Query에서 다를 수 있도록 쿼리를 생성한다.생성한 표를 선택한 상태에서 상단 메뉴의 데이터 > 데이터 가져오기 및 변환 > '테이블/범위에서' 버튼을 클릭한다.쿼리를 구분할 수 있도록 적당한 이름을 지정하고 상단 메뉴에서 홈 > 닫기 및 로드 > 닫기 및 다음..

기타 2024.08.22

[디자인 패턴] Factory method pattern

개요최근 오랜만에 팩토리 패턴이라는 개념을 다시 듣게 되었는데, 어떤 개념이었는지 기억이 잘 나지 않아서 정리해 둔다.  Factory method pattern객체 지향 디자인 패턴, 그중에서도 생성 패턴 중 하나이다.객체를 생성하기 위한 인터페이스는 정의하되, 생성할 클래스는 서브 클래스가 결정하도록 한다. 다른 말로 인스턴스화를 서브 클래스에 연기하게 하는 방법이다.객체를 생성하기 위해서는 종종 포함하기에 적절하지 않은 복잡한 프로세스가 필요할 수 있다. 때문에 팩토리 메서드 패턴은  객체 생성을 위한 별도의 방법을 정의하여 이러한 문제를 처리한다.   구조Product : 최상위 제품 클래스ConcreteProduct : 제품 구현체Creator : 최상위 팩토리 클래스. 추상화된 팩토리 메서드를..

기타 2024.08.13

[프로그래밍] 동기(Synchronous) VS 비동기 (Asynchronous)

개요최근 담당한 API 개발 업무 관련하여 공부를 하다 보니 동기, 비동기 통신 개념을 알아두어야 할 것 같다.관련하여 적어둔다.  Synchronous사전적으로 동기란 동시에 일어나다라는 의미인데, 컴퓨터 프로그래밍에서는 작업을 순차적으로, 직렬적으로 진행하는 것을 의미한다.작업이 시작되면 해당 작업이 완료될 때까지 대기하는 방식으로, 요청(Request)을 보내면 반드시 응답(Response)을 받아야 다음 동작이 이루어진다. 호출한 함수 또는 작업이 반환될 때까지 대기하는 동안에는 실행 흐름이 차단(block)된다.동기적인 방식은 간단하고 직관적인 코드를 작성할 수 있다는 장점이 있다.반면 여러 작업이 동시에 실행되어야 하는 경우에는 각 작업이 완료될 때까지 기다려야 하기 때문에 전체 프로세스를 기..

기타 2024.07.18

[YouTube] API로 Youtube 동영상 정보 요청하기

개요API를 통해 Youtube에 업로드된 비디오나 채널의 정보를 얻으려고 한다.Youtube API 사용 방법에 대해 적어둔다.  프로젝트 생성Youtube 관련 API를 사용하기 위해서는 GCP 프로젝트를 사용해야 한다. 1. GCP 접근 https://console.cloud.google.com/ 로 이동한다. 2. 새 프로젝트 생성 페이지로 이동 상단 메뉴에서 프로젝트 선택 드롭다운을 선택한다.프로젝트 선택 팝업창의 오른쪽 상단의 새 프로젝트를 클릭한다. 3. 프로젝트 생성프로젝트 이름 등을 지정하고 만들기 버튼을 클릭한다. 이상이 없으면 잠깐 대기한 뒤 생성된 프로젝트를 확인할 수 있다.  Youtube API 활성화 1.  API 및 서비스 접근프로젝트의 대시보드에서 바로 접근할 수 있다. 2..

기타 2024.06.12

[프로그래밍] 정적 타입 언어와 동적 타입 언어

개요 업무에서 주로 Python을 많이 사용하고 있는데, 이전에 공부할 때는 C와 Java를 많이 사용했었다. Java로 프로그래밍을 하다가 Python을 하게 되었을 때 크게 느낀 차이 중 하나가 변수 선언 시 데이터 형에 대한 지정 유무였다. 최근에 관련 개념인 정적 타입 언어와 동적 타입 언어에 대해 되짚어보게 되어, 이 글에서 적어두려고 한다. 컴파일 (Compile) 프로그램 소스 코드를 작성하고 빌드하면 일반적으로 다음과 과정을 거쳐 컴퓨터가 실행할 수 있는 기계어로 번역된다. 이 과정을 컴파일이라고 한다. 이때 컴파일 과정에서 실행 가능한 파일이 만들어지는 순간까지를 컴파일 타임이라고 하고, 실행 가능한 파일이 실행된 이후를 런타임(Runtime)이라고 한다. 변수의 타입이 컴파일 타임과 런..

기타 2024.05.07