반응형
AspectJ Pointcut 표현식(aspectj expression), execution, within, bean

pointcut :  이란 충고를 받을 메소드를 정의한 것이다.
execution: 메소드 실행 결합점(join points)과 일치시키는데 사용된다.
within: 특정 타입에 속하는 결합점(join point)을 정의.

execution(public * *(..)) : public 메소드가 포인트 컷

execution(* onj.spring.aop.*.*(..)) : onj.spring.aop 패키지의 모든 메소드가 포인트 컷

execution(* onj.spring.aop..*.*(..)) : onj.spring.aop 패키지와 하위 패키지의 모든 메소드가 포인트 컷

execution(public void insert*(..)) : public에 리턴값, 패키지명 없고 메서드 이름은 insert로 시작, 인자값은 0개 이상인 메서드가 포인트 컷

execution(* onj.spring.aop.*.*()) : 리턴형 관계없고 onj.spring.aop 패키지의 모든 클래스, 인자값이 없는 모든 메서드가 포인트 컷

execution(* onj.spring.aop..*.*(..)) : 리턴형 관계없고 onj.spring.aop 패키지 및 하위 패키지에 있는 모든 클래스,  인자값이 0개 이상인 메서드가 포인트 컷

execution(* delete*(*)) : 메서드 이름이 delete으로 시작하는 인자값이 1개인 메서드가 포인트 컷

execution(* delete*(*,*)) : 메서드 이름이 delete로 시작하는 인자값이 2개인 메서드가 포인트 컷

execution(* onj*(Integer, ..)) : 메서드 이름이 onj로 시작하고 첫번째 인자값의 타입이 Integer, 1개 이상의 매개변수를 갖는 메서드가 포인트 컷

within(onj.spring.aop.*) : onj.spring.aop 패키지 내의 모든 메소드가 포인트 컷

within(onj.spring.aop..*) : onj.spring.aop패키지 및 하위 패키지의 모든 메소드가 포인트 컷

bean(oraclejava*) : 이름이 oraclejava로 시작되는 모든 빈의 메소드가 포인트 컷

bean(*dataSource) || bean(*DataSource) : 빈 이름이 “dataSource” 나 “DataSource” 으로 끝나는 모든 빈의 메소드가 포인트 컷

!bean(onjoraclejava) : onjoraclejava빈을 제외한 모든 빈의 메소드가 포인트 컷


출처 : http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecSpring&wr_id=330

반응형
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,

[secmon] 상태값

코드자료실 2017. 8. 28. 13:04
반응형

Category ID

프로세스 생성 (Process Create) 1

파일 생성 시간 변경 (File creation time changed) 2

네트워크 연결 탐지 (Network Connection Detected) 3

시스몬 상태 변경 (Sysmon service state changed) 4

프로세스 종료 (Process terminated) 5

드라이버 로드 (Driver loaded) 6

이미지 로드 (Image loaded) 7

스레드이벤트 생성 (CreatRemoteThread) 8

Disk/Volume Read 이벤트 (RawAccessRead*) 9

반응형
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형

// 사업자등록번호 검사
 function checkBizID(bizID)
 {
  var re = /-/g;
  var bizID = bizID.replace(re,'');
  var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);
  var tmpBizID, i, chkSum=0, c2, remander;

  for (i=0; i<=7; i++){
   chkSum += checkID[i] * bizID.charAt(i);
  }

  c2 = "0" + (checkID[8] * bizID.charAt(8));
  c2 = c2.substring(c2.length - 2, c2.length);

  chkSum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1));

  remander = (10 - (chkSum % 10)) % 10 ;

  if (Math.floor(bizID.charAt(9)) == remander){
   return true; // OK!
  }
  return false;
 }

 

 // 법인번호 검사
 function isRegNo(sRegNo)
 {
  var re = /-/g;
  sRegNo = sRegNo.replace('-','');

  if (sRegNo.length != 13){
   return false;
  }

  var arr_regno  = sRegNo.split("");
  var arr_wt   = new Array(1,2,1,2,1,2,1,2,1,2,1,2);
  var iSum_regno  = 0;
  var iCheck_digit = 0;

  for (i = 0; i < 12; i++){
    iSum_regno +=  eval(arr_regno[i]) * eval(arr_wt[i]);
  }

  iCheck_digit = 10 - (iSum_regno % 10);

  iCheck_digit = iCheck_digit % 10;

  if (iCheck_digit != arr_regno[12]){
    return false;
  }
  return true;
 }

 

