반응형

eclipse 에서 project clean 시에 느릴 경우

clean시에 우측하단에 validating 및 build중인 progress bar 가 보일것이다.

저의 경우에는 해당 프로젝트에 jsp file이 많이서 jsp 파일마다 validating를 한 경우이다.

 

jsp file을 validating 하지 않도록 하면 clean시에 보다 빨라진다.

 

Window -> Preferences -> Web -> JSP Files -> Validation

위 항목으로 들어간뒤 아래와 같이 체크를 해제해주면 된다.

 

그래도 오래 걸릴 경우 Progress bar를 확인하여 아래 경로에서 해당 Validation을 체크 해제해주면된다.

Window -> Preferences -> Validation

 

 

반응형
반응형

mysql json 사용 방법

 

1. json_extract

json 안의 내용을 검색

 

쿼리.

SET @j = '{"a": \"1\", "b": \"4\", "c": {"d": [\"4\",\"2\"]}}';
SELECT JSON_EXTRACT(@j,'$.c.d');

결과값.

 

 

 

2. json_search

json 안의 내용을 검색하여 어느 위치에 있는지 알 수 있다.

 

파라미터 인수 2번째 값이 'all' 인 경우에는 모두 검색하여 위치를 배열로 저장한다.

(1번째 결과값과 2번쨰 결과값 확인)

 

쿼리.

SET @j = '{"a": \"1\", "b": \"2\", "c": {"d": \"4\"}}';
SELECT JSON_SEARCH(@j, 'one','4');

SET @j = '{"a": \"1\", "b": \"4\", "c": {"d": \"4\"}}';
SELECT JSON_SEARCH(@j, 'all','4');

1번째 결과값.

2번째 결과값.

 

 

 

 

3. json_array_append

json 안의 배열에 append 한다.

 

쿼리.

SET @j = '{"a": \"1\", "b": \"4\", "c": {"d": [\"4\",\"2\"]}}';
SELECT JSON_ARRAY_APPEND(@j, '$.c.d', '9');

 

결과값.

 

 

 

 

4.json_remove

json 안의 값을 remove 한다.

예제는 예제 3번에서 배열이 나왔음으로 json 안의 배열안의 항목을 제거하는 방법을 사용하겠습니다.

 

쿼리.

SET @j = '{"a": \"1\", "b": \"4\", "c": {"d": [\"4\",\"2\"]}}';

SELECT JSON_REMOVE(@j,
           JSON_UNQUOTE(
               JSON_SEARCH(@j, 'one','2')
           )
       );

 

결과값.

 

 

 

 

반응형
반응형

프로젝트를 받았는데 import가 안되는 경우가 있다.

 

1번의 경우가 안될때 2번의 경우를 사용할 수 있습니다.

 

1. File -> Import -> General -> Existing Projects into Workspace

2. File -> Import -> General -> Projects from Folder or Archive

반응형
반응형

10:04:08 DEBUG [org.springframework.web.servlet.DispatcherServlet]  Handler execution resulted in exception - forwarding to resolved error view: ModelAndView: reference to view with name 'cmmn/egovError'; model is {exception=org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException: Fail to save: an error occurs while saving the package : The part /docProps/core.xml failed to be saved in the stream with marshaller org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller@186ab677}
org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException: Fail to save: an error occurs while saving the package : The part /docProps/core.xml failed to be saved in the stream with marshaller org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller@186ab677

 

 

위의 버그 발생시

엑셀 저장시에 발생하는 에러이다.

필자의 경우에는 프로그램 소스에서 발생한 사항이 아니라(예외처리를 제대로 하지못함의 발생을 제외),

서버 설정에 의해 발생하였다.

 

서버는 apache + tomcat 으로 proxy 로 설정되어있다.

아파치에서 tomeout 이 발생하여 연결을 끊었기때문에 , tomcat에서 에러가 발생하게 된다.(엑셀 저장중에 발생한 에러)

아파치 config 파일에 해당 내용을 추가하면 된다. (단위 : 초)

 

Timeout 600
ProxyTimeout 600

<Proxy balancer://Test>
    BalancerMember http://localhost:8080/Test/
    BalancerMember http://localhost:8080/Test/
</Proxy>

<Location "/Test">
    ProxyPass           balancer://Test
    ProxyPassReverse    balancer://Test
</Location>

 

반응형
반응형

1.redirect시에 String(파라미터) 넘기는 방법

String으로 넘길경우에는 별도로 처리하지 않아도, jsp에서 해당 파라미터 값 (param1) 을 바로 사용할 수 있다.

@RequestMapping(value="/test1.do", method = RequestMethod.GET)
public String test1(RedirectAttributes redirect,
				@RequestParam(value="param1") String param1) throws Exception {
	redirect.addFlashAttribute("param1", param1);
	return "redirect:/test2.do";
}
@RequestMapping(value="/test2.do", method = RequestMethod.GET)
public String test2() throws Exception {
	return "test2";
}

 

