윈도우 검은 바탕 화면에 흰글씨는 오래 보면 눈이 아프다.

색깔을 바꾸고자 한다.

>color /?

지원하는 색깔 목록을 볼 수 있다.

>color 37

이 색깔이 눈이 가장 편한거 같다.


이렇게만 하면 명령 프롬프트를 다시 시작하게 되면 색깔이 다시 예전으로 돌아가버린다.

이 색깔을 유지하기 위해서는 레지스터리의 키 값을 변경해줘야 한다.

HKEY_CURRENT_USER/Software/Microsoft/Command Processor/
DefaultColor 의 값을 37로 변경

이렇게 하면 명령 프롬프트를 다시 실행하더라도 검은 화면이 아닌 옥색의 흰글자를 볼 수 있다.


신고
Posted by 즐건세상

jenkins 시작

IT/ASLC 2013.08.26 18:04

1.젠킨스(jenkins) Overview

2.젠킨스(jenkins) 설치

3. 샘플 프로젝트

4. Ant 를 이용한 빌드

5. 젠킨스(jenkins) 시작


jenkins 새 작업 시작

■ 젠킨스 새 작업 등록

새로운 Job 메뉴를 클릭하면 아래 그림과 같은 메뉴가 나타나게 된다.

Job 이름을 지정하고  Job 종류 중에 원하는 메뉴를 선택한다. 여기서는 Build a free-style software project 를 선택한다.

Job을 등록하고 소스 코드 저장소, 빌드 설정, 빌드 후에 대한 설정을 할 수 있다.

소스코드 관리

소스 코드 관리에서는 Subversion을 선택하고 Repository URL 정보를 입력한다. URL을 입력하면 inline창으로 밑에 enter credental 입력하라는 메시지를 볼 수 있다. enter credental 링크를 클릭하게 되면 사용자 아이디와 비밀번호를 입력 할 수 있다. 서브버전 저장소에 접근 할 수 있는 아이디와 비밀 번호를 저장하게 된다.

빌드 환경 설정

설치된 Ant Version을 선택한다.

Targets 의 값으로는 샘플프로젝트에서 작성한 빌드 파일인 build.xml의 타깃(target)의 이름을 적어주면 된다.

Build File의 값으로는 ant build 파일이 위치한 경로를 적어주면 된다. 위치 경로는 작업공간 메뉴를 클릭해서 나타나는 폴더의 경로를 적어주면 된다. 빌드 파일의 이름이 build.xml 이고, 루트 폴더에 위치해 있다면 생략해도 된다.

Build File 메뉴가 안보일 경우에는 고급 버튼을 클릭하면 볼 수 있다.


빌드 후 작업

빌드 후에 할 수 있는 작업들은 아래 그림과 같다.


여기서는 빌드 후에 junit 테스트 실행 결과를 보도록하는 작업을 선택했다.

Test report XMLs 값으로 xml 파일이 생성되는 위치 경로를 작성해 주면 된다.


빌드 실행

빌드 실행하기 위해서 왼쪽 메뉴에서 Build now 버튼을 클릭한다ㅏ.


빌드가 완료되고 나면 Build History에 등록되게 된다.

빌드 결과 확인

Build History 에서 시간을 클릭하게 되면 빌드 결과를 확인 할 수 있다.

빌드후에 Test Result를 확인 할 수 있다.

테스트 실행 결과를 테이블 형태로 볼 수가 있다.

□ Build History 통계

Build History의 통계 메뉴를 클릭하면 통계치를 그래프로 확인 할 수 있다.



신고
Posted by 즐건세상

1.젠킨스(jenkins) Overview

2.젠킨스(jenkins) 설치

3. 샘플 프로젝트

4. Ant 를 이용한 빌드

5. 젠킨스(jenkins) 시작

샘플 프로젝트를 빌드하고자 한다.

빌드를 하는 가장 간단한 방법은 명령줄(command line)에서 빌드하는 것이다. 

명령줄 빌드

명령줄에서 샘플 프로젝트를 빌드하는 방법은 아래와 같다.



-classpath 컴파일 옵셥은 참조하는 라이브러리 jar 파일들의 목록이 된다. 유닉스에서는 구분자가 세미콜론(:)이 된다.

-d 옵션은 .java 파일들을 빌들한 결과로 나온 클래스 파일들이 저장될 경로가 된다.


Ant를 이용한 빌드