//주민등록번호 체크
//111111-1111118
function chkJumin(jumin) {
 if(jumin.match(/^\d{2}[0-1]\d[0-3]\d-[1-4]\d{6}$/) == null) {
  return false;
 }

 var chk = 0;
 var i;
 var last_num = jumin.substring(13, 14);
 var chk_num = '234567-892345';

 for(i = 0; i < 13; i++) {
  if(jumin.charAt(i) != '-')
   chk += ( parseInt(chk_num.charAt(i)) * parseInt(jumin.charAt(i)) );
 }

 chk = (11 - (chk % 11)) % 10;

 if (chk != last_num) return false;

 return true;
}

출처 : http://thdwns2.springnote.com/pages/894862

반응형

'코드자료실 > javascript' 카테고리의 다른 글

[jquery]onload 시점  (0) 2014.09.29
[jquery] ie7, ie6 json is undefined  (0) 2013.03.13
[jquery] long polling 기법 구현  (0) 2013.02.13
[jquery] jsonp 사용  (0) 2013.01.24
[jquery] jquery ui tabs  (0) 2013.01.16
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형

Go to start of metadata

동적 태그 라이브러리

Grails는 JSP와 GSP에서 사용할 수 있는 다양한 종류의 커스텀 태그를 내장하고 있지만(태그 라이브러리 래퍼런스 를 참고하세요), Grails의 간결한 동적 태그 라이브러리 메커니즘을 이용하면 개발자가 직접 단순 커스텀 태그(simple custom tags), 논리 커스텀 태그(logical custom tags), 반복 커스텀 태그(iterative custom tags)를 만들 수도 있습니다.

Grails 태그는 추가적인 설정이 필요 없고, TLD를 갱신할 필요도 없으며, 서버 재시작 없이 런타임에 자동으로 리로드 된다는 장점을 갖습니다. 이러한 특성 덕에 개발자들은 마치 뷰의 다른 부분들을 개발하는 것 처럼 점진적으로 유용성을 높여가며 태그를 개발할 수 있습니다.

경고

Icon

Grails 태그 라이브러리를 JSP에서 사용하려면 약간의 추가적인 작업이 필요합니다. Grails 태그 라이브러리는 동적이라는 특성으로 인해 JSP 보다는 GSP와 더 잘 연동됩니다. Grails 태그 라이브러리를 JSP에서 사용하는 방법을 알아보려면 마지막 섹션을 참고하세요.

단순 태그(Simple tags)

새 태그를 만들려면 "grails-app/taglib/ApplicationTagLib.groovy" 파일을 열어서 수정하거나, 이름이 "TagLib"로 끝나는 새 클래스를 만들어야 합니다. 단순 태그를 만들려면 클래스에 하나의 인자를 갖는 새로운 클로저 속성을 추가하면 됩니다. 이 인자는 태그의 속성 집합입니다:

def includeJs = { attrs ->
    out << "<script xsrc='scripts/${attrs['script']}.js' />"
}

이 태그를 GSP 페이지에서 호출하려면 "g" 접두사를 붙여서 태그 속성 이름을 적어주면 됩니다:

<g:includeJs script="myscript" />

논리 태그(Logical tags)

논리 태그를 만들려면 두 개의 인자를 갖는 클로저 속성을 추가해야 합니다. 첫 번째 인자는 태그의 속성 집합이고, 두 번째 인자는 태그의 본문(body)이며 인자 자체가 또 다른 클로저 입니다.

def isAdmin = { attrs, body ->
     def user = attrs['user']
     if(user != null && checkUserPrivs(user)) {
           body()
     }
}

위 태그는 사용자가 관리자(administrator)인지 판별한 후, 관리자인 경우에만 태그의 본문을 호출합니다:

<g:isAdmin user="${myUser}">
    // 관리자만 볼 수 있는 제한된 컨텐츠.
</g:isAdmin>

반복 태그(Iterative tags)

반복 태그를 만드는 것 또한 가능합니다:

def repeat = { attrs, body ->
    def i = Integer.valueOf( attrs["times"] )
    def current = 0
    i.times {
           body( ++current ) // 현재 반복 횟수(current)를 Groovy의 기본 인자인 "it"으로 넘김
    }
}

반복 태그를 호출하려면 아래와 같이 하면 됩니다:

