전체 글

    [Python] Iterable 과 Iterator의 차이

    개요 최근 빅쿼리를 사용하여 슬랙봇을 개발할 일이 있었습니다. 빅쿼리 테이블에서 쿼리한 결과를 보기 좋게 편집하여 슬랙을 보내는 배치 서비스를 개발하는 중에 헷갈렸던 파이썬 개념이 있어 정리해 보려고 합니다. *해당 글은 다음 기준으로 작성되었습니다. python~=3.10 google-cloud-bigquery~=3.9.0 빅쿼리 패키지에서 쿼리 결과를 객체로 받아 사용하는 여러 가지 방법이 있습니다. 그중에서도 bigquery.Client.query().result()라는 함수를 사용하여 리턴되는 bigquery.table.rowiterator 객체를 바로 사용하려고 했었으나, for문 실행 중에 ‘iterator has already started'라는 오류가 발생하였습니다. 😭 파이썬의 기본 개념..

    [글또] 글또 8기 중간 회고와 더 나은 글쓰기를 위한 액션 아이템

    인트로 글또 8기가 시작한 지 벌써 3개월이 되어갑니다. 지난주, 글또를 운영하시는 변성윤님의 ‘기술 블로그 운영에 어려움을 겪는 분들에게 전하는 이야기’ 발표를 들었습니다. 일요일의 바쁜 일정 중 가장 마지막이어서 집중을 잘하지 못했음에도 불구하고 제게 와닿는 이야기들이 많았습니다. 예를 들면, 나는 왜 글을 잘 못 쓸까 하는 자책감이요. ㅎㅎ 오늘은 발표에서 인상 깊게 들은 부분을 기억하며 나의 지난 글과 글쓰기 습관을 돌아보고 스스로 선정한 액션 아이템의 결과를 공유하고자 합니다. 지난 글또 활동 회고 우선 지난 글또 활동 중 쓴 글을 돌아보자면, 4개의 글을 쓰고 1번의 패스를 사용했습니다. 4개의 글 중 1개의 글은 맨 처음 작성한 글또 다짐 글이었습니다. 나머지 3개의 글은 기술 & 언어 주제..

    [Basic] Elasticsearch 인덱스(Index) 구성하기 (2)

    오늘은 지난 글에 이어서, 인덱스를 구성하기 위한 요소들에 대해 알아봅시다. 지난 글에서는 인덱스 샤드 수, 레플리카 수 등 일반적인 설정을 정의할 수 있는 Settings와 각 필드의 속성과 전체적인 스키마를 정의하는 Mappings에 관해 알아봤습니다. 오늘은 나머지 2가지, 문자열 필드의 분석기 등을 설정하는 Analysis와 검색 시의 유사도를 정의하는 Similarity에 대해 추가로 알아보겠습니다. Elasticsearch 시리즈는 7.10 버전을 기본으로 설명합니다. 필요하다면 8.0 이후의 버전 내용을 추가로 설명합니다. 분석(Analysis) 인덱스 분석 모듈은 문자열 필드를 개별 용어(term)로 변환하는 데 사용할 수 있는 분석기를 구성하도록 하는 레지스트리 역할을 합니다. 텍스트 분..

    [Basic] Elasticsearch 인덱스(Index) 구성하기 (1)

    검색 엔진을 구축하기 위해서 가장 먼저 필요한 것은 무엇일까요? 검색 대상이 되는 도큐먼트(Document)가 들어갈 수 있는 DB 같은 공간을 만들어야겠죠? 이번 글의 목표는 도큐먼트의 집합인 인덱스(Index)를 구성하는 요소를 이해하고, 예제를 통해 직접 인덱스를 정의하면서 ES에서 사용하는 기본적인 CRUD 방식에 익숙해지는 것 입니다. Elasticsearch 시리즈는 7.10 버전을 기본으로 설명합니다. 필요하다면 8.0 이후의 버전 내용을 추가로 설명합니다. 인덱스 구성 요소 인덱스 모듈은 인덱스별로 생성되는 모듈로 인덱스와 관련된 모든 측면을 제어합니다. 일반적으로 인덱스를 정의할 때 사용되는 세부 모듈은 간략하게 다음과 같습니다. - 인덱스 샤드 수, 레플리카 수 등 일반적인 설정을 정의..

    [Basic] Elasticsearch에 대해 알아봅시다!

    엘라스틱서치(Elasticsearch, ES) 검색엔진에 대해 차근차근 알아가는 시리즈 글을 써볼 예정입니다. 해당 시리즈는 ES의 색인과 검색, 형태소 분석기 등 기본적인 기능 또는 검색엔진 구축 과정에서의 이슈 해결을 주제로 이어질 예정입니다. 오늘은 그 첫 번째로 Elasticsearch의 기본 개념에 대해 전반적으로 살펴봅시다! Elasticsearch 란? You know, for search (and analysis) 당연히 검색(그리고 분석)을 위한 엔진입니다! ES는 엘라스틱 스택(Elastic Stack)의 핵심인 분산 검색 및 분석 엔진입니다. Elastic Stack 중 로그스태시(Logstash)와 비츠(Beats)는 데이터 수집, 집계, 보강을 용이하게 하여 ES에 저장할 수 있게..

    [글또] 글또 8기를 시작하며,

    안녕하세요, 본격적으로 블로그에 포스팅하는 건 처음인 것 같네요! 누군가 찾아올 수도 있는 블로그에 처음으로 제 소개를 하는 글이 될 것 같아 설렙니다. 개인 개발 블로그에 글을 쓰려고 마음먹은 이유 오늘부터 글을 다시 쓰기로 마음먹은 이유는, 온전히 글또 모임 덕분입니다. 글또란? 개발자를 위한 글쓰기 모임, 글쓰는 또라이들을 위한 커뮤니티입니다. * 공식 페이지 - 노션: https://www.notion.so/zzsza/ac5b18a482fb4df497d4e8257ad4d516 - 페이스북 : https://www.facebook.com/groups/geultto/?locale=ko_KR 사실 글또 지원서나 자기소개에 적지는 않았지만, 데이터를 다루는 일을 해야겠다고 마음먹은 후 가장 처음으로 관심..

    이코테 CHAPTER 10 그래프 이론 정리

    그래프 이론 그래프 이론 복습 (추후에 추가 예정) 1. 서로소 집합 서로소 집합(Disjoint Sets) : 공통 원소가 없는 두 집합 서로소 집합 자료구조 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조 두 종류의 연산을 지원 합집합(Union): 두 개의 원소가 포함된 집합을 하나의 집합으로 합치는 연산 찾기(Find): 특정한 원소가 속한 집합이 어떤 집합인지 알려주는 연산 합치기 찾기(Union Find) 자료구조라고도 불림 여러 개의 합치기 연산이 주어졌을 때 서로소 집합 자료구조의 동작 과정은 다음과 같음 합집합 연산을 확인하여, 서로 연결된 두 노드 A, B를 확인 A와 B의 루트 노드 A’, B’ 를 각각 찾는다. A’를 B’의 부모 노드로 설정한다. 일반적으로 ..

    이코테 CHAPTER 09 최단경로 정리

    가장 빠른 길 찾기 최단 경로 알고리즘 가장 짧은 경로를 찾는 알고리즘 한 지점에서 다른 한 지점까지의 최단 경로 한 지점에서 다른 모든 지점까지의 최단 경로 모든 지점에서 다른 모든 지점까지의 최단 경로 각 지점은 그래프에서 노드로 표현 지점 간 연결된 도로는 그래프에서 간선으로 표현 다익스트라 최단 경로 알고리즘 개요 특정한 노드에서 출발하여 다른 모든 노드로 가는 최단 경로를 계산 음의 간선이 없을 때 정상적으로 동작함 현실 세계의 도로(간선)은 음의 간선으로 표현되지 않음 → 사용 가능 그리디 알고리즘으로 분류됨, 또는 DP 매 상황에서 가장 비용이 적은 노드를 선택해 임의의 과정을 반복 다익스트라 최단 경로 알고리즘 출발 노드 설정 최단 거리 테이블 초기화 방문하지 않은 노드 중에서 최단 거리가..

    이코테 CHAPTER 03 그리디 실전 문제

    실전문제 숫자 카드 게임 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 숫자가 쓰인 카드들이 N x M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 카드들이 N x M 형태로 놓여 있을 때, 게임의 룰에 맞게 카드를 뽑는 프로그램을 만드시오..

    이코테 CHAPTER 03 그리디 정리 및 실전 문제(큰 수의 법칙)

    당장 좋은 것만 선택하는 그리디 그리디 알고리즘(탐욕법) 현재 상황에서 지금 당장 좋은 것만 고르는 방법 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구함 그리디 해법은 그 정당성 분석이 중요 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토 예시 최적의 해를 보장하지 못함 일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많음 하지만 코테에서의 대부분의 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서, 이를 추론할 수 있어야 풀리도록 출제됨 거스름 돈 최적의 해를 빠르게 구하기 위해서는 가장 큰 화폐 단위부터 돈을 거슬러 주면 된다. N원을 거슬러 줘야 할 때, 가장 먼저 500원으로 거슬러..