분류 전체보기
[Spring boot] embedded mongodb replica 설정
안녕하세요 코딩하는 헬린이입니다. 간만에 글을 작성하네요 ~ 아침에 일어나서 헬스도하고 회사도 갈려하니 힘이드네요.. 이번에는 소스 공유좀 드릴려고 합니다. 회사에서 몽고db를 쓰는데 임베디드 몽고에 레플리카 설정을 하기위한 소스 공유하려 합니다. @Profile("local") @Configuration(proxyBeanMethods = false) @AutoConfigureBefore({ MongoAutoConfiguration.class }) @ConditionalOnClass({ MongoClient.class, MongodStarter.class }) @Import({ EmbeddedMongoAutoConfiguration.class, EmbeddedMongoReplisetConfig.Depen..
pm2 로그 관리 모듈 pm2-logrotate
안녕하세요 코딩하는헬린이 입니다. 오늘은 pm2 (node.js 관리 모듈)인 로그를 관리하는 작업을 포스팅하겠습니다. pm2-logrotate를 사용하면 좋은점은 파일 리사이즈, 자동 삭제 등 지원해 주는 기능이 많습니다. 물론 다른 방식으로 커스텀 하여 사용 할 수 있는 모듈은 많지만 저는 이것을 사용하였습니다. 추가로 설정해야 하는 부분이 적어서요 ㅎ #설치 ➜ ~ pm2 install pm2-logrotate 간단하게 위에와 같은 명령어로 모듈을 설치 가능하며 , 설치가 완료된 후 아래와 같이 표시가 됩니다. pm2 set ----- 으로 표시되어 보이는것은 default 설정값이며 변경 가능합니다. 설정 내용으로 보자면 공식 문서를 확인하여 번역기로 확인하였습니다. max_size(기본값은 10..
[Linux] Let's Encrypt 사용하여 SSL 발급
안녕하세요 코딩하는헬린이 입니다. 오늘은 Let's Encrypt 를 사용하여 ssl 를 발급하여 nginx ssl 적용을 하는법에 대하여 포스팅하겠습니다. 환경설정 ubuntu 18 nginx certbot # Let's Encrypt 란 무엇인가? Let's Encrypt는 사용자에게 무료로 TLS 인증서를 발급해주는 비영리기관이다. 몇 가지 TLS 인증서 종류 중에서 완전 자동화가 가능한 DV (Domain Validated, 도메인 확인) 인증서를 무료로 발급한다. - 나무위키 - 추가내용 - 개요 Let’s Encrypt는 SSL 인증서를 무료로 발급해주는 CA(Certificate Authorities)입니다. 여러 글로벌 기업의 후원을 받고 있으며 모질라(Mozilla) 재단에서 ‘신뢰할 수..
[Linux] nginx upstream을 사용하여 로드밸런싱 처리
안녕하세요 코딩하는헬린이 입니다. 오늘은 제목과 같이 nginx로 로드밸런싱 처리 하는법에 대하여 알아보겠습니다. 환경은 ubuntu18, nginx 가 설치 되어있다는 가정하 진행하겠습니다. 1.upstream 이란 ? 분산처리 기능을 한다고 보시면 됩니다. 2. 왜 써야하나 ? 과도한 트래픽 방어 또는 한서버에 여러개의 플랫폼을 (테스트서버) 설정시 port 로 구분하여 지정하는 방법 등 있습니다. # 설정 cd /etc/nginx/sites-enabled/ 들어가보면 vim, vi 로 파일하나가 있는걸 수정하세요 upstream test_proxy { #test_proxy upstream name 이다 변경하여 사용하면 됩니다. #least_conn; 연결이 가장 작은 서버로 요청할시 설정 #lea..
[Java] JPA 프록시와 연관관계 관리
안녕하세요. 코딩하는헬린이 입니다. Spring data Jpa 만 사용해보다가 인프런에 김영한님의 JPA 자체 강의를 접하는 기회가 생겼습니다. 강의 내용의 토대로 정리해보도록 하겠습니다. #프록시 Entity 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 이와 관련 된 기술이 프록시 인데, 이 프록시를 통해서 즉시로딩 ( EAGER ) 과 지연로딩 ( LAZY ) 을 할 수 있다. #메소드 em.find() 는 DB를 통해서 실제 엔티티 객체를 바로 조회 em.getReference() 는 DB의 조회를 미루는 가짜(프록시) 엔티티 객체를 조회 #예제 public void memberSelect() { Member findMember = entityManager.find(Member.clas..
[Java] Optional을 이용한 새로운 null 처리
안녕하세요 코드짜는헬린이입니다. 오늘은 코딩을하며 쉽게 마주칠수 있는 NullPointException (NPE)에 대하여 처리 방법에 대한 포스팅을 할려합니다. 요즘은 제가 프로젝트를 진행하며 자바6....을 사용하느라 삼항연산자를 통한 Null 처리도 안되는거 같아서 Null 처리를 아래와 같이 하였습니다. if(str!=null)[ }else if(str1!=null){ }else if(str2!=null){ }else{ } 어쩔수없이 코드가 지저분해지고 길어지기 마련입니다. 그래서 JDK8 부터는 보다 깔끔하게 Null 처리를 할 수 있는 Optional을 사용합니다 #Optional 이란 ? Optional는 “존재할 수도 있지만 안 할 수도 있는 객체”, 즉, “null이 될 수도 있는 객체”..
[Spring] poi 병목현상 해결!
안녕하세요 row 생성시 퍼포먼스가 안나와 찾아봐서 포스팅합니다. 저 같은 경우 poi를 이용하여 엑셀 생성시 1000건 2000건 뿐인데 퍼포먼스가 안나왔으며 로컬에서 실행시 다운로드는 되지만 최소 4분 배포 후 테스트 시 timeout 에러가 나왔습니다. 각 시트에 autoSizeColumn 메소드를 사용해 조정을 한게 원인이었으며 ex) // 데이터 부분 생성 for(Map vo : deliverList) { row = sheet.createRow(rowNo++); row.setHeight((short)512); sheet.autoSizeColumn(0); sheet.setColumnWidth(0,(sheet.getColumnWidth(0))); cell = row.createCell(0); cel..
[Spring] poi를 이용한 excel 다운로드
안녕하세요 오늘은 poi 라이브러리를 사용한 엑셀 다운로드 예제를 보여드리겠습니다. pom.xml org.apache.poi poi 3.15 의존성 추가를 일단 해주셔야합니다. public void deliveryExcelDownload(List deliverList, HttpServletResponse response) throws IOException { // 워크북 생성 Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("엑셀시트"); //엑셀 시트 이름 Row row = null; Cell cell = null; int rowNo = 0; // 테이블 헤더용 스타일 (컬럼) CellStyle headStyle = wb.createCel..
[Spring] 파일 정보를 못가져오는 에러! MultipartFile에 Xss Filter적용
안녕하세요 Filter 문제로 인하여 엑셀업로드를 2주동안 삽질을 하여 포스팅합니다. XSS Filter란??? Xss Filter란 사용자들의 악의적인 스크립트 공격(ex, )등을 막기 위해 사용하는 filter로 안정적인 웹서비스를 위해서는 필수적인 요소입니다. XSS는 Cross-Site Scripting를 의미합니다. 그래서 왜! form의 타입이 enctype="multipart/form-data"일 경우 XSS Filter를 타지 못함 그래서!!!어케 문제를 해결이 되나요..... form의 타입이 enctype="multipart/form-data"일 경우 XSS Fitler를 타지 못하는 문제를 해결 하기 위해서 XSS Filter 전에 "MultipartFilter"를 적용해 주어 먼저 ..
[Spring] 스프링부트 시큐리티를 이용한 로그인!
안녕하세요 오늘은 스프링 시큐리티를 이용한 로그인을 할려합니다. 시작하겠습니다. 1. 우선 의존성 추가 해주셔야합니다. org.springframework.boot spring-boot-starter-security 추가하시고 기동만 하셔도 아래와 같은 로그인 화면이 나오는데요 보통 아이디는 user password는 콘솔창에 Using generated security password ~~라고 run 도중 찍혀있습니다. 그거 입력하시면 되요 하지만 저희는 커스텀하여 진행하겠습니다. SecurityConfig.java package kr.home.service; import org.springframework.beans.factory.annotation.Autowired; import org.spring..