반응형

[오라클 덤프 exp / imp]

 

1. DB 서버으로 접속 (ex 리눅스)

 

2. root 권한으로 변경

  - su-

 

3. 오라클 유저로 변경

  - su - oracle

 

4. 오라클 sqlplus 실행 

  - sqlplus "/as sysdba"

5. 해당 유저의 데이터를 export

  - exp 유저명/패스워드 file=파일명.dmp full=y;

 

6. 삭제할 유저가 사용하던 tablespace 확인(같은 테이블스페이스 지정시)

  - select DEFAULT_TABLESPACE from dba_users where username= 삭제할유저명

 

7. 유저 삭제 (기존 유저로 import 할 시 유저가 사용하던 테이블 모두 삭제되었는지 확인)

  - drop user 삭제할유저명 cascade;

 

8. import 받을 유저를 생성

  - CREATE USER 유저명 IDENTIFIED BY 패스워드 DEFAULT TABLESPACE 테이블스페이스명 TEMPORARY TABLESPACE TEMP;

 

9. 생성한 유저에게 권한부여

  - grant connect, resource, dba to 유저명;

 

10. 생성한 유저에게 import

  - imp 유저명/패스워드 file=파일명.dmp full=y;


반응형

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

[oracle] spfile 복구방법  (0) 2013.03.13
[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

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

,
반응형

메이븐 설명

 Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.


메이븐 
기능

  - 빌드
  - 문서화
  - 리포팅
  - 의존관계 관리
  - 소스코드 관리
  - 릴리즈
  - 배포

메이븐 사용시 이점
  - 의존성 관리 (오픈소스 라이브러리 뿐만 아니라 프로젝트 혹은 무듈간의 의존성 또한 관리가 가능함)
    + Java 개발자의 중요한 능력중에 하나는 오픈소스 라이브러리 혹은 프레임워크의 사용능력이라 생각된다. Java를 사용하여 S/W를 개발하는 경우 다양한 오픈소스 라이브러리를 사용하게 되는데... Maven의 의존성 관리를 이용하면 손쉽게 오픈소스 라이브러리들의 의존성을 관리할 수 있다.
  - 잘 정의된 convention에 의해서 일관된 프로젝트 구성을 갖을 수 있다.
  - IDE에 종속적인 부분을 제거할 수 있다. (Eclipse, IntelliJ, NetBeans, JBuilder, JCreator, JDveloper)
  - 이클립스를 사용하는 경우 maven 이클립스 플러그인을 사용하면 의존성을 갖는 오픈소스의 소스 코드를 F3키를 사용하여 아주 쉽게 확인할 수 있다. (다른 IDE는 사용하지 않아서 잘 모름...)

  - Maven을 알면 Java를 이용한 많은 오픈소스 프로젝트들이 Maven 프로젝트로 구성되어 있어 오픈소스를 분석할 때 편리하다.
    + 코딩 스킬을 향상시키기 가장 좋은 방법중에 하나는 좋은 소스코드를 많이 읽오보는 것이다!!!
  - Maven Profile 기능을 사용하면 배포환경에 따른 설정 파일을 관리하고 배포 파일을 생성할 수 있다. 
  - 의존 라이브러리를 pom.xml 파일을 통해서 관리하므로 버전(형상)관리 시스템으로 공유할 파일의 크기가 줄어든다. 



메이븐 단점
  - maven은 현재 3.x.x 버전까지 왔지만 일부의 기능에서 예상외로 동작하는 경우가 있다. (버그인건지 내가 몰라서 그러는건지?? 누가좀 알려줬으면 한다. ㅠ.ㅠ)
    
 + Oracle JDBC Driver 때문에 Local 저장소가 깨진 경우 가 있었는데... 수작업으로 Local저장소를 정리해줘야만 했다. (완전 삽질함...)
  -
 이클립스의 maven 플러그인인 m2e가 가끔 원하는데로 동작을 안한다.

메이븐 설치
  - http://maven.apache.org/download.html에서 메이븐 최신 버전을 다운 받는다. 
  - 다운받은 압축파일을 원하는 경로에 풀어 놓고, 해당 경로를 시스템 환경 변수에 "MAVEN_HOME" 을 추가한다.
  - 시스템 환경 변수 "PATH"에 "MAVEN_HOME/bin"을 추가한다. (mvn 명령을 편하게 사용하기 위함)
 * 참고로 maven의 기본 Local 저장소 위치는 "USER_HOME/.m2" 이며,
   maven 중앙 저장소는 "http://repo1.maven.org/maven2/" 임.

Maven 설정 파일
  - MAVEN_HOME/settings.xml : 모든 사용자에 적용되는 전역적인 메이븐 설정 정보
  - USER_HOME/.m2/setting.xml : 특정 사용자에 적용되는 메이븐 설정 정보
  - pom.xml : 메이븐 프로젝트 설정 파일
    + 메이븐은 프로젝트와 관련된 정보를 Project Object Model (이하 POM)이라는 이름으로 정의하고 있으며, POM의 이름을 따서 기본 설정 파일은"pom.xml" 파일이다. (다른 이름도 사용할 수 있지만... 일반적인 관례를 따르는게 편하고 협업하기도 좋다고 생각함.)

Maven 기본 명령어
 - maven [options] [<goal(s)>] [<phase(s)>] 

메이븐 POM 설정 파일
 - 프로젝트 기본 정보
  + 프로젝트 이름, URL, 개발자, 라이선스 등등
 - 빌드 설정
  + 기본 빌드 설정을 변경하기 위한 카테고리 (소스, 리소스 디렉토리 변경, 플러그인 설정 변경 및 플러그인 추가)
 - 프로젝트 관계 설정
  + 각 프로젝트간의 관계 관리 혹은 모듈간의 의존성 관리
 - 빌드 환경
  + 다양한 환경에 따라 달라지는 설정 정보를 관리 (프로파일 기능)
 - 속성 정보 관리
  + pom/project 속성, settings 속성, 시스템 환경 변수 속성, 자바 시스템 속성등을 정의 또는 사용할 수 있다.
 - 메이븐은 기본적인 프로젝트 디렉토리 구조와 플러그인 정보를 포함하고 있는 POM설정파일을 제공하며 모든 POM 설정 파일은 해당 설정파일을 상속한다. (해당 설정 파일은 메이븐에 포함되어 있는 jar 파일을 통하여 배포된다.)

메이븐 라이프사이클
 - 메이븐은 미리 정의하고 있는 빌드 순서를 라이프사이클 이라고 하며, 라이프사이클의 각 빌드 단계를 페이지라고 한다.
 - 라이프사이클은 여러 단계(페이즈)로 나뉘어져 있으며, 각 페이즈는 의존 관계를 갖는다.
 - 기본 라이프 사이클
  + compile : 소스 코드를 컴파일한다
  + test : 단위 테스트 실행 (기본설정은 단위 테스트가 실패하면 빌드 실패로 간주함)
  + package : 컴파일된 클래스 파일과 리소스 파일들을 war 혹은 jar와 같은 파일로 패키징
  + install : 패키징한 파일을 로컬 저장소에 배포 (USER_HOEM/.m2/)
  + deploy : 패키징한 파일을 원격 저장소에 배포 (nexus 혹은 maven central 저장소)
 - clean 라이프 사이클
  + clean : 메이븐 빌드를 통하여 생성된 모든 산출물을 삭제한다.
 - site 라이프 사이클
  + site : 메이븐 설정파일 정보를 활용하여 프로젝트에 대한 문서 사이트를 생성한다.
  + site-deploy : 생성한 문서 사이트를 설정되어 있는 서버에 배포

메이븐 페이즈와 플러그인
 - 메이븐에서 제공하는 모든 기능은 플러그인 기반으로 동작한다. 메이븐 라이프사이클에 포함되어 있는 페이즈 또한 플러그인을 통하여 실직적인 작업이 실행된다. 
 - <bild>/<plugins>/<plugin> 엘리먼트를 사용하여 사용하고자 하는 플러그인을 추가 및 설정 할 수 있다. 
 - 메이븐 플러그인은 하나의 플러그인에서 여러 작업을 수행할 수 있도록 지원하며, 플러그인에서 실행할 수 있는 각각의 작업을 goal 이라고 정의한다.
 - 플러그인 goal 실행 방법 
  + mvn groupId:artifactId:version:goal 
   * 사용하기 완전 구리다 언제 저런걸 다 외우고 있어!!!
   * 그래서 친절한 메이븐은 플러그인을 좀더 쉽게 사용할 수 있도록 다은과 같은 규칙이 있다.
 - 로컬 저장소에 설치되어 있는 가장 최신 버전의 플러그인을 실행하기 원한다면 version 정보 생략가능
 - artifactId가 'maven-$name-plugin' 과 '$name-maven-plugin' 규칠을 따른다면 groupId:$name:goal 형식으로 실행할 수 있다.
 - 메이븐의 중앙 저장소에 위치한 플러그인을 찾기 위한 groupId 목록을 settings.xml 파일에서 관리하며, 해당 groupId에 속해 있으면, groupId 를 생략할 수 있다. ($name:goal 형태이며, 기본설정만으로 왠만한 플러그인들은 groupId를 생략해서 사용한다.) 
 - 페이즈와 플러그인 관계
  + 각 페이즈의 작업은 메이븐에서 기본으로 포함하고 있는 각 플러그인의 골을 이용해서 수행한다. 
 - 메이븐 플러그인을 검색하고 사용방법을 확인할 수 있는 곳 (아래에도 없다면 구글 검색이 짱!!!)
  + http://maven.apache.org/plugins/index.html
  + http://mojo.codehause.org/plugins.html 

메이븐을 이용한 의존성 관리
 - 메이븐의 핵심 기능중에 하나이며, 개발자들이 제일 좋아하는 기능이지만 문제가 발생한 가능성이 가장 높은 기능이기도 하다. (ㅠ.ㅠ) 따라서 해당 기능을 잘 이해해야 메이븐을 편하게 잘 사용할 수 있다. 그렇지 못하면 메이븐을 열라 욕하게 될 것 이다. (메이븐 구려서가 아니라 내가 메이븐을 잘 못 이해했기 때문!!!)
 - 메이븐 저장소 구성
  + 중앙 저장소 : 오픈소스 라이브러리, 메이븐 플러그인, 메이븐 아키타입을 관리하는 저장소이다. 중앙 저장소는 개발자가 임의로 라이브러리를 뱁포할 수 없다. 
  + 원격 저장소 : 메이븐 중앙 저장소이 외에 각각의 회사 혹은 오픈소스 재단에서 운영 관리하는 저장소 
   ex) http://maven.springframework.org (sprintsource), http://mesir.googlecode.com/svn/trunk/mavenrepo (ojdbc), http://192.168.1.46:5050/nexus (사내 maven 저장소)
  + 로컬 저장소 : 메이븐을 빌드할 때 다운로드하는 라이브러리, 플러그인을 관리하는 개발자 PC의 저장소 (USER_HOME/.m2)
 - 메이븐 저장소 설정 (xml 파일예제..)
 - 메이븐 의존성 관리
  + <dependencies>/<dependency> 엘리먼트를 사용하여 의존성을 관리하며, 의존 라이브러리의 groupId, artifactId, version, scope 정보들을 갖는다.
 - 메이븐 의존성 정보에서 scope 설명
  + compile : 기본 scope, 컴파일 및 배포할 때 같이 제공해야 하는 라이브러리
  + provided : servlet.jar 와 같이 컴파일 시점에는 필요하지만 배포할 때에는 포함되지 말아야 하는 라이브러리
  + runtime: 컴파일 시에는 사용되지 않지만 실행환경에서 사용되어지는 라이브러리
  + test : JUnit과 같이 테스트 시점에만 사용되는 라이브러리
  + system : provided와 비슷하다. 단지 우리가 직접 jar 파일을 제공해야 한다. 따라서 이 scope의 jar 파일은 저장소에서 관리되지 않을 수도 있다.
  + import : 다른 POM설정 파일에 저의되어 있는 의존 관계 설정을 현재 프로젝트로 가져온다.
 - 의존성 전이
  + 오픈소스 프레임워크를 의존성에 추가하며, 해당 프레임워크가 의존하고 있는 오픈소스 라이브러리 또한 의존 관계에 자동으로 포함된다. 
  + 의존성 전이 기능은 프로젝트의 의존성을 편리하게 관리할 수 있도록 도와주기도 하지만 불필요한 라이브러리가 추가되거나 의존성이 꼬이게 만드는 원인이 되기도 한다. 
 - 의존성 전이에 대한 설정 변경기능
  + 의존성 중개 : 버전이 다른 두개의 라이브러리가 의존 관계에 있다면 메이븐은 더 가까운 의존 관계에 있는 pom 설정의 버전과 의존관계를 갖는다. 예를 들어 A 프로젝트가 A -> B -> C -> D2.0 버전, A -> E -> D1.0 버전의 의존 관계가 발생한다면, A 프로젝트는 D1.0 버전과 의존 관계를 갖는다. 만약 D2.0 버전을 사용하고 싶다면 A 프로젝트의 메이븐 설정 파일에 명확하게 의존 관계를 명시해야 한다. (A -> D.20)
  + 의존성 관리 : <dependencyManagement> 엘리먼트를 사용하여 의존 관계에 있는 라이브러리와 버전을 명시적으로 정의한다. 
  + 의존성 예외 : <exclusion> 엘리먼트를 활용하여 의존성 전이를 예외처리한다.
  + 기타 : 의존성 스코프, 선택적 의존성 등의 기능이 있음