명령줄 빌드는 빌드를 자주 실행할 수가 없다. 빌드를 한번 실행해보기 위해서는 너무 많은 노력이 들어가게 된다. 뭔가 잘못입력한다면 빌드 스크립트를 처음부터 다시 입력해야 한다. Ant를 이용하면 보다 쉽게, 자주 빌드를 실행 할 수가 있다.

Ant를 이용한 빌드 스크립트 작성하기

□  프로젝트 정의하기

<?xml version="1.0" encoding="UTF-8"?>
<project name="LectureService" default="compile" basedir=".">

□  재료 정의하기

프로젝트 디렉토리에 프로퍼티를 정의하여 앤트에 프로젝트 디렉토리 구조를 알려준다.

<property name="build.dir" location="bin"></property>
<property name="build.prod.dir" location="${build.dir}/prod"></property>
<property name="build.test.dir" location="${build.dir}/test"></property>
<property name="src.dir" location="src"></property>
<property name="test.dir" location="test"></property>
<property name="lib.dir" location="lib"></property>
<property name="test.reports" location="testReports"></property>

프로젝트 경로는 상대경로로 지정하여 경로가 변경되더라도 수정없이 사용할 수 있도록 한다.

□  클래스 패스 정의하기

pathelement 엘리먼트에 빌드 디렉토리 두 개를 추가해서 자바 컴파일러가 모든 클래스 파일들을 찾아낼 수 있게 한다.

fileset 엘리먼트에 필요한 라이브러리가 들어 있는 경로를 추가한다.

<path id="project.classpath">
    <pathelement location="${build.prod.dir}"></pathelement>
    <pathelement location="${build.test.dir}"></pathelement>
    <fileset dir="${lib.dir}">
        <include name="*.jar"></include>
    </fileset>
</path>

컴파일 작성하기

target의 실행 순서를 지정 할 수 있다. depends 속성의 값을 prepare 타깃을 실행한 다음 compile 타깃을 실행하게 설정 할 수 있다.

<target name="prepare">
        <mkdir dir="${build.prod.dir}"></mkdir>
        <mkdir dir="${build.test.dir}"></mkdir>
        <mkdir dir="${test.reports}"></mkdir>
</target>


<target name="compile" depends="prepare">
    <javac srcdir="${src.dir}" destdir="${build.prod.dir}">
        <classpath refid="project.classpath"></classpath>
    </javac>
</target>

prepare 타깃을 실행하고 나면 <javac 타스크를 실행하게 된다. 자바 컴파일러는 srcdir 속성의 값이 가리키는 폴더의 소스코드들을 컴파일하고, 생성된 클래스 파일들을 destdir 속성의 값에 해당하는 경로에 저장한다. classpath는 앞에서 정의한 값을 재사용 할 수 있다.


junit 스크립트 작성하기

지금까지 컴파일 타깃을 작성하는 것에 대해서 살펴 봤고, 이번에는 junit 스크립트를 작성하는 방법에 대해서 알아보고자 한다.

컴파일 순서를 compile-tests 를 먼저 실행하고 test 타깃을 수행한다.

junit  haltonfailure 속성을 true로 설정하면 테스트가 하나라도 실패하면 빌드가 실패하도록 한다.

classpath는 앞에서 정의한 클래스 패스를 재사용 한다.

테스트 결과보고를 어떻게 보여주느냐에 대한 설정으로 formatter 엘리먼트를 이용한다. formatter 엘리먼트의 type 속성의 값은 brief, plain, xml로 설정 할 수 있다.

brief : 실행되는 테스트 케이스의 이름과 통계, 세부 정보들을 테스트가 실패할 때만 출력할 경우 사용

plain : brief 보다 더 많은 정보를 출력 할 경우 사용

xml : 출력 결과를 xml 형식으로 출력 할 경우 사용

usefile 속성 값을 false로 정의하면 테스트 결과를 파일에 출력하지 않고 화면에 출력한다.

batchtest 태스크 안에 fileset 엘리먼트를 이용해서 작성된 테스트 케이스를 한꺼번에 실행 할 수 있다.

batchtest 엘리먼트의 todir 속성의 값으로 테스트 실행결과 파일이 생성될 위치 경로를 지정 할 수 있다.

앞에서 정의 한 <formatter 엘리먼트의 형식으로 리포트가 생성된다.

