반응형

전체 글 459

자바스크립트 Promise 객체, async 및 await 개념 정리 예제

javascript에서 비동기 처리를 하는 과정에서 필수적인 개념인 Promise 객체, async 및 await의 개념들을 간단한 예시를 통하여 이해를 해보는 시간을 가져보도록 하겠습니다. Promise 객체 Promise는 자바스크립트에서 비동기 작업을 표현하는 객체입니다. 비동기 작업이 완료된 후에 요청이 성공하면 결과값을 반환해주고, 실패한 경우에는 이유를 처리할 수 있는 방법을 제공하는 원리입니다. 해당 객체는 세 가지 상태를 가질 수 있는데요. 아직 요청을 처리하고 있는 중이라면 pending, 요청의 결과값을 성공적으로 받았다면 fulfilled, 요청이 실패하였다면 rejected의 상태를 가지게 됩니다. Promise 객체의 선언 방식은 다음과 같이 정리할 수 있습니다. const pro..

파이썬 API 호출 동시에 여러 번 수행 방법(aiohttp 비동기 호출 응용)

Python에서 API를 수십 번 이상 동시 호출된 결과를 한 번에 모아서 실제로 1~2번 호출에 가까운 시간에 전체 결과를 받을 수 있는 방법에 대하여 간략하게 정리해보도록 하겠습니다. 여기서는 aiohttp 모듈의 비동기 호출을 사용하게 되는데요. 이에 대한 기본적인 내용은 아래 링크의 이전 포스팅을 참고하시면 도움이 됩니다. 파이썬 requests 비동기로 요청하기(aiohttp 및 asyncio 활용) Python에서 requests 모듈로 get, post 등의 요청을 진행하는 경우가 종종 있는데요. 이번 글에서는 이러한 종류의 요청을 aiohttp 모듈을 통하여 async로 처리하는 방법을 간략하게 정리해보도록 하겠습 jimmy-ai.tistory.com 비동기 API 호출 결과 모으기 예제 ..

Python/Utils 2024.03.19

파이썬 코드 포맷터 black 사용하는 이유 / 사용 방법

Python의 대표 Code Formatter인 black에 대하여 사용하면 좋은 점과 간단한 사용법 예시를 정리해보도록 하겠습니다. black 사용 장점/이유 개발자 간에 협업을 할 때, 코드 스타일이 다를 수 있는데 다른 스타일의 코드가 뒤죽박죽 섞이게 되면 가독성이 떨어져 코드 리뷰, 디버깅 등의 과정에서 어려움을 겪을 수 있습니다. 따라서, 코드 스타일을 통일하기 위하여 이를 중재해주는 코드 포맷터가 큰 프로젝트일수록 더 중요한 역할을 하게 되고, Python에서는 black이 대표 포맷터 종류로 자리잡은 것입니다. 예시로, black에서 중재해주는 코드 스타일 양식의 예시는 다음과 같습니다. ### 포맷팅 전 ### def some_function(arg1,arg2):return arg1+arg..

Python/Utils 2024.03.13

TypeError: object async_generator can't be used in 'await' expression 해결 방법

오류 개요 Python의 generator 중 async로 구현된 경우가 있습니다. 이 경우 단순히 await로 데이터를 가져오려고 시도하면 에러가 발생합니다. async_gen = AsyncGenerator() data = await async_gen # TypeError: object async_generator can't be used in 'await' expression 디버깅 방법 다음과 같이 .__anext__() 기능을 활용하면 비동기로 구현된 generator에서 데이터를 순차적으로 가져올 수 있습니다. async_gen = AsyncGenerator() data = await async_gen.__anext__()

Python/Debugging 2024.03.08

파이썬 구글 이메일(Gmail) 보내기 SMTP 예제(파일 및 이미지 첨부 포함)

안녕하세요. 이번 글에서는 Python에서 이메일을 SMTP로 보내는 예제를 다루어보겠습니다. 가장 흔히 쓰는 메일 사이트 중 하나인 지메일을 예시로 들 것이며, 기본 텍스트 이메일부터 첨부 파일 및 본문 이미지가 포함된 심화 예시까지 전부 다루어보며 전반적인 과정에 대하여 이해를 해보도록 하겠습니다. 필요조건: 구글 보안 및 Gmail 설정 구글 이메일에서 smtp 프로토콜로 이메일 보내기 기능을 활용하려면, 구글 보안 및 Gmail에서 일부 설정 과정이 필요합니다. 이는 다음과 같습니다. 1. 구글 계정 페이지에서 앱 비밀번호를 검색합니다. (단, 메일을 보내려는 해당 계정에 2단계 인증이 활성화되어 있어야 합니다.) 2. 원하는 앱 비밀번호의 이름을 적고, 만들기를 진행합니다. 3. Gmail 페이..

