목록전체 글 (757)
우노
에러 코드BigQuery Table에서 특정 레코드를 DELETE하려했지만, 아래 에러가 발생했습니다. UPDATE or DELETE statement over table '' would affect rows in the streaming buffer, which is not supported에러 발생 원인BigQuery는 데이터를 테이블에 영구적으로 저장하기 전에 스트리밍 버퍼(streaming buffer)라는 메모리 기반 저장소에 임시로 저장합니다.높은 데이터 수신 속도를 제공하기 위함입니다.에러 메시지는 UPDATE 또는 DELETE 문이 스트리밍 버퍼에 있는 행을 수정하려 했기 때문에 발생한 에러입니다.스트리밍 버퍼에 있는 데이터는 아직 테이블에 완전히 반영되지 않았기 때문에 이러한 행에 대해..
들어가기 앞서, Polling과 Pulling은 모두 클라이언트가 서버로부터 데이터를 가져오는 방식을 나타내지만, 두 용어는 약간의 차이가 있습니다. Polling Polling은 클라이언트가 주기적으로 서버에 요청을 보내어 새로운 데이터나 업데이트가 있는지 확인하는 방식입니다. 클라이언트는 일정한 시간 간격으로 서버에 요청을 보내며, 서버는 해당 시점에 가용한 데이터를 응답으로 전송합니다. 새로운 데이터가 없더라도 클라이언트는 계속해서 요청을 보내므로, 불필요한 통신 오버헤드가 발생할 수 있습니다. 실시간성이 중요하지 않은 경우나 업데이트 빈도가 낮은 경우에 적합합니다. Pulling Pulling은 클라이언트가 필요할 때마다 서버에 요청을 보내어 데이터를 가져오는 방식입니다. 클라이언트는 데이터가 필..
HTTP(Hyper Text Transfer Protocol)란? HyperText 문서(ex. html)를 주고받는 프로토콜입니다. ex) 클라이언트가 웹 브라우저에 URL을 입력하면, 웹 서버에 HyperText 문서를 요청하고 응답받는 과정이 진행됩니다. HTTP 요청(Request) 예제 GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 Accept: text/html,application/xhtml+xml,application/xml;q=..
문제 링크 https://leetcode.com/problems/maximum-subarray/description/ 풀이 해당 문제는 그리디 알고리즘(Greedy Algorithm)의 한 종류인 카데인 알고리즘(Kadane’s Algorithm)을 사용해서 해결할 수 있습니다. 카데인 알고리즘(Kadane's Algorithm)은 배열에서 연속된 부분 배열의 최대 합을 구하는 효율적인 알고리즘입니다. 이 알고리즘은 O(N)의 시간 복잡도를 가지며, 다음과 같은 단계로 진행됩니다. "현재 합"과 "최대 합"을 -inf(음의 무한대)로 초기화합니다. 배열을 순회하며 다음 두 가지 경우 중 큰 값을 “현재 합”으로 갱신합니다. 이전 인덱스까지의 “현재 합” + 현재 인덱스의 값 현재 인덱스의 값 “현..
문제 링크 https://www.acmicpc.net/problem/11722 코드 import sys n = int(sys.stdin.readline()) item = list(map(int, sys.stdin.readline().split())) # 아이템 역순 정렬 item_reversed = item[::-1] # DP 테이블 생성 dp = [1] * n for i in range(n): for j in range(i+1,n): # 현재 위치의 값(item_reversed[i])보다 비교 대상(item_reversed[j])보다 크면, # 증가하는 순서가 성립하므로 DP 테이블 업데이트 if (item_reversed[i] < item_reversed[j]): dp[j] = max(dp[i]+1,..
들어가기 앞서, 해당 포스팅에선 Google Cloud의 BigQuery Python 클라이언트 라이브러리를 사용하여 BigQuery에 파티션된 테이블을 생성하는 코드에 대해서 다뤄보겠습니다. 예제 코드 # Google Cloud의 BigQuery 클라이언트 라이브러리를 가져옵니다. from google.cloud import bigquery # 사용할 BigQuery 프로젝트의 ID를 설정합니다. project_id = "your_project_id" # BigQuery 클라이언트 객체를 생성합니다. bigquery_client = bigquery.Client(project=project_id) # 생성할 BigQuery 테이블의 스키마를 정의합니다. schema = [ bigquery.SchemaFi..
들어가기 앞서, 해당 포스팅에선 Google Cloud Storage(GCS)에서 CSV 파일을 읽어서 Google BigQuery에 데이터를 저장하는 코드에 대해서 다뤄보겠습니다. 예제 코드 # 필요한 라이브러리를 불러옵니다. from google.cloud import storage, bigquery import pandas as pd from io import StringIO # Google Cloud Storage(GCS) 설정 bucket_name = 'your_bucket_name' # GCS 버킷 이름 prefix = 'your_file_prefix' # 파일 경로 및 이름의 공통된 시작 부분 gcs_client = storage.Client() # GCS 클라이..
들어가기 앞서, 배낭 문제(Knapsack Problem)는 제한된 공간에 가치가 높은 물건들을 최대한 많이 넣는 문제입니다. 이 문제는 물건을 나눌 수 있냐 없냐에 따라 두 가지 유형으로 나뉩니다. 분할 가능한 배낭 문제(Fractional Knapsack Problem) 물건을 일부분으로 나눌 수 있는 경우 (예: 설탕 500g 중 300g만 넣기) 그리디 알고리즘으로 해결 가능 0-1 배낭 문제(0-1 Knapsack Problem) 물건을 나눌 수 없고, 전부 넣거나 전혀 넣지 않아야 하는 경우 동적 프로그래밍(Dynamic Programming)으로 해결 가능 해당 문제는 0-1 배낭 문제(0-1 Knapsack Problem)에 해당됩니다. 설명 문제 설정 물건 개수: N = 4 배낭 용량: ..
B 트리란? B트리는 데이터베이스와 파일 시스템에서 널리 사용되는 자가 균형 이진 검색 트리의 일종입니다. B트리의 설계는 디스크 I/O 작업의 최소화를 목표로 하며, 이를 위해 트리의 높이를 가능한 낮게 유지합니다. 해당 포스팅에선 B트리의 규칙과 조회, 삽입, 삭제 방법에 대해서 다뤄보겠습니다. 규칙 노드 노드 차수(M): 각 노드가 가질 수 있는 자식 노드의 최대 개수 각 노드는 최소 M/2개에서 최대 M개의 자식 노드를 가질 수 있습니다. 루트 노드: 최소 2개의 자식 노드 (트리 생성/삭제 시 예외 가능) 내부 노드: 최소 ⌈M/2⌉개의 자식 노드 리프 노드: 모든 리프 노드는 동일한 레벨에 있어야 함 (데이터 접근 시간 균일화) 키 각 노드에 저장된 값입니다. 키 개수 범위: 최소 (M/2)-..
리스트(List) 가변(Mutable) : 요소의 추가, 삭제, 변경이 가능합니다. 대괄호 []를 사용하여 생성합니다. 중복된 요소를 가질 수 있습니다. 순서가 있어 인덱스를 통해 요소에 접근 가능합니다. 주로 동적인 데이터 관리에 사용됩니다. my_list = [1, 2, 3] my_list.append(4) # 추가 my_list[1] = 5 # 변경 del my_list[0] # 삭제 튜플(Tuple) 불변(Immutable) : 한 번 생성된 후에는 요소의 추가, 삭제, 변경이 불가능합니다. 소괄호 ()를 사용하여 생성합니다. 중복된 요소를 가질 수 있습니다. 순서가 있어 인덱스를 통해 요소에 접근 가능합니다. 주로 데이터의 불변성이 필요한 경우에 사용됩니다. my_tuple = (1, 2, 3)..