[ERD] #. ERD 를 가지고 테이블정의서 추출하기

Posted by yvette.theomom's blog
2012. 5. 7. 16:52 Anal & Design/013_utils
반응형

[ERD] #. ERD 를 가지고 테이블정의서 추출하기

 

사이트에 ERD 만 있고 테이블정의서가 없을때, 테이블정의서를 ERD 로부터 추출하여 사용하려고 한다.

 

참고 포스트는 아래 주소이며,

참고포스트 : http://blog.naver.com/taogy/150083363513

 

위 포스트의 내용을 토대로 물리/논리 테이블정의서를 따로 따로 추출한다.

 

결과 파일의 내 저장위치 ==> C:\Program Files\CA\AllFusion ERwin Data Modeler r7\Reports\  이다.

 

참고: 간단히 그 과정을 동영상으로 녹화하였음. --> 인코딩후 올리겠음.

 

 

 

 

 

 

#. 실무에서 자주 사용되는 쉘 스크립트 #4 [SCRAP]

Posted by yvette.theomom's blog
2012. 4. 10. 14:45 개발/040_Shell Script
반응형

출처: http://www.linux.co.kr/home/lecture/index.php?cateNo=&secNo=&theNo=&leccode=11061

 


실무에서 자주 사용되는 쉘 스크립트 #4 (ping을 이용한 서버모니터링)
 

 
실무에서 자주 사용되는 쉘 스크립트  #4
           (ping을 이용한 서버 모니터링)




  지난강좌(#3)는 MySQL에 관련된 편리한 스크립트를 만들어 보았다.
금번 강좌에서는 ping명령을 이용하여 나의 서버들을 관리할 수 있는 서버모니터링 프로그램을 만들어 보도록 하겠다. ping 명령어를 이용하여 단순하게 테스트를 할 것이다.
  단순히 한 서버만 ping 테스트 한다면 좋겠지만, 내가 관리하는 서버가 여러대라면, 하나 하나 하기엔 힘든 일이다. 쉘스크립트를 이용하여 많은 서버를 관리 할 수 있도록 만들어 보겠다.


먼저, 어떤일을 할 것인지 생각 해 보자...



1) ping 명령어로 서버를 점검한다?
  ping 명령어로 서버가 죽었는지 살았는지 확인 할 수 있다. 물론 서버나 네트웍 장비에서 ping을 막는다면, 불가능 한 일이지만, 그렇지 않다는 가정하에서 ping 명령어를 이용하겠다.

  (1) 서버 점검
    ping 아이피

  위와같이 명령어를 입력하면, 정상적 이라면, 지속적으로 응답시간을 보여 주게된다.


  (2) ping을 한번만 테스트 하려면?
    ping -c 1  아이피

    이렇게 하면, ping 테스트를 한번만 한다. 정상적일 때는 응답이 빠른데 실패는 너무 느리다.


  (3) ping 테스트시 응답을 기다리는 시간을 줄이려면?
    ping -c 1 -w 1 아이피

   위와같이 하면, 응답이 없더라도 1초만 기다리게 된다.


  이제 ping 명령으로 특정 서버를 점검할 준비가 되었다. 




2) 서버의 응답 결과를 쉘에서 처리하자!
  ping 명령의 결과는 사용자가 보기 좋은 형태로 나타난다. 하지만, 프로그램을 작성하기 위해서는 단순하게 "된다" 혹은 "안된다" 정도가 편리하다. 모든 명령어는 명령어 실행 결과를 리턴하게 되어 있다. 대부분 정상적으로 작동하였으면 0 , 아니면 에러코드 를 리턴한다.

  bash쉘에서 바로 전 명령어의 리턴값을 받아오는 변수가 있다 "$?"  이다.
 이 변수를 가지고 다음과 같이 ping 명령의 결과를 처리 할 수 있다.

 
ping -c 1 -w 1 아이피 &> /dev/null
  if [ "$?" == "0" ] ; then
     echo "정상"
  else
     echo "비정상"
  fi


 위 명령으로 ping 결과에 대한 리턴값을 받게 되며, 결과값이 0이면 "정상"을 출력하고 아니면, "비정상"을 출력하게 된다.
  ping 명령어의 출력은 /dev/null으로 보내 버린다^^



3) 서버 리스트를 입력하자
   내 서버가 여러대라면, 서버 리스트를 입력해야 한다. 여기서는 쉘스크립트의 배열을 사용하도록 한다.
 
  (1) 배열을 입력한다.
    server[0]="192.168.0.100"
    server[1]="192.168.0.1"

