반응형 분류 전체보기133 [Kotlin] Spring Batch를 사용한 배치 애플리케이션 작성 언젠가 한번은 만나게 될 Spring batch라고 생각했습니다. 그간 배치 기능은 Crontab + Nodejs 또는 CI/CD 도구 + Python Script로 작성 해왔었고, 레거시 시스템에서는 Spring에서 제공하는 Scheduler를 사용해 배치 기능을 개발 했었습니다. 최근 새로운 배치 애플리케이션을 만들 일이 생겨 스프링 배치를 학습하고, Kotlin + Spring batch 애플리케이션을 작성하는 방법에 대해서 정리합니다. 01. 기본 개념 Job: Spring batch의 가장 큰 작업의 단위이며, 실행의 단위가 됩니다. Step: Job안에 속하게 되는 작업으로 하나의 Job은 1개 이상의 Step으로 구성 될 수 있습니다. Tasklet: Step안에 속하는 작업입니다. 아래 그.. 2021. 4. 5. [Kotlin] Springboot, Mock을 활용한 유닛 테스트(feat. Method Stub) Springboot 기반의 애플리케이션을 개발할 때, 주로 JUnit으로 테스트 코드를 작성하게 될겁니다. (Springboot 2.2 버전 이후 부터는 JUnit 4가 아닌 5버전을 디폴트로 사용하게 됩니다.) 자바 개발자의 대다수가 JUnit을 사용해 테스트를 하기 때문에 기본적인 사용법에 대해선 너무나 잘 알려져 있기도 합니다. JUnit은 다음과 같은 Annotation을 제공합니다. @SpringBootTest : Spring이 기본적으로 사용하는 의존성 추가 해줌( + JUnit 5에서는 추가해주지 않아도 된다고하네요.) @Test : 테스트 메서드 수행 @BeforeAll : 각 테스트 메서드들 수행 전 실행 @Mock : 더미객체를 만듬 etc... 그리고 Assertion을 통해서 작성한.. 2021. 2. 27. [Kotlin] Springboot, AOP를 활용한 요청 데이터 조작(feat. Reflection) Kotlin + Springboot 환경에서 간단한 AOP를 만드는 방법을 공유합니다. AOP란 Aspect Oriented Programming의 약자로 직역하면 관점 지향 개발이라 합니다. 공통적인 기능들을 모듈화 해서 개발자가 적용하고 싶은 위치(메서드, 클래스 등)에 심을 수 있습니다. 이번 예제에서는 사용자로부터 요청된 전송데이터를 AOP를 통해 조작해보는 것을 해보려고합니다. 요청 데이터를 조작하는데에는 Reflection을 사용합니다. Reflection 이란 클래스 정보를 코드상에서 사용하는 기술로 개발자가 직접 class의 다양한 정보들(필드, 메서드, 어노테이션 등등)을 불러올수 있는 기술입니다. 주로 자바에서 코드를 조작하는 방법으로 많이 언급 되는데 당연히 코틀린에서도 가능합니다. .. 2021. 2. 9. Redis를 Docker Compose 로 띄우기 해당 글에서는 NoSQL에 속하며, 인기있는 오픈소스 인메모리 DB인 Redis를 docker로 띄우는 방법을 정리합니다. 01. docker image 다운로드 >> docker pull redis:alpine 위와 같이 pull 커맨드를 이용해서 redis:alpine 이미지를 다운로드 받습니다. alpine 은 태그를 의미하며 redis의 버전 등의 값을 줄수 있습니다. (생략하면 latest 를 받음) alpine 태그의 특징은 이미지를 경량화 시켜서 용량이 적습니다. 이미지 용량 차이를 확인해보니 아래와 같네요. >> docker images REPOSITORY TAG IMAGE ID CREATED SIZE redis alpine c678242f9116 5 weeks ago 31.6MB redi.. 2021. 1. 22. Intellij 단축키 검색 키워드 정리 개발 시에는 인텔리제이를 사용합니다. 하지만 회사에서는 Windows 10, 집에서는 Macbook을 쓰다보니 단축키가 항상 헷갈립니다. 그래서 자주 사용하는 단축키 커스터마이징을 위한 검색 키워드를 정리해봅니다. (본 문서의 단축키는 인텔리제이 제공 디폴트 단축키가 아닙니다!!!ㅎ) 자주 사용하는 단축키와 셋팅을 위한 검색 키워드 검색 키워드 설명 My setting Clone Caret Below 입력 커서 복제. (여러줄에 같은 입력시) control + command + ↓ Duplicate Line or Selection 라인 복사 후 추가 shift + command + ↓ Code.Move Line Down / Up 라인 아래/위 이동 command + ↓ / ↑ Code.Auto-inden.. 2021. 1. 12. 2020 Log 2020년이 마무리 되고, 2021 신축년이 밝았다. 대다수 사람들이 그러하듯 코로나라는 바이러스와 함께한 2020년은 그닥 좋지 못한 한 해였던것 같다. 코로나로 인해 2020년은 기존과 많이 다른 삶을 살았다. 감염예방을 위한 마스크의 일상화, 재택근무, 모임 제한... 등 코로나 예방 수칙 아래 통제된 생활을 해야만 했다. 또 몇년 전부터는 해마다 해외여행을 한번씩 다녔었는데 올해는 그러지 못했다. 그 대신 넷플릭스, 유튜브 등의 컨텐츠를 시청하며 2020년은 그 어느 해보다 더 빨리 지나간듯하다. 역시나 한 해를 마무리하는 2020 개발 회고록을 블로그를 통해 써보려고 한다. 2020 목표했던 일 토이프로젝트 2020년은 토이프로젝트를 통해 개발자로서 한층더 성장하려고 했다. React, Node.. 2021. 1. 1. Click Event 와 DOM 다루기 (Pure Javascript) 순수 자바스크립트로 특정 DOM Element에 Click Event를 추가 하는 방법은 아래와 같습니다. var divElement = document.getElementById('sample'); divElement.addEventListener('click', (e) => { // To do something... alert('Click'); }); document로 부터 element를 찾음. addEventListener(type, event) 메서드를 통해 이벤트 추가 웹개발자라면 위 코드 정도는 구글링 없이도 충분히 알 수 있을 겁니다. 그렇다면, 아래와 같은 간단한 문제를 해결해 봅시다. 아래 html에서 click 한 요소의 색깔을 변경 해보세요. 월 화 수 목 금 토 일 #sample .. 2020. 12. 19. React 에서 활성화된 focus 해제(blur) 방법. [feat. Typescript] 모바일 웹브라우저를 통해서 React로 작성된 웹페이지 이용할 때 input box에 텍스트 입력시 하단 영역에 키보드가 표시되게 됩니다. 보통은 입력완료하고 다음 단계 진행 시 해당 키보드 영역은 사라지게 되는데요. 여기서 입력하다가 중간에 다른 작업을 수행하려하려 키보드 영역을 사라지게 하고싶다면. 해당 input box에 onBlur 이벤트를 호출해주면 됩니다. 아래와 같이 말입니다. (Typescript코드입니다. 그냥 React에서는 document.activeElement.blur() 해주면 됨) function App() { const otherOneTouch = useCallback((event: TouchEvent) => { (document.activeElement as HTMLElem.. 2020. 12. 3. React 에서 WebSocket 활용하기 (feat. Typescript) React에서 Websocket 연결 및 간단 사용방법에 대해서 정리합니다. 서버단 코드는 따로 없습니다. 서버는 있다고 가정합니다. ^^: React + Typescript 환경의 프론트 엔드 코드만 있어요. (웹 소켓 서버 구축은 검색해보면 많이 나와요...Pass) 01. CRA로 프로젝트 생성하기 create-react-app ws-example --typescript 위 같은 커맨드로 React 프로젝트를 생성합니다. 02. Package 구조 └─src │ App.css │ App.tsx │ index.tsx │ ├─components │ Chatting.tsx │ TextInputBox.tsx │ └─websocket WebSocketProvider.tsx 필요없는거 날리고 간단하게 위와 같.. 2020. 9. 16. React 에서 Canvas 활용하기 (feat. Typescript) React를 활용해서 canvas를 그림판처럼 활용해보는 예제입니다. 01. CRA를 이용해 프로젝트 생성 create-react-app canvas-example --typescript --typescript를 붙여서 React + Typescript 트프로젝트를 생성합니다. 02. canvas element 추가 import React, { useRef } from 'react'; import './App.css'; interface CanvasProps { width: number; height: number; } function App({ width, height }: CanvasProps) { const canvasRef = useRef(null); return ( ); } App.default.. 2020. 9. 11. [Kotlin] Springboot + WebSocket 사용법 Kotlin + Springboot 환경에서 WebSocket(웹소켓)을 사용하기 위한 방법을 기술합니다. 간단한 채팅앱을 만들어 보며 WebSocket 설정과 사용법을 알아보겠습니다. (백엔드. 즉, Kotlin + Springboot + Gradle 환경 구성에 대한 내용만을 다루었습니다.) 01. 모듈 생성/다운로드 https://start.spring.io/를 통해 Springboot를 위한 모듈을 생성해봅니다. 위와 같이 설정 체크 해주고 GENERATE 클릭 해서 zip파일을 다운 받습니다. 다운받은 zip파일 압축 해제 하고, IDE에서 해당 프로젝트를 추가해봅시다. 그리고 build.gradle.kt 파일을 열어보면 아래와 같습니다. plugins { id("org.springframewo.. 2020. 6. 7. [Kotlin] Springboot + Redis 사용법 Redis는 메모리 DB로 일반적인 DB(disk를 사용)보다 속도가 빠릅니다. 그렇기 때문에 대량의 데이터를 다루는 서비스에서 캐시 서버로서 많이 사용됩니다. 해당 글에서는 코틀린을 사용해 Springboot + Redis 연동 및 간단한 사용방법을 정리합니다. 01. Dependency 추가 build.gradle.kt 파일을 열어 아래와 같이 Redis 사용을 위한 lib를 추가해줍시다. ...(중략) repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-s.. 2020. 4. 26. 이전 1 2 3 4 5 6 7 8 ··· 12 다음 반응형