본문 바로가기

All205

[Python] zip zip zip 함수는 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 tuple의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환합니다 participant = ["leo", "kiki"] completion = ["eden", "jack"] for p, c in zip(participant, completion): print(p,c) # leo eden # kiki jack 2021. 12. 22.
[Python] Counter colleconts.Counter collections 모듈의 Counter 클래스는 사전(dictionary)를 확장하고 있습니다. 각 리스트 키의 개수 및 문자열에서 문자의 개수를 사전으로 표현해줍니다 import collections participant = ["leo", "kiki", "eden"] completion = ["eden", "kiki"] collections.Counter(participant) # Counter({'leo': 1, 'kiki': 1, 'eden': 1}) collections.Counter(completion) # Counter({'eden': 1, 'kiki': 1}) name = "jackkkk" collections.Counter(name) # Counter(.. 2021. 12. 22.
[MongoDB] Ch2 - MongoDB 기본 도큐먼트 도큐먼트 표현 방식은 맵, 해시, 딕셔너리와 같이 자연스럽게 표현하는 자료구조를 가집니다 키는 중복될 수 없고, 대소문자를 구별합니다 컬렉션 컬렉션은 도큐먼트의 모음입니다 컬렉션 - 테이블 도큐먼트 - 행 동적 스키마 컬렉션은 동적 스키마를 가집니다 하나의 컬렉션 내 도큐먼트들이 모두 다른 구조를 가질 수 있습니다 { "greeting" : "Hello, world!", "views" : 3 } { "signoff" : "Good night, and good luck" } 애플리케이션 스키마는 기본적으로 필요하지는 않지만 정의하면 좋습니다 네이밍 컬렉션명에 몇 가지 제약 조건이 있습니다 빈 문자열 X \0 (null 문자) X system.으로 시작하는 이름은 시스템 컬렉션에서 사용하는 예약어라.. 2021. 12. 22.
[MongoDB] Ch1 - 몽고DB 소개 손쉬운 사용 몽고DB는 도큐먼트 지향 데이터베이스입니다 분산 확장을 쉽게할 수 있습니다 도큐먼트 지향 모델로써 복잡한 계층 관계를 하나의 레코드로 표현할 수 있습니다 고정된 스키마가 없으므로 쉽게 필드를 추가 및 제거할 수 있습니다 확장 가능한 설계 몽고DB는 분산 확장이 가능합니다 도큐먼트를 자동으로 재분배하고 사용자 요청을 올바른 장치에 라우팅하면서 클러스터 내 데이터 양과 부하를 조절합니다 다양한 기능 몽고DB는 DBMS의 대부분 기능과 더불어 다음과 같은 기능을 제공합니다 인덱싱 보조 인덱스를 지원하며 고유, 복합, 공간 정보, 전문 인덱싱 기능을 제공합니다 중첩된 도큐먼트 및 배열과 같은 계층 구조의 보조 인덱스도 지원합니다 집계 데이터 처리 파이프라인 개념을 기반으로 한 집계 프레임워크를 제공.. 2021. 12. 22.
[Issue] XContentParseException: failed to parse filed, JsonParseException : Duplicate field 'positionLength' 해결 에러 분석 SpringBoot (Java Code) 현재 엘라스틱서치 클라이언트로 RestHighLevelClient를 사용하고 있다 해당 라이브러리에서 형태소 분석을 위해 한 API가 analyze()을 사용하고 있다 AnalyzeRequest request = AnalyzeRequest.withIndexAnalyzer(indexName, analyzerName, message); request.explain(true); AnalyzeResponse response = restHighLevelClient.indices().analyze(request, RequestOptions.DEFAULT); 그런데 특정 단어에서 IOException이 발생하였다 (분석기는 nori를 사용했다) java.io.IOE.. 2021. 12. 17.
[Issue] Error Parsing HTTP request header ~ / The valid characters are defined in RFC 7230 and RFC 3986 해결 The valid characters are defined in RFC 7230 and RFC 3986 Error parsing HTTP request header Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level. The valid characters are defined in RFC 7230 and RFC 3986 로그에서 위와 같은 에러가 발견되었다 서버에러가 아니라 APM에서는 발견되지 않았다 확인해보니 클라이언트쪽에서 GET 방식으로 호출할 때, 특수문자로 인해 발생한 이슈였다 SpringBoot는 내장 톰캣을 사용하는데, 톰캣 7 특정버전 이상부터 파라미터 값에 특수문자를 받을 수 없도록 .. 2021. 12. 17.
[Issue - Spring] DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144 해결 Webclient를 쓰다가 아래와 같은 Exception이 발생 org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144 몇몇 특정 검색어에서만 APM에서 발견되었다 원인은 in-memory buffer 256KB를 초과해서 익셉션이 발생한 것이다 Buffer Size 최근 스프링 부트버전에서 Webclient에 설정되는 default codec buffer size가 256KB로 변경되었다고 한다 Spring WebFlux 어플리케이션 메모리 문제를 피하기 위해 codec 처리를 위해 in-memory buffer 256KB가 default라고 한다 (1KB → 1,0.. 2021. 12. 8.