위와같이 배열으로 선언했다.
server 라는 배열에 0번째 주소에서는 "192.168.0.100"
server 라는 배열에 1번째 주소에서는 "192.168.0.100"

서버가 많이 있다면, 많이 넣어주면 된다.^^


  (2) 배열의 내용을 보여준다.
     echo ${server[0]}

위와같이 출력할 수 있다.


  (3) 배열의 크기가 궁금하다?
    echo ${#server[*]}


  (4) 배열의 모든 내용을 출력하려면?
    echo ${server[*]}


우리는 이렇게 서버 리스트를 배열에 넣었고 데이터를 확인 했다.



4) '3)'에서 넣었던 데이터를 '2)'의 ping 명령으로 점검해 보도록 하자!
  이제 반복문 인 for 문을 알아 보자.  #3 강좌에서는 for in 문을 배웠지만, 지금 사용하는 for 문은 일반적인 언어에 있는 for 문이다. c 언어의 그것과 비슷하니 살펴 보도록 하자.


for (( 표현식1 ; 표현식2 ; 표현식3 )) ; do
  <명령어들>
done

일반적인 언어와 같이 "표현식1"은 초기에 1번만 실행된다.
"표현식2"는 조건문이 들어간다.
"표현식3"은 증감문이 들어간다.

다음 예제를 보자

for (( i=1 ; i<=10 ; i++ )) ; do
  echo "$i"
done

위 예는 1부터 10까지 1씩 증가하면서 출력하는 프로그램이다.




그렇다면, '3)'에서 넣었던 서버리스트를 '2)'의 명령어로 점검해 보자.

for (( i=0 ; i<${#server[*]} ; i++ )) ; do
  ping -c 1 -w 1
${server[$i]}  &> /dev/null
  if [ "$?" == "0" ] ; then
    echo "${server[$i]}  .. 정상"
  else
    echo "${server[$i]}  .. 비정상"
  fi
done


위와같이 하면, 0번부터 배열의 크기만큼 반복해서 ping 테스트를 하고,
 결과를 서버 IP와 함께 정상 / 비정상 보여 준다.




5) 우리의 목적을 달성해 보자..
 위에서 알아본 것들을 응용해서 다음과 같이 우리가 원하는 쉘스크립트를 만들어 보자.

server[0]="192.168.0.100"
server[1]="192.168.0.1"


for (( i=0 ; i<${#server[*]} ; i++ )) ; do
  ping -c 1 -w 1
${server[$i]} &> /dev/null
  if [ "$?" == "0" ] ; then
    echo "${server[$i]}  .. 정상"
  else
    echo "${server[$i]}  .. 비정상"
  fi
done


위 쉘스크립트를 이용하여 간단하게 서버가 죽었는지 살아 있는지 점검 할 수 있다.



우리는 이것으로
 아주 쉽게 서버를 점검 할 수 있는 프로그램을 만들었다. 우리는 위 스크립트를 작성하면서 ping명령어 배열, if, for 문을 알게 되었다.
 서버가 100대라면 100번 입력하지 않아도 간단한 스크립트 하나로 점검할 수 있다. 난 시간을 save 했다!!   넘넘 뿌듯하다^^..



  이것으로 ' 실무에서 자주 사용되는 쉘 스크립트  #4' 강좌를 마무리 하겠습니다.
본 강좌의 설명이 어렵거나, 잘못된 부분이 있으면 언제든지 따끔한 지적을 바랍니다.
 
   
강사 소개
  도리    
본명 : 정 우 영 연구소장
E-Mail : doly골뺑이superuser.co.kr
소속 : (주)수퍼유저코리아
소개 : 하루 하루 최선을 다합시다!!


#.이클립스 디버거 사용법

Posted by yvette.theomom's blog
2012. 2. 1. 10:36 개발/023_모든매뉴얼
반응형

[JAVA] #4_JAXB 를 이용한 JAVA object <==> XML convert 하는 예제

Posted by yvette.theomom's blog
2012. 1. 31. 15:07 개발/025_JAVA
반응형
0. 이 테스트의 의미

JAVA 로 생성된 오브젝트 클래스를 XML 파일로 만들어내고,
XML 파일을 읽어들여 JAVA 오브젝트로 만들어내는 예제로서
그 툴로 JAXB 라는 것을 이용한다.

JAXB 란
1) 객체를 XML 로 매핑하고 (이를 마샬링 Marshalling 이라하며)
2) XML 을 객체로 매핑하는 (이를 언마샬링 UnMarshalling 이라한다.)
것을 말한다.

다시말해,
JAVA 를 XML 로 바인딩 하는것 (마샬링) 이라 생각된다.

1. 준비작업

1) API 를 준비해야 한다.
필요 API 는
1) jaxb-api.jar    <-- 파일 다운로드:  jaxb-2_2-mrel2-spec1.zip
2) jaxb-impl.jar  <-- 파일 다운로드:  jaxb-impl.jar.zip

