stack

stack from platanus

자바 마이크로서비스를 활용한 SRE – 책 소개

MSA로 구축된 어플리케이션 관리를 단계적으로 안내하는 실전 가이드 “한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.” 원제 : SRE with Java Microservices 저자 : Jonathan Schneider O’Reilly Media, 2020 / 한빛미디어, 2022 한국에서 MSA는 채용 시장에서 가장 핫한 주제다. MSA는 대용량 서비스를 안정적으로 운영하기 위해 느슨한 결합도, 무중단 배포, 기민한 릴리즈 대응, 탈중앙화에 부합해... » read more

무던한 개발자를 위한 모던한 자바스크립트 – 책 소개

“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.” 웹 개발자를 위한 빠른 자바스크립트 학습서 원제 : Modern JavaScript for the Impatient 1st Edition 저자 : Cay S. Horstmann 한빛미디어, 2021 이커머스 개발자로 커리어를 시작하게 되었다. 자바와 스프링 그리고 약간의 HTML/CSS 정도만 할 줄 아는 상태에서 입사를 하니 Backend만 보는 것이 아니라 Frontend도 업무의 연속선상에... » read more

metadata를 기반으로 한 LVM volume 복구

증상 아직 복구중이긴 하지만 내역으로 한번 써본다.만약 수행한다면 dd등을 통해 데이터를 백업 후 한번 읽어보고 본인의 상황에 얼마나 도움이 될지 읽어보고 진행하길 바란다. LVM에 SSD캐시를 붙여서 쓰고있었다. writethrough 모드로 쓴다고 안심하고 있었으나 SSD가 돌연사 함으로 인해 LVM 볼륨에도 접근할 수 없는 상태가 됐다. (IO error 상태) 이 진단을 내리기 전에는 단순히 파일시스템이 깨진것으로 판단하고 언마운트... » read more

Spring Argument resolver

RequestMappingHandlerAdapter 어노테이션 기반의 컨트롤러, @RequestMapping을 처리하는 HandlerAdapter. RequestMappingHandlerAdapter 동작 방식 ArgumentResolver 어노테이션 기반의 컨트롤러는 다양한 파라미터를 사용할 수 있다. (HttpServletRequest, Model, @RequestParam, @ModelAttribute, @RequestBody) 이것을 처리할 수 있는 것은 ArgumentResolver기반에서 작동하기 때문이다. 원하는 ArgumentResolver를 만들수도 있다. ReturnValueHandler 컨트롤러의 반환 값을 변환 (ModelAndView, ResponseBody, HttpEntity..) HTTP MessageConverter 각 ArgumentResolver들이 HTTP MessageConverter를 사용해 필요한 객체를 생성한다. 각... » read more

JdbcTemplate의 SimpleJdbcInsert Bean 등록에 관하여

SimpleJdbcInsert 빈 등록에 대하여 Reference 일단 오류와 상관없이.. SimpleJdbcInsert를 빈으로 만드는건 뭔가 이상한듯 저게 저 Repository에서만 쓸텐데.. 저걸 빈으로 만들어서 얻는 이점이 없음 JDBC 드라이버에서 제공해주는 DB 메타데이터를 사용해서 insert 쿼리 정보로 사용한다던데 왠지 빈으로 등록 시점에 JDBC 연결이 완료되지 않았을수도 있겠다 여튼, Entity 객체에서 리플렉션으로 ‘타입’정보를 꺼내쓴다면 애초에 dataSource같은게 필요없겠지 (순수 Java 리플렉션만으로 될테니)... » read more

세션을 사용하기 위한 Filter와 Interceptor

HttpSession 세션 생성을 자동으로 해주는 객체 기본 사용법 Tracking session 쿠키를 지원하는지 안하는지 서버는 모른다. 그래서 주소에 JSESSIONID를 세션 생성할때 내려 보내는데 이것을 모든 컨트롤러에서 다 파싱을 해야하니 불편하다. 대게는 쿠키지원을 하니까 tracking-modes를 cookie로 변경하면 주소에 JSESSIONID가 사라진다. Session timeout Filter, Interceptor Filter : 서블릿 Interceptor : 스프링 Filter 만약 로그인 여부 체크를 컨트롤러마다 해야... » read more

JDBC의 Prepared Statement

NamedParameterJdbcTemplate NamedParameterJdbcTemplate query() 가장 정확한 사용법 Prepared Statement 일반 JdbcTemplate은 SQL을 실행할때 Prepared Statement 라는게 있는데,쌩 SQL을 사용하는게 아니라 SELECT * FROM user WHERE id = ? 이런식으로 일정 형식문자열로 SQL을 준비하는 것이다.저걸 Prepared Statement 라고 부른다.그러면, 저 쿼리를 DB가 받으면 무슨일을 하냐면. SQL을 파싱하여 대기 상태로 놓는다.→ 만약 기존에 동일한 SQL쿼리가 있었다면 그 쿼리캐시를... » read more

Java; Optional

기본적인 사용법 Optional 객체 만들기 Optional 개체 를 만드는 방법에는 여러 가지가 있습니다. 빈 Optional 객체 를 생성하려면 empty() 정적 메서드 를 사용하기만 하면 됩니다 . 값의 비교 isPresent(), isEmpty() isPresent() 메서드를 사용 하여 Optional 객체 내부에 값이 있는지 확인했습니다 . 값은 null 이 아닌 값으로 Optional 을 만든 경우에만 존재 합니다. 다음 섹션에서 isPresent()... » read more

git flow의 실제 사용

git을 잘 쓰기 위한 브랜치 사용법 main이나 develop등 공용 브랜치에 커밋을 하지 않는다 → feature 브랜치로 따로 따서 작업한다. git checkout -b "feature/NUM" 공용 브랜치를 자주자주 pull 받아 브랜치를 최신으로 유지한다 (예를들어 develop) 공용 브랜치는 upstream으로 지정한다 git remote add upstream [URL] git pull upstream [공용브랜치] git push origin [공용브랜치] git의 커밋 흐름은 파일 단위가... » read more