2.redirect시에 Object(객체) 넘기는 방법

 

Object로 넘길경우에는 아래와 같이 넘기고 받는다. TestVO는 임의로 생성한 객체이다.

@RequestMapping(value="/test1.do", method = RequestMethod.GET)
public String test1(RedirectAttributes redirect,TestVO vo) throws Exception {
	redirect.addFlashAttribute("vo", vo);
	return "redirect:/test2.do";
}
@RequestMapping(value="/test2.do", method = RequestMethod.GET)
public String test2(HttpServletRequest request,Model model) throws Exception {

	Map<String, ?> flashMap =RequestContextUtils.getInputFlashMap(request);
    if(flashMap!=null) {
    	TestVO vo =(TestVO)flashMap.get("vo");
        model.addAttribute("vo", vo);
    }

	return "test2";
}
반응형
반응형

Linux 에서 서버 부하 모니터링 하는 방법

 

모니터링하는 방법은 여러가지가 있지만, 제가 주로 사용하는 명령어입니다.

 

top은 주로 프로세스별로 확인할때 사용하고,

sar은 시간대별로 부하가 심한구간을 체크하기 위해 사용합니다.

1. top

명령어마다 사용하고 싶은 옵션은 인터넷에 검색하면 나오니, 사용하고싶은것에 맞춰서 사용하시면됩니다.

제가 주로 사용하는것은 아래와 같습니다.

top -> shift+m -> c

shift+m (메모리 사용률 높은순으로 출력)

c (command 가 나옴. 프로세스 이름이나 어디서 실행되는 프로그램인지 알려줍니다.)

memory,cpu 등의 부하를 체크할 수 있습니다.

2. sar

시간대별로 memory,cpu, io대기시간, 등등을 알려주고있습니다.

 

 

반응형
반응형

tomcat 에서 catalina.out에 로그 남기지 않도록 설정하는 방법

 

catalina.sh 파일 수정(경로 : 톰캣경로/bin/catalina.sh )

 

if [ -z "$CATALINA_OUT" ] ; then
  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi

 

위의 내용을 아래와 같이 수정

if [ -z "$CATALINA_OUT" ] ; then
  CATALINA_OUT=/dev/null
fi
반응형
반응형

tomcat 실행시 이벤트 실행하는 방법

아래 소스를 참고하시면 됩니다.

개발 환경이나 등등에 의해서 ctx.getNamespace() 의 내용이 다를 수도 있으니,

이벤트가 실행이 안된다면 ctx.getNamespace()의 내용을 확인 후에 equlas 앞의 내용을 바꿔주며 테스트 진행하시면 됩니다.

@Service("testService")
public class testService implements ApplicationListener<ContextRefreshedEvent>{
	@Override
	public void onApplicationEvent(ContextRefreshedEvent event) {
		// TODO Auto-generated method stub
		ApplicationContext context = event.getApplicationContext();
	    if (context instanceof ConfigurableWebApplicationContext) { 
	        final ConfigurableWebApplicationContext ctx = (ConfigurableWebApplicationContext) event.getApplicationContext();
	        if ("action-servlet".equals(ctx.getNamespace())) {
	            //실행할 이벤트를 남긴다.
	        }
	    }
	}

}
반응형
반응형

Mysql group by 시에 없는 항목 출력하기.

 

 

아래 쿼리 실행시에 1부터 24까지 출력된다.

RIGHT JOIN으로 해당 테이블을 사용하여 없는 항목을 출력 가능하다.

WITH RECURSIVE cte AS (
	SELECT 1 AS n
	UNION ALL
	SELECT n + 1 FROM cte WHERE n < 24
)SELECT n FROM cte

 

아래 없는 시간에 관한 group by 전체 예시이다.

SET sql_mode = '';
SELECT B.n , 
		 A.total
	FROM (
		SELECT  
			DATE_FORMAT(날짜,'%H') AS "COL_01",
			COUNT(*) AS total
		FROM 테스트
		WHERE LEFT(날짜,4) = '2021'
		GROUP BY DATE_FORMAT(날짜,'%H')
	) A
	RIGHT JOIN(
    	WITH RECURSIVE cte AS (
          SELECT 1 AS n
          UNION ALL
          SELECT n + 1 FROM cte WHERE n < 24
		)
		SELECT n FROM cte
	) B ON A.COL_01 = B.n ;
반응형
반응형

order takes one argument, 'allow,deny', 'deny,allow', or 'mutual-failure' 에러 발생시.

 

아래 allow, deny 사이에 공백을 제거하고 하면 됩니다.

 

수정 전

<Directory />
    <LimitExcept GET POST>
        Order allow, deny
        deny from all
    </LimitExcept>
</Directory>

수정 후.

<Directory />
    <LimitExcept GET POST>
        Order allow,deny
        deny from all
    </LimitExcept>
</Directory>
반응형

+ Recent posts