2) 위 API 를 자바프로젝트를 생성하여 클래스 패스에 LIB 를 추가해야 한다.

2. 소스코딩작업

1) 새 자바프로젝트 생성 -> ysj_jaxb
2) 패키지생성 -> com.sjeong.core
3) 클래스 생성

3-1) JAXB Annotation 
3-1-1) Customer.java

 package com.sjeong.core;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Customer {
 String name;
 int age;
 int id;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 
}



3-2) Convert Object to XML (객체를 XML 로 매핑하는 Marchalling TEST)
3-2-1) JAXBExample.java

 package com.sjeong.core;

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

public class JAXBExample {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
  Customer customer = new Customer();
  
  customer.setId(100);
  customer.setName("seokjeong & gunyoung");
  customer.setAge(27);
  
  try {
    File file = new File("D:\\ysj_src\\file.xml");
    JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
    
    
    //output pretty printed
    jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    
    jaxbMarshaller.marshal(customer, file);
    jaxbMarshaller.marshal(customer, System.out);
    
  } catch (JAXBException e){
   e.printStackTrace();   
  }

 }

}


OUTPUT

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer>
    <age>27</age>
    <id>100</id>
    <name>seokjeong &amp; gunyoung</name>
</customer>


3-3) Convert XML to Object to (XML 을 객체로 매핑하는 언마샬링 UnMarshalling TEST)
3-3-1) JAXBUnMarchallerExample.java

 package com.sjeong.core;

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

public class JAXBUnMarchallerExample {

 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
    File file = new File("D:\\ysj_src\\file.xml");
    JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
    
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
    Customer customer = (Customer)jaxbUnmarshaller.unmarshal(file);
    System.out.println(customer);
    
  } catch (JAXBException e) {
   e.printStackTrace();
  }
 }
}


OUTPUT
 com.sjeong.core.Customer@1ef9157

