웹훅 개요 웹훅이란 웹앱에서 발생하는 특정 이벤트를 커스텀 콜백으로 변환 해주는 방법이다. 쉽게 말해 데이터가 변경되었을 때 실시간으로 알림을 받을 수 있는 기능이다. HTTP 기반의 웹 특징과 훅(Hook) 기능을 합친 용어이다. API API는 클라이언트가 요청을 한다. 필요한 데이터를 특정한 API로 호출하고 응답을 받게 된다. 행위의 주체가 클라이언트가 데이터를 당겨온다. PULL 웹훅 웹훅은 클라이언트가 데이터를 요청하지 않아도, 필요할 때 알아서 데이터를 준다. 미리 이벤트를 지정해두고, 해당 이벤트가 발생되면 나에게 데이터를 보내줘라는 의미이다. 행위의 주체가 웹훅이 데이터를 밀어 준다. PUSH 웹훅을 통해 Gitlab과 Jenkins 사이의 파이프라인 구성도 가능하다. 정리 API 폴링은..
List로 주어진 여러 개의 조건 값을 IN 형태로 조건을 경우가 생긴다. 일반적인 상황이라면은 문제가 없지만 1000건 이상으로 IN절을 구성할 때는 ORA-01795 오류를 확인할 수 있다. ORA-01795: 목록에 지정 가능한 식의 최대 수는 1000입니다 (maximum number of expressions in a list is 1000) SELECT * FROM TBL WHERE CDN IN #{item.val} 해결 방법 1. OR 연산자 1000건씩 분리 SELECT * FROM TBL WHERE CDN IN #{item.val} List partitionedItems = new ArrayList( items.stream() .collect(Collectors.groupingBy(ite..
1. SELECT 시에는 꼭 필요한 COLUMN만 조회한다. -- BAD SELECT * FROM TABLE; -- GOOD SEELECT COLUMN1 , COLUMN2 FROM TABLE; 2. WHERE 절에는 연산을 하지 않는다. -- BAD SEELECT COLUMN1 , COLUMN2 FROM TABLE WHERE FLOOR(COLUMN3) = 2; -- GOOD SEELECT COLUMN1 , COLUMN2 FROM TABLE WHERE COLUMN3 = BETWEEN 4 AND 5; 3. LIKE 조회 시 와일드카드 %는 가급적 뒤에만 사용한다. -- BAD SEELECT COLUMN1 , COLUMN2 FROM TABLE WHERE COLUMN3 LIKE '%DF%'; -- GOOD SE..
개발 방법과 내부 기능에 따라 다양한 유형의 애플리케이션(앱)이 있다. 개발에 필요한 기본적인 웹 서비스의 종류와 차이점을 알아보자. 1. 모바일 웹(Moblie Web) 개념 모바일 화면에 맞게 구성한 웹 특징 단순히 웹 페이지를 모바일 화면에 맞게 줄인 형태 개발(웹 페이지) 실행(웹 브라우저) 장점 유비보수 용이 브라우저 접근 미설치 스토어 심사 불필요 단점 네이티브 엑세스 불가 2. 웹 앱(Web App) 개념 모바일 웹처럼 보이지만 구동방식이 앱처럼 보이게 한 앱 특징 겉모습, 구동방식을 네이티브 앱처럼 구성 개발(웹 페이지) 실행(웹 브라우저) 장점 비용, 시간 절감 스토어 심사 불필요 단점 네이티브 엑세스 불가 3. 하이브리드 앱(Hybrid App) 개념 컨텐츠 영역은 웹 앱으로 개발하고,..
지난 포스팅에 brew로 Java를 설치하는 방법에서 Java LTS 버전을 언급한 적이 있다. [프로그래밍/Etc] - [Etc] Mac Java 설치 및 관리 with Brew [Etc] Mac Java 설치 및 관리 with Brew Mac에서의 Java 설치 및 여러 가지 Java버전을 관리하는 방법을 알아보자. Java 설치의 일반적인 방법은 직접 다운로드하는 방법이 있지만, Mac에서는 Brew를 통해 손쉽게 설치가 가능하다. Java 외의 모 reference-m1.tistory.com 오래된 시스템을 보면 개발, 스테이징, 운영서버 등이 버전이 다른 경우가 있다. 고도화 작업뿐만 아니라 모든 프로젝트가 착수되기 전에 각 버전에 맞는 선정 작업이 필요하다. 이번에는 Spring Framewo..
Quartz Quartz는 미리 결정된 시간 또는 예약된 시간에 작업을 예약하고 실행하는데 사용할 수 있는데 오픈 소스 라이브러리이다. 간단한 interval , Cront 표현식을 사용하여 작업할 수 있다. 장점 in-Memory, JDBC 방식 제공 스케줄러 간 클러스터링 시스템 Fail-over(Random 방식의 로드 분산처리) 기본 플러그인 제공(ShutdownHookPlugin, LoggingHistoryPlugin) 단점 완벽한 로드 분산처리 불가(Random 방식) GUI 환경 미지원 스케줄러 실행에 대한 히스토리 보관 미지원 fixed delay 미지원 Quartz Maven Dependency org.quartz-scheduler quartz 2.3.2 Quartz Gradle Depe..
Thread를 통해 Service를 호출하려고 하면 @Autowired null 관련 에러가 발생한다. Thread 클래스가 Bean으로 등록된 클래스가 아니어서 IOC Container를 통해 자동 주입되지 않는다. @Autowired는 Bean으로 등록된 클래스에서만 사용 가능하다. 이럴 때는 Bean을 수동으로 주입하면 해결 가능하다. ApplicationContextProvider import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.spri..
Thread는 자원과 안정성 문제가 항상 따라다닌다. Thread가 많다면 대기 중인 상태가 되어, 메모리 사용량이 많아지면서 JVM 가비지 콜렉터에 영향을 주게 된다. 이러한 문제를 해결하기 위해 Thread Pool 관리가 필요하고, Java에서는 java.util.concurrent.* 패키지에서 Thread Pool을 제공하고 있다. ExecutorService 생성자 newFixedThreadPool : 지정된 숫자만큼 고정된 Thread를 유지한다. Thread가 작업이 종료되었으면 Thread 다시 생성하여 주어진 개수를 맞춘다. /** * Creates a thread pool that reuses a fixed number of threads * operating off a shared ..
Mac으로 문서작업을 하다 보면, Window에서 파일명이 자소 분리된다. 이에 관하여 빠르고 간단하게 Mac 한글파일명 자소 분리 해결법을 알아보자. 문제점 - 표준 정규화 인코딩 차이 Mac - NFD(조합형) Window - NFC(완성형) 1. convmv 설치 brew install convmv # 사용법 convmv -f utf8 -t utf8 --nfc --notest convmv 설치 후 위 명령어로 지정된 파일만 해결이 된다. 파인터에서 우클릭 형태로 쉽고 빠르게 작업하실 분은 아래 설명하는 Automator를 생성하자. 2. Automator 생성 Automator 실행 -> 새로운 문서 -> 빠른 동작 -> 왼쪽 검색창("셸") -> 오른쪽으로 드래그 -> 빨간색 영역 수정 # App..
쿼리 실행 계획을 얻기 위해서 MYSQL에서는 'EXPLAIN' 키워드를 통해 실행 계획이 무언인지 알고 싶을 때 사용하는 명령어이다. EXPLAIN을 활용하여 기존의 쿼리를 튜닝, 성능 분석, 인덱스 전략 등과 같이 성능 최적화를 진행할 때 사용한다. 사용법 EXPLAIN [EXTENDED] SELECT ... FROM ... WHERE ... 각 항목별 의미 id : 실행 계획 단위 번호를 의미하며 원 구문의 순서에 따라 각 select 구문들에 순차적으로 번호가 부여된다. 조인만 수행하는 쿼리는 항상 1이다. select_type : select 문의 유형 - simple : 단순 select (union, subquery 아닌 select문) - primary : 가장 바깥에 있는 select문(..
- javascript
- 회고
- Java
- Tomcat
- Linux 명령어
- Eclipse
- 제주도 3박4일 일정
- 정렬 알고리즘
- SQL
- effective java
- 자바
- 이직
- Maven
- Collection
- 리눅스 명령어
- 프로그래머스
- 프로그래머
- 오라클
- spring
- 성능분석
- React
- 개발환경
- 리액트
- 오라클 내장 함수
- 소프트웨어공학
- 자바스크립트
- 경력관리
- 리액트 16
- 제주도 여행
- sort algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |