반응형

산술 비교 연산자

제어문

설명

val1 –eq val2

equal, 변수 val1과 변수 val2 같은 경우 true

val1 –ne val2

negative, 변수 val1과 변수 val2 다른 경우 true

val1 –gt val2

greater then, 변수 val1이 변수 val2 보다 큰 경우 true

val1 –lt val2

less then, 변수 val1이 변수 val2 보다 작은 경우 true

val1 –ge val2

greater or equal, 변수 val1이 변수 val2 보다 크거나 같은 경우 true

val1 – le val2

less or equal, 변수 val1이 변수 val2 보다 작거나 가은 경우 true

 

파일 검사 연산자

제어문

설명

-a

파일이 존재한 경우 true

-b

파일이 존재하고 블록장치 파일인 경우 true

-c

파일이 존재하고 캐릭터 장치 파일인 경우 true

-d

파일이 존재하고 디렉토리인 경우 true

-e

파일이 존재하고 파일이 있는 경우 true

-f

파일이 존재하고 정규 파일인 경우 true

-g

파일이 존재하고 SetGID가 설정된 경우 true

-h

파일이 존재하고 한 개 이상의 심볼릭 링크가 설정된 경우 true

-k

파일이 존재하고 Sticky bit가 설정된 경우 true

-p

파일이 존재하고 FIFO인 경우 true

-r

파일이 존재하고 읽기 가능한 경우 true

-s

파일이 존재하고 0보다 큰 경우 true

-u

파일이 존재하고 SetUID가 설정된 경우 true

-w

파일이 존재하고 쓰기가 가능한 경우 true

-x

파일이 존재하고 실행 가능한 경우 true

 

문자열 비교 연산자

제어문

설명

-z string

문자열의 길이가 0인 경우 true

-n string

문자열의 길이가 0이 아닌 경우 true

string1 string2

문자열 string1과 string2가 일치하는 경우

string1 != string2

문자열 string1과 string2가 일치하지 않는 경우

string

문자열이 NULL이 아닌 경우

 

예제

#!/bin/bash

# $# 입력 받은 매개 변수의 개수를 의미