Maven 기반의 프로젝트 생성
 1. mvn 명령어를 이용해서 템플릿 프로젝트 생성
 $ mvn archetype:generate -DgroupId=com.uangel -DartifactId=maven -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false  
 $ mvn archetype:generate -DarchetypeCatalog=internal  
  + 일반적으로 groupId는 생성하는 프로젝트의 도메인명을 사용하며, artifactId는 프로젝트 이름을 사용한다.

 2. 이클립스와 m2e 플러그인을 사용하여 maven 프로젝트 생성 (아마도 제일 쉬운 방법) 
  + m2e 플러그인 Update URL : http://download.eclipse.org/technology/m2e/releases/1.0/1.0.100.20110804-1717
  + m2e 플러그인 설치 후 "Window > Perferences > java > Build Path > Classpath Variables" 에 "M2_REPO" 설정 추가 확인
  + 가장 간단한 maven-archetype-quickstart 아키타입 프로젝트 생성 

 3. 수작업 (maven을 잘 이해하고 있다면 그리 어렵지 않게 세팅 가능)
  - pom.xml 파일 생성, pom.xml 파일 설정에 맞게 디렉토리 생성... 

웹서비스 개발을 위한 Maven 프로젝트 구성 및 IDE(이클립스) 통합
 - 이클립스와 m2e 플러그인을 사용하여 프로젝트 생성
  + "File > New > Other... > Maven Project > Next > maven-archetype-webapp 아키타입선택 > ..."
  + "프로젝트 선택 > 우클릭 > Maven > Update Project Configuration..." 선택 (pom.xml 파일 수정시 이클립스 프로젝스 설정에 반영되도록 설정)
 - 웹 리소스 디렉토리 경로 변경 (src/main/webapp --> webapp)
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<warSourceDirectory>webapp</warSourceDirectory>
<warName>maven-test-web</warName>
</configuration>
</plugin> 
 - maven eclipse 플러그인 설정 추가
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
<downloadSource>true</downloadSource>
<downloadJavadocs>true</downloadJavadocs>
<wtpversion>2.0</wtpversion>
<wtpContextName>/</wtpContextName>
</configuration>
</plugin>
</plugins> 
- Java 소스 디렉토리 및 리소스 디렉토리 생성
  + src/main/java
  + src/main/resources
  + src/test/java
  + src/test/resources
- 메이븐 eclipse 플러그인 실행 (위에서 추가한 설정 및 디렉토리를 m2e 가 제대로 반영하지 못함!!!)
  + mvn eclipse:clean  eclipse:eclipse 

- 생성되어 있는 Maven Project Import 방법
  + Existing Maven Projects
  + Check out Maven Projects from SCM

메이븐 프로파일 기능
 - 메이븐은 서로 다른 환경에 따라 달라지는 설정을 다르게 관리할 수 있는 프로파일 기능을 제공한다. 
 - 프로파일은 <profiles> -> <profile> 엘리먼트를 사용하여 설정할 수 있으며, <project> 루트 엘리먼터가 가질 수 있는 모든 엘리먼트를 설정할 수 있다.  
 - 프로파일에 따른 설정 예제
 <profiles>
<profile>
<id>local</id>
                <!-- 기본 Profile 설정 --> 
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<environment>local</environment>
</properties>
<dependencies>
<!-- JDBC Driver -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
</dependencies>
</profile>

<profile>
<id>development</id>
<properties>
<environment>development</environment>
</properties>
<dependencies>
<!-- JDBC Driver -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>service</id>
<properties>
<environment>service</environment>
</properties>

<dependencies>
<!-- JDBC Driver -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.7.0</version>
</dependency>
</dependencies>
</profile>
</profiles>

<build>
        <!-- Profile 기능을 이용한 리소스 관리 -->
<resources>
<resource>
<directory>src\main\resources</directory>
</resource>
<resource>
<directory>src\main\resources-${environment}</directory>
</resource>
<resource>
<directory>src\main\java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build> 
 - 메이븐 사용시 프로파일 지정
  + mvn -P<profile_id> pahse[s] goal[s]
  ex) mvn -Pdevelopment clean package  // 개발서버에 배포할 패키지 파일 생성
        mvn -Pservice clean package  // 상용 서버에 배포할 패키지 파일 생성
 
메이븐 모듈
 - 메이븐은 하나의 프로젝트에서 여러 모듈을 관리할 수 있는 기능을 지원한다. 
 - 일반적으로 서비스를 개발하게 되면 관리자 페이지 혹은 CMS(Content Management System) 과 고객 혹은 가입자에게 서비스 제공을 위한 Web Module이 분리가 되며, 두개의 모듈이 핵심 비지니스 로직을 공유하게된다. 이런 경우 메이븐의 모듈 기능을 이용하면 유용하다. 
 - 메이븐의 모듈 개념을 이해하고 활용하려면 상속, 집합, 의존 관계 개념을 이해해야 한다.
 - 상속
  + 프로젝트에서 공통으로 사용하는 설정은 공통 POM 파일을 만들어 관리하고 하위 모듈에서 이 POM파일을 상속할 수 있다. 
 * 부모 POM 파일
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>net.javajigi</groupId>
  <artifactId>wikibook</artifactId>
  <packaging>pom</packaging> 
  <version>1.0-SNAPSHOT</version>
  [...]
</project>
 
 * 부모 POM 파일을 상속하는 자식 POM 파일
 <project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>net.javajigi</groupId>
    <artifactId>wikibook</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <groupId>net.javajigi</groupId>
  <artifactId>wiki-web-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  [...]
</project>

반응형
블로그 이미지

cocy

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

,
반응형

<대문자 조작 함수>

 

 

- LOWER : 대소문자 또는 대문자 문자열을 소문자로 변환합니다.

- UPPER : 대소문자 또는 소문자 문자열을 대문자로 변환합니다.

- INITCAP : 각 단어의 첫 문자를 대문자로, 나머지 문자는 소문자로 변환합니다.

 

 

 

 

<문자 조작 함수>

 

 

 

- CONCAT : 값을 결합합니다. CONCAT에는 파라미터를 두 개만 사용할 수 있습니다.

- SUBSTR : 지정한 길이의 문자열을 추출합니다.

- LENGTH : 문자열의 길이를 숫자 값으로 표시합니다.

- INSTR : 지정한 문자의 위치를 숫자로 표시합니다.

- LPAD : 문자값을 오른쪽으로 정렬하고 빈 곳을 지정한 문자열로 채웁니다. 

- RPAD : 문자값을 왼쪽으로 정렬하고 빈 곳을 지정한 문자열로 채웁니다.

- TRIM : 문자열에서 접두어나 접미어 또는 두 가지 모두를 자릅니다.


반응형

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

[oracle] spfile 복구방법  (0) 2013.03.13
[oracle] 리눅스에서 덤프파일 사용  (0) 2013.03.12
[oracle] delete data 복구  (0) 2013.02.12
[database] varchar2 vs nvarchar2  (0) 2013.01.25
[Oracle] 페이징 쿼리  (0) 2012.12.23
블로그 이미지

cocy

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

,
반응형

가끔가다 WAS가 뻑났는지, Ant가 맛이 갓는지 컴파일이 안되서 작업이 곤란한 경우가 있다.


아마도 WAS 문제일 확률이 크다.


이럴때는 프로젝트에서 properties > java bulid path > Libraries > WAS를 remove 해주고

다시 Add Library > Server Runtime > WAS 선택 후 추가해주면 된다.


다음부턴 이런 문제가 발생해서 시간끄는일이 없기를..

반응형
블로그 이미지

cocy

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

,
반응형

- 폴링이란? 

통신에서, "폴링"은 한 프로그램이나 장치에서 다른 프로그램이나 장치들이 어떤 상태에 있는지를 지속적으로 체크하는 전송제어 방식으로서, 대체로 그들이 아직도 접속되어 있는 지와 데이터 전송을 원하는지 등을 확인한다.

쉽게 말해서 Status Bar, Dash Board 등에 쓰이는 실시간처리 방식이다.

환경은 다양할 수 있다. 예를 들면 JSP 에서 response.setIntHeader를 사용하여 Auto Refresh 처리를 해주게 되면 이역시 폴링이다. 하지만 누가 요즘에 Refresh 방식의 폴링을 선호할까.. 아래는 Jquery 의 Ajax 기법을 통한 Polling 예제이다.

Traditional Polling

The setInterval Technique
setInterval(function(){
    $.ajax({ url: "server", success: function(data){
        //Update your dashboard gauge
        salesGauge.setValue(data.value);
    }, dataType: "json"});
}, 30000);

위의 소스는 전통적인 폴링 기법중  setInterval 을 사용한 기법으로 매 30초간 정해놓은 이벤트를 출력한다. 하지만 서버의 응답이 30초 보다도 더 느려질경우엔? 

어찌보면 이 기법은 도박이다. 반응성이나 사양이 좋지않은 서버나 네트워크 전체의 호스트를 고려한다면.. 이러한 할당된 시간에 리턴값이 오지않는 위험은 사전에 예방되어야한다. 최악의 경우 당신은 같은 호출안에서 Ajax 큐의 배열이 다 뻗어버릴 수 있다. Anyway,  별로 좋지않다.


The setTimeout Technique

(function poll(){
   setTimeout(function(){
      $.ajax({ url: "server", success: function(data){
        //Update your dashboard gauge
        salesGauge.setValue(data.value);

        //Setup the next poll recursively
        poll();
      }, dataType: "json"});
  }, 30000);
})();

이 기법은 settimeout을 통한 재귀호출방식인데 좋은점은 시간의 사이마다 무슨일이 일어났는지 파악하기 쉽다는점이다. 음 장단점은 있기 마련인데 Manual을 봐도 이해하기가 힘들다. 아래의 원문으로 읽으면 좋을것같다.

As you can see, jQuery's Ajax call can take as long as it wants to. So, this pattern doesn't guarantee execution on a fixed interval per se. But, it doesn't guarantee that the previous interval has completed before the next interval is called.


두가지 방식다 단점이 있고 감수해야하는 위험이 있다. 그래서 결과적으로 우리가 도입해야하는건 Long Polling 기법. 사실 위의 내용은 그닥 필요없고 이것만 보고 도입하면 된다.

Long Polling - An Efficient Server-Push Technique

(function poll(){
    $.ajax({ url: "server", success: function(data){
        //Update your dashboard gauge
        salesGauge.setValue(data.value);

    }, dataType: "json", complete: poll, timeout: 30000 });
})();

 데이터베이스 처리중 커넥션 풀 기법이 있는데 비슷한 개념이다. 서버와 접속을 열어둔 상태에서 요청이 오면 바로 바로 처리한다. 요청이 없을시에는 리소스를 거의 먹지않는다. 아래의 원문을 보면 이해가 쉬울 것 같다.

Applications built with Long Polling in mind attempt to offer realtime interaction, using a persistent or long-lasting HTTP connection between the server and the client.

The self executing JavaScript poll function combined jQuery Ajax's repeating timeout interval means this is a very efficient server-push technique.


정리를 했지만 쉽지않다. 쉽게 이해하면 일반 커넥션과 커넥션 풀의 차이? 그리고 Jquery Ajax 경우 Long Polling에 최적화되어 있다.


출처 : http://tkjeon.tistory.com/6

반응형

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

[jquery]onload 시점  (0) 2014.09.29
[jquery] ie7, ie6 json is undefined  (0) 2013.03.13
[jquery] jsonp 사용  (0) 2013.01.24
[jquery] jquery ui tabs  (0) 2013.01.16
[자바스크립트] 문자>수치, 수치>문자 변환  (0) 2012.12.23
블로그 이미지

cocy

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

,
반응형

실수로 delete하고 커밋했을시,

오라클의 flash back이라는 기능을 통해 지운 데이터를 조회할 수 있다.


SELECT * FROM T_NAME

AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE);



1. Flashback Query : 특정시간 이전의 Data 에 대해서 검색할 때

-> UNDO Data 를 기준으로 검색

1) 과거의 데이터 값 조회
     SELECT employee_id, salary FROM employees
      AS OF TIMESTAMP t1
      where emplooyee_id = 200

2) 특정 시험의 값을 이용하여 값을 수정 (서브쿼리 활용)
     UPDATE employees SET salary = 
                  (SELECT salary FROM employees
                  AS OF TIMESTAMP TO_TIMESTAMP
                  ('2005-05-04 11:00:00', 'yyyy-mm-dd hh24:mi:ss')
                  WHERE employee_id = 200)
     WHERE employee_id = 200

3) 기간을 정해서 검색 (VERSIONS BETWEEN)
    SELECT versions_xid, salary FROM employees
    VISIONS BETWEEN TIMESTAMP t1 AND t2
    WHERE employee_id = 200;
         
2. Flashback Transcation Query : UNDO SQL을 조회하는 기능