<g:repeat times="3">
<p>3회 반복! 현재 반복 횟수 = ${it}</p>
</g:repeat>

태그를 이용하여 마크업 만들기

Grails는 태그를 이용하여 마크업을 만들 수 있도록 도와주는 특별한 메서드를 제공합니다. 마크업을 만드는 것은 태그의 일반적인 활용 사례 중 하나입니다. 마크업을 만들려면 'mkp' 메서드를 호출하면서 화면에 출력하고자 하는 마크업들과 함께 클러저를 전달해주면 됩니다:

def dialog = { attrs, body ->
      mkp {
          div('class':'dialog') {
              body()
          }
      }
}

GSP 태그를 메서드로써 호출하기

GSP 태그들은 GSP 페이지 안의 Groovy 표현식으로 사용될 수도 있습니다. 예를 들어 hasErrors 태그는 다음과 같이 평범한 태그로 쓰일수도 있고:

<g:hasErrors bean="${book}" field="title">
<span class='label error'>There were errors on the book title</span>
</g:hasErrors>

아래처럼 메서드로써 호출될 수도 있습니다:

<span id="title" class="label ${hasErrors(bean:book,field:'title','errors')}">Title</span>

메서드의 마지막 인자는 태그의 본문(body)으로 취급됩니다. 또는 아래와 같이 문자열을 반환하는 클로저를 넘겨도 됩니다:

<%=
hasErrors(bean:book,field:'title') {
'errors'
} %>

JSP에서 Grails 태그 라이브러리 사용하기

JSP에서 Grails 태그 라이브러리를 쓰려면 JSP의 "invokeTag" 태그를 이용하며 Grails의 태그 라이브러리를 호출해주면 됩니다.

<g:invokeTag name="includeJs" script="myscript" />
<g:invokeTag name="isAdmin" user="${myUser}">
    // some restricted content
</g:invokeTag >
<g:invokeTag name="repeat" times="3">
<p>Repeat this 3 times! Current repeat = <c:out value="${it}" /></p>
</g:invokeTag>

만약, Grails 태그를 다른 평범한 JSP 태그처럼 사용하려면 아래 단계를 수행해야 합니다:

1) Grails의 org.codehaus.groovy.grails.web.taglib.jsp.JspInvokeGrailsTagLibTag 클래스를 상속받는 자바 클래스를 생성하고 생성자에서 "setName()" 메서드를 호출하여 여러분의 태그 이름을 전달해줍니다:

package com.mycompany.taglib;
public class IncludeJsTag extends JspInvokeGrailsTagLibTag {
   public static final String TAG_NAME = "includeJs";
   public IncludeJsTag() {
       super.setName(TAG_NAME);
   }
}

2) JSP에서는 각각의 태그에 대해 선언적 태그 라이브러리 정의(TLD)가 존재해야 합니다. 따라서 "web-app/WEB-INF/tld/grails.tld" 파일을 수정하여 여러분의 클래스를 지칭하는 적절한 엔트리를 추가해주어야 합니다:

<tag>
        <name>includeJs</name>
        <tag-class>com.mycompany.taglib.IncludeJsTag</tag-class>
        <body-content>JSP</body-content>
        <variable>
            <name-given>it</name-given>
            <variable-class>java.lang.Object</variable-class>
            <declare>true</declare>
            <scope>AT_BEGIN</scope>
        </variable>
        <dynamic-attributes>true</dynamic-attributes>
    </tag>

3) 이제 Grails 태그를 다른 평범한 JSP 태그처럼 호출할 수 있습니다:

<g:includeJs script="myscript" />

출처 : http://docs.codehaus.org/display/grails/korean+dynamic+tag+libraries

반응형
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형

Tomcat 서버에 특정 ip 만 접근 할 수 있게 설정하기

1. Tomcat 설치 위치에 conf 폴더 내의 context.xml 파일을 메모장 같은 Editor 로 연다 ( 편집하기 전에 미리 백업을 해두자 )
- Windows 경우 Default 설치 경로 : C:\Program Files\Apache Software Foundation\Tomcat 6.0
- Linux 의 경우 : /usr/local/tomcat

2. context.xml 파일의 맨 끝부분에 다음의 내용이 반드시 있는지 확인 한다
- <WatchedResource>WEB-INF/web.xml</WatchedResource>