if [ $# -lt 1 ]; then

             echo “$0 <Account>…”

             exit 0

fi

 

# 명령의 결과를 저장하기 위해 `( back quarter)를 사용했다.

# ‘(single quarter)과 혼동 할 수 있으므로 주의 하도록 한다.

ret=`grep –w “^$1” /etc/passwd`

 

if test –n “$ret” ; then

             echo $ret

else

             echo “User not found”

fi

 

원문 : Linux system & Shell programming(영진 닷 컴)

반응형
반응형

ant : make 툴처럼 build 를 관리해주는 JAVA 툴.



메뉴얼

http://ant.apache.org/manual/index.html



Jakarta Ant


I. Ant 야 놀자~

Ant 란 "Java 기반의 빌드 도구입니다" 라고들 많이 나와있습니다
근데 이게 대체 무순 뜻이란 말인가 ㅡ.ㅡ;


쉽게 예기해서 환경에 구애받지 않고 간단히 java 소스를 컴파일 하고 필요한 파일이 있다면
그 파일들을 복사나 삭제하며 또한 javadoc 이나 war 같은 배포용 파일까지 생성해 주며 
필요하다면 서버에 까지 바로 적용할 수 있도록 도와주는 도구입니다.


또한 여러팀원들이 프로젝트를 진행할 때 새로운 팀원이 참가하더라도 
Ant 설정파일을 공유함으로써 손쉽게 참여가 가능하다는 것입니다


아직 사용해 보지 않았다면 얼렁 익혀서 사용해봅시다 무~지 편하답니다



II. 설치해보자
다운로드
Ant

http://ant.apache.org/bindownload.cgi

Ant manual

http://ant.apache.org/manual/index.html


다운받은 파일의 압축을 풀고 환경변수 및 패스를 잡아줍니다
set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.4.2
set PATH=%PATH%;%ANT_HOME%\bin



III. 간단한 Ant 예제

Ant를 이용하여 web application을 구성할 때 다음의 구조를 유지하기를 권장합니다


build : src, web, docs에서 결과적으로 만들어진 산출물 디렉토리
② dist : build를 배포하기 위한 배포 디렉토리
③ docs : 배포판에 배포할 정적인 문서를 관리할 디렉토리
④ src : /WEB-INF/classes 에 위치할 java 소스 디렉토리
⑤ web : HTML, JSP, 이미지등의 컨텐트 디렉토리 (WEB-INF의 서브디렉토리 포함)
⑥ build.properties : build.xml에서 사용할 properties
⑦ build.xml : ant 명령으로 실행될 설정파일


src에 하나이상의 java 소스를 테스트로 넣어 놓으세요

자 이렇게 디렉토리를 설정하고 build.xml 을 다음 step에 따라 따라 해 BOA요 ^^&


STEP 1. build.xml 의 기본구조

xml을 기본적인 내용을 안다면 이해하기 쉽습니다

<project name="My Project" default="compile" basedir=".">

 <target name="clean">

   여러 작업

  </target>


  <target name="prepare" depends="clean">

   여러 작업

   </target>


   <target name="compile" depends="prepare">

    여러 작업

    </target>

</project>

하나의 build 파일은 하나의 project로 구성되며 이는 다시 여러 target으로 구성됩니다

target 이란 빌드 과정중 수행해야 할 task들을 모아놓은 job 단위 라고 보면 됩니다

compile target이라 한다면 compile에 관련된 작업들을 모아놓은 그룹이라 생각하면 쉽게 이해 될겁니다


STEP 2. 시~작 Ant 맛보기~
① build.xml에 다음을 입력한 후 저장 합니다

<project name="Unicorn Project" default="clear" basedir=".">
  <description>Simple Test</description>
  
  <property file="${basedir}/build.properties"/>
  
  <echo message="${catalina.home}"/>


   <target name="clear"/>
    
</project>

-. project

    project는 하나 이상의 target을 정의 합니다 또한 하나의 target은 task의 집합입니다

    ant를 실행할 시에 어느 타겟을 실행할 것인지 지정할 수가 있으며 (예: \ant clear)

    지정하지 않았을 경우 디폴트로 설정된 값이 사용됩니다 이부분이 default="clear"입니다

-. property

    전역변수 설정 혹은 그렇게 사용할 build.properties를 정의 합니다

    build.properties에 catalina.home을 정의하였으며 여러 환경이 변하더라도 이 값만

    변경해주면 build.xml을 수정없이 바로 실행 가능합니다

-. echo

    message 내용을 출력 합니다

-. target

    target 이란 task의 집합으로 실질적으로 실행될 코드들의 묶음입니다

    여기서는 아무 task도 없습니다


② build.properties에 다음을 입력 후 저장합니다

catalina.home=C:\Tomcat 5.0

catalina.home 은 변수로 사용할 것이며 그 값은 C:\Tomcat 5.0입니다


③ 실행

해당 디렉토리로 이동하여 도스창에서 ant 라고 칩니다

c:\예제\ant

Buildfile : build.xml

      [echo] c:\Tomcat 5.0


clear :


BUILD SUCCESSFUL

Total time : 0 seconds


STEP 3. 사전작업 하기~

이번 단계에서는 컴파일 하기전 전역변수 선언이나 컴파일 시 클래스 패스 설정을 해봅시다


① build.xml

<project name="Unicorn Project" default="prepare" basedir=".">
  <description>Simple Test</description>

  <property file="${basedir}/build.properties"/>


  <property name="app.name"      value="unicorn"/>
  <property name="app.path"       value="/${app.name}"/>
  <property name="app.version"   value="0.1-dev"/>

  <property name="build.home"    value="${basedir}/build"/>
  <property name="dist.home"     value="${basedir}/dist"/>
  <property name="docs.home"   value="${basedir}/docs"/>
  <property name="src.home"      value="${basedir}/src"/>
  <property name="web.home"     value="${basedir}/web"/>  


  <path id="compile.classpath">

    <pathelement location="${catalina.home}/common/classes"/>
    <fileset dir="${catalina.home}/common/endorsed">
      <include name="*.jar"/>
    </fileset>
    <fileset dir="${catalina.home}/common/lib">
      <include name="*.jar"/>
    </fileset>
    <pathelement location="${catalina.home}/shared/classes"/>
    <fileset dir="${catalina.home}/shared/lib">
      <include name="*.jar"/>
    </fileset>
    <fileset dir="${web.home}/WEB-INF/lib">
      <include name="*.jar"/>
    </fileset>
  </path>


  <target name="clean"
   description="Delete old build and dist directories">
    <delete dir="${build.home}"/>
    <delete dir="${dist.home}"/>
  </target>
 
  <target name="prepare" depends="clean">

    <mkdir dir="${build.home}"/>
    <mkdir  dir="${build.home}/WEB-INF"/>
    <mkdir  dir="${build.home}/WEB-INF/classes"/>
    <mkdir  dir="${build.home}/WEB-INF/lib"/>
    
    <copy todir="${build.home}">
       <fileset dir="${web.home}">
         <include name="**/*.jsp"/>
         <include name="**/*.css"/>
         <include name="**/*.html"/>
         <include name="**/*.js"/>
         <include name="**/*.jpg"/>
         <include name="**/*.gif"/>
         <include name="**/*.swf"/>
         <include name="**/*.xml"/>
         <include name="**/*.tld"/>
         <include name="**/*.jar"/>

       </fileset>
     </copy>

   </target>  

    
</project>

-. project

    이번에는 default 값을 prepare로 하였습니다 고로 target은 prepare가 실행될 것입니다

-. property

    역시나 build.properties를 정의하였고 여러 전역변수를 설정하였습니다

    build.home 이란 변수에는 ${basedir}/build 값이 정의되었으며

    build.home은 ${build.home}으로 사용할수 있습니다

    궁금하면 <echo message="${build.home}"/> 등으로 출력해 봅시다~

-. path

    ${catalina.home} 은 build.properties에서 정의하였다는것을 기역하실겁니다

    fileset은 파일들의 집합을 나타내는데 어떤 특정파일만 포함 할수 있거나 혹은 어느 특정파일만 제외할 수 있습니다

    특정파일만 포함하는것은 include 태그이며 그 반대는 exclude 입니다

    <fileset dir="${web.home}/WEB-INF/lib">
      <include name="*.jar"/>
    </fileset>

    이부분은 ${web.home}/WEB-INF/lib 에서 *.jar 파일만 클래스패스로 잡겠다는 의미입니다

-. target

   드디어 실질적으로 실행될 target 입니다.

   project 속성의 default가 prepare이므로 prepare target으로 실행하기 위해 가보니  depend 속성으로 "clean"이 설정되어 있습니다

  이것은 "clean" target을 먼저 실행 후 prepare를 실행하라는 말입니다

   즉 prepare는 clean이 실행조건 입니다

   clean target은 delete 태그를 이용하여 배포할 dist 디렉토리와 산출물 디렉토리인 build를 삭제하는 작업입니다
   prepare target으로 다시 와보면 mkdir 는 당연히 디렉토리를 만들라는 뜻입니다

   copy는 todir에 다음 web.home의 모든 fileset을 copy 하라는 의미입니다 여기서도 역시나 include, exclude가 사용될 수 있겠지요

   <include name="**/*.jsp"/> 는 모든디렉토리의 *.jsp 를 카피하라는 의미입니다

    즉 web 디렉토리의 모든 실행 가능할 파일을 build로 옮기는 작업입니다


② 실행

c:\예제\ant

Buildfile : build.xml


clean :

     [delete] : Deleting directory c:\예제\build

     [delete] : Deleting directory c:\예제\dist


prepare :

     [mkdir] Created dir : c:\예제\build\WEB-INF

     [mkdir] Created dir : c:\예제\build\WEB-INF\classes

     [mkdir] Created dir : c:\예제\build\WEB-INF\lib

     [copy] Copying 2 files to Deleting directory c:\예제\build


BUILD SUCCESSFUL

Total time : 1 seconds


STEP 4. 컴파일 하기

이제 컴파일할 모든 준비가 되었습니다

STEP2의 소스에 다음 target을 추가하고 project의 default 값을 compile로 수정한 후 실행해 봅시다


 <target name="compile" depends="prepare"
   description="Compile Java sources">


    <!-- Compile Java classes as necessary -->
    <javac srcdir="${src.home}"
          destdir="${build.home}/WEB-INF/classes">
        <classpath refid="compile.classpath"/>
    </javac>


    <!-- Copy application resources -->
    <copy  todir="${build.home}/WEB-INF/classes">
      <fileset dir="${src.home}" excludes="**/*.java"/>
    </copy>
    
 </target>

-. target

   depends가 prepare이므로 실행 순서는 clean, prepare, compile 입니다

   javac 태스크는 srcdir 인 소스디렉토리에 있는 자바소스를 desdir 쪽으로 컴파일 합니다

   classpath는 위에서 이미 설정한 compile.classpath를 사용합니다

   그 후 properties등 같은 기타 resource 들을 /WEB-INF/classes에 복사합니다

② 실행

c:\예제\ant

Buildfile : build.xml


clean :

     [delete] : Deleting directory c:\예제\build

     [delete] : Deleting directory c:\예제\dist


prepare :

     [mkdir] Created dir : c:\예제\build\WEB-INF

     [mkdir] Created dir : c:\예제\build\WEB-INF\classes

     [mkdir] Created dir : c:\예제\build\WEB-INF\lib

     [copy] Copying 2 files to Deleting directory c:\예제\build


compile :

     [javac] Compileing 1 source file to c:\예제\build\WEB-INF\classes

     [copy] Copying 1 file to c:\예제\build\WEB-INF\classes


BUILD SUCCESSFUL

Total time : 1 seconds


STEP 5. Javadoc 을 이용해 API를 만들어 보고 배포파일도 생성해 보자

이제 컴파일도 했으니 javadoc도 만들어 보고 war 같은 배포파일도 생성해 봅시다

STEP 3.까지의 build.xml에 아래 target을 더 추가하고 project의 default 값에 dist로 설정합니다

① build.xml

 <target name="javadoc" depends="compile"
    description="Create Javadoc API documentation">

     <mkdir dir="${dist.home}/docs/api"/>
     <javadoc sourcepath="${src.home}"
                  destdir="${dist.home}/docs/api"
                   packagenames="*">
       <classpath refid="compile.classpath"/>
     </javadoc>

   </target>


 <target name="dist" depends="compile,javadoc"
   description="Create binary distribution">

    <mkdir dir="${dist.home}/docs"/>

    <copy  todir="${dist.home}/docs">
      <fileset dir="${docs.home}"/>
    </copy>


    <jar jarfile="${dist.home}/${app.name}-${app.version}.war"
         basedir="${build.home}"/>

  </target>

-. target

   target의 실행순서는 clean, prpare, compile, javadoc, dist가 될겁니다

   javadoc target의 javadoc 태스트를 보면 java 소스가 있는 소스디렉토리와

   API를 생성할 타겟 디렉토리를 정해주면 알아서 API를 생성해 줍니다

   만들어진 API는 배포버젼의 dist디렉토리로 해주면 더 좋겠지요


   dist target은 배포파일인 war를 만듭니다

   필요한 문서가 있으면 docs 디렉토리를 만들어 로 복사도 하도록 합시다

   jar 태스크는 위의 방식과 같이 사용합니다


② 실행

c:\예제\ant

Buildfile : build.xml


clean :

     [delete] : Deleting directory c:\예제\build

     [delete] : Deleting directory c:\예제\dist


prepare :

     [mkdir] Created dir : c:\예제\build\WEB-INF

     [mkdir] Created dir : c:\예제\build\WEB-INF\classes

     [mkdir] Created dir : c:\예제\build\WEB-INF\lib

     [copy] Copying 2 files to Deleting directory c:\예제\build


compile :

     [javac] Compileing 1 source file to c:\예제\build\WEB-INF\classes

     [copy] Copying 1 file to c:\예제\build\WEB-INF\classes


javadoc :

     [mkdir] Created dir : c:\예제\dist\docs\api

     [javadoc] Generating Javadoc

     [javadoc] Javadoc execution

     [javadoc] Loading source files for package com.jakartaproject.db...

     [javadoc] Constructing Javadoc information...

     [javadoc] Standard Doclet version 1.4.1

     [javadoc] Building tree for all the packages and classes...

     [javadoc] Building index for all the packaes and classes...

     [javadoc] Building index for all classes...


dist :

     [jar] Building jar :Created dir : c:\예제\dist\unicorn-0.1-dev.war


BUILD SUCCESSFUL

Total time : 3 seconds



VI. Ant 실행

① C:\예제\ant -help

ant [options] [target [target2 [target3] ...]]


Options :
  -help                    이 메세지의 표시
  -projecthelp           프로젝트 도움 정보의 출력
  -version                버전 정보의 출력과 종료
  -diagnostics           diagnose 나 report 문제에  도움이 되는 정보의 출력.
  -quiet, -q              한층 더 메세지를 적게
  -verbose, -v          한층 더 메세지를 많게
  -debug                 디버그 정보의 출력
  -emacs                 adornments 없이 로그 정보의 생성(produce)
  -logfile <file>         로그를 지정 파일에 출력
    -l     <file>                ''
  -logger <classname>    로그 생성을 실행하기 위한 클래스
  -listener <classname>  프로젝트 청취자(listener) 역할의 class의 인스턴스를 추가
  -buildfile <file>            지정된 빌드 파일의 사용
    -file    <file>              ''
    -f       <file>              ''
  -D<property>=<value> 지정된 프로퍼티의 값의 사용
  -propertyfile <name>    모든 프로퍼티를 파일로부터 로드  (-D프로퍼티보다 전에)
  -inputhandler <class>  입력 요청(requests)를 취급하는 클래스
  -find <file>                 파일시스템의 루트로 향해 빌드파일을  검색하고 그것을 사용


② C:\예제\ant

현재 디렉토리에 있는 build.xml 파일을 이용해, 디폴트 타겟으로 Ant 를 실행합니다.


③ C:\예제\ant compile

현재 디렉토리에 있는 build.xml이 실행되며 파라미터로 compile을 지정하면 project의 default 값을 무시하고 compile target을 실행합니다 물론 depends 가 있다면 먼저 실행합니다


④ C:\예제\ant -buildfile test.xml

현재 디렉토리에 있는 test.xml 파일을 이용해, 디폴트 타겟으로 Ant 를 실행합니다.


⑤ C:\예제\ant -buildfile test.xml dist

현재 디렉토리에 있는 test.xml 파일을 이용해, dist 라는 이름의 타겟으로 Ant 를 실행합니다.


⑥ C:\예제\ant -buildfile test.xml -Dbuild=build/classes dist

현재 디렉토리에 있는 test.xml 파일을 이용해, dist 라는 이름의 타겟으로, build 프로퍼티에 build/classes 값을 설정해 Ant 를 실행합니다.


VII. 기본 프로퍼티

Ant는 다음과 같은 프로퍼티를 기본으로 제공합니다

① basedir : 기본 디렉토리 경로를 나타내며 project 태그의 basedir에 명시되어 있습니다

② ant.file : 빌드 파일의 절대 경로입니다

③ ant.version : Ant 버젼을 나타냅니다

④ ant.project.name : project 태그의 name에 명시되어있습니다

⑤ ant.java.version : 자바 버젼을 나타냅니다

⑥ 자바 시스템 프로퍼티를 사용 가능 합니다

   예) ${os.name} 참고 http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html#getProperties()


