분류 전체보기 77

PostgreSQL GIN Index

PostgreSQL는 B-Tree 기반의 Index 구조를 기본으로 가지고 있기 때문에 타입 미지정 시 B-Tree 구조로 Index 생성 다만 상수가 아닌 컬럼을 사용해 like 연산자를 사용해야 하는 경우 B-Tree Index로는 index scan이 되지 않아 GIN Index를 사용 GIN Index는 Full Text 검색 속도를 높이는 데 사용 가능한 Index 예시 CREATE EXTENSION pg_trgm; CREATE INDEX ${인덱스명} ON ${테이블명} USING GIN("${컬럼명}" gin_trgm_ops); 참고 https://onbaba.tistory.com/2

Sass(Scss)

Sass(Scss)란? Sass는 CSS 전처리기로서 CSS의 한계와 단점을 보완하여 보다 가독성이 좋고 코드 재사용에 있어서 유리하다. CSS 문법과 유사하지만 선택자의 중첩이나 조건문, 반복문, 연산 등 여러 기능을 사용해서 더 편리하게 작성할 수 있다. 2006년부터 시작하여 가장 오래된 css 확장 언어이며 그만큼 많은 커뮤니티를 가지고 있다. Sass와 Scss의 차이 Scss는 Sass의 세 번째 버전에서 추가되었고 Sass의 모든 기능을 지원하면서 Css와 거의 같은 문법을 사용한다. Scss는 Css처럼 중괄호와 세미콜론을 사용하지만 Sass는 들여쓰기만 사용한다. Mixins(재사용 가능한 기능)을 사용하는 경우 Sass는 =와 + 기호로 기능을 사용하지만 Scss는 @mixin과 @in..

AWS re:Invent 참석 세션 정리

월요일 Peter DeSantis 키노트 (Monday Night Live with Peter DeSantis) AWS의 최신 기술 보안을 희생하거나 비용을 늘리지 않고 클라우드 성능의 한계를 지속적으로 확장하는 방법 Nitro v5 - 이전 세대보다 비용, 에너지 효율적 (60% 높은 pps, 30% 낮은 대기 시간) - 2배의 계산 능력과, 50% 빠른 성능 제공 C7gn - 네트워크 집약적인 워크로드를 위해 설계 - Nitro v5 및 Graviton으로 구동되는 새로운 인스턴스 유형 HPC7g - 분산 컴퓨팅 워크로드에 대해 최고의 가격 대비 성능 제공 Lambda SnapStart - 특정 Lambda 함수에 대해 SnapStart를 활성화한 후 함수를 실행하면 서비스가 함수를 초기화하고 재사용..

PostgreSQL Insert 할 때 Seq 조정

에러 ERROR: duplicate key value violates unique constraint 원인 nextval() 등을 통해 primary key를 생략한 채로 자동 시퀀스를 실행하다 보면 시퀀스 객체와 테이블 pk 값에 차이가 생기는 경우가 종종 발생 primary key 값은 유니크해야 하는데 이미 존재하는 seq를 insert 하려고 하는 경우에 발생 해결 -- 오류 난 테이블의 최대 키 값 조회 select max(seq) from ${테이블명}; -- nextval 함수가 있는 시퀀스 객체 값 조회 select nextval('${시퀀스명}'::regclass); -- 두 값이 불일치하는 경우 시퀀스 객체 값으로 변경 select setval('${시퀀스명}', (select max(..

PostgreSQL 테이블 청소

VACUUM 테이블과 인덱스에서 삭제 된 자료(old version row, dead row)를 정리하고, 그 자리에 다른 자료가 저장될 수 있는 빈공간으로 표시하는 작업 물리적인 여유 공간을 확보하는 것은 아님 운영상황에서 사용 가능 -- DB 전체 간단 실행 vacuum verbose analyze; -- 특정 테이블 간단 실행 vacuum ${테이블명} vacuum analyze ${테이블명} VACUUM FULL 물리적인 여유 공간 확보 삭제나 수정으로 생긴 빈 공간을 정리해 디스크 공간 확보 작업 시간이 많이 소요되고, 다른 작업과 같이 사용 불가능 운영 상황에서는 트래픽이 없는 밤 시간대에 사용 -- DB 전체 풀 실행 vacuum full analyze; -- 특정 테이블 풀 실행 vacuu..

PWA

모바일 앱 1. 네이티브 앱 애플의 앱스토어나 구글의 플레이스토어에서 다운로드 일반적으로 해당 플랫폼에 특화된 프로그래밍 언어로 만드는 경우가 많음(iOS는 스위프트, 안드로이드는 Java) 각 OS에 맞는 환경에서 개발을 해야하기 때문에, 더 많은 시간과 노력 필요 2. 모바일 웹 앱 모바일 기기에 설치된 웹 브라우저를 기반으로 동작하는 앱으로 모바일을 통해 접근 별도의 설치 없이 대부분의 기기에서 사용 가능 시간, 비용 적게 소요 오프라인 상태에서는 서비스 이용 제한 브라우저 상에서 동작하기 때문에 OS 자원 활용하는데 제한 2. 하이브리드 앱 네이티브 앱과 모바일 웹 앱의 장점을 살리고 단점을 보완하고자 두 가지 방식을 결합한 앱 모바일 웹 앱 기술을 통해 개발하기 때문에 시간과 비용적인 측면에서 ..

ETC

인텔리제이 단축키

command + option + v → 변수로 command + option + m → 함수로 빼기 ctrl + r → 마지막으로 실행했던 것 그대로 실행 command + n → 생성기 command + option + l → 코드 정리 ctrl + command + g → 같은 문자 선택 command + e → 최근에 연 파일 목록 option + enter command + shift + 대괄호 shift + f6 command + option + n → 원라인으로 만들어줌 ctrl + t → 단축키 검색 command + shift + o → 파일 검색 command + shift + a → action 실행 command + d → 라인 복사 command + ctrl + g → 같은 문자 선택

ETC

GraphQL

GraphQL이란? 페이스북에서 만든 쿼리 언어(데이터베이스에 접근할 수 있는 언어)로 기존에 사용하고 있는 REST API의 한계를 극복하고자 나온 것으로 REST API를 대체할 수 있다. REST API의 한계 리소스마다 엔드포인트를 갖게 되고, 애플리케이션의 규모가 커질수록 엔드포인트가 늘어나므로 관리가 힘들어진다. 응답의 형태가 정해져있어서 필요한 정보만 부분적으로 요청하는 것이 힘들다. 단순한 서비스에서는 좋지만 복잡한 서비스인 경우 Over-Fetching과 Under-Fetching이 발생한다. Over-Fetching이란? 예를 들어, 사용자들의 데이터를 조회하는 /users 라는 엔드포인트가 있다고 가정해보자 이와 같은 데이터가 있을 때, 1번 유저의 username만 받고 싶어도 유저..

ETC