3. </WatchedResource> 태그 다음 라인에 아래의 내용을 추가 한다. allow 항목에 허용하고 싶은 ip 를 넣는다. ip 가 여러개 일경우 192.168.1.22|192.168.1.33 과 같이 넣고 저장 한다
- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="IP1|IP2|IP3"/>

4. Tomcat 을 다시 시작 한다
- Windows 경우 : Trayicon 영역에서 tomcat 아이콘을 찾아 마우스 오른쪽 마우스 클릭하여 Stop Service 후 Start Service 하면 된다
- Linux 의 경우 : /etc/init.d/tomcat restart 하면 된다

[ 주의 ]
- Tomcat 의 각종 설정 파일들 안에 한글 주석을 달 경우 주의 해야 한다. 각종 *.xml 파일들이 Tomcat 이 Start 할 때 Parse 되는데 이때 한글 주석을 만나면 Error 가 발생하며, Tomcat Service 는 올라 왔지만, 메인 Servlet 이 Load 실패 하기 때문에 해당 웹 페이지가 열리지 않는다.
어쩔 수 없이 한글 주석을 달아야 한다면, 해당 *.xml 파일의 맨 상단의 encoding='utf-8' 부분을 encoding='eucKR' 로 변경하고, Tomcat 을 재시작하면 된다


반응형

'코드자료실' 카테고리의 다른 글

[secmon] 상태값  (0) 2017.08.28
[grails] 동적 태그 라이브러리  (1) 2014.12.09
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형

jQuery 활용하기

$(document).ready() 

DOM 데이터만 로드되면 바로 실행된다. 그러므로 window.onload 보다 빨리 실행된다.


jQuery를 이용한 실행 시점 순서이다.

$(window).load(function() { 모두 로드된 후에 처리 });

$(document).ready(function() { DOM객체 로드시 처리 });

$(function() { 로딩 될 때 });


반응형
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형

getSession(), getSession(true), getSession(false) 차이점

1. getSession(), getSession(true)
 - HttpSession이 존재하면 현재 HttpSession을 반환하고 존재하지 않으면 새로이 세션을 생성합니다

2. getSession(false)
 - HttpSession이 존재하면 현재 HttpSession을 반환하고 존재하지 않으면 새로이 생성하지 않고 그냥 null을 반환합니다

3. 사용 예
HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
위는 동일한 결과를 반환합니다
새로 생성된 놈인지 확인은 session.isNew() 로 가능합니다
그리고 getSession(), getSession(true)는 null 체크없이 바로 getAttribute()를 사용해도 무방하지만, getSession(false)는 null을 리턴할수 있기 때문에 null체크를 해야 합니다.
HttpSession session = request.getSession(false);
if (session != null)
    User user = (User) session.getAttribute("User");


반응형

'코드자료실 > java / jsp' 카테고리의 다른 글

[jstl] request 객체 접근하기  (0) 2013.01.24
[jsp] 브라우저 캐쉬 설정  (0) 2012.12.23
[java] 개행문자 제거하기  (0) 2012.11.29
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형

<meta name=“Author” content=“NOLS”> Author:제작자의 이름이 NOLS라는 뜻

<meta name=“Generator” content=“Microsoft FrontPage 4.0”> 페이지를 프론트 페이지로 제작

<meta name=“Copyright” content=“2003 RANGS”> 저작권에 관한 정보

<meta name=“Keywords” content=“html,tag,mata,메타,태그”> 검색엔진에서 검색되는 키워드

<meta name=“Description” content=“META 태그에 관한 정보”> 페이지에 대한 정보

<meta http-equiv=“Content-Type” content=“text/html; charset=euc-kr”> 문자 인코딩

<meta http-equiv=“Refresh” content=“60”> 60초 마다 새로고침

<meta http-equiv=“Refresh” ccontent=“5;url=주소”>주소로 5초후 이동

<meta http-equiv=“Pragma” content=“no-cache”> 캐쉬가 되지 않게

<meta http-equiv=“Expires” content=“Mon, 08 Sep 2003 10:10:10 GMT”> 캐쉬 만료(파기)일

<meta http-equiv=“Page-Enter” content=“revealtrans(duration=1,transition=12)”>페이지 들어갈때 트랜지션 효과(장면 전환 효과)

<meta http-equiv=“Page-Exit” content=“revealtrans(duration=1,transition=12)”>페이지 나갈때 트랜지션 효과(장면 전환 효과)