<echo message="${ant.file}"/> 으로 한번 출력해 보면 이해가 쉽습니다


다음 시간에는 각 타스크의 종류와 상세 설정에 관해 알아봅시다


=============================================

본문서는 자유롭게 배포/복사 할수 있지만

이문서의 저자에 대한 언급을 삭제하시면 안됩니다

저자 : GoodBug (unicorn@jakartaproject.com)

최초 : http://www.jakartaproject.com 

=============================================

반응형
반응형

윈도우7 텔넷 사용 안될때?

윈도우 7 telnet 사용하기 방법에 대해서 설명 한다. 

윈도우 7 텔넷은 기본적으로 막혀 있다. 윈도누 7 telnet 사용하는 방법은 의외로 간단하다.

일반적으로 그냥 윈도우7에서 telnet을 사용하면

'telnet'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램 또는 배치파일이 아닙니다. 라는메세지가 나오고 실행이 되지 않는다. 

윈도우 7 텔넷은 기본적으로 telnet 클라이언트가 설치 되어 있지 않아 막혀 있다.

시작->제어판을 선택 합니다.

제어판-> 프로그램제거 및 기능 선택

프로그램제거 및 기능 -> Windows 기능 사용/사용 안함

Window 기능 -> 텔넷 클라이언트 체크 -> 확인

