Spring Framework는 손쉽게 애플리케이션을 작성하게 도와준다. Spring Boot 에 와서는 웹 애플리케이션을 작성할 경우 웹컨테이너를 포함하고 있어 동작하는 웹서버를 만드는데 5분 조차 안 걸린다. 그렇게 웹애플리케이션 만들 수 있게 도와주는 스프링이지만 보안을 담당하는 스프링 시큐리티는 볼때마다 이렇게 복잡해야 돼!? 라는 생각이 자주 든다. 조금 이해를 돕기 위해 기본적인 스프링 시큐리티 클래스 다이어그램을 작성해봤다. 요즘 스프링 시큐리티 관련된 좋은 도서를 찾아 공부 중인데 해당 관련해서도 포스팅을 해봐야겠다.
파일을 읽어서 표준 출력을 하는 Spring 배치 프로그램을 작성해보겠다. 파일 처리는 가장 흔한 배치 형태 중 하나이지 않을까 생각한다. 준비 H2 DB (Memory -> File) 이전 글에서 우선 실행만을 테스트 하기 위해 H2 DB 를 메모리 상태로 띄운 형태를 파일 형태로 변경하겠다. 배치 프로그램은 실행 처리가 끝나면 종료되기 때문에 배치 종료후 사라지는 메모리 형태의 DB는 테스트 결과를 확인하기 어렵다. application.yml의 H2 DB 설정 내용을 아래와 같이 변경하자. 또한 최초 기동시 스프링 배치 내부 메타 테이블을 위한 설정 정보도 추가했다. spring: datasource: url: jdbc:h2:file:~/batchdb #file db 로 변경 username: sa..
몇 년 전 N사에서 프로젝트 중에 스프링 배치를 처음 접했다. 그 당시에는 스프링 배치에 대한 한글 서적이나(글을 쓰는 이시점에도 1권정도 있음) 블로그등 레퍼런스도 많이 없던 시절인데 어떻게 꾸역꾸역 했었던거 같다. 그 후 4-5 년이 시간이 흘러 다시 스프링 배치를 사용해 2개의 프로젝트를 수행했고 몇 년전의 나보다는 스프링 배치에 대한 지식이 조금은 나아졌다고 생각이 든다. 해당 경험으로 쉬운 예제 프로그램을 작성하면서 스프링 배치에 대한 내용을 알아보겠다. Batch 배치라는 용어는 범용적으로 많이 사용된다. 내가 생각하는 배치 프로세싱의 간단한 정의는 시작과 종료가 있고 특정 시간에 일련의 작업들이 순서대로 진행되는 프로그램이다. Daemon 이랑 대비 된다고 볼 수있다. Daemon 은 우리가..
코틀린은 IntelliJ 라는 유명한 유료IDE를 만든 JetBrains라는 회사에서 만든 프로그램 언어이다. JVM에서 동작하고 JAVA와 친척쯤 되는 느낌이 있다. 실제로 몇 가지 디펜던시를 포함하면 하나의 프로젝트에서 동시에 2가지 언어를 사용해서개발이 가능하다. 오늘은 이런 Kotlin 에 대해서 간략히 소개하고 코드에서 Java 와 어떤 차이점이 있는지 확인해보겠다. Kotlin Island 코틀린은 발트해 있는 러시아의 한 섬의 이름을 따서 만들었다고 한다. 자바가 자바섬에서 따서 만들었다는것에 영감을 얻었다는데 사실 여부는 잘 모르겠다. 아래 사진은 코들린이라는 섬의 위치인데 젯브레인은 체코 회사이다. 하지만 지도의 표시된 위치는 러시아 발트해 앞인데 그 곳에 젯브레인사의 R&D 본부가 있다..
자바 개발자로서 함수형 프로그래밍을 익숙하지 않고 잘 모른다. 하지만 내가 이해하고 있는 수준내에서 함수형 프로그래밍을 자바 코드를 예제로 설명해보려한다. 함수형 프로그래밍 자바 코드를 예제로 들기 전에 먼저 함수형 프로그래밍에 대해서 알아보자. 함수형 프로그래밍이라고 특별할 건 없고 우리가 익숙하게 알고 있는 객체지향프로그래밍이나 절차지향적 프로그래밍과 같은 프로그래밍 패러다임중 하나이다. 객체지향프로그래밍이 객체간 메세지와 협력 관계의 정의로 이루어졌다면 함수형 프로그래밍은 단순히 함수들의 조합으로 이루어진다. 그 함수들은 외부와의 관계는 없고 단지 함수 자신만으로 존재한다. 하지만 함수들의 조합이라는 말은 쉽지만 실제로 함수형 코딩을 잘 하는데는 꽤 높은 러닝 커브를 요구한다. 개인적인 생각에는 객..
정규식은 주로 특정 패턴을 찾을 때 많이 쓴다. 하지만 문서편집기에서 replace 기능을 정규식을 이용해 특정 단어를 남기고 나머지 글자들을 지우고 싶을 때 사용하려면 어떻게 막상 막막할 때가 있다. 아래는 그런 경우 사용하는 정규식 패턴이다. 정규식의 기본적인 문법은 알고 있어야 한다. 아래는 애국가의 일부이다. "삼천리"라는 단어만 빼고 나머지 단어들을 선택하고 싶다. 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라만세 무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세 남산위에 저 소나무 철갑을 두르듯 우선은 "삼천리"라는 단어를 선택하는 정규식 패턴을 만든다. 삼천리 우리는 위 단어가 아닌 단어를 선택하고 싶은거니까 부정형탐색을 이용한다. (?!삼천리) 시작 시점을 정했으니 단어 ..
내가 처음에 티스토리에 애드센스 연동할 때는 구글 애드센스의 페이지에서 삽입 코드를 복사 붙혀넣기 했던 기억이 있다. 이후 한동안 블로그 접속을 안 했는지 오랜만에 접속해서 보니 티스토리 관리자에 애드센스 연동페이지 자체가 기능으로 파함되어 있었다. 얼씨구나 하고 연동을 했는데 왠 걸 갑자기 광고가 사라지고 로고만 보였다. 티스토리 자체에 관련 게시물 보니 똑같은 현상으로 불만의 목소리가 많았다. 나야 해결했지만 아마도 불친절한 설명이 문제가 아닐까 생각이 든다. 애드센스 코드 불필요 만약에 티스토리에서 구글계정으로 로그인 연동후 권한을 줬다면 기존에 수동으로 구글 애드센스 제공한 코드를 복붙하는 작업은 필요없다. html head 에 코드는 삭제해도 괜찮다. 광고 설정 티스토리 블로그 관리자 페이지의 ..
STOMP 란 STOMP 는 Simple/Stream Text Oriented Messaging Protocol 약자이다. 말 그대로 간단한 문자 기반 메세징 프로토콜이다. 프로토콜이란 원거리에서 메세지를 서로 주고 받을때 정의된 양식 규칙 체계이다. 즉 STOMP는 텍스트 송 수신을 위한 미리 정의된 어떠한 규칙이다. STOMP 스펙에 정의한 규칙만 잘 지키면 여러 언어, 여러 플랫폼간 메세지를 상호 운영할 수 있다. Easy AMQP 나 MQTT 와 같은 메세지 전송을 위한 다른 프로토콜은 존재한다. 하지만 STOMP 가 그것들과 다른점은 binary 기반이 아닌 텍스트 기만 프로토콜이라는 점이다. 그렇기 때문에 개발자가 읽기 쉽고 사용하기에 좋다. 이런점은 마치 HTTP 와 유사한 점이다. 이런 부..
요즘 가장 핫한 패러다임인 Reactive 한 애플리케이션을 만들기 위해서 Spring Web Flux를 이용해 웹 애플리케이션을 만들어도 DB가 Reactive를 지원하지 않으면 DB에서 Blocking되기 때문에 의미가 없다. Redis 같은 cache 나 Mongodb , 카산드라같은 NoSQL 은 조금 일찍 지원하고 있었으나 RDBMS 는 최근에서 1.x 버전이 공식 릴리즈 됐다. 오늘은 R2DBC(Reactive Relational Database Connectivity)를 이용해 Postgresql 을 저장소로 하는 간단한 테스트를 해보겠다. Spring Boot 2.3.0.M2 이 글을 작성된 날(20.04.02) 기준 Spring Boot 최신 버전은 2.2.6 이다. Spring Boot..
- Total
- Today
- Yesterday