Python/Utils 2024.03.06

Dockerfile로부터 도커 이미지 생성 / 컨테이너 실행 명령어 정리

프로그램을 도커로 실행하기 위해 필요한 도커파일을 작성한 뒤에 Dockerfile로 부터 도커 이미지를 생성하고 컨테이너를 실행하는 과정이 필요합니다. 이 글에서는 이 과정들에 필요한 명령어들을 간략하게 정리해보도록 하겠습니다. Step 1. 도커 이미지 생성(docker build) 컨테이너 실행을 위해서는 먼저 docker image 생성이 필요합니다. 이를 위해서는 docker build 명령어가 수행되어야 하며, 명령어의 포맷은 다음과 같습니다. docker build -t [이미지명]:[태그] [Dockerfile 위치] -t [이미지명]:[태그]는 생성될 이미지의 이름과 태그를 지정합니다. 태그는 선택 사항이며, 생략할 경우 latest가 기본값으로 지정됩니다. [Dockerfile 위치]는 ..

Infra/Docker 2024.02.28

파이썬 class __init__에서 async로 변수 초기화 하는 방법

Python에서 클래스를 구현할 때, 선언부인 __init__에서 비동기 함수에서 변수를 가져와 초기화하고 싶은 경우가 있습니다. 이 경우, __init__은 async로 직접 구현은 불가하지만, 이를 우회할 수 있는 방법이 있어 간략하게 정리해보도록 하겠습니다. __init__에서 비동기 선언이 필요한 코드 예시 다음과 같은 class가 있다고 가정해보도록 하겠습니다. 여기에서는 class의 value 속성에서 필요한 값을 불러와야 합니다. ### async def load_from_some_async_function(): # 비동기 함수를 불러와야 하는 상황 # do something ### class AsyncInitClass: def __init__(self): # async가 불가능! self...

Python/Utils 2024.02.20

[Git] fatal: couldn't find remote ref ~~ fatal: the remote end hung up unexpectedly 원인 / 해결 방법

개요 git pull 과정에서 다음과 같은 형태의 오류 메시지가 발생하며, pull 진행이 불가능 하였습니다. ########################### W A R N I N G ############################ This equipment is privately owned. All access to this equipment is logged. Disconnect IMMEDIATELY, if you are not an authorized user Violators will be prosecuted to the fullest extent of the law. #####################################################################..

Git 2024.02.19

파이썬 OPENAI 텍스트 임베딩 모델 사용 및 유사도 구하기 예제

Python으로 OPENAI에서 제공하는 text embedding 모델을 활용하여 텍스트의 임베딩 벡터를 구해보고, 문서 간 코사인 유사도를 구하는 예제를 간략하게 다루어보도록 하겠습니다. OPENAI 텍스트 임베딩 모델 사용 코드 예시 현재 비교적 최신 모델인 text-embedding-3-small, text-embedding-3-large와 기존 모델인 text-embedding-ada-002에 대한 임베딩 API를 OPENAI에서 제공 중입니다. (모델 상세 정보는 해당 링크의 openai 공식 document 페이지를 참고해주세요.) 우선, 문자열 1개에 대한 텍스트 임베딩 벡터를 구하는 파이썬 코드 예시는 다음과 같습니다. from openai import OpenAI # !pip insta..

Python/NLP Code 2024.02.14

[React] Props vs State 차이 비교 / 예제

리액트의 대표 필수 개념이지만 혼동되기 쉬운 props와 state의 차이를 간단한 예제를 기준으로 이해해보도록 하겠습니다. Props props는 부모 컴포넌트로부터 자식 컴포넌트로 데이터를 전달할 때 사용되며, 읽기 전용으로 자식 컴포넌트에서는 수정이 불가능합니다. 코드에서 사용되는 방식의 예시 코드 스니펫은 다음과 같습니다. function Welcome(props) { return Hello, {props.name}; } function App() { return ; } App 컴포넌트는 Welcome 컴포넌트에 name이라는 prop을 전달할 것입니다. Welcome 컴포넌트는 이 prop을 사용하여 동적으로 데이터를 렌더링하게 됩니다. 최종 출력 결과는 Hello, Jimmy 텍스트가 h1 태..

반응형