다시 cmd 창을 열고 실행 하면 텔넷을 사용 할 수 있다.

반응형
반응형

1. 파일과 디렉토리의 소유자 및 소유그룹 변경하는 chown 명령어 개론

 - chown 명령어는 CHange OWNer 의 약어로서 파일이나 디렉토리의 소유자와 소유그룹을 변경할 때에 사용하는 명령어임.

 - 사용형식 : chown [ -Rcfv ] [ --recursive ] [ --changes ] [ --help ] [ --version ] [ --silent ] [ --quiet ] [ --verbose ] [ user ] [ :. ] [ group ] 파일...


 2. 특정파일의 소유자 변경하기.

 - chown stkim testfile

 - 명령어가 허용이 되기 위해서는 파일에 대한 소유권이 있어야만 가능하며, 아무나 파일 또는 디렉토리의 소유자를 변경할 수 있는것이 아님.


 3. 특정파일의 소유자와 소유그룹을 동시에 변경하기

 - chown 명령어로는 파일의 소유자와 함께 소유그룹을 동시에 변경할 수 있음. :( 콜론) 으로 구분하여 "소유자:소유그룹" 을 지정하면 소유자와 소유그룹이 동시에 변경됨.

 - chown stkim:stkim testfile


 4. 특정 디렉토리의 소유자와 소유그룹 동시에 변경하기

 - 리눅스에서는 디렉토리도 하나의 특수파일로 인식하기 때문에 파일의 소유자와 소유그룹을 변경하는 방법과 디렉토리의 소유자와 소유그룹을 변경하는 방법이 동일함.

 - chown stkim:stkim testDir


 5. 특정 디렉토리내의 모든 파일( 디렉토리 )의 소유자( 소유그룹 )을 동시에 변경하기

 - chown 명령어의 -R 옵션을 사용하면 특정 디렉토리내에 있는 모든 파일과 서브디렉토리의 소유자와 소유그룹을 한꺼번에 변경할 수 있음.

 - chown -R stkim:stkim dir1


 6.  소유자 또는 소유그룹변경시에 변경메시지 확인하기

 - chown 명령어 사용시에 -c 옵션을 사용하면 소유자와 소유그룹의 변경내용에 대해서 자세한 메시지를 출력함.

 - chown -c stkim:stkim testFile


 7. 파일의 소유자와 소유그룹변경시에 UID 와 GID 로 지정하여 변경하기

 - 일반적으로 chown 명령어로 소유자와 소유그룹을 변경할 때에 계정명( ID )과  그룹명으로 지정함.

 - chown 에서 ID 와 그룹명대신 UID 와 GID 를 지정하여도 변경이 가능함.

 - chown 500:500 testFile


 8. UID 와 GID 를 지정하여 모든 파일과 디렉토리의 소유자와 소유그룹을 변경하기

 - chown -R 501:502 testDir

 - 소유자와 소유그룹을 변경할 때에 ID 를 사용해도 되지만 UID와 GID 를 사용해도 동일한 결과를 얻을 수 있음.

 - UID 와 GID 는 /etc/passwd 파일에 정의되어 있음. UID 와 GID 를 이용하여 소유자와 소유그룹을 변경 할 때에는 /etc/passwd 파일에서 UID 와 GID 를 확인해야 함.


 9. 특정 디렉토리내의 특정파일들에 대해서만 소유자와 소유그룹 변경하기

 - chown -R stkim:stkim TestDir --from=test:test

 - TestDir 라는 디렉토리내에 존재하는 파일들 가운데 소유자가 test 이고 소유그룹이 test 로 되어있는 파일들의 소유자를 stkim 으로 변경하고 소유그룹을 stkim 으로 변경하라는 명령문.


