출처 : http://ohhoonim.blogspot.kr/2013/03/maven.html

 

------------------------- 복사된 내용 ------------------------

메이븐에서 미리 지정한 용어들이 많아서  pom.xml 을 열어봐도 이해가 안가는 부분들이 많다. 메이븐 빌드 시 시용하는 goal들은 1번을 보고 pom.xml 내에 사용하는 예약어들은 2번을 보면 된다. 

  1. 라이프사이클goals
    1. 기본 
      • compile : target/classes/ 폴더에 컴파일한 파일들을 복사
      • test : /test-classe/s 폴더에 컴파일한 파일들을 복사
      • package : target/[project_name-version]/ 폴더에 src/main/webapp/ 파일들 복사, target/[project_name-version]/WEB-INF/classes/ 폴더에 target/classes/ 파일들을 복사
      • install
      • deploy
    2. clean
      • clean : target 폴더를 삭제한다. 
    3. site
      • site
      • site-deploy
  2. 의존 라이브러리
    1. 스코프scope
      • compile : default
      • provided : 컴파일 할 때만 사용. 배포시 미포함 (예) servlete.jar
      • runtime  : 컴파일 시 사용하지 않지만 실행시에는 사용되는 경우
      • test : 테스트 시점에만 사용할 때 (예) junit
      • system : provided와 동일하나 사용자가 직접 jar파일을 관리해주어야함.
      • import 
    2. 예약 속성properties
      1. project
        • ${project.build.directory} : target/ 
        • ${project.build.outputDirectory} : target/classes
        • ${project.name}
        • ${project.version} 또는 ${version}
        • ${project.build.finalName} : pakage페이지를 실행해 압축된 최종 파일이름
      2. settings
        • ${settings.localRepository} : 로컬 저장소의 경로
      3. 환경변수
        • ${env.PATH} : 시스템의 PATH 설정값
        • ${env.JAVA_HOME| : 시스템의 JAVA_HOME 설정 값 
      4. 기타
        • ${basedir} : pom.xml 설정 파일이 위치하는 디렉토리
Posted by 삽지리
,

전문가

카테고리 없음 2014. 4. 8. 13:10
Posted by 삽지리
,

나는

<update id="updateSortOrderData" >

처럼 parameterType을 아예 사용하지 않을 예정..

해당사항이 문제가 생긴다면 아래와 같은 조치를 해야됨

 

원문 : http://www.cyworld.com/soongyoblog/9581741

일반적으로 삭제 처리할 경우 아래와 같이 사용한다.

<delete id="deleteDataById" parameterType="string">
DELETE
FROM
tableName
WHERE
id = #{ids}
</delete>

그래서 난 멀티 행을 삭제하기 위해 아래와 같이 사용 했다. ${xx}를 이용하여.
<delete id="deleteDataByIds" parameterType="string">
DELETE
FROM
tableName
WHERE
id IN (${ids})
</delete>

위와 같이 문제 없어 보이는 구문을 작성 후 테스트 해보니 에러! 두둥!

검색해 보니 ${} 표현식을 사용할 경우에는 Map을 parameterType으로 던져 주어야 한다고 한다.

db 바꿔서 처리 해보니 문제 해결
Posted by 삽지리
,

function test1(){
  J("#testDiv").html('test1<'+'script>alert(1);<'+'/script>');
 }
 function test2(){
  document.getElementById('testDiv').innerHTML='test2<'+'script>alert(1);<'+'/script>';
 }
 function test3(){
  var script = document.createElement('script');
  script.innerHTML='alert(1);';
  document.getElementById('testDiv').appendChild(script);
 }

 

 

<a onclick="test1();">test1</a>
<a onclick="test2();">test2</a>
<a onclick="test3();">test3</a>

<div id="testDiv">
</div>

 

 

jquery환경에서 테스트하면

1,3 번은 출력되고 2번은 안된다.

jquery는 내부적으로 append를 통해서 동작하기 때문에

script를 실행시 script가 실행된다.

 

Posted by 삽지리
,

fancybox를 사용하다가 이상하다고 생각해서 찾아봄

fancybox에

J(document).ready

를 선언해서 사용하면

이게 정상적으로 동작하는게 이상해서..

 

 

function test1(){
  J(document).ready(function(){
   alert(1);
  });
 }

 function test2(){
  window.onload=function(){
   alert(2);
  }

 }

//]]>

<a href="#" onclick="test1();">test1</a>
<a href="#" onclick="test2();">test2</a>

 

라는 소스가 있으면

test1은 출력을 하지만

test2는 출력하지 않음

우리가 보통 window.onload 혹은

body.onload 대용의 느낌으로 ready를 사용하는데

실제로는 차이가 있다.

나도 저걸 테스트 하기전에는

ready는

onload 이벤트를 attach하는거라고 생각했다.

 

실제로 jquery를 보면

 

if ( document.readyState === "complete" ) {
   // Handle it asynchronously to allow scripts the opportunity to delay ready
   setTimeout( jQuery.ready );

  // Standards-based browsers support DOMContentLoaded
  } else if ( document.addEventListener ) {
   // Use the handy event callback
   document.addEventListener( "DOMContentLoaded", completed, false );

   // A fallback to window.onload, that will always work
   window.addEventListener( "load", completed, false );

  // If IE event model is used
  } else {
   // Ensure firing before onload, maybe late but safe also for iframes
   document.attachEvent( "onreadystatechange", completed );

   // A fallback to window.onload, that will always work
   window.attachEvent( "onload", completed );

   // If IE and not a frame
   // continually check to see if the document is ready
   var top = false;

   try {
    top = window.frameElement == null && document.documentElement;
   } catch(e) {}

   if ( top && top.doScroll ) {
    (function doScrollCheck() {
     if ( !jQuery.isReady ) {

      try {
       // Use the trick by Diego Perini
       // http://javascript.nwbox.com/IEContentLoaded/
       top.doScroll("left");
      } catch(e) {
       return setTimeout( doScrollCheck, 50 );
      }

      // detach all dom ready events
      detach();

      // and execute any waiting functions
      jQuery.ready();
     }
    })();
   }
  }

 

이런부분이 있다

현재 문서상태가 complete가 아니면 onload이벤트에 넣고

complete이면 바로 실행시키는것

Posted by 삽지리
,

 

 

if ($.browser.mozilla || $.browser.opera) {
    c.bind("textchange", function(a, b) {
     $.check(c, e.indicator, parseInt(e.limit), e.twice);
    });
   } else {
    c.bind("keyup", function(a) {
     $.check(c, e.indicator, parseInt(e.limit), e.twice);
    });
   }

 

이런식으로 textarea를 위한 byte체크를 위해서 분기를 하는 부분이 있었는데

ie11은 $.browser.mozilla 가 true이다

해서 찾아보니

http://serpiko.tistory.com/370

 

이런글이 있네

내용에 보면 ie11에는 navigator.userAgent에 MSIE가 없어서 생기는 오류인듯

 

 

http://www.slideshare.net/netil/ie11-201310

 

이것도 한번 읽어볼것

 

눈여겨볼 내용은

ie11이전까지는 attachEvent를 사용했으나 이제는

다른브라우저들과 마찬가지로 addEventListener를 사용하게 된것

Posted by 삽지리
,

레드마인을 다운받기 위해 찾아보았는데 좋다..

사이트는 http://bitnami.com

레드마인이외에도 많음

Posted by 삽지리
,

iframe 에

src로 url을 보내는데

 

한글이 변수의 값으로 넘어갔다

단..

encodeURIComponent 를 안쓰고

 

최초에는 받는쪽에서 정상적으로 받았다

하지만 해당 iframe을 재사용하여 다시 url을 보냈을때 한글이 깨져서 날라갔다

웃긴건

피들러에서 최초 get방식으로 보낸건 한글이 꺠져서 보이는데

두번쨰것은 정상적으로 보인다는 것이다.

히발 환장하겠네

그래서 한글을 encodeURIComponent로 감싸보았다.

결과는 fail

그런데

대상 iframe의 charset를

ifr.contentWindow.document.charset 으로 조회해보았더니 unicode였다

그 이후는 잘 모르겠다 아마 그이후는 호출했던 창에 따라갈것 같아

해당 iframe을 할떄마다 삭제하고 새로 만들어서

 

ifr.contentWindow.document.charset="unicode";

와 같이 캐릭터셋을 계속 부여했더니 잘 되었다.

Posted by 삽지리
,

http://www.xenomity.com/86

 

 

 

에러가 남

 

java.lang.NoSuchMethodError: javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory

 

 

<dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.0.1.Final</version>
  </dependency>

 

를 사용시 최신의 el라이브러리를 사용하기 떄문에 tomcat6환경에서 문제가 생김

 

그래서

<version>4.0.0.GA</version>

를 사용함

 

그런데

java.lang.NoClassDefFoundError: org/hibernate/validator/resourceloading/ResourceBundleLocator

에러가남

 

 

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" >
  <property name="validationMessageSource" ref="messageSource"/>
 </bean>

원인은 이걸 하는데

하이버네이트 validator에 validationMessageSource이게 없다는것

 

 

<version>4.3.1.Final</version>

 

이걸로 수정했더니 괜찮아짐

 

Posted by 삽지리
,

글을 좀 찾아봤는데 왜 써야하는지를 잘 모르겠다. 좀 찾아서 정리해야겠다.

Posted by 삽지리
,