<target name="test" depends="compile-tests">
        <junit haltonfailure="true">
            <classpath refid="project.classpath"></classpath>
            <formatter type="xml"></formatter>
            <formatter type="brief" usefile="false"/>
            <batchtest todir="${test.reports}">
                <fileset dir="${build.test.dir}" includes="**/*Test.class"></fileset>
            </batchtest>
            <sysproperty key="doc.dir" value="${doc.dir}"></sysproperty>
            <sysproperty key="index.dir" value="${index.dir}"></sysproperty>
        </junit>       
    </target>

ant 실행하기

명령줄에서 실행할 때는 다음과 같이 실행 할 수 있다.



이클립스 플러그인을 이용해서 ant 실행하기

이클립스 ant view 실행하기

Windows - Show View - ant view 실행



처음 Ant view 를 실행하면 아무것도 보이지 않는다.  위 그림에서 1번 사각형의 아이콘을 클릭해서 build.xml을 추가해 주면 된다.

Ant view 에서는 빌드 스크립트에 정의 되어 있는 target 을 볼 수 있다. 타겟을 선택한 다음 2번 사각형의 아이콘을 클릭하면 타깃을 실행 할 수 있다.


완성된 빌드 파일을 첨부했다.

build.xml




신고
Posted by 즐건세상

샘플 프로젝트

IT/ASLC 2013.08.26 12:31

1.젠킨스(jenkins) Overview

2.젠킨스(jenkins) 설치

3. 샘플 프로젝트

4. Ant 를 이용한 빌드

5. 젠킨스(jenkins) 시작


샘플 프로젝트 소스

샘플 프로젝트는 강의 등록, 조회하는 예제다. 


 LectureService

 강의 등록과 강의 조회하는 인터페이스

 RDBLectureService

 강의를 RDB에 등록, 조회하는 클래스

 RestfulLectureService

 Restful 방식으로 강의를 등록, 조회하는 클래스

 LectureDAO

 강의를 등록, 조회하기 위한 데이터 클래스

■ 샘플 프로젝트 디렉토리 구조

샘플 프로젝트의 디렉토리 구조는 아래 그림과 같다. 샘플 디렉토리의 구조는 나중에 작성하게 될 ant build 스크립트를 작성 할 때 중요하므로 기억해 두는게 좋다.


폴더 구조는 root 폴더에 LectureService라는 폴더가 존재한다.

― bin 폴더

― prod 폴더 : src 폴더의 코드가 컴파일된 클래스 파일들이 들어가게 된다.

― test 폴더 : test 폴더의 코드가 컴파일된 클래스 파일들이 들어가게 된다.

― src 폴더: 제품 소스 코드가 들어가게 된다.

― test 폴더: 테스트 코드가 들어가게 된다.

― lib 폴더 : 프로젝트와 관련된 *.jar 파일들이 들어가게 된다.

― testReports 폴더 : 단위 테스트 결과 XML 문서가 들어가게 된다.

이클립스 프로젝트 구조








신고
Posted by 즐건세상

젠킨스 overview

IT/ASLC 2013.08.26 11:48

1.젠킨스(jenkins) Overview

2.젠킨스(jenkins) 설치

3. 샘플 프로젝트

4. Ant 를 이용한 빌드

5. 젠킨스(jenkins) 시작


What is Jenkins?
젠킨스는 소프트웨어 프로젝트 빌딩하는 작업 또는 크론(cron)에 의해서 실행되는 작업 같은 반복되는 작업들의 실행을 모니터링하는 어플리케이션이다.

소프트웨어 프로젝트의 빌딩/테스팅은 지속적이어야 한다.

젠킨스는 사용하기 쉬운 CI(Continuous Integration) 시스템을 제공한다. 젠킨스는 개발자들이 프로젝트의 변화를 통합하는 작업을 더 쉽게 만들어준다. 젠킨스는 사용자들의 최신의 빌드를 얻는데 더 쉽게 만들어 준다. 자동화되고, 지속적인 빌드는 생산성을 증가시켜 준다.

외부에서 실행되는 작업이나, 크론(cron) 같은 작업들과 프락메일(procmail) 작업들, 심지어 원격 머신도 모니터링을 실행한다. 예를 들어, 크론의 작업 결과를 정기적인 이메일로 받고,  당신은 이메일을 부지런히 주시하고, 뭔가 잘못됐을 때 알림을 받게 된다.