반응형

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

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

cocy

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

,
반응형

 ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET', 'NLS_LANGUAGE');

NAMEVALUE$COMMENT$
NLS_NCHAR_CHARACTERSETAL16UTF16NCHAR Character set
NLS_LANGUAGEAMERICANLanguage
NLS_CHARACTERSETKO16KSC5601Character set

UTF8: 공통 size*3byte
AL16UTF16: 공통 size*2byte
KO16KSC5601: 한글 size*2byte, 영문 size*1byte

VARCHAR2 vs NVARCHAR2 : VARCHAR2는 LENGTH 계산시 byte 수로 계산, NVARCHAR2는 캐릭터셋에 맞게 논리적인 글자수로 계산 (개별 캐릭터셋 지정 가능)

LENGTH, LENGTHB 에 따른 차이가 나는 이유는 캐릭터셋 때문

SELECT  NC, LENGTH(NC) NC_LEN, LENGTHB(NC) NC_BLEN,

        LENGTHB(C) C_LEN, LENGTHB(C) C_BLEN,
        lengthb('각'),lengthb('A'),
        lengthb(TO_NCHAR('각')),lengthb(TO_NCHAR('A'))
FROM    CHAR_TEST
WHERE LENGTHB(C) = 17;

NCNC_LENNC_BLENC_LENC_BLENLENGTHB('각')LENGTHB('A')LENGTHB(TO_NCHAR('각'))LENGTHB(TO_NCHAR('A'))
안녕하세요.HI中國102017172122

반응형

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

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

cocy

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

,
반응형

<table border="1" width="539">
      <tr>
        <td colspan="2" width="529" bgcolor="#0000FF">
          <b>
            <font color="#FFFFFF" size="4">HTTP
            Session(pageContext.session.)</font>
          </b>
        </td>
      </tr>

      <tr>
        <td width="210">Creation Time</td>

        <td width="313">&#160
        <c:out value="${pageContext.session.creationTime}" />
        </td>
      </tr>

      <tr>
        <td width="210">Session ID</td>

        <td width="313">&#160
        <c:out value="${pageContext.session.id}" />
        </td>
      </tr>

      <tr>
        <td width="210">Last Accessed Time</td>

        <td width="313">&#160
        <c:out value="${pageContext.session.lastAccessedTime}" />
        </td>
      </tr>

      <tr>
        <td width="210">Max Inactive Interval</td>

        <td width="313">&#160
        <c:out
        value="${pageContext.session.maxInactiveInterval}" />

        seconds</td>
      </tr>

      <tr>
        <td width="210">You have been on-line for</td>

        <td width="313">&#160
        <c:out
        value="${(pageContext.session.lastAccessedTime-pageContext.session.creationTime)/1000}" />

        seconds</td>
      </tr>
    </table>

반응형

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

getSession 사용법  (0) 2013.07.02
[jsp] 브라우저 캐쉬 설정  (0) 2012.12.23
[java] 개행문자 제거하기  (0) 2012.11.29
블로그 이미지

cocy

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

,
반응형

jQuery의 JSONP 지원

jQuery 버전 1.2부터는 JSONP 호출에 대한 네이티브 지원이 제공되고 있다. JSONP 콜백을 지정한 경우 다른 도메인에 있는 JSON 데이터를 로드할 수 있으며 JSONP 콜백은 url?callback=?라는 구문을 사용하여 지정할 수 있다.

jQuery에서는 ?가 호출할 생성된 함수 이름으로 자동 변환된다. Listing 4에서는 이 코드를 보여 준다.


Listing 4. JSONP 콜백 사용하기
jQuery.getJSON(url+"&callback=?", function(data) {
    alert("Symbol: " + data.symbol + ", Price: " + data.price);
});

이를 위해 jQuery는 스크립트가 삽입될 때 호출되는 전역 함수를 창 오브젝트에 추가한다. 이 함수는 완료 후에 제거된다. jQuery는 도메인 내 호출에 대해서도 최적화 기능을 제공한다. 동일한 도메인에 대한 요청이 발생할 경우 jQuery는 해당 요청을 일반적인 Ajax 요청으로 변환한다.

JSONP 지원을 사용하는 예제 서비스

앞의 예제에서는 정적 파일(ticker.js)을 사용하여 JavaScript를 웹 페이지에 동적으로 삽입했다. JSONP 응답을 리턴하기는 하지만 URL에 콜백 함수 이름을 정의할 수 없었기 때문에 JSONP 서비스가 아니었다. 그렇다면 실제 JSONP 서비스로 변환하려면 어떻게 해야 할까? 이 기사에서는 여러 가지 방법 중에서 PHP와 Java를 사용하는 두 가지 예제를 설명한다.

먼저 서비스에서 요청 URL에 포함된 callback 매개변수를 허용한다고 가정하자. (매개변수 이름 자체는 중요하지 않지만 클라이언트와 서버에서 동일한 이름을 사용해야 한다.) 그리고 서비스에 대한 요청이 다음과 같다고 가정하자.

http://www.yourdomain.com/jsonp/ticker?symbol=IBM&callback=showPrice

여기에서 symbol은 요청된 티커 기호를 나타내는 요청 매개변수이며, callback은 웹 애플리케이션에서 사용하는 콜백 함수의 이름이다. Listing 5의 코드를 사용하여 jQuery의 JSONP 지원이 포함된 이 서비스를 호출할 수 있다.


