탁구치는 개발자
close
프로필 배경
프로필 로고

탁구치는 개발자

  • 분류 전체보기 (427)
    • WebRTC (7)
    • 프로그래밍 (139)
    • AI 활용 (3)
    • 서버 (49)
    • 개발툴 (102)
    • 개발이야기 (10)
    • 장애 경험 (1)
    • 유용한 도구 (4)
    • 끄적끄적 (17)
    • 독서 (93)
    • 회고 (1)
    • 재테크 (1)
  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
Free Java Hotswap DCEVM

Free Java Hotswap DCEVM

Dynamic Code Evolution VM (DCEVM) 우연하게 Hotswap 기능을 제공해 주는 DCEVM 오픈 소스를 알게 되었다.그것도 공짜이면서 설정이 복잡하지도 않고, 간단하며 hotswap이 빠르게 적용된다. 방금 적용 한 후 테스트를 해보니 hotswap이 정상적으로 동작하는 것을 확인했다.저장할 때 마다 hotswap을 진행하는데 reload 속도도 빠르고, 최초 애플리케이션 구동 시 오래 걸리지도 않는다. 설치 방법은 다음과 같다. 1. DCEVM 다운로드https://github.com/dcevm/dcevm/releases 페이지 이동 후 최신 버전을 다운로드 받는다. 2.다운로드 받은 installer-light-jdk7u51.10.jar 파일을 더블 클릭하면 다음과 같은 화면이..

  • format_list_bulleted 프로그래밍
  • · 2014. 9. 1.
  • textsms
Resource files jar에 포함시키기 (META-INF/resources)

Resource files jar에 포함시키기 (META-INF/resources)

메이븐 멀티모듈 프로젝트로 개발을 하게 되면 jar 또는 war와 같은 형태로 서브 모듈을 구성하게 된다. jar 파일에는 대게 공통적으로 사용되는 java 코드들을 몰아 넣고, 메이븐 빌드 시 war 프로젝트의 WEB-INF/lib 디렉토리에 배포하여 사용되어지는데 jsp, css, js 같은 파일들도 이와 같이 사용하기 위해서는 어떻게 해야 하는지에 대해서 찾아보았다. 방법은 간단하다. (servlet 3.0에서만 가능)다음과 같이 META-INF 하위에 resources 디렉토리를 생성한 후 그 안에 여러 프로젝트에서 공유할 resource를 추가해 주면 된다.META-INF/resources/image/test.pngMETA-INF/resources/css/test.cssMETA-INF/resou..

  • format_list_bulleted 프로그래밍
  • · 2014. 7. 25.
  • textsms
HTTP multipart/form-data raw 데이터는 어떤 형태일까?

HTTP multipart/form-data raw 데이터는 어떤 형태일까?

Apache HTTP Client를 이용하여 multipart/form-data content-type으로의 요청을 서버로 보내는 유틸을 개발하게 되었다.흔히 웹 브라우저에서 파일 첨부를 한 후 "저장하기" 버튼을 클릭했을 때의 동작을 Java 코드로 구현하는 것 뿐이다. client와 server코드를 완성한 후 서버측으로 다음과 같은 정보로 요청을 보냈다.request URL : http://localhost:8080/file/upload업로드 파일 : test.txt, test1.txt 로그 레벨을 DEBUG로 설정한 후 파일 업로드 요청을 보내게 되면 다음과 같은 request raw 데이터가 남게 된다.실제 client 에서는 다음과 같은 데이터를 서버로 보내게 되는 것이다. multipart/..

  • format_list_bulleted 프로그래밍
  • · 2014. 6. 30.
  • textsms

My first Java8 Programming