출처 : http://pchero21.com/14

반응형
반응형

JAVA Activex(엑티브엑스) 차단으로 실행이 안될경우

참고 내용

http://blogs.msdn.com/b/ie/archive/2014/08/06/internet-explorer-begins-blocking-out-of-date-activex-controls.aspx

자바를 설치 하면 ActiveX 도 같이 설치 되어지는데 최신 버전이 아닐경우 컨텐츠 차단으로 실행을 할 수 없을 때가 있다. 

이유는 오래된 ActiveX 컨트롤을 차단 한다고 합니다.

내용은 위 블로그를 참고 하면 된다. 

액티브X 부분에서 자바 업데이트 부분을 진행하여도 개발에 설치된 자바 버전이 업그레이드 되는 것은 아니다.

업데이트 후 구버전 업데이트 삭제를 물어 보는데 삭제 해도 무방하다. 

반응형
반응형

1. 동적배열 

  - 크기확장, 숫자 문자열 혼합 : perlish array 

자바의 배열은 정적이다. 미리 크기가 정해져 사용하기 때문에 나중에 요소를 추가 할 수 없다. 만약 추가를 시도 하면 

Exception in thread "main" java.lang.ArrayIndexOutOfBounndsException : 에러가 난다.

여기에 펄(perl) 배열이라는 것이 있다. 실시간으로 늘어 나는 배열로 편리 하다.