이렇게 나오는데 이건 아닌것 같고...(오브젝트가 그대로 나오는게 아닌거 같고,
정답결과는

Customer [name=...., age=27, id=100] 이런식으로 값이 제대로 나와야 하는데,
내가 뭔가 처리가 안된건지.....살펴봐야 겠다.








           




[yvette] EDITPLUS 에서 자바 컴파일 환경 설정하기_화면캡쳐

Posted by yvette.theomom's blog
2011. 12. 30. 10:44 개발/022_TIP
반응형


1. EDITPLUS 에서 사용자도구의 설정정보


command: C:\Program Files\Java\jdk1.5.0_22\bin\javac.exe

 

command: C:\Program Files\Java\jdk1.5.0_22\bin\java.exe


2. 시스템변수의 CLASSPATH 설정



3. 메뉴에서 확인

form:input 태그의 readonly 주기

Posted by yvette.theomom's blog
2011. 10. 26. 11:52 개발/027__HTML_CSS
반응형
<form:input path="cert"  size="48" readonly="true" />

readonly="true"     (O)  이렇게 안쓰고
readonly              (X)  만 쓰면 죽음....




'개발 > 027__HTML_CSS' 카테고리의 다른 글

[스크랩] Spring's Form Tag  (0) 2011.10.26

[스크랩] Spring's Form Tag

Posted by yvette.theomom's blog
2011. 10. 26. 11:18 개발/027__HTML_CSS
반응형
출처: http://dev.anyframejava.org/anyframe/doc/web/3.1.0/webfw/springmvc/basic/tag.html

Spring의 폼 태그는 다른 폼 태그 라이브러리와는 다르게 Spring Web MVC와 연동 될 수 있다. 이는 태그에서 command 객체, controller 참조 데이터로의 접근이 가능하다는 것이다. Spring Form tag의 사용방법은 매우 간단하며 예제를 중심으로 각 tag에 대한 내용을 살펴본다.

configuration

spring 폼 태그를 사용하기 위해서는 spring-form.tld파일이 필요하고 이는 spring-webmvc-2.5.2.jar 파일에 포함되어 있다. 이 폼 태그를 사용하기 위해서는 JSP 페이지에 taglib을 추가해줘야한다.
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

form tag

'form'태그는 데이터 바인딩을 위해 태그 안에 바인딩 path를 지정해 줄 수 있다. path에 해당되는 값은 도메인 모델의 Bean 객체를 의미한다. 사용예는 다음과 같다.
<form:form commandName="user">
userId : <form:input path="userId" />
</form:form>
또한 spring form 태그를 이용하기 위해서는 각각의 입력 path값에 매칭될 도메인 객체를 지정해 줘야 하는데 form태그 안에 commandName 속성으로 다음과 같이 지정해 줄 수 있다.
<% request.setAttribute("user", sample.services.UserVO())%>
이러한 commandName의 기본값은 "command"이며 input값들과 매칭될 도메인 객체를 request값으로 세팅해 줘야한다. 이 값은 SimpleFormController를 사용할 경우 FormBackingObject()메소드에서 지정해 줄 수도있다.
protected Object formBackingObject(HttpServletRequest request)
	throws Exception {
	UserVO vo=new UserVO();
	request.setAttribute("user",vo);
	return new UserVO();
}

input tag

HTML의 input태그의 value가 text인 것을 기본 value로 갖는다. 이 태그의 예는 위의 form태그 예에서 볼수있다. 또한 다음과 같은 화면을 출력하게 된다.

checkbox tag

다음은 checkbox tag의 예이다. 마찬가지로 path에 도메인 객체의 bean name을 매핑시켜주고 label속성을 이용하면 jsp페이지로 보여질 이름을 설정할 수 있다.
<form:checkbox path="hobby" value="listeningMusic" label="음악감상"/>
<form:checkbox path="hobby" value="study" label="공부"/>

checkboxes tag

위의 checkbox tag는 각각의 항목에 대해 작성해줘야 하지만 checkboxes tag를 사용하면 items속성을 이용해서 한줄로 나타내줄 수 있다. 이러한 items에 들어갈 값은 컨트롤러의 formBackingObject()메소드에서 Array, List, Map형태의 것들로 넘겨 줄 수 있다. Map의 key와 value쌍으로 넘겨줄 경우 key는 태그의 value값이 되고 value는 label명이 된다. (단, Array나 List로 넘길 경우 label은 value와 같은 값을 가지게 된다.) 다음은 그 예이다.
protected Object formBackingObject(HttpServletRequest request)
 	throws Exception {
	UserVO vo=new UserVO();
	Map interest =new HashMap();
	interest.put("reading", "독서");
	interest.put("listeningMusic", "음악감상");
	interest.put("study", "공부");
	request.setAttribute("interest",interest);
 	request.setAttribute("user",vo);
return new UserVO();
}
<tr>
	<td>hobby :</td>
	<td><form:checkboxes path="hobby" items="${interest}" /></td>
</tr>

radiobutton tag

다음은 radiobutton tag의 예이다. radiobutton tag 또한 label 속성을 이용하여 label명을 설정해 줄 수 있다.
<tr>
    <td>Sex:</td>
    <td>Male: <form:radiobutton path="sex" value="M" label="남자"/> <br/>
        Female: <form:radiobutton path="sex" value="F" label="여자"/> </td>
</tr>

radiobuttons tag

다음은 radiobuttons tag의 예이다. items 속성의 사용방법은 위의 checkboxes tag와 동일하다.
<tr>
    <td>Sex:</td>
    <td><form:radiobuttons path="sex" items="${sexOptions}"/></td>
</tr>

password tag

다음은 password tag의 예이다.
<tr>
	<td>password :</td>
	<td><form:password path="password" /></td>
</tr>

select tag

select tag도 위의 checkboxes tag나 radiobuttons tag 처럼 items 속성을 이용하여 formBackingObject에서 넘겨주는 값으로 자동 매핑 시켜줄 수 있다.
protected Object formBackingObject(HttpServletRequest request)
 	throws Exception {
	UserVO vo=new UserVO();
	Map address =new HashMap();
	address.put("seoul","서울");
	address.put("daegu","대구");
	address.put("busan","부산");
	request.setAttribute("address",address);
 	request.setAttribute("user",vo);
return new UserVO();
}
<tr>
	<td>주소</td>
	<td><form:select path="address" items="${address}" /></td>
</tr>
일반적인 option tag와 함께 아래와 같이 사용할 수도 있다.

option tag

다음은 option tag의 사용 예이다.
<tr>
	<td>주소</td>
	<td><form:select path="address">
		<form:option value="seoul" label="서울" />
		<form:option value="daegu" label="대구" />
		<form:option value="busan" label="부산" />
	</form:select></td>
</tr>

options tag

다음은 options 태그의 사용예이다.
<tr>
	<td>주소</td>
	<td><form:select path="address">
		<form:options items="${address}" />
	</form:select></td>
</tr>

textarea tag

다음은 textarea tag의 사용 예이다.
<td>Note :</td>
<td><form:textarea path="comment" rows="3" cols="20"></form:textarea></td>

hidden tag

다음은 hidden tag의 사용 예이다.
<form:hidden path="userId" />

errors tag

Spring은 validatior에서 얻어진 메시지를 JSP페이지에서 쉽게 출력할 수 있도록 spring form 태그의 form:errors태그를 제공한다. 이는 생성한 validator를 통해 입력값의 유효성 체크 후 에러 메시지를 출력해주는데 자세한 사항은 본 매뉴얼 Spring MVC validator - form:errors 태그 사용 방법을 참고한다.

sample

  • tag.jsp(입력화면)
  • <body>
    <form:form commandName="user">
      <table>
         <tr>
            <td>userId :</td>
            <td><form:input path="userId" /></td>
         </tr>
         <tr>
            <td>password :</td> 
            <td><form:password path="password" /></td>
         </tr>
         <tr>
            <td>sex :</td>
            <td><form:radiobutton path="sex" value="M" label="남자" /> 
                <form:radiobutton path="sex" value="F" label="여자" /></td>
         </tr>
         <tr>
            <td>주소</td>
            <td><form:select path="address" items="${address}">
                </form:select></td>
         </tr>
         <tr>
            <td>hobby :</td>
            <td><form:checkboxes path="hobby" items="${interest}" /></td>
         </tr>
         <tr>
            <td>Note :</td>
            <td><form:textarea path="comment" rows="3" cols="20"></form:textarea></td>
         </tr>
       </table>
       <input type="submit" value="submit"/>
    </form:form>
    </body>
  • FormTagTestController.java
  • public class FormTagTestController extends SimpleFormController {
    	private static Log log = LogFactory.getLog(FormTagTestController.class);
    	
    	public FormTagTestController() {
    		setCommandName("user");
    		setCommandClass(UserVO.class);
    		setFormView("tag");
    		setSuccessView("formtagafter");
    	}
    
    	protected ModelAndView onSubmit(HttpServletRequest request,
    			HttpServletResponse response, Object command,
    			BindException exception) throws Exception {
    
    		System.out.println(command.toString());
    		// TODO Auto-generated method stub
    		UserVO vo = (UserVO) command;
    		return new ModelAndView(getSuccessView(),"vo", vo);
    	}
    	 protected Object formBackingObject(HttpServletRequest request)
    	 throws Exception {
    		UserVO vo=new UserVO();
    
    		Map interest =new HashMap();
    		interest.put("reading", "독서");
    		interest.put("listeningMusic", "음악감상");
    		interest.put("study", "공부");
    		
    		Map address =new HashMap();
    		address.put("seoul","서울");
    		address.put("daegu","대구");
    		address.put("busan","부산");
    
    		request.setAttribute("address",address);
    		request.setAttribute("interest",interest);
    
    	 request.setAttribute("user",vo);
    	 
    	 return new UserVO();
    	 }
    }
  • formtagafter.jsp(출력화면)
  • <body>
    userId = ${vo.userId}<br/>
    password = ${vo.password}<br/>
    address = ${vo.address}<br/>
    sex = ${vo.sex}<br/>
    hobby= "${vo.hobby}"<br/>
    note= "${vo.comment}"<br/>
    </body>
    위의 JSP 코드처럼 Expression Language(JSP 2.0에서 지원)를 사용하면 간단하게 컨트롤러에서 넘겨준 객체의 빈 값을 출력할 수 있다.

Resources




'개발 > 027__HTML_CSS' 카테고리의 다른 글

form:input 태그의 readonly 주기  (0) 2011.10.26

[MPKI_PIMS] UI 변경관련 작업절차

Posted by yvette.theomom's blog
2011. 9. 21. 17:03
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.