ngrok - 외부에서 사내 IP 환경 접속 시
2022. 3. 31. 21:13
개발 지식/Etc.
ngrok 로컬 환경으로 테스트 중에 외부 PC에서 테스트해야 하는 경우가 가끔 생긴다 보통 회사에서는 공유기를 사용하기 때문에 외부에서 테스트하기가 까다롭다 테스트 하나 잠깐하려고 포트포워딩을 할 수도 없고.. 공유기 설정 권한도 없고.. 이럴때 쓰기 좋은 프로그램 하나를 소개하고자 한다 https://ngrok.com/ ngrok - secure introspectable tunnels to localhost @Botto ngrok, probably the best tool I have started to use for my webwork since firebug also great support ngrok.com 외부에서 접속할 수 있는 주소를 생성해준다 사용법도 아주 간단해서 편리했다 로그인 후 ..
입고 알림봇 (Python + 카카오톡)
2022. 2. 26. 01:14
개발 지식/Etc.
아내가 sony 카메라를 엄청 갖고 싶어 하는데 최근 반도체 이슈 때문에 물량이 없어서 구할 수가 없었다.. 물론 플미가에 사면 가능하지만 그 정도로 급한 건 아니기에 포기 상태였다 고민하다가 크롤링을 공부도 할겸 입고 알림봇을 만들어보게 되었다 파이썬이 아무래도 요즘 잘나간다고하니 Java는 잠시 내려놓고 파이썬으로 개발해보았다 처음 써보는 언어라 구조나 문법도 잘 몰라서 굉장히 허접하게 완성되었... 그래도 뭐 언어가 다 비슷비슷해서 실행만 되는 수준으로 만들기에는 어려운 점은 딱히 없었다 찾아보니 알림봇은 텔레그램으로 많이 해서 고민하다가 난 잘 쓰지도 않는 앱이고 카톡으로 알림 받는 게 더 편할 것 같아서 카톡으로 결정했다 카카오톡 개발자 설정은 다 패스하고 본 코드만 업로드 정리하려고 한다 1...
서버 메모리 누수 현상 처리 과정 정리
2022. 2. 24. 21:32
개발 지식/DevOps
현재 AWS 환경으로 서버를 운영 중에 있는데 메모리 초과로 서버가 계속 다운되는 현상이 지속적으로 발견되었다 워낙 사양이 낮아서 그런가 했지만 서버 상황을 모니터링을 하다 보니 메모리가 계속해서 누적되는 게 원인인 것 같았다 타 부서에서 사용하는 서버인 데다가 python 환경이어서 지식이 아예 없는 상황이었다.. 우선은 python을 다뤄본 적이 없어서 그 부분부터 파악이 필요했다 1. 파이썬의 메모리 관리 Python에서는 GC(Garbage Collection)와 레퍼런스 카운트(Reference Counts)에 의해 메모리 관리를 하고 있지만, 순환 참조(자기 자신을 참조)와 같은 코드가 있으면 메모리 누수가 발생할 수 있음. 2. 테스트 계획 조사한 내용에 의하면 소스 코드가 문제인가 싶어서 ..
페이징 라이브러리 (PageHelper + pagination)
2022. 2. 4. 14:52
개발 지식/Memo
Spring 환경에서 mybatis 또는 ibatis를 사용할 경우 PageHelper와 Pagination 라이브러리를 사용하면 아주 간단하게 페이징 작업이 가능하다 (JPA를 사용할 경우 Pageable을 사용) PageHelper 1. 환경에 맞게 라이브러리를 추가 (SpringBoot 기준) pom.xml com.github.pagehelper pagehelper-spring-boot-starter 1.4.1 2. import 추가 import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; 3. 사용 예시 import com.github.pagehelper.PageHelper; import com.github.pa..
REST API JunitTest(MockMvc)
2022. 1. 27. 22:42
개발 지식/Memo
Spring 에서 Was를 실행 하지 않고 Web URL을 테스트 하는 방법 웹을 개발할 때 매번 URL을 테스트하기 위해 Tomcat과 같은 WAS를 실행하는 불편한 단계를 생략하기 위해서 스프링의 테스트 기능을 활용한다. GET 방식이 아니고, POST 등의 방식으로 지정되어있으며, JSON 형태의 데이터를 처리하는 것을 브라우저에서 개발하려면 많은 시간과 노력이 들어감 때문에 Junit과 spring-test를 활용하는 것을 권장 자세한 내용은 주석으로 기재 TicketVO.java package org.zerock.domain; import lombok.Data; @Data public class Ticket { private int tno; private String owner; private ..
MockMvc Annotation 정리
2022. 1. 26. 22:12
개발 지식/Memo
MockMvc의 @Annotation @RunWith(SpringRunner.class) @RunWith(SpringRunner.class) 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행시킴 여기서는 SpringRunner라는 스프링 실행자를 사용 즉, 스프링 부트 테스트와 JUnit 사이에 연결자 역할을 함 @WebMvcTest @WebMvcTest 여러 스프링 테스트 어노테이션 중, Web(Spring MVC)에 집중할 수 있는 어노테이션 선언할 경우 @Controller, @ControllerAdvice 등을 사용할 수 있음 단 @Service, @Component, @Repository 등은 사용할 수 없음 @Autowired @Autowired 스프링이 관리하는 빈(Be..
REST Controller 반환 타입 정리
2022. 1. 25. 21:40
개발 지식/Memo
@RestController 반환타입 JSP와 달리 순수한 데이터를 반환하는 형태이므로 다양한 포맷의 데이터 전송 가능 주로 많이 사용 형태 : 일반문자열, JSON, XML 등 produces는 MIME TYPE을 의미 일반 문자열 반환 @Controller에서는 문자열 return값이 jsp 파일의 이름으로 처리되지만, @RestController에서는 순수한 문자열로 처리 됨 SampleController.java package org.zerock.controller; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.w..
JavaBeans
2022. 1. 25. 21:36
개발 지식/JAVA 기본 지식
JavaBeans JavaBean의 정의 데이터를 표현하는 것을 목적으로 하는 자바 클래스 컴포넌트와 비슷한 의미로도 사용됨 JavaBean 규격서에 따라 작성된 자바 클래스를 가리킴 EJB(Enterprise Java Beans) 와 혼동해선 안됨 JavaBeans의 관례 클래스는 패키지화 하여야 한다. 클래스는 직렬화 되어야 한다. (클래스의 상태를 지속적으로 저장 혹은 복원시키기 위해) implements java.io.Serializable 클래스는 기본 생성자를 가지고 있어야한다. public TestClass() {} 멤버변수는 프로퍼티(Property)라 칭한다. 프로퍼티의 접근자는 private이다. 프로퍼티마다 getter/setter 가 존재해야 하며, 그 이름은 각각 get/set으로..
REST Annotation 정리
2022. 1. 25. 19:41
개발 지식/Memo
REST의 @Annotation 전송방식에 따른 Annotation 전송방식에 따른 어노테이션 작업 HTTP Method URI 예제 어노테이션 Operation Performed 등록(Create) POST /members/new @PostMapping 리소스를 가져옴 조회(Read) GET /members/{id} @GetMapping 정의된 의미가 없으면 자원을 생성 수정(Update) PUT /members/{id}+body(json데이터 등) @RequestMapping 자원을 생성하거나 업데이트 삭제(Delete) DELETE /members/{id} @DeleteMapping 자원을 삭제 예제 package org.zerock.controller; import java.util.List; i..
POJO(Plain Old Java Object)
2022. 1. 24. 18:35
개발 지식/JAVA 기본 지식
POJO Plain Old Java Object, 간단히 POJO는 말 그대로 해석을 하면 오래된 방식의 간단한 자바 오브젝트라는 말로서 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다. 2000년 9월에 마틴 파울러, 레베카 파슨, 조쉬 맥킨지 등이 사용하기 시작한 용어로서 마틴 파울러는 다음과 같이 그 기원을 밝히고 있다. - 위키백과 오래된 방식의 간단한 오브젝트란? 특정 '기술'에 종속되어 동작하는 것이 아닌 순수한 자바 객체를 의미 예를 들어 특정 기술을 사용할 때 특정 프레임워크만 그 기술을 지원하여, 특정 프레임워크에 직접 의존해야 하는 순간 POJO라고 할 수 없음. 특정 기술(프..