젠킨스는 이러한 결과들을 유지시켜주고, 뭔가 잘못됐을 때 알림을 받기 쉽게 해준다.

■ Features

1.쉬운 설치

java -jar jenkins.war 명령을 실행 또는,

서블릿 컨테이너에 jenkins.war 파일을 디플로이(deploy)

더  이상 추가적인 인스톨이나 데이터베이스는 없다.

2. 쉬운 설정

젠킨스는 즉각적인 에러 확이과 인라인 도움말 기능을 갖춘 친숙한 웹 GUI 설정 환경을 젠킨스의 모든  설정에서 사용할 수 있다. 젠킨스는 더이상의 XML 이 필요없긴 하지만, 당신이 원하면 그렇게 할 수도 있다.

3. 변경 집합(set) 지원

젠킨스는 서브버전(Subversion)이나, CVS로부터 체크아웃을 소스 코드를 받아 온다. Repository의 부하를 줄이기 위해 변경된 부분만 받아온다.

4. 영구 링크
Permanent links: Jenkins gives you clean readable URLs for most of its pages, including some permalinks like "latest build"/"latest successful build", so that they can be easily linked from elsewhere.

5. RSS/E-mail/IM 통합

빌드에 대한 결과를 실시간으로 RSS 또는 e-mail로 모니터링 할 수 있다.

6. After-the-fact tagging
 Builds can be tagged long after builds are completed.

7. JUnit/TestNG 테스트 보고

젠킨스는 테스트 결과를 테이블 형태, 요약, 테스트가 언제 실패했는지와 같은 히스토리 정보도 보여준다. 히스토리 경향을 그래프로 보여준다.

8. 분산 빌드

젠킨스는 여러대의 컴퓨터에서 분산 빌드/테스트를 실행 할 수 있다.

Distributed builds: Jenkins can distribute build/test loads to multiple computers. This lets you get the most out of those idle workstations sitting beneath developers' desks.

9. File fingerprinting

Jenkins can keep track of which build produced which jars, and which build is using which version of jars, and so on. This works even for jars that are produced outside Jenkins, and is ideal for projects to track dependency.
Plugin Support: Jenkins can be extended via 3rd party plugins. You can write plugins to make Jenkins support tools/processes that your team uses.

신고
Posted by 즐건세상

jenkins 설치

IT/ASLC 2013.08.26 10:28

1.젠킨스(jenkins) Overview

2.젠킨스(jenkins) 설치

3. 샘플 프로젝트

4. Ant 를 이용한 빌드

5. 젠킨스(jenkins) 시작



설치 파일 다운로드

http://jenkins-ci.org/



파일 다운로드 화면에서 자신의 환경에 맞는 파일을 다운로드 받는다.

다운로드 받으면 jenkins.war 파일을 확인 할 수 있다.

jenkins를 실행하기 위해서는 servlet container가 필요하다.
Tomcat 또는 jboss 등의 servlet container가 설치 되어 있어야 한다.


■ jenkins 설치

Windows 명령어 창에서 다음의 명령어를 실행한다.

이 명령을 실행하기 전에 톰캣이 실행되어있는 상태여야 한다.

"java -jar jenkins.war" 실행한다.


실행이 되고 나면 설치가 완료된다. 더 이상의 install 이나 DB도 필요 없다.


■ jenkins 설치 확인

브라우저 창에 http://localhost:8080/ 을 입력한다.





신고
Posted by 즐건세상

eclipse tool tip

IT/eclipse 2012.12.11 10:59

http://cafe.naver.com/hermeswing/468


1. Java 임의 버젼으로 실행하기

   JRE(Java Runtime Environment)의 위치는 Eclipse 플랫폼 실행에 사용됩니다. 

   Eclipse 는 Java 버젼을 자동으로 찾아 실하지만, 지정할 수도 있습니다.

   상대경로는 Eclipse가 시작된 디렉토리에서 부터 읽혀집니다.

 

   %ECLIPSE_HOME%\eclipse.exe -vm C:\jdk1.5.0_01\bin\javaw.exe

C:\eclipse\eclipse.exe -clean -vm "C:\jdk1.5.0_18\bin\javaw.exe" -vmargs -Xverify:none -XX:+UseParallelGC -XX:PermSize=20M -XX:MaxNewSize=32M -XX:NewSize=32M -Xmx256m -Xms256m -XX:MaxPermSize=128m

 