펄의 배열은 크기 제한이 없고, 문자열과 숫자를 한꺼번에 넣를 수도 있다. 

배열이라기 보단 리스트 개념이 보이는 배열이다.

http://mwultong.blogspot.com/2006/09/java-perlish-array.html 에 있는 

소스 내용을 참고로 사용해 보기로 한다.

------------------------------------------------------------------

import java.util.*;

public class Foo {

  public static void main(String args[]) {

    List<Object> oPerlishArray = new ArrayList<Object>();

    // 배열 요소 몇 개 채우기, 문자열 숫자 가리지 않고

    oPerlishArray.add(123);

    oPerlishArray.add("하하하");

    // 이제는 배열 요소 (숫자) 한꺼번에 채우기

    for (int x = 10; x <= 100; x++) oPerlishArray.add(x);

    // 배열 출력

    for (int i = 0; i < oPerlishArray.size(); i++)

      System.out.format("[%d] = %s%n", i, oPerlishArray.get(i));

  }

}

-------------------------------------------------------------------

oPerlishArray라는 배열에 add() 메소드로 요소들을 마음대로 추가하면, oPerlishArray 배열의 크기가 자동으로 늘어 나게 된다. 추가된 내용은 뒤쪽에 요소들이 추가 된다.

텍스트 파일을 통째로 넣어 처리 할때 편하게 쓸 수 있다.

