전체 글 410

특정 인덱스에 모든 도큐먼트 조회(python)

es = Elasticsearch(ES_URL, http_auth=(ES_USER, ES_PW)) # Elasticsearch 서버의 주소에 맞게 수정 def fetch_all_documents(index_name): """인덱스의 모든 문서를 조회하여 리스트로 반환""" data = [] page = es.search( index=index_name, scroll='2m', # 스크롤 타임아웃 설정 size=1000, # 페이지 당 문서 수 body={} ) sid = page['_scroll_id'] scroll_size = page['hits']['total']['value'] total_docs = scroll_size # 스크롤 API를 사용하여 모든 문서를 조회하면서 tqdm을 사용하여 진행 ..

ELK 2024.02.05

단위테스트(2) 단위테스트 구조

AAA 패턴 AAA 패턴은 준비, 실행, 검증 이라는세 부분으로 나누어서 하나의 단위테스트를 구성하는 것 이다. AAA 패턴은 스위트 내 모든 테스트가 단순하고 균일한 구조를 갖는 데 도움이 된다. 이러한 일관성이 이 패턴의 가증 큰 장점이다. 준비구절에서는 테스트 대상 시스템과 해당 의존성을 원하는 상태로 만든다. 실행 구절에서는 sut에서 메서드를 호출하고 준비된 의존성을 전달하며 출력 값을 캡처한다. 검증 구절에서 결과를 의도된 값이나 상태가 되었는지 검증한다. AAA 패턴의 주의할점 여러개의 준비, 실행, 검증 구절 피하기 이는 애매하고 이상한 통합테스트와 다를바가 없어진다. 테스트 내에 if문 피하기 이 또한 위와 비슷하게 if문이 있는 단위 테스트를 만날 수 있다. 이것도 안티패턴. 단위 테스..

Unit Testing 2024.02.04

단위 테스트 (1)

코드는 작성되면 될수록 점점 나빠지는 경향이 있다. 코드베이스에 변경이 생길 때마다 엔트로피는 증가한다.그렇기때문에 지속적인 정리와 리팩토링을통해 관리를 해 나가야하고 이와같은 관리가 되지 않으면 프로젝트는 점점 복잡해지고 보수하기 어려워진다. 흔히 이러한 경향을 해소하기위한 방법으로 테스트를 한다. 테스트는 안전망 역할을 하며 회기에 대한 보험을 제공하는 도구라 할 수 있다. 코드 커버리지 또는 분기 커버리지 점수가 높다고 절때 안정성이나 테스트가 완료된 것이라고 보기 힘들다 그 이유는 점수를 위한 테스트를 칠 수 있기때문이다. 개발을 해본 사람은 이를 뜻하는 것이 무엇인지 알거라고 봅니다. 성공적인 Test shuit는 다음과 같다. 개발 주기에 통합돼 있다. 코드베이스 중 가장 중요한 부분만을 대상..

Unit Testing 2024.01.28

생성형 AI. 앞으로는 어떻게 될까?

생성형 AI의 등장 후 앞으로는 어떻게 될까? chatGPT의 등장으로 많은 기회가 생겼고 LMM의 민주화가 시작됐습니다. chatGPT가 나온 후로는 데이터레이크를 다루는 부분에 대한 기업의 인식과 프로세스가 많이 바뀌었습니다. 앞으로는 기업들이 자체적인 온프레미스를 구축하기 위해서 많은 리소스를 투입할텐데 이때 가장 중요것은 데이터셋이 됩니다. 그러면서 데이터레이크에 대한 인식이 개발자만이 아닌 기업의 운영진들도 데이터의 중요성을 gpt의 등장으로 인식하게 됐기때문입니다. 그럼 그냥 ChatGPT쓰면 안돼?! 기업입장에서는 오픈된 생성형 AI들을 쓰게되면 무엇보다 데이터보안적인 측면에서 좋지 않습니다. 내부적으로 프롬프트에대해서 학습을 하고 있을것이 뻔하기 때문이죠 그럼 이 파운데이션 모델로 우리가 ..

데이터 분석 2024.01.25

ReactRouter Dom

React Router Dom React Router Dom을 사용하면 웹 앱에서 동적 라우팅을 구현할 수 있다. 라우팅이 실행중인 앱 외부의 구성에서 처리되는 기존 라우팅 아키텍처와 달리 플랫폼의 요구사항에 따라 컴포넌트 기반 라우팅을 편하게 해준다. 리엑트는 SPA이기 때문에 하나의 index.html탬플릿을 가지고 있다. 이 하나의 탬플릿에 자바스크립트를 이용해서 다른 컴포넌트를 이 index.html탬플릿에 넣으므로 페이지를 변경해 주게 됩니다. 이때 이 React Router Dom라이브러리가 새 컴포넌트로 라우팅/탐색을 하고 랜더링 하는데 도움을 준다. 설치 npm install react-router-dom 설정 일단 어디에서나 React router를 앱어디에서나 사용할 수 있게 해야하는데..

React 2023.12.25

23_12_12 부산 중소기업 빅데이터 분석 세미나