2. Workspace 임의 지정하기

   Workspace는 Eclipse 플랫폼을 수행하는 작업공간 경로입니다.

   Workspace위치는 프로젝트를 위한 기본 위치입니다.

   상대경로는 Eclipse가 시작된 디렉토리에서 부터 읽혀집니다.

 

   %ECLIPSE_HOME%\eclipse.exe -data C:\MyProject\eclipse\workspace

 

   ==> 반드시 -data 옵션을 먼저 사용해야 한다.

   %ECLIPSE_HOME%eclipse.exe -data  %ECLIPSE_HOME%\workspace -vmargs -Xmx512M

 

2-1. Workspace 수정하기

  Eclipse open 후 File > Switch Workspace 선택 후 변경..

 

 

3. Heap 메모리 Size 지정하기

   IBM Developer Kit을 위한 기본 VM, Java(TM) Technology Edition 1.3은 초기 개발에 사용됩니다. 그러나 광범위한 규모의 개발을 하기에는 충분하지 않습니다.  광범위한 규모의 개발하는 동안 많은 사용가능한 Heap영역를 생성하기 위해 VM 을 수정해야 합니다.

  예를 들면, 다음의 세팅은 자바 Heap 영역을 256M로 세팅합니다.

  이 설정은 Eclipse 실행 시 OutOfMemoryErrors 가 발생했을때의 조치에도 사용됩니다.

 

   %ECLIPSE_HOME%\eclipse.exe -vmargs -Xmx256M

 

4. CVS 파일 속성변경

   Window > Preferences 메뉴에서

   Team > File Content 에서 확장자를 Add 시키거나, 변경 시킬 때 Contents 를 변경한다.

   변경 후 CVS 에서 내려받을 때 변경된 내용으로 저장된다.

 
5. 단축 Key 변경
 
 
6. 영역별 주석처리 
    영역을 지정한 뒤 "Ctrl + /" 를 사용해서 '//' 를 일괄적으로 적용하는 기능.
    영역을 지정한 뒤 "Ctrl + Shift + /" 를 사용해서 '/* */' 를 적용하는 기능.

7. import 문 정리하기

   개발할 때 어떤 기능을 구현하기 위해 특정 라이브러리를 import 시켜놓고, 
   그 기능이 필요없어져서 삭제한 다음에도 import문은 그대로 두는 경우가 많습니다. 

   그때 Eclipse가 제공하는 Organize import 기능은 아주 유용한데요.. 
   사용되지 않는 라이브러리를 import한 경우 Eclipse는 앞에 전구를 키고 표시해줍니다. 
   이때 "Ctrl+Shift+O" 버튼을 누르면 사용하지 않는 모든 import 문이 정리됩니다.


   또 한가지 유용한 기능은 같은 패키지 내에서 여러 개의 클래스를 import할 경우입니다. 
   예를 들어 한 패키지 내에서 4개 이상의 클래스를 import 한다면, 
   그것을 *로 합쳐서 표시하도록 하고 싶을 때가 있습니다. 
   그럴 때는 window - preference 로 가서 java - code style - organize import에서 
   Number of imports needs for .*의 수를 4로 해놓으면, 
   같은 패키지에서 4개이상의 클래스가 임포트되면 *로 합쳐서 표시해줍니다. 
   (Apply 버튼 바로 위에 그 항목이 있습니다.)

 
8. Java소스에 Line Number 보이기
Window > Preference > Java > Editor > Show line Numbers 체크

9. code assist의 사용

   Eclipse의 강점 하나는 바로 code assist입니다.

   일반적으로 Ctrl + Space 로 사용합니다.

   그런데 이 Code Assist가 안되는 경우가 있습니다.

   아마도 키보드의 한영변환을 'Shift + Space'로 하기위해 101키 호환키보드 .. (종류 3)을 사용하는 사람의 경우일것입니다.

   이때는 제어판 > 국가 및 언어 > 언어 탭 > 자세히 > 텍스트 서비스 및 입력언어

   'US'타입을 하나 추가 해주면 됩니다.



 

10. ctrl + Shift + L

     단축키를 빠르게 찾을 수 있네요..

 

11. %ECLIPSE_HOME%\eclipse.exe -nl enUS

     한글 eclipse를 영문 eclipse

 

12. html에러 체크 없애기

      windows->preference의 validation를 조정

 

