본문 바로가기

전체 글

(128)
1. 스프링 배치: Hello World Spring Batch 일괄 처리(Batch Process) 일괄처리(Batch Process)는 사용자의 개입 없이 또는 정해진 로직대로 스케줄링/실행되는 작업을 의미한다. 즉각적으로 처리될 필요가 없는 작업의 경우, 자원의 효율적 사용을 위해 이와 같은 방식을 사용한다. 예를 들어 쇼핑몰에서 매일의 판매 집계 데이터를 만드려고 한다면, 각각의 판매가 이루어 졌을때마다 데이터를 만들고 수정할 수도 있지만, 매일 자정에 일괄 처리를 한다면 더욱 효율적으로 같은 결과를 얻을 수 있다. 스프링 배치(Spring Batch) 스프링 배치는 일괄 처리를 위해 만들어진 프레임 워크이다. 스프링 배치는 개발자가 일괄 처리를 위한 부가적인 기능에 대한 고민 없이, 서비스를 위한 일괄처리 작업 구현에만 집중할 수 있도록 해준다. 일괄 처리를..
CSR 시대의 동적 크롤링 with Selenium Server Side Rendering / Client Side Rendering SSR(Server Side Rendering)이란 사용자에게 보여질 페이지가 서버에서 완성되어 전달되는 것을 말한다. 클라이언트(브라우저)는 그저 서버로 부터 받아온 정보를 사용자에게 그대로 보여주기만 하면 충분하다. SSR은 클라이언트의 성능에 크게 영향을 받지 않고, SEO 측면에서도 장점이 있다. CSR(Client Side Rendering)은 사용자에게 보여질 페이지가 클라이언트(브라우저)에서 만들어지는 것을 말한다. 서버는 완성된 HTML 파일이 아니라, 이를 만드는데 필요한 스크립트 코드와 관련 정보들을 반환한다. 클라이언트는 이를 자체적으로 스크립트를 실행하여 비어있는 HTML 코드들을 완성시킨다. CSR은..
2022 하고있는일들 (완) 이것 저것 공부하기 - (완료) 인프런 강의 - Spring Boot 기반으로 개발하는 Spring Batch > https://github.com/NanKisu/nankisu-study/tree/master/STUDY-SpringBatch GitHub - NanKisu/nankisu-study: study push용 repository study push용 repository. Contribute to NanKisu/nankisu-study development by creating an account on GitHub. github.com - (완료) 실전 카프카 개발부터 운영까지 > https://github.com/NanKisu/nankisu-study/tree/master/Study-Kafka ..
채팅을 위한 노력의 역사 그리고 WebRTC 웹에서 기본적으로 클라이언트와 서버의 통신은 HTTP 방식으로 이루어진다. 클라이언트는 필요에따라 서버에 요청을 보내고 서버는 요청에 대한 응답을 보낸다. HTTP의 특징인 "단방향성"과 "비연결성"은 위와 같은 일반적인 웹상황에서 부족함이 없었다. 하지만 웹이 발전하고 풍부해짐에 따라 문제가 발생했다. 이제 사람들은 단순히 웹에서 정보 조회 뿐 아니라 사람들과 소통하고 싶어했고, 서비스 제공자들은 웹에서 채팅기능을 추가하고 싶었다. 하지만 지금까지 문제 없었던 "단방향성"과 "비연결성"이 발목을 잡았다. 처음 사람들이 생각해낸 방법은 짧은 주기로 계속 요청을 보내는 것이다(이를 Polling Request라고 부른다). 예를들어 1초마다 새로 올라온 채팅내역이 있는지 계속 요청하는 것이다. 이를 통해 ..
Java 8 ~ 11 버젼별 특징 1. Java 1.8 2014년 3월 발표. 일반 지원은 2019년 1월에 종료되었고, 연장 지원은 2030년 12월에 종료될 예정이다. 1) Interface static And default method 본래 Interface는 함수의 구현체 즉 body를 가질 수 없었다. 하지만 Java 1.8 부터는 인터페이스에 body를 가지는 static method와 default method가 추가되었다. // JavaInterface.java public interface JavaInterface { static public String interfaceStaticMethod() { return "interfaceStaticMethod"; } } // main 영역 public static void ma..
BBTI - 토끼 성향 테스트 Lite ver BBTI는 원래 일회성 서비스로 한달정도만 오픈해둘 생각이었다. 그리고 예상대로 서비스 오픈후 일주일이 지나자 서비스 이용자가 눈에 띄게 줄어드는게 보였다. 그리고 서버를 언제 내릴지 생각하고 있었는데, 갑자기 또 방문자 수가 급증하기 시작했다. BBTI를 이용했던 사람들이 본인 블로그와 네이버 카페에 이런 서비스가 있다고 올렸고, 이를 본 새로운 사용자들이 유입되기 시작했다. - https://www.hankookilbo.com/NewsLetter/rabbit/Read/286 - https://blog.naver.com/runaroon/222462351861 - 등등 블로그, 트위터, 카페 등에 BBTI 글이 올라왔다. 이를 보고 서비스를 더 유지하는쪽으로 마음을 바꾸었다. 다만 지금의 구조는 비용적으..
[이클립스] Can't connect to any repository: git-receive-pack not permitted on 평소와같이 깃허브 커밋중 갑자기 다음과 같은 에러가 발생했다 Can't connect to any repository: ... git-receive-pack not permitted on ... 않이... 얼마전까지 아무문제 없었는데 값자기...? 해서 찾아보니까 "Git password authentication is shutting down" 라고 한다. 이제 패스워드가 아니라 토큰을 발급해서 그걸로 접속해야 한다. https://github.blog/changelog/2021-08-12-git-password-authentication-is-shutting-down/ Git password authentication is shutting down | GitHub Changelog Git passwo..
Vue.js 에러: vuex store is not a constructor vuex 스토어를 만들기위해 아래의 코드를 작성하고 실행하였으나 에러가 발생하였다. export default new Vuex.store({ ... }) vuex store is not a constructor 에러가 발생한 이유는 굉장히 사소했다... Vuex.Store() 이렇게 S가 대문자였어야 했는데, 소문자로 적어서 생성자를 찾지 못한것이 에러 발생의 이유였다. 아래와 같이 s를 대문자로 바꿔서 실행하자 정상동작 하였다. export default new Vuex.Store({ ... })