본문 바로가기

(Cloud) Text To Speech API 비교하기 IT 기술 관련 음성을 텍스트로 변환하는 방법에 대해서 스터디를 하면서, CTTS API들을 비교해봤다. 비교해본 API 서비스는 크게 3가지이다. 1.네이버 클로바 - Clova Speech Recognition(CSR) 2.AWS - Amazon Transcribe 3.구글 클라우드 - Cloud Speech-to-Text 비교 결과는 다음과 같다. 서비스 네이버 Amazon Transcribe Google Cloud 음성 파일 전송 방식 바이너리 데이터를 API으로 전송한다. S3에 저장된 파일을 전송한다. 바이너리 데이터를 API으로 전송하거나, 구글 스토리지에 저장된 경로를 전달한다. 음성 파일 크기 60초 이내 60초 이상 지원 60초 이상 지원 결과 인식 비동기 처리 지원 X ( API으로 ..
티스토리 에디터처럼 코드 하이라이트 변경하기 1. HTML에 아래의 코드를 추가한다. atom css 파일은 hilight.js에서 다운받은 후, 티스토리에 업로드해서 사용하면 된다. 2. 티스토리 CSS 변경하기 /* 문단 간격 */ .entry-content p { margin-bottom:30px; display: block; margin-block-start: 1em; margin-block-end: 1em; margin-inline-start: 0px; margin-inline-end: 0px; } /* code highlight */ .entry-content pre { background-color: #fafafa; padding:20px; font-size: 14px; padding: 15px; border-radius: 3px; f..
(Django) cached_property 란? 동일한 인스턴스의 Property를 여러번 호출하는 경우, 중복으로 연산작업을 하게 된다. Property 안에서 호출하는 함수가 비용이 큰 연산작업인 경우, 중복 연산 작업이 API 성능을 크게 떨어트릴 수 있다. Django의 cached_property decorator를 사용하면 이러한 이슈를 해결할 수 있다. cached_property는 처음 호출된 Property 함수 결과값을 캐싱해둔다. 그리고 이후에는 캐싱된 결과값을 리턴한다. 그러면 동일한 Property를 여러번 호출하더라도, 한 번의 연산만 하게 된다. Sample from django.utils.functional import cached_property from weather.utils import WeatherAPI from ..
(PostgreSQL) PostgreSQL Client Tool 비교하기 나는 PostgreSQL Client 유목민이다 🐎🐎 그러던 중 PostgreSQL Client 비교한 글을 읽어봤는데, 꽤 유용했다! 적당한 툴을 찾지 못해서 PGAdmin, Psequel를 혼용해서 사용하고 있었는데, 이제는 TablePlus으로 정착하려고 한다. PostgreSQL Client에 정착한 기념으로, 이번 포스팅에서 PostgreSQL Client Tool 을 정리해보고자 한다. 1. TablePlus ★★★★★ 한줄평 짱이다. 일단 설치해야한다. 장점 이쁘다. 탭 전환이나 데이터가 보여지는게 빨라서 가볍게 느껴진다. 그럼에도 불구하고 기능이 많다. Query Formmating 기능이 있다. 탭을 가로로 나눌 수 있다. 쿼리 자동완성 기능도 있다. 필터 기능이 있다. 데이터 조회 Li..
최범균 <DDD START! > 4-5장 요약 4장. 리포지터리와 모델 구현 별도 테이블에 저장하는 밸류 매핑 애그리거트에 속한 객체가 밸류인지 엔티티인지 구분하는 방법은 고유 식별자를 갖는지 여부를 확인하는 것이다. 하지만 식별자를 찾을 때 매핑되는 테이블의 식별자를 애그리거트 구성요소의 식별자와 동일한 것으로 착각하면 안된다. 별도 테이블로 저장되고 테이블에 PK가 있다고 해서 테이블과 매핑되는 애그리거트 구성요소가 고유 식별자를 갖는 것은 아니다. 보통 주문 애그리거트는 실주문을 의미하는 Order 테이블과 주문 품목을 의미하는 Order Lines 테이블로 구성되어 있다. 여기서 주문 품목(Order Lines)은 밸류이다. Order Lines 테이블도 고유 PK를 갖고 있지만, 주문 애그리거트를 식별하는 고유 식별자는 주문번호이다. (위 ..
(PostgreSQL) BRIN 인덱스 활용하기 BRIN 인덱스BRIN 인덱스는 Block Range Index의 약자다. BRIN 인덱스는 페이지의 메타데이터를 뽑아서 인덱스를 구성한다. 그래서 타임시퀀스한 대용량 데이터를 저장하고, 조회할 때 유용하다. 테이블은 여러개의 페이지들로 구성되어 있다. 비슷한 시기에 만들어진 로우는 같은 페이지에 위치하거나, 물리적으로 서로 근접한 위치에 있다. BRIN VS B-TREE BRIN 인덱스는 B-TREE 인덱스보다 쿼리 퍼포먼스가 좋다.그리고 BRIN 인덱스는, B-TREE에서 사용하는 용량의 1%만 사용한다. bb인덱스 생성 속도도 BRIN이 더 빠르다. 쿼리 퍼포펀스 비교해보기대용량 테이블을 만들고, BRIN / B-TREE 인덱스를 추가해서 각각의 퍼포먼스와 디스크 사용량을 비교해보겠다. 1. 샘플데..
(Pytest) Fixture 모아두기 - conftest.py conftest.py Django Pytest 에서 공통으로 사용되는 Fixture / Plugin / Module을 모아두는 파일이다. 테스트가 돌아갈 때, 공통적으로 호출되어야하는 Hook들도 이 파일에서 관리한다. conftest.py은 도메인 모듈 (디렉토리)별로 나눠서 관리하는걸 권장한다. 도메인별로 Fixture를 나눠서 관리하는게 좋고, Fixture를 여러개 만들면 테스트가 느려질 수 있기 때문이다. 샘플 보통 어떻게 활용하는지는 아래의 샘플 코드를 참고하면 감잡을 수 있다 :) saleor > conftest.py https://github.com/mirumee/saleor/blob/master/tests/conftest.py shuup > conftest.py https://github..
(Pytest) Fixture에 매개변수 넘겨주기 함수 호출부에서 Fixture의 일부 데이터를 변경하고 싶다면, 아래와 같이 Fixture에 매개변수를 넘겨주면 된다.@pytest.fixture() def facebook_user_data(): def _data(user_id, email): return { "hometown": "Your, Hometown", "birthday": "01/01/1985", "email": email, "id": id } return _data 호출 방식은 다음과 같다.class TestUserInfo: def test_get_data__회원기본정보와_페이스북정보를_반환한다(self, mocker, facebook_user_data): user = UserFactory.create() facebook_user_data ..