요즘 자바8이 대세이고, 앞으로를 위해 hello world를 찍어보고자 한다. 지금 사용하고 있는 이클립스 버전이 indigo(3.7)인데 안타깝게도 1.7까지 밖에는 지원하지 못하는 관계로 kepler(4.3)을 설치하게 되었다. 설치만 하면 바로 자바8 코딩이 가능할 줄 알았지만 플러그인을 설치해야지만 가능하니 marketplace에서 다운을 받도록 하자. "Java8"로 검색하기만 하면 "Java 8 support for Kepler SR2"가 나오니 해당 플러그인을 설치하기만 하면 된다. 메이븐 프로젝트를 생성하고, Java Build Path에서 JDK8 라이브러리를 추가해 주고, Java Compiler에서 컴파일 레벨을 1.8로 지정해주기만 하면 설정 끝~ 람다 표현식을 쓴것과 안 쓴것을 ..

  • format_list_bulleted 프로그래밍
  • · 2014. 6. 20.
  • textsms

tomcat 기동 후 URI(/)로 자동 호출

tomcat 기동 완료 후 ROOT(/)로 자동 호출되는 현상이 있어 정리한다.ROOT(/)로 호출한다는 의미는 localhost:8080/ 와 같이 호출한다는 의미이다. web.xml 파일에 다음과 같이 error-page 설정을 추가해 줬다.errorDocumentservlet.TestServlet errorDocument/errorHandle 404/errorHandle 500/errorHandle index.jsp TestServlet 코드는 다음과 같다.@Override public void init() throws ServletException { System.out.println("called init!!"); } @Override protected void service(HttpServle..

  • format_list_bulleted 서버
  • · 2014. 6. 16.
  • textsms
c:import 사용 시 주의사항 (Request method 'POST' not supported)

c:import 사용 시 주의사항 (Request method 'POST' not supported)

Controller의 requestMapping 애노테이션에 등록되어 있는 /miniList URL은 GET 방식만 허용할 수 있게 다음과 같이 정의되어 있고,@RequestMapping(value = "/miniList", method = {RequestMethod.GET}) 커스텀 태그는 다음과 같이 jsp 코드안에 추가되어 있다. 위의 코드를 보면 일단 HTTP GET 방식으로의 요청으로만 /miniList 를 처리할 수 있을 것이다. 허나 아래 시퀀스 다이어그램과 같이 /account 요청 시 POST 방식으로 호출하게 되면 /account 의 결과 jsp 안에 있는 커스텀 태그 처리 동작이 최초 요청의 method 방식과 동일한 POST 방식으로 서버에 요청을 보낸다. 결국 POST 방식으로의 ..

  • format_list_bulleted 프로그래밍
  • · 2014. 5. 16.
  • textsms

Tiles definition 렌더링 전 처리 방법 (ViewPreparer 사용)

현재 진행하고 있는 프로젝트에서 Tiles를 사용하고 있는데 다음과 같이 defaultLayout의 left를 동적으로 바꿀 수 있는 방법에 대해서 얘기가 나왔다. 흔히 tiles를 이용할 때 사용하는 방법은 다음과 같이 새로운 definition을 정의한 후 body와 left를 put하는 방법을 이용한다. 하지만 특정 요구 사항으로 인하여 xml 설정이 아닌 코드를 이용하여 left 영역을 동적으로 바꿀 수 있는 방법을 찾아야 했다. 찾아보니 ViewPreparer 인터페이스가 있었고, 해당 인터페이스를 구현하면 tiles definition을 렌더링하기 전에 execute 메소드가 실행된다. 해당 메소드 안에서 다음의 코드와 같이 putAttribute 메소드를 이용하여 layoutId 변수 값에 ..

  • format_list_bulleted 프로그래밍
  • · 2014. 4. 30.
  • textsms
HTTP request body copy 방법

HTTP request body copy 방법

HTTP request 시 json 스트링을 서버에 넘겨주고, 서버는 interceptor에서 먼저 HTTP request body에 있는 json 스트링을 읽어와 값에 대한 체크를 진행하는 로직을 개발하고 있었다. json 스트링 검증 후 spring controller에서 @RequestParam 으로 데이터를 받으려고 할 때 다음과 같은 예외가 발생java.lang.RuntimeException: java.io.EOFException: No content to map to Object due to end of input interceptor에서 request body의 데이터를 이미 읽어 들였기 때문에 나오는 증상이다.시퀀스 다이어그램으로 표현하자면 다음의 4번에 해당하는 부분에서 예외가 발생된다...

  • format_list_bulleted 프로그래밍
  • · 2014. 4. 29.
  • textsms
JConsole 사용

JConsole 사용

Cafe24에서 호스팅 받고 있는 장비의 tomcat이 느린 것 같아 이를 모니터링 할 수 있는 툴을 찾아 보았다. 그중에서 가장 눈에 띈 것은 JConsole 인데 로컬 환경에 JDK 설치 시 기본적으로 탑재되어 있는 Java 모니터링 툴이다. 내 로컬 PC에서 Cafe24에 호스팅 하고 있는 tomcat 장비에 접속하기 위해서는 다음과 같은 설정을 추가해 줘야 한다.나는 ${CATALINA_HOME}/bin 디렉토리의 catalina.sh 쉘 파일에 다음의 설정을 추가해 주었다. (port는 9999로 설정)export JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.su..

  • format_list_bulleted 개발툴
  • · 2014. 3. 14.
  • textsms
JMeter View Results Tree Response data 짤림 현상

JMeter View Results Tree Response data 짤림 현상

JMeter를 이용하여 API를 테스트 하는데 View Results Tree의 Response data가 짤리는 현상이 있었다. data가 짤리면서 아래와 같은 문구가 보이는데 이는 "표시하기에 너무 큰 응답" 이라는 의미이다.Max 사이즈로 잡은 3072byte보다 큰 3771byte를 response로 받아서 View Results Tree에 표시할 수 없는 것이다.Response too large to be displayed. Size: 3771 > Max: 3072, Start of message: 사이즈를 늘려주기 위해서는 JMeter가 설치되어 있는 디렉토리로 이동 후 bin 폴더의 jmeter.properties 파일을 에디터로 오픈 한 후 다음의 설정 부분을 변경해 주면 된다. 기본 20..

  • format_list_bulleted 개발툴
  • · 2014. 3. 10.
  • textsms

JUnit private method test

지금껏 테스트 케이스를 작성할 때 public 메소드를 통하여 private 메소드를 테스트 하곤 했는데 private 메소드를 테스트 할 일이 생겨 reflection을 이용하여 유틸 클래스를 작성하게 되었다. private 접근 제어자가 필드 및 메소드에 존재할지라도 외부 클래스에서 setAccessible(true)로 지정하면 접근이 가능하다. 한 가지 아쉬운 점은 reflection을 이용하여 메소드 테스트를 하고 싶을 때 메소드 이름을 문자열로 넘겨야 한다는 것이다. 이와 같이 메소드 이름을 하드 코딩으로 넘기게 되면 리펙토링에 취약하다는 단점이 있다. (private method 이름을 바꿔버리면? 테스트 실패) powermock 라이브러리도 private method를 테스트 할 때 메소드 ..

  • format_list_bulleted 프로그래밍
  • · 2014. 3. 4.
  • textsms
Java Unsupported major.minor version 51.0

Java Unsupported major.minor version 51.0

JDK1.6 + Tomcat6 으로 개발을 진행 중 JDK 버전을 1.7로 사용하자고 하여 이클립스의 Java Build Path에서 버전을 변경해 주었다. 그런 후 tomcat 구동을 하니 "Unsupported major.minor version 51.0 (unable to load class com.xxx.xxx.xxx.TestController)" 와 같은 error 로그가 출력되었다.이유를 찾아 보니 Tomcat6에서는 JDK1.7 버전을 지원하지 않는다고 한다. 그건 그렇다 치고 로그가 왜 저 모양으로 찍나 궁금했는데 알고 보니 다음과 같은 의미가 담겨 있었다.J2SE 8 = 52J2SE 7 = 51J2SE 6.0 = 50J2SE 5.0 = 49JDK 1.4 = 48JDK 1.3 = 47JDK..

  • format_list_bulleted 개발툴
  • · 2014. 3. 3.
  • textsms

제너릭 메소드

제너릭 메소드를 만들다 문법이 잘 기억이 나질 않아 테스트 코드를 작성해 보았다.내가 헷갈려 했던 부분은 다음의 코드에서 T 부분이였다. public T getObj(String objKey, Class type) { 정리를 하자면 는 메소드 아규먼트에 타입 매개변수 T가 선언되어 있으면 추가되어야 하는 것이고, 그 옆에 있는 T 는 return type을 의미한다.이제 정리가 되었으니 테스트 코드를 작성해 보자. 테스트 코드는 Map 객체에 저장되어 있는 특정 클래스 type을 추출하는 방식이다.첫 번째 방법은 제너릭을 사용하지 않은 방법이고, 두 번째 방법은 제너릭을 사용한 방식이다. 코드를 보면 알겠지만 첫 번째 방법은 Map에 저장되어 있는 객체를 추출하기 위해서 여러 개의 메소드를 생성해야 추출..

  • format_list_bulleted 프로그래밍
  • · 2014. 3. 1.
  • textsms

JUnit 테스트 실행 시 src/test/resource 패키지의 설정 파일만 읽어 들일까?

JUnit 테스트 코드를 작성하다 보면 스프링에 의존성이 생기는 경우가 있다.이럴 때 스프링 테스트 컨텍스트 프레임워크를 사용하여 스프링 컨테이너를 초기화 한 후 테스트를 진행하게 된다.다음의 테스트 코드가 스프링 테스트 컨텍스트 프레임워크를 사용한 코드이다.@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/spring.xml"}) public class SpringBeanLoadingTest { @Resource private String namkyu; @Test public void test() { // src/main/resource/spring.xml // assertThat(namkyu, is("namkyu"..

  • format_list_bulleted 프로그래밍
  • · 2014. 2. 25.
  • textsms

jackson JSON 사용 중 UnrecognizedPropertyException 발생 시

다음과 같이 resultCode, resultMessage, siteId JSON 스트링이 있고, 해당 JSON 스트링 값을 ConstraintData DTO 클래스의 프로퍼티에 bind 시키기 위해 다음과 같은 코드를 사용했다.String body = {\"resultCode\":1000,\"resultMessage\":\"test\",\"siteId\":1111} @Datapublic class ConstraintData {private int siteId;} ObjectMapper mapper = new ObjectMapper();ConstraintData data = mapper.readValue(body, ConstraintData.class); 허나, 이와 같이 코드를 작성하게 된다면 다음과 ..

  • format_list_bulleted 프로그래밍
  • · 2014. 2. 15.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • navigate_next
전체 방문자
오늘
어제
전체
전체 카테고리
  • 분류 전체보기 (427)
    • WebRTC (7)
    • 프로그래밍 (139)
    • AI 활용 (3)
    • 서버 (49)
    • 개발툴 (102)
    • 개발이야기 (10)
    • 장애 경험 (1)
    • 유용한 도구 (4)
    • 끄적끄적 (17)
    • 독서 (93)
    • 회고 (1)
    • 재테크 (1)
최근 글
최근 댓글

캘린더

«   2025/10   »
일 월 화 수 목 금 토
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
태그
  • #VirtualBox
  • #ant
  • #vagrant
  • #java
  • #JPA
  • #shellscript
  • #회고
  • #git
  • #Docker
  • #Elasticsearch
  • #리눅스
  • #tomcat
  • #Jenkins
  • #SQL
  • #algorithm
  • #Spring
  • #Apache
  • #SourceTree
  • #HTTP
  • #Eclipse
  • #maven
  • #Wireshark
  • #JQuery
  • #JUnit
  • #제너릭
  • #Database
  • #Kubernetes
  • #javascript
  • #개발주의사항
  • #fiddler
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바