전체 글 1156

[Python] Coroutine 개념

개요2024.06.26-[Python] asyncio - 비동기 프로그래밍에서 코루틴이라는 개념이 나왔는데, 관련하여 개념적인 부분만 조금 적어둔다.  메인루틴과 서브루틴Python에서는 함수를 호출하면 기본적으로 함수가 끝나고 현재 코드로 다시 돌아온다. 예로 들어 아래와 같은 코드가 있다고 하자.def add(a, b): c = a + b # add 함수가 끝나면 변수와 계산식은 사라짐 print(c) print('add 함수')def calc(): add(1, 2) # add 함수가 끝나면 다시 calc 함수로 돌아옴 print('calc 함수')calc() calc 함수에서 add 함수를 호출하면, add 함수의 실행이 완료되고 다시 calc 함수로 돌아온다. 무엇보..

Python 2024.07.22

[Python] asyncio - 비동기 프로그래밍

개요2024.06.25-[프로그래밍] 동기(Synchronous) VS 비동기 (Asynchronous)에서 동기, 그리고 비동기에 대한 개념을 살펴보았다.Python의 경우, 기본적으로 동기 프로그래밍 언어다. 아래와 같이 def 키워드로 생성한 함수는 모두 동기 방식으로 동작한다.def do_sync(): return 'sync'하지만 Python 3.4에서 비동기 프로그래밍을 위한 asyncio 라이브러리가 표준 라이브러리로 추가되고 async/await 키워드가 문법으로 채택되며, Python에서도 외부 라이브러리 설치 없이 비동기 프로그래밍이 가능하게 되었다. 이번 글에서는 Python으로 비동기 프로그래밍을 하기 위한 asyncio 라이브러리의 기본 사용법에 대해서 적어둔다.  async..

Python 2024.07.19

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

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

기타 2024.07.18

[Tornado] RequestHandler - 동적 URL 처리

개요2024.06.23-[Tornado] RequestHandler - Form 입력 처리, 2024.06.24-[Tornado] RequestHandler - 기타 요청 데이터 접근에서 Tornado 애플리케이션에서 여러 형식의 요청 데이터에 접근해보았다.이번 글에서는 동젹 URL을 라우팅하고 핸들러에서 접근해본다.  동젹 URL 사용Application 객체는 라우팅 테이블을 포함하여 전역적인 구성을 담당한다. 라우팅 테이블은 url을 나타내는 정규 표현식과 핸들러 등으로 이루어진 튜플 리스트 또는 URLSpec 리스트가 된다.즉, 정적 URL이 아니라 동적 URL을 처리하고 싶다면 url 부분을 문자열이 아니라 정규 표현식으로 지정해야 한다. 아래 예시는 user 아래에 아무 url을 받으며, 필요..

Python 2024.07.17

[Tornado] RequestHandler - 기타 요청 데이터 접근