단, 이런 동적 배열은 속도가 떨어며, 메모리 관리도 비효율적이기에 꼭 필요한 경우에만 사용해야 한다. 물론 텍스트 파일 처리 등에서는 차이를 체감 하기는 힘들것이다.

TIP

배열에 정수만을 넣기 위해서는

List<Integer> oPerlishArray = new ArrayList<Integer>();

문자열만 넣으려면 

List<String> oPerlishArray = new ArrayList<String>();

모든 타입을 가리지 않고 넣으려면 

List<Object> oPerlishArray = new ArrayList<Object>();

이와 같이 선언 하면 된다.


문자열 지정후 정수를 넣으면 다음과 같은 에러가 난다고 한다.

Foo.java:11: cannot find symbol

symbol  : method add(int)
location: interface java.util.List<java.lang.String>
    oPerlishArray.add(123);
                 ^
Foo.java:15: cannot find symbol
symbol  : method add(int)
location: interface java.util.List<java.lang.String>
    for (int x = 10; x <= 100; x++) oPerlishArray.add(x);
                                                 ^
2 errors

만일 타입을 정의 하지 않으면 이런 경고가 나온다.

Note: ***.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

여기 까지....

실행 해 보도록



반응형
반응형

안드로이드(Android) AndroidManifest.xml

안드로이느 어플리케이션에 대한 각종 정보를 기술한 어플리케이션 명세서

1. 안드로이드 매니페스트 파일(AndroidManifest.xml) 개요

모든 안드로이느 어플리케이션은 만드시 AndroidManifest.xml 파일을 자신의 루트 디렉토리에 가지고 있어야 한다.