<meta http-equiv=“Imagetoolbar” content=“no”>이미지 마우스 오버시 이미지툴바 생기지 않게해줌

<meta http-equiv="refresh" content="5; url=main.html"> 페이지 이동

반응형

'코드자료실 > html' 카테고리의 다른 글

[html] 특수문자 코드표  (0) 2013.01.21
[링크] 홈페이지 템플릿  (0) 2012.12.14
Systax Highlighter 사용법  (0) 2012.12.10
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형

jquery ie7, ie6 json is undefined



<!--[if lt IE 7]><script type="text/javascript" src="js/json/json2.js"></script><![endif]-->

<!--[if IE 7]><script type="text/javascript" src="js/json/json2.js"></script><![endif]-->

<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>


스크립트를 포함시켜주면 된다.


http://www.devcurry.com/2010/12/resolve-json-is-undefined-error-in.html

https://github.com/douglascrockford/JSON-js

반응형
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,
반응형


 

    ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist

 

 

http://blog.naver.com/gogojinny80?Redirect=Log&logNo=110076620135

를 참고 하여 아래 명령어를 실행

 

 

    sqlplus /nolog

 

    sql>connect sys/비밀번호 as sysdba       //    conn sys/as sysdba

    sql>startup

 

 

하지만 실패..

왜이런 에러가 뜨는지 본에러 내용이 표출되었다.

 

ORA-01565

spfile을 불러 올 수 없어 에러가 나는것 같았다.

확실히 어제 nls_sort, nls_comp 파라메터를 추가 시켜주려고 수정했던것이 생각났다.

 

http://blog.naver.com/langve/80099521224

 

위 글로 부터

 

spfile : 환경변수를 저장한 2진 파일

pfile   : 환경변수를 저장한 텍스트 파일

 

파라미터 저장 파일 : [orahome]/dbs/spfile[sid].ora

                             8i 까지는 메모장같은것으로 위의 파일을 열어 수정 할 수 있었지만

                             9i 부터는 명령어를 통해서만 수정 가능하다.

                             파라미터 파일이 있어야 오라클이 구동 1단계를 커쳐 노마운트를 넘어 갈 수 있으므로

                             오라클이 구동되지 않고 v$ 내용마자 찾을 수 없다면 파라미터 파일을 고쳐야 한다.

이라는 정보를 얻었다.

 

어제 명령어로 수정한 spfile을 수정사항 복구를 위해 에디트플러스로 수정을 하여 발생했다는 원인을 파악 할 수 있었다.

그래서 에디트플러스로 파일을 열때 인코딩형식을 물어봤군..

 

이제는 손상된 spfile을 복구시키는 방법을 찾았다.

http://cafe.naver.com/oracle1004/108

http://blog.naver.com/meldin/60090587998

 

두글을 참고 하여 아래와 같은 절차를 통했다.

 

SQL> startup mount pfile=C:\oraclexe\app\oracle\product\10.2.0\server\config\scr
ipts\init.ora;
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  805306368 bytes
Fixed Size                  1289996 bytes
Variable Size             209715444 bytes
Database Buffers          591396864 bytes
Redo Buffers                2904064 bytes
데이터베이스가 마운트되었습니다.
SQL> create spfile from pfile='C:\oraclexe\app\oracle\product\10.2.0\server\conf
ig\scripts\init.ora';

파일이 생성되었습니다.

SQL> shutdown immediate;
ORA-01109: 데이터베이스가 개방되지 않습니다


데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  805306368 bytes
Fixed Size                  1289996 bytes
Variable Size             209715444 bytes
Database Buffers          591396864 bytes
Redo Buffers                2904064 bytes
데이터베이스가 마운트되었습니다.

데이터베이스가 열렸습니다.
SQL> shutdown immediate;
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  805306368 bytes
Fixed Size                  1289996 bytes
Variable Size             209715444 bytes
Database Buffers          591396864 bytes
Redo Buffers                2904064 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL>

 

에러 해결.

반응형

'코드자료실 > database' 카테고리의 다른 글

[oracle] 리눅스에서 덤프파일 사용  (0) 2013.03.12
[oracle] 문자 조작 함수  (0) 2013.02.20
[oracle] delete data 복구  (0) 2013.02.12
[database] varchar2 vs nvarchar2  (0) 2013.01.25
[Oracle] 페이징 쿼리  (0) 2012.12.23
블로그 이미지

cocy

조금은 가볍게! 시작은 새롭게!

,