개요2024.06.23-[Tornado] RequestHandler - Form 입력 처리에서는 Form을 통해 전달받은 데이터를 접근하는 방법에 대해서 알아보았다. 하지만 이번에 맡은 업무는 JSON 등으로 입력받을 예정이다. 따라서 Tornado 애플리케이션에서 이번 글에서는 Form 입력 데이터 이외의 다른 입력 데이터에 접근하는 방법을 적어둔다.   요청 메서드 접근요청 메서드는 self.request.method 속성으로 사용할 수 있다.class MainHandler(RequestHandler): def get(self): print(self.request.method) self.write(self.request.method) def make_app(..

카테고리 없음 2024.07.16

[Tornado] RequestHandler - Form 입력 처리

개요2024.06.13-[Python] Tornado 란에서 Tornado 웹 애플리케이션의 기본적인 구조와 실행 방법에 대해서 정리했었는데, 이번 글에서는 Tornado 웹 애플리케이션의 주요 요소 중 하나인 RequestHandler에 대해서 적어본다.  RequestHandlerTornado 애플리케이션의 대부분의 작업은 RequestHandler의 서브 클래스에서 수행된다.RequestHandler의 주 진입점은 HTTP 메서드 이름을 딴 get, post 등이 되며, 메서드는 하나 이상 정의할 수 있다.응답은 RequestHandler.render, RequestHandler.write 등의 함수를 호출하여 생성하는데, 두 함수는 각각 용도에 따라 호출하면 된다. RequestHandler.re..

Python 2024.07.15

[Snowflake] 가상 웨어하우스

개요2024.06.20-[Snowflake] 테이블에서 워크시트 상에서 SQL을 수행하여 테이블을 생성하고 데이터를 추가해 보았다.이번 글에서는 이러한 데이터 처리를 수행하는 요소인 가상 웨어하우스에서 간략히 적어둔다.  가상 웨어하우스Snowflake에서 웨어하우스는 데이터를 저장하지 않는다. 대신 데이터를 처리하는 데 사용하는  작업 인력에 해당한다. 즉, 컴퓨팅 리소스 클러스터로 Snowflake에서 SELECT 작업, DML 작업을 수행하기 위해 필요한 CPU, 메모리와 같은 컴퓨팅 리소스를 제공한다. 가상 웨어하우스는 필요에 따라 웨어하우스의 크기를 변경(Scaling Up/Down)하거나, 웨어하우스의 수를 변경(Scaling In/Out)할 수 있다.  Scaling Up/Down가상 웨어하..

Snowflake 2024.07.12

[Snowflake] 테이블

개요2024.06.18-[Snowflake] 데이터베이스, 스키마에서 Snowflake에서 사용하는 데이터베이스와 스키마에 대해서 살펴보았다.이번 글에서는 실제로 데이터를 저장하는 테이블에 대해서 알아본다.   테이블Snowflake의 데이터는 논리적 열과 행으로 구성된 데이터베이스 테이블에 저장된다. 테이블의 물리적 구조에는 마이크로 파티션, 데이터 클러스터링 개념이 사용되는데, 각각의 개념은 다음과 같다. 마이크로 파티션Snowflake 내 데이터가 분할되어 저장되는 단위로, 각 마이크로 파티션에는 50MB에서 500MB 사이 용량의 데이터가 포함된다. Snowflake에서 유지 관리하기 때문에 사용자가 직접 관리할 필요가 없다.마이크로 파티션은 용량이 적어 효율적으로 DML을 수행할 수 있고, 빠르..

Snowflake 2024.07.11

[Snowflake] 역할 전환과 소유권 이전

개요2024.06.17-[Snowflake] 접근 제어에서 Snowflake의 접근 제어 방식에 대해서 정리했는데, 이번 글에서는 실제로 snowflake에서 사용자가 역할을 전환하거나 객체 소유권을 이전하는 방법에 대해 적어둔다.   역할 전환 방법1. 현재 역할 확인홈 인터페이스 왼쪽 하단에 보면 계정명과 현재 사용 중인 역할을 확인할 수 있다. 2. Switch Role 접근계정 정보에서 Switch Role 항목에서 현재 사용할 수 있는 역할의 목록을 확인하고 사용할 역할을 변경할 수 있다. 3. 역할 전환목록에서 전환할 역할을 선택하면 바로 계정 정보가 변경된다.다만 리소스 탐색은 한 번 새로고침해주어야 제대로 보이는 것 같다.   소유권 이전 방법1. 소유권을 이전할 객체 접근이 글에서는 스키..

Snowflake 2024.07.10

[Snowflake] 데이터베이스, 스키마

개요최근 2024.06.16-[Snowflake] 구조, 2024.06.17-[Snowflake] 접근 제어 글을 통해 Snowflake에 대해 알아보고 있는데, 이번 글에서는 Snowflake의 기본적인 요소인 데이터베이스, 스키마에 대해서 다뤄본다.  UI데이터베이스, 스키마, 테이블을 생성해 보기 전에 먼저 Snowflake UI를 살펴본다.Snowflake  UI는 크게 main/home 인터페이스와 워크시트로 구분된다.  main/home 인터페이스객체를 관리하고 탐색하는데 사용한다. 워크시트 (WorkSheet)SQL 등 객체에 대한 명령을 실행하는 데 사용한다.워크시트는 아래와 같은 방법으로 생성할 수 있다. 1. 홈 > 왼쪽 메뉴 > Projects > WorksheetsWorksheets..

Snowflake 2024.07.09