AndroidManifest.xml는 어플리케이션에 대한 필수적인 정보를 안드로이드 플랫폼에 알려준다.

(1) AndroidManifest.xml에 기술되는 내용

- 안드로이드 어플리케이션을 위한 자바 패키지명 정의

- 이 패키지명은 전체 시스템 상으로 유일해야 한다.

- 안드로이드 어플리케이션을 구성하는 컴포넌트들(Activity, Service, Broadcast Receiver, Content Provider)을 기술해야 한다.

- 어플리케이션을 구성하는 Component들에 대한 해당 클래스명을 정의하고, 그 Component가 처리 할 수 있는 기능이 무어인지 Intent-filter를 정의... 

투피컨티뉴~


반응형
반응형

-bash: ./예제.sh: /bin/sh^M: bad interpreter: No such file or directory


상기와 같이 스크립트 파일 등이 file format 오류로 실행되지 않는 다면 아래와 같이 file 의 format 을 변경하면 된다.


-bash # vi 예제.sh


:set ff=unix 실행


:wq 실행


-bash # ./예제.sh

반응형
반응형

해당 폴더 위치에서 하위 1뎁스 폴더용량 확인

du -h --max-depth=1 

전체 파일시스템 확인 명령어

df -h 

반응형
반응형

이미지는 첨부 하지 않고 가능 하면 텍스트로 설명 할 것이다. 

해당 작업은 jeus 6.0버전 (fix#8)기준이다. 

war 파일을 리디플로이 방법 간략히 정리하면

1. 제우스 admin web console 접속

2. 어플리 케이션 모듈 디플로이에서 파일 업로드

3. 엔진 컨테이너 -> 해당 컨테이너 서비스 -> 어플리케이션 모듈 -> 서비스 선택 

  -> 마우스 우측키 -> [서비스명] 리디플로이 실행 

4. 엔진 컨테이너 재기동 [확인작업]

5. 리디플로이 완료

----------------------------------------------------------------------

제우스 was를 운영 중이면 admin web console 페이지가 기동중일 것이다.

접속하는 위치는 

http://아이피:포트/webadmin/app이다. (여기서 포트는 9744 가 기본 설정이다.)

ex) htto://localhost:9744/webadmin/app

   로컬 PC에 설정 되어 있을 경우 URL이다.

웹 브라우져로 접속한다.

일반적으로 jeus 설치시나 따료 변경 여부가 없다면 

기본 admin 접속 아이디 / 패스워드 는  administrator / jeusadmin 이다.

로그인 하도록 한다.

[admin web console 페이지 - 로그인하기]

----------------------------------------------------------

로그인 되었으면 페이지 왼쪽에 [jeus 노드 트리]를 확인한다

hostname 명 아래

- 엔진 컨테이너

- JEUS 매니저 리소스

- JEUS 매니저 서비스

- 어플리 케이션 모듈 디플로이

- JEUS 모니터링

과 같이 구성된 것을 확인 할 수 있다.

어플리 케이션 모듈 디플로이 에서 war 파일을 업로드 하면된다.

---------------------------------------------------------

엔진 컨테이너 -> 해당 컨테이너 서비스 -> 어플리케이션 모듈 -> 서비스 선택 

  -> 마우스 우측키 -> [서비스명] 리디플로이 실행 

---------------------------------------------------------

리디플로이 컨테이너 재기동 하면 적용이 완료 된다.


반응형
반응형

윈도우 cmd 창에서

war 파일을 만들고 싶은 위치 폴더로 이동 해서

ex)

server 폴더 이하 모두를 server.war 로 생성 하고자 한다면

c:\server 에 폴더가 위치해 있다고 한다면

c:\에서 server 폴더로 이동해서

jar cf server.war *

실행하면 

c:\server  폴더 이하 내용을 모두 war로 압축하여

server.war 파일을 생성한다. 

c:\server 에 생성된다.


반응형
반응형

리눅스 스레드 설정 총갯수 

설정 총갯수

cat /proc/sys/kernel/threads-max

 리눅스 엔지니어가 아니어서 정확한 방법은 모르겠지만 

다음 스크립트를 사용하면 현재 사용중인 쓰레드 갯수를 알 수 있는 것 같다.

grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }' 

반응형

+ Recent posts