본문 바로가기

분류 전체보기

(53)
Spring Batch (4) - MetaData 앞서 다음과 같은 metadata 테이블을 보여드렸습니다. 이것을 하나하나 차근차근 설명해보겠습니다. 1) BATCH_JOB_INSTANCE Job Instance를 기록하는 테이블입니다. * Job Instance == 'Job 하나의 실행 단위/객체' 이 테이블은 Job Parameter에 따라 데이터가 생성되는 테이블입니다. 동일한 Job Parameter를 갖고있는 Job이 실행된다면, 이는 테이블에 기록되지 않습니다. 2) BATCH_JOB_EXECUTION 이 테이블은 Job Instance가 배치를 성공했는지, 실패했는지에 대한 여부를 담고 있는 테이블로 BATCH_JOB_INSTANCE의 부모테이블로 생각하시면 됩니다. 3) BATCH_JOB_EXECUTION_PARAMS Job Param..
JavaScript - Promise 😂 Promise가 도대체 뭐야.. async / await 그리고 bluebird에 대해 공부하면서 필수적으로 따라붙는 것이 바로 "promise"였다. promise에 대한 이해를 하지않으면 안될 것 같아 해당 포스트를 작성합니다. 🤔 Promise ? - 왜 생겼는가 ? 비동기 처리가 기본인 JavaScript에서의 동기적 처리를 위해?! - Promise는 '객체'이다. 어떤, 객체냐 하면.. 어떤 작업에 대한 결과를 객체로 나타낸 것입니다. - new로 생성하며,, const promiseTest = new Promise(function(resolve, reject) { setTimeout(function() { resolve('promise테스트'); }, 1000); }); promiseTe..
Spring Batch (3) 🤩 Spring Batch 시스템을 만들어봅시다 ! SpringBoot 프로젝트는 IntelliJ를 사용하실 경우, 툴 내에서 생성이 가능합니다. 사용하지 않으실 경우, spring.io라는 공식 사이트를 이용하시면 편리하게 생성하실 수 있습니다. 해당 포스트는 조졸두님의 jojoldu.tistory.com/325?category=902551 포스트를 기반한 포스트입니다. 먼저, 정말 정말 정말 * 100 간단한 배치 시스템을 만들어보겠습니다. 일단 BatchApplication.java에 @EnableBatchProcessing 어노테이션을 추가하여 Spring Batch가 동작할 수 있는 어플리케이션으로 만들어주어야 합니다. import org.springframework.batch.core.conf..
Spring Batch (2) 🤔 Step을 처리하는 방식 1. Tasklet 방식 : 잘 사용하지 않는 방식이긴 합니다. Input/Output에 대한 process가 없는 단순 통계, 일반적인 Query 수행과 같은 간단한 Batch에 사용하곤 합니다. Chunk의 ItemReader, ItemProcessor, ItemWirter의 과정을 단일 작업으로 인식하여 Step을 수행합니다. 2. Chunk 방식 : 지정한 Chunksize에 맞게 ItemReader, ItemProcessor, ItemWirter로 나눠 Step을 처리하는 방식입니다. 정리하자면, Spring Batch에서는 Job이 있는데요. 이 Job은 여러개의 Step으로 구성되고, Step 은 Tasklet || Chunk로 구성된다고 생각하시면 됩니다. 🤔 ..
Git Clone이 되지않았던 문제 GitHub의 Repo를 clone 받을 당시, 내 username과 pwd를 쳤음에도 불구하고 계속해서 비밀번호가 다르다는 에러가 발생했다. 인터넷을 뒤져보니 2FA의 문제라고 했다. (회사의 git에 접근하려면 필수적으로 2단계 보안을 해야했기 때문) 따라서, Settings - Developer settings - Personal access tokens에서 token을 발급해주었다. (어디 메모장에 적어놓자!) 하지만.... 이번엔 레파지토리를 못찾겠단다........ 알고보니, access token 발급과정에서 repo를 체크하지 않아 발생한 것이었다. 체크하여 다시 발급하고 패스워드에 github의 내 기존 패스워드 대신 발급받은 accesstoken을 넣었더니 정상적으로 git clone이..
싱글톤 패턴 (singleton pattern) 앞선 게시물에서 static에 대해 알아보았다. 그 결과로서 싱글톤 패턴에 대해 이해를 진행할 수 있게 되었다. 싱글톤은 하나의 객체만을 생성하도록 강제하는 패턴이다. 다음의 예를 보게되면, 컴파일 에러가 발생한다. class Singleton { private Singleton() { } } public class SingletonTest { public static void main(String[] args) { Singleton singleton = new Singleton(); } } 왜냐하면 Singleton 클래스의 생성자에 private 키워드로 외부 클래스에서 Singleton 클래스의 생성자로의 접근을 막았기 때문이다. 이렇게 생성자를 private 으로 만들면 외부 클래스에서 Singl..
Static이란? 1) static static은 프로그램이 시작되고 종료될 때까지 살아있으며, 한 번만 생성이 되어 메모리에 미리 그 값을 고정한다. 초기화 필요없이 곧장 접근이 가능하다. 그렇다고, 불변인가?라고 물었을 때는 불변은 아니다. 해당 객체를 메모리에 올려놓는 역할로 해당 class의 해당 static변수, 메소드는 다른 어떤 class에서 참조했을 때, 똑같은 객체를 참조하고 있다. 다음은 간단한 예제이다. 위에서 말하고 싶은 것은 1. static 변수는 같은 객체를 공유한다. 따라서, new를 통해 새로 생성했다하더라도 static이기 때문에 처음 sysout인 test1~3 모두 같은 값 5가 도출되며, 두 번째 sysout인 test1~3은 test.value로 인해 변경된 1로 도출이 된다. 2...
주소(URL)를 단축하기 위해선 어떻게 해야할까? 일전에 해당 게시글에서 주소 단축을 위해 .hashcode()를 사용하려했을 때, 문제점에 대해 설명했었다. 중복의 문제뿐만 아니라, hashcode() 메소드를 사용했을 때, 주소가 너무 길어지는 단점이 있었다. 따라서, 해당 단점을 해결하기 위해 다른 방법들을 찾아보게 되었다. 1. 단축된 URL을 만들어야 하는데, 오히려 URL이 길어지는 현상 => 해당 현상을 해결하려 찾아본 결과, 많은 사람들이 기존의 긴URL을 단축하는 것이 아닌, 긴 URL의 ID값을 인코딩하고 있었다. 2. 그래서 어떻게 URL을 줄여야할까? BASE62 방법을 사용하고 있다고 한다. 나는 BASE64만 알고 있었는데, 이는 + = / 와 같은 문자를 포함하기 때문에 URL이 SAFE하지 않게 된다고 한다. 그래서 [a-z..