기타 54

[프로그래밍] 동기(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

[작업 기록] Single AZ -> Multi AZ 구성 변경

개요 AWS 환경에서 운영하는 서비스 중 하나가 Single AZ로 구성되어 있는 것을 알게 되었다. 인프라 관련 담당자에 의하면 기존에 IP 대역이 부족해서 단일로 구성했었고, 이후에 IP 대역 추가 작업이 있었다고 한다. 이에 따라 예기치 않은 사고로 서비스 장애가 발생할 가능성을 줄이기 위해 Multi AZ로 구성을 변경하려고 한다. 업무 역할 상 AWS 구성을 직접 관리하지는 못했으나…… 비슷한 작업을 할 때 참고할 수 있도록 어떤 순서로 진행했는지 기록해둔다. + 참고로 동작하고 있던 서비스는 Airflow와 Tomcat(API 서버)이다. 구성도 정확하진 않지만…… 기존 구성도는 대략 다음과 같다. 운영계이므로 Public Subnet과 Database 쪽 Subnet은 HA로 구성되어 있었지..

기타 2024.04.24

[Excel] 파워 쿼리 - 테이블 교차 조인 수행하기

개요 Excel을 이용해 두 개의 표에 대해 교차 조인을 수행하고 싶다. Excel에서 제공하는 파워 쿼리 기능을 사용해 두 테이블을 합쳐보자. 표 만들기 데이터 범위를 선택하고 키보드로 ctrl + t를 입력해 표로 만든다. 확인 버튼을 클릭하면 아래와 같이 표로 변환된다. 다른 테이블도 동일하게 표로 생성한다. Query 생성 표를 Power Query에서 다를 수 있도록 쿼리를 생성한다. 생성한 표를 선택한 상태에서 상단 메뉴의 데이터 > 데이터 가져오기 및 변환 > '테이블/범위에서' 버튼을 클릭한다. 쿼리를 구분할 수 있도록 적당한 이름을 지정하고 상단 메뉴에서 홈 > 닫기 및 로드 > 닫기 및 다음으로 로드 버튼을 클릭한다. 연결만 만들기를 선택하고 확인 버튼을 클릭한다. 그러면 화면 오른쪽 ..

기타 2024.03.05

[NAS] Synology NAS - 차단된 IP 해제

개요 Synolgy NAS에 접속하려고 했더니 아래 그림과 같이 IP 차단 안내 메시지와 함께 접속이 되지 않았다. 로그인 실패 횟수가 많아서 차단된 것으로 보이는데, 해제하는 방법에 대해 정리한다. 자동 차단 Synology NAS에서 제공하는 자동 차단 기능은 로그인 시도 실패 횟수가 너무 많은 클라이언트의 IP 주소를 차단하여 보안을 향상하는 것을 목적으로 한다. 지정한 시간(분) 내에 지정한 로그인 시도 실패 횟수를 초과하는 경우, 로그인을 시도한 IP를 자동으로 차단하는 방식으로 동작한다. 무차별 공격으로 계정 정보가 유출되는 위험을 줄여준다. 차단 IP 해제 차단된 IP를 해제하는 방법은 아래와 같다. 1. Synology NAS 접속 > 제어판 > 보안으로 이동 만약 제어판 아이콘 목록에서 ..

기타 2023.04.29

[Python] OpenAI API 사용하기

개요 최근 OpenAI가 개발한 ChatGPT가 굉장히 화제가 되고 있는데, 이 글에서는 Python과 OpenAI API를 이용해 ChatGPT와 대화하는 간단한 프로그램을 작성해보려고 한다. openai 계정이 필요하므로 회원가입부터 진행한다. 회원가입/로그인 https://platform.openai.com/에 접속하여 회원가입 또는 로그인한다. 회원가입 시 전화번호 인증이 필요하다. 크레딧 확인 API를 호출할 때마다 비용이 발생한다. 회원가입을 하면 무료 크레딧이 기본적으로 부여된다. 부여된 크레딧은 오른쪽 상단 Personal > Manage account로 이동하여 확인할 수 있다. API 키 발급 오른쪽 상단 Personal > View API keys로 접근하여 API를 호출할 때 사용할..

기타 2023.04.17

서버리스 (Serverless) 란?

Serverless 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델 서버리스 모델 역시 물리적 서버가 존재하지만 클라우드 제공 업체(CSP)가 인프라에 대한 프로비저닝, 유지 관리, 스케일링 등의 작업을 처리하여 추상화되어 있다. 온프레미스, IssS 모델 환경에서 개발자/서비스 제공자는 서비스 제공에 필요한 인프라 자원을 사전에 구매하여 준비한 뒤 동작 시키는 과정이 필요했다. 또한 서비스 부하에 따라 인프라 자원을 스케일링하는 것 또한 개발자의 몫이다. 반면 서버리스 모델에서는 인프라 자원을 동적으로 할당하기 때문에 서비스가 대기 상태에 있다가 실제 요청이 들어오면 인프라 자원을 할당하여 서비스를 처리한 뒤 자원을 해제한다. 인프라 자원이 ..

기타 2023.03.17

쿼리 엔진(Query Engine) 이란

Query Engine 데이터베이스 또는 서버 위에 배치되어 해당 데이터베이스 또는 서버 내 데이터에 대한 쿼리를 실행하여 사용자 또는 애플리케이션에 답변을 제공하는 소프트웨어 그중에서도 SQL 쿼리 엔진은 SQL 명령과 언어를 해석해 관계형 데이터베이스에 접근한다. 대부분 CRUD 작업을 수행하고 관계형 데이터 모델과 데이터베이스 관리 시스템에 필요한 데이터 정책을 적용한다. 모든 데이터베이스에는 가장 널리 퍼진 쿼리 언어인 SQL(Structured Query Language)을 지원하는 쿼리 엔진이 포함되어 있다. 이점 데이터 이동 없이 데이터를 쿼리 엔진에 가져올 수 있다. 분산 SQL 쿼리 엔진을 사용하면 Hadoop, AWS S3, NoSQL, MySQL 등과 같은 다양한 데이터 소스로부터 데..

기타 2023.02.28

[JMESPath] JSON 쿼리 기본 - 2

개요 2022.09.26 - [JMESPath] JSON 쿼리 기본 - 1 2022.09.27 - [JMESPath] Projections 에 이어서 남은 문법을 정리해둔다. Pipe Expressions Projections 결과인 JSON 배열이 아니라 그 배열의 특정 요소만을 원할 때 사용할 수 있다. # JSON { "people": [ {"first": "James", "last": "d"}, {"first": "Jacob", "last": "e"}, {"first": "Jayden", "last": "f"}, {"missing": "different"} ], "foo": {"bar": "baz"} } 위의 JSON 데이터에서 사람의 이름을 출력하는 표현식과 그 결과는 아래와 같다. # peop..

기타 2022.09.28
1 2 3 4 5 6