Listing 5. 콜백 서비스 호출
jQuery.getJSON("http://www.yourdomain.com/jsonp/ticker?symbol=IBM&callback=?", 
function(data) {
    alert("Symbol: " + data.symbol + ", Price: " + data.price);
});

이 코드에서는 실제 함수 이름 대신 ? 기호를 콜백 함수 이름으로 입력했다. 이는 jQuery가 ? 기호를 인라인 함수를 호출하는 생성된 함수 이름(예: jsonp1232617941775)으로 바꾸기 때문이다. 이 기능을 활용하면 showPrice()와 같은 함수를 자유롭게 정의할 수 있다.

Listing 6에서는 PHP로 구현한 JSONP 서비스의 일부를 보여 준다.


Listing 6. PHP로 구현한 JSONP 서비스의 일부
$jsonData = getDataAsJson($_GET['symbol']);
echo $_GET['callback'] . '(' . $jsonData . ');';
// prints: jsonp1232617941775({"symbol" : "IBM", "price" : "91.42"});

Listing 7에서는 동일한 기능을 수행하는 Java™ Servlet 메소드를 보여 준다.


Listing 7. Java Servlet으로 구현한 JSONP 서비스
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
	String jsonData = getDataAsJson(req.getParameter("symbol"));
	String output = req.getParameter("callback") + "(" + jsonData + ");";

	resp.setContentType("text/javascript");
          
	PrintWriter out = resp.getWriter();
	out.println(output);
	// prints: jsonp1232617941775({"symbol" : "IBM", "price" : "91.42"});
}

그렇다면 이제 단일 웹 페이지에 표시하기 위해 써드파티 서버의 컨텐츠를 통합하는 매시업을 빌드하려면 어떻게 해야할까? 간단하다. 써드파티 JSONP 서비스를 사용해야 한다. 이 기사에서는 이들 서비스 중 일부를 소개한다.

바로 사용할 수 있는 JSONP 서비스

이제 JSONP를 사용하는 방법을 알고 있으므로 바로 사용할 수 있는 몇몇 JSONP 웹 서비스로 애플리케이션과 매시업을 빌드해 볼 수 있다. 다음은 후속 개발 프로젝트를 위한 출발점이다. (힌트: 지정된 URL을 브라우저의 주소 필드에 붙여 넣으면 결과 JSONP 응답을 확인할 수 있다.)

Digg API: Digg의 최신 스토리

http://services.digg.com/stories/top?appkey=http%3A%2F%2Fmashup.com&type=javascript
&callback=?

Geonames API: 우편번호에 해당하는 위치 정보

http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US&callback=?

Flickr API: Flickr의 최신 고양이 사진

http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any
&format=json&jsoncallback=?
                

Yahoo Local Search API: 우편번호 10504 지역의 피자 검색

http://local.yahooapis.com/LocalSearchService/V3/localSearch?appid=YahooDemo&query=pizza
&zip=10504&results=2&output=json&callback=?

반응형
블로그 이미지

cocy

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

,
반응형

HTML 특수문자코드표

 

표현문자

숫자표현

문자표현

설명

-

&#00;-&#08;

-

사용하지 않음

space

&#09;

-

수평탭

space

&#10;

-

줄 삽입

-

&#11;-&#31;

-

사용하지 않음

space

&#32;

-

여백

!

&#33;

-

느낌표

"

&#34;

&quot;

따옴표

#

&#35;

-

숫자기호

$

&#36;

-

달러

%

&#37;

-

백분율 기호

&

&#38;

&amp;

Ampersand

'

&#39;

-

작은 따옴표

(

&#40;

-

왼쪽 괄호

)

&#41;

-

오른쪽 괄호

*

&#42;

-

아스트릭

+

&#43;

-

더하기 기호

,

&#44;

-

쉼표

-

&#45;

-

Hyphen

.

&#46;

-

마침표

/

&#47;

-

Solidus (slash)

0 - 9

&#48;-&#57;

-

0부터 9까지

:

&#58;

-

콜론

;

&#59;

-

세미콜론

<

&#60;

&lt;

보다 작은

=

&#61;

-

등호

>

&#62;

&gt;

보다 큰

?

&#63;

-

물음표

@

&#64;

-

Commercial at

A - Z

&#65;-&#90;

-

A부터 Z까지

[

&#91;

-

왼쪽 대괄호

\

&#92;

-

역슬래쉬

]

&#93;

-

오른쪽 대괄호

^

&#94;

-

탈자부호

_

&#95;

-

수평선