13. eclipse.ini (http://wiki.eclipse.org/Eclipse.ini)

    Eclise 시작 시 $ECLIPSE_HOME/eclipse.ini 파일의 옵션에 의해 제어를 할 수 있습니다.

    만약 $ECLIPSE_HOME에 eclipse.ini 파일이 정의되지 않으면, Eclipse가 설치된 폴더에 있는 파일을 로딩합니다.

 

   중요 !!!

   i. 각 옵션과 각 인수의 옵션은 반드시 해당 라인에 존재해야 합니다. 

   ii. -vmargs 이후의 모든 옵션들은 JVM에서 읽히지 않습니다. 때문에 -vmargs이전에 모든 인수들과 옵션들을 설정해야 합니다.

   iii. eclipse.ini 파일의 기본적인 예. (Heap공간을 40MB, 최대256MB로 초기화, PermGen Size를 최대 256MB으로설정, Default JVM

       을 C:\Java\JDK\1.5\bin\javaw.exe를 사용함.)

 

    -showsplash
    org.eclipse.platform
    --launcher.XXMaxPermSize
    256m

   -vm
   C:\Java\JDK\1.5\bin\javaw.exe (Linux 시스템의 경우 : /opt/sun-jdk-1.6.0.02/bin/java)
    -vmargs
    -Xms40m
    -Xmx256m

 

    iv. -vm 옵션과 그 값의 반드시 별개 라인이어야 하며, Java home폴더가 아닌 Java를 실행할 수 있는 전체 절대 경로이여야 합니다.

    v. 모든 VM에 적용되진 않지만 -X 옵션을 사용할 수 있습니다.

 

   -showsplash
   org.eclipse.platform
   -vm
   /usr/lib/jvm/java-1.5.0-sun/jre/bin/java
   -vmargs
   -Xms512m
   -Xmx1024m
   -XX:+UseParallelGC
   -XX:PermSize=256M
   -XX:MaxPermSize=512M

 

14. permgen size를 늘리는 방법

    'java.lang.OutOfMemoryError: PermGen space' 에러가 발생하면 아래와 같이 늘려주면 됩니다.

    eclipse [normal arguments] -vmargs -XX:PermSize=64M -XX:MaxPermSize=128M [more VM args]

 

    Windos상에서 Eclipse 3.3과 Sun VMs를 사용한다면

    eclipse.ini 파일에 아래와 같은 옵션을 줄수 있습니다.

 

    --launcher.XXMaxPermSize
   256m

 

    Eclipse3.3.1 버전이나 Mac OS X for 3.3.0버전에서 PermGen size를 사용할 수 없는 Bug가 있습니다.

    이 경우는 clipse.ini 파일에 -XX 옵션을 사용해서 처리하면 됩니다.

 

15. Eclipse에서 HTML구문의 Folding 기능 사용하기 ( Eclipse 3.4.x 버젼에서 적용해봤는데, 그 이전버젼은 어떨지...)

Window > Preferences >

   General > Editors > Structured Text Editors

        Enable folding 체크

 

16. Indigo에서 Heap Status 바 보여주기

    Window > Perferences > General : Show hea status 체크

신고
Posted by 즐건세상

용어 정리 - RSA

IT/ibm 2012.12.11 10:12
  • cyclic dependency

JDepend같은 툴은 그런면에서 많은 도움이 될 수 있는 분석도구이다.  그 사용법에 관한 좋은 아티클(Managing Your Dependencies with JDepend)도 여럿 찾아볼 수 있다.

의존관계 분석에서 중요한 것 중의 하나는 순환의존관계(Cyclic Dependency)이다. Cyclic Dependency는 많은 문제를 일으키는 안좋은 설계의 대표적인 예이다. Cyclic Dependency가 일으킬 수 있는 문제점은 매우 다양하다. 위에서 얘기한 OnJava의 아티클이나 Krkk의 블로그에 그 이유들이 잘 설명되어있다. 상식적으로도 컴포넌트나 패키지, 모듈이 순환적인 의존관계를 가지면 안된다는 것은 쉽게 이해할 수 있다.

Layered Architecture를 설계할 때에 주의 할 것이 바로 한 방향으만 의존관계를 가져야한다는 점이다. Isolation이니 Decoupling이니 하는 것들은 귀가 따갑도록 들어왔다. Service layer가 UI(MVC) layer에 의존적이거나 DAO layer가 Service Layer와 상호의존적이라는 것은 잘못된 Layered Architecture의 대표적인 사례이다. Spring이나 Ioc/DI를 지지하는 많은 사람들이 추구했던 것이 결국 잘못된 의존관계로 인해서 매우 지저분하게 coupling된 시스템을 피하자는 것이었다.

출처 :http://toby.epril.com/?p=263

  • antipattern

"소프트웨어 공학에서, 안티-패턴이란 흔히 사용되기도 하는 패턴이지만 실무적으로는 비효율적인 그리고/또는 생산적이지 못한 패턴을 말한다."
(원문 URL: http://en.wikipedia.org/wiki/Anti-pattern)

잘 알려진 anti-pattern중 흥미가 가는 것 몇 개를 소개합니다.

1. God object: 하나의 클래스에 너무 많은 필드와 함수를 넣어서 너무 많은 것을 알고 너무 많은 것을 할 줄 아는 객체. 전지 전능한 object라고 비꼬는 의미에서 그러한 이름이 붙은 것으로 보임.

2. Spaghetti code: 이해하기 힘든 구조를 가진 프로그램. 예를 들어서, goto 가 남발한 code. code가 스파게티 면발같이 비비 꼬였다고 해서 붙여진 경멸적인 용어.

3. Hard code: 프로그램 소스 코드에 직접 설정 값이나 입력 값이 삽입된 code. 값들이 마치 hardware circuit처럼 고정되어 변경되지 않는다는 것에 유래된 용어.

4. Software bloat: 프로그램 새 버전이 나올 때마다 사용자에게 필요 없는 기능이 추가되거나 점점 더 많은 시스템 자원을 사용하는 경향을 이르는 용어. bloat는 부풀다는 뜻.

5. Database-as-IPC: database를 IPC(Inter-Process Communication)을 위한 message queue로 사용하는 것. 더 적절한 mechanism이 있음에도 불구하고


System Pattern

Design Pattern

Structural Pattern

Object-Oriented Pattern


  • Architectural Discovery

Anarchitectural discovery identifies patterns and antipatterns in application code and studies how components are connected to provide application design information.

When you create an analysis configuration for architectural discovery, you can choose which patterns to look for in your Java™ source code.

  • Design patterns, which include some of the classic Gang of Four patterns
  • Object-oriented patterns, which include abstraction and inheritance trees
  • Structural patterns, which include patterns based on irregular structural connectivity between components, including antipatterns such as cyclic dependencies
  • System patterns, which detect all packages in the workspace


  • ViewPoint(관점)

window - Preference - Modeling - viewpoint(관점)


  • OCL(Object Contraint Language)


  • «modelLibrary»

To indicate a Standard Stereotype (see Annex C, “Standard Stereotypes”). For example, the «modelLibrary»
keyword attached to a package identifies that the package contains a set of model elements intended to be shared by
multiple models.






신고
Posted by 즐건세상

RPE에서 엑셀 문서 뽑기

윈도우 command 창에서 파일 생성되는 기능을 이용해서 생성하는 방법


RPE에서 Profile의 특정 attribute로 소팅하기


변수 사용 방법


신고
Posted by 즐건세상

그리스 국채 이자율이 7%가 넘어가면 왜 국가 부도 위험이 있는가?

한 국가에서 국채를 발행하면 그걸 산 투자자들은 그건 가만히 들고 있는게 아니다. 그 국채를 산 다음 전당포라고 할 수 있는 repo에게 맡기고 돈을 빌린다.

그런데 맡긴 담보물의 가치가 떨어지게 되면 돈을 빌려간 사람들에게 전화를 걸어 그리스 국채는 가치가 떨어졌으니 다른 나라걸 가지고 와라고 요구할 수가 있다. 만약 돈을 빌려간 사람이 다른 나라의 국채를 가져오지 않으면 그리스 국채를 시장에 내다 팔기 시작한다.

이렇게 되면 그리스 국채는 종이쪼가리가 되고 그리스는 국가부도의 위기를 맞게 된다.

repo

이 7%라는 숫자는 어떻게 나오냐면 유럽 중에서 금리가 제일 높은곳이 프랑스로 2.5%다. 이 2.5%에 4.5%를 더하면 7%가 된다. 즉 repo에서 4.5%라는 최소한의 이자를 감당한다는 애기다. 이 4.5%라는 숫자다 repo에서 자기들 끼리 걍 정했다.


신고
Posted by 즐건세상


티스토리 툴바