인공지능과 빅데이터 최신 기술을 통해 살펴본 미래에 대하여 강연자: lg u+ 조중혁 빅데이터 활용 예시 및 산업 소매업체 빅데이터 분석을 통해 소매업체는 고객 구매 패턴을 파악하고ㅡ 재고 관리 최적화, 개인화된 마케팅 전략 수립 의료산업 빅데이터와 인공지능을 결합해 의료 산업에서 질병 예측, 치료 방법의 개선, 환자모니터링, 의약품 개발 알파 폴드 딥마인드가 단백질 구조 예측 학술대회에서 우승 수십만개의 단백질 구조와 아미노산 서열을 학습한 뒤 미지의 단백질이 주어지면 구조를 해독 예측하는 학술대회에서 우승빅데이터 수집 및 분석 프로세스 데이터수집 데이터 정제 가장 많은 리소스가 투입됨 결측치 제거 중복제거 노이즈데이터 제거 등으로 데이터 품질 향상 데이터 분석 빅데이터 미래 전망 AI 와 융합 5g네..

카테고리 없음 2023.12.12

인캡슐레이션과 디캡슐레이션

인캡슐레이션과 디캡슐레이션 상위 계층에서 하위 계층으로 데이터를 보내면 물리 계층에서 전기 신호 형태로 네트워크를 통해 신호를 보낸다. 받는 쪽에서 다시 하위 계층에서 상위 계층으로 데이터를 보낸다. 이렇게 데이터를 보내는과정을 인캡술려이션, 받는과정을 디캡슐레이션이라고 부릅니다. 현대 네트워크는 대부분 패킷 기반 네트워크로 이루어져 있습니다. 패킷 네트워크는 데이터를 패킷이라는 단위로 쪼개서 보내는데 이런 기법으로 하나의 통신이 회선 전체를 점유하지 않고 동시에 여러단말이 통신하도록 할 수 있게 해주는겁니다. 그럼 쪼개진 데이터를 받는쪽에서 결합해서 사용하는거죠 애플리케이션에서 데이터를 1~4계층으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할하는데 이과정을 인캡슐레이션이라고 부릅니다. 네트워크 ..

네트워크 2023.11.19

Logstash 란?

Logstash 란? 이름 그대로 로그를 저장한다라는 의미를 가지고 있다. 로그라는 것은 반정형데이터이며 세상의 모든것이 로그가 될 수 있기때문에 로그 형태를 강제할 방법도 없다. 결국 로그를 수집하는 쪽에서 로그형태를 분석하고 시스템에ㅔ서 인식할 수 있도록 로그를 정제하는 작업이 필요하다. 로그스테시는 이과정을 쉽고 편하게 할 수 있도록 지원한다. 어떤 형태의 로그에 대해서도 로그를 수집 - 가공 - 전송하는 일련의 과정을 간편하게 구현하기 위한 강력한 기능까지 제공한다. 기본적인 시스템 흐름 데이터수집 -> 데이터가공(로그스태시) -> 데이터저장(엘라스틱 서치) -> 분석&시각화(키바나) 로그스태시 특징 플러그인 기반: 로그스태시의 파이프라인을 구성하는 각 요소들은 전부 플러그인 형태로 만들어져있다...

ELK 2023.11.06

엘라스틱 서치 - 집계 정리

집계 엘라스틱 서치에서 집계는 데이터를 그룹핑하고 통곗값을 얻는 기능으로 SQL의 GROUP BY와 통계함수를 포함하는 개념 집계를 잘 이해할수록 키바나 툴을 더 잘 사용할 수 있다. 집계의 요청 - 응답 형태 집계를 위한 특별한 API가 제공되는 것이 아니다. search API의 요청본문에 aggs 파라미터를 이용하면 쿼리결과에 대한 집계를 생성할 수 있다. 엘라스틱 서치는 크게 메트릭 집계와 버킷 집계라는 두가지 타입의 집계가 있다. 메트릭 집계 필드의 최소/최대/합계/평균/중간값 과같은 동계결과를 보여준다. avg : 평균값 계산 min : 최솟값 max : 최댓값 sum : 필드의 총합 precentiles: 필드의 백분위값 stats: 필드의 min,max,sum,avg,cout를 한번에 볼 ..

ELK 2023.11.06

엘라스틱 서치 검색 정리

엘라스틱서치 검색 쿼리컨텍스트 필터 컨텍스트 쿼리스트링과 쿼리 dsl의 차이점 쿼리컨텍스트와 필터 컨텍스트 쿼리컨텍스트: 도큐먼트에서 연관성을 계산해 최대한 비슷한 데이터를 찾아준다. 필터 컨텍스트: 찾고자하는 문자열이 정확한지 아닌지 예/아니요만 가지고 찾아준다. 쿼리스트링과 쿼리 dsl 엘라스틱 서치에서 쿼리를 사용하는 방법은 쿼리 스트링과 쿼리 dsl두가지가 있다. 간단한 조건에는 쿼리스트링 복잡한 논리조건이나 코드수준에서 제어하기 위해서는 쿼리 dsl을 사용하는 것이 좋다. 쿼리스트링 쿼리스트링은 REST API의 URL주소에 쿼리문을 작성하는 방식 흔히 볼수 있다. 주소?샬라샬라 쿼리 DSL 쿼리 dsl은 REST API의 요청 본문 안에 JSON형태로 쿼리를 작성한다. 쿼리 DSL은 엘라스틱 ..

ELK 2023.11.06