`

&#96;

-

Acute accent

a - z

&#97;-&#122;

-

a부터 z까지

{

&#123;

-

왼쪽 중괄호

|

&#124;

-

수직선

}

&#125;

-

오른쪽 중괄호

~

&#126;

-

꼬리표

-

&#127;-&#159;

-

사용하지 않음

&#160;

&nbsp;

Non-breaking space

¡

&#161;

&iexcl;

거꾸로된 느낌표

&#162;

&cent;

센트 기호

&#163;

&pound;

파운드

¤

&#164;

&curren;

현재 환율

&#165;

&yen;

|

&#166;

&brvbar;

끊어진 수직선

§

&#167;

&sect;

섹션 기호

¨

&#168;

&uml;

움라우트

&#169;

&copy;

저작권

ª

&#170;

&ordf;

Feminine ordinal

&#171;

&laquo;

왼쪽 꺾인 괄호

&#172;

&not;

부정

&#173;

&shy;

Soft hyphen

?

&#174;

&reg;

등록상표

&hibar;

&#175;

&macr;

Macron accent

°

&#176;

&deg;

Degree sign

±

&#177;

&plusmn;

Plus or minus

²

&#178;

&sup2;

Superscript two

³

&#179;

&sup3;

Superscript three

´

&#180;

&acute;

Acute accent

μ

&#181;

&micro;

Micro sign (Mu)

&#182;

&para;

문단기호

·

&#183;

&middot;

Middle dot

¸

&#184;

&cedil;

Cedilla

¹

&#185;

&sup1;

Superscript one

º

&#186;

&ordm;

Masculine ordinal

&#187;

&raquo;

오른쪽 꺾인 괄호

¼

&#188;

&frac14;

4분의 1

½

&#189;

&frac12;

2분의 1

¾

&#190;

&frac34;

4분의 3

¿

&#191;

&iquest;

거꾸로된 물음표

A

&#192;

&Agrave;

Capital A, grave accent

A

&#193;

&Aacute;

Capital A, acute accent

A

&#194;

&Acirc;

Capital A, circumflex accent

A

&#195;

&Atilde;

Capital A, tilde

A

&#196;

&Auml;

Capital A, dieresis or umlaut mark

A

&#197;

&Aring;

Capital A, ring (Angstrom)

Æ

&#198;

&AElig;

Capital AE diphthong (ligature)

C

&#199;

&Ccedil;

Capital C, cedilla

E

&#200;

&Egrave;

Capital E, grave accent

E

&#201;

&Eacute;

Capital E, acute accent

E

&#202;

&Ecirc;

Capital E, circumflex accent

E

&#203;

&Euml;

Capital E, dieresis or umlaut mark

I

&#204;

&Igrave;

Capital I, grave accent

I

&#205;

&Iacute;

Capital I, acute accent

I

&#206;

&Icirc;

Capital I, circumflex accent

I

&#207;

&Iuml;

Capital I, dieresis or umlaut mark

Ð

&#208;

&ETH;

Capital Eth, Icelandic

N

&#209;

&Ntilde;

Capital N, tilde

O

&#210;

&Ograve;

Capital O, grave accent

O

&#211;

&Oacute;

Capital O, acute accent

O

&#212;

&Ocirc;

Capital O, circumflex accent

O

&#213;

&Otilde;

Capital O, tilde

O

&#214;

&Ouml;

Capital O, dieresis or umlaut mark

×

&#215;

&times;

Multiply sign

Ø

&#216;

&Oslash;

width="130"Capital O, slash

U

&#217;

&Ugrave;

Capital U, grave accent

U

&#218;

&Uacute;

Capital U, acute accent

U

&#219;

&Ucirc;

Capital U, circumflex accent

U

&#220;

&Uuml;

Capital U, dieresis or umlaut mark

Y

&#221;

&Yacute;

Capital Y, acute accent

Þ

&#222;

&THORN;

Capital Thorn, Icelandic

ß

&#223;

&szlig;

Small sharp s, German (sz ligature)

a

&#224;

&agrave;

Small a, grave accent

a

&#225;

&aacute;

Small a, acute accent

a

&#226;

&acirc;

Small a, circumflex accent

a

&#227;

&atilde;

Small a, tilde

a

&#228;

&auml;

Small a, dieresis or umlaut mark

a

&#229;

&aring;

Small a, ring

æ

&#230;

&aelig;

Small ae diphthong (ligature)

c

&#231;

&ccedil;

Small c, cedilla

e

&#232;

&egrave;

Small e, grave accent

e

&#233;

&eacute;

Small e, acute accent

e

&#234;

&ecirc;

Small e, circumflex accent

e

&#235;

&euml;

Small e, dieresis or umlaut mark

i

&#236;

&igrave;

Small i, grave accent

i

&#237;

&iacute;

Small i, acute accent

i

&#238;

&icirc;

Small i, circumflex accent

i

&#239;

&iuml;

Small i, dieresis or umlaut mark

ð

&#240;

&eth;

Small eth, Icelandic

n

&#241;

&ntilde;

Small n, tilde

o

&#242;

&ograve;

Small o, grave accent

o

&#243;

&oacute;

Small o, acute accent

o

&#244;

&ocirc;

Small o, circumflex accent

o

&#245;

&otilde;

Small o, tilde

o

&#246;

&ouml;

Small o, dieresis or umlaut mark

÷

&#247;

&divide;

Division sign

ø

&#248;

&oslash;

Small o, slash

u

&#249;

&ugrave;

Small u, grave accent

u

&#250;

&uacute;

Small u, acute accent

u

&#251;

&ucirc;

Small u, circumflex accent

u

&#252;

&uuml;

Small u, dieresis or umlaut mark

y

&#253;

&yacute;

Small y, acute accent

þ

&#254;

&thorn;

Small thorn, Icelandic

y

&#255;

&yuml;

Small y, dieresis or umlaut mark

반응형

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

[meta 태그] meta태그 종류와 사용  (0) 2013.03.14
[링크] 홈페이지 템플릿  (0) 2012.12.14
Systax Highlighter 사용법  (0) 2012.12.10
블로그 이미지

cocy

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

,