2011.11.16 14:25
 아카이브 파일 형태(jar 또는 war)로 패키징하여 배포하는 경우 내부에서 사용하는 참조라이브러리나 리소스 파일이 변경되어야 하는 경우 새로 패키징을 매번 하기란 여러모로 번거롭다. 이때에는 손쉽게 jar 명령으로 해당 파일만 교체해 보자.



 java의 기본 명령인 jar의 uf 옵션을 이용하면 아카이브파일(jar 또는 war 등) 내의 파일을 교체하거나 추가할 수 있다.

■ 명령어 사용법

jar uf 아카이브파일명 교체할파일명(디렉토리포함)


1. 시나리오
   TestWeb.war 에서는 ReferenceLibrary.jar 파일을 라이브러리로 사용(WEB-INF/lib 아래에 함께 패키징)하고 있는데,
   뒤늦게 ReferenceLibrary.jar 의 기능 결함이 발견되어 war의 재패키징 없이 버그를 수정한 라이브러리만 교체하고자 한다.

2. 준비사항
  아카이브 파일내의 교체할 파일의 위치와 동일한 디렉토리 구조를 만들어 교체할 파일을 준비해 둔다.
  예) D:\deploy\WEB-INF\lib\ReferenceLibrary.jar
  
3. 명령수행
  D:\deploy>jar uf TestWeb.war WEB-INF\lib\ReferenceLibrary.jar


Posted by kimgisa.net
2011.09.30 17:52
텍스트 편집기인 Sublime Text2 에서 XML formatting 기능을 적용하는 방법을 알아본다.

1. XML 포멧팅 기능을 제공하는 Tidy 를 다운로드한다.


2. 다운로드한 tidy.exe 를 Path가 걸려있는 경로에 위치시킨다.
   (예: c:\windows\system32 )

3. 단축키를 바인딩한다. (Menu : Preferences > Key Bindings - User)

Default(Windows).sublime-keymap

[

// Formatting short key

{ "keys": ["ctrl+shift+x"], "command": "tidy_xml" }

]


4. tidy_xml 플러그인 스크립트 파일을 작성하여 Packages의 User 폴더에 위치시킨다.
  Sublime Text 2 Packages 폴더로 쉽게 이동하려면 Menu에서 Preferences > Browse Packages 를 클릭하면 된다.
  (예 : C:\Documents and Settings\Standard\Application Data\Sublime Text 2\Packages\User)

tidy_xml.py

import sublime, sublime_plugin, subprocess


class TidyXmlCommand(sublime_plugin.TextCommand):

  def run(self, edit):

    command = 'tidy -xml -i -utf8 -wrap 400 -q'


    # help from http://www.sublimetext.com/forum/viewtopic.php?f=2&p=12451

    p = subprocess.Popen(command, bufsize=-1, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)

    result, err = p.communicate(self.view.substr(self.view.sel()[0]).encode('utf-8'))


    self.view.replace(edit, self.view.sel()[0], result.decode('utf-8'))


4. Sublime Text 2 에디터를 재구동한다.
5. XML 파일을 열고 전체선택한 뒤 단축키(ctrl+shift+x)로 포멧팅을 수행한다.

6. 참고 URL
   https://gist.github.com/1138554
   http://lab.artlung.com/ancient-tidy-tutorial/

Posted by kimgisa.net
2011.07.31 17:52


안드로이드 폰 화면을 프레젠테이션할 때 유용한 도구가 있어 소개한다.



Android Screen Monitor

 Android Screen Monitor(ASM) 는 안드로이드 기기나 에뮬레이터 상의 화면을 모니터링할 수 있는 도구이다.
 
 화면을 실시간으로 모니터링 할 수 있고, 방향(가로, 세로)를 바꾸거나 PNG 파일로 저장하는 기능을 제공한다.

  • 준비물
    JDK 5 or 6
    Android SDK 1.5/1.6/2.0 SDK
  • 설치방법
    1. JDK 설치, bin 디렉토리를 path로 설정
    2. Android SDK 설치, tools, platform-tools 디렉토리를 path로 설정
    3. Android Screen Monitor 다운로드


  • 사용방법
    1. USB 디버깅 모드를 켠다.
       설정 > 어플리케이션 > 개발 > USB 디버깅 체크(각 기기에 맞는 USB 드라이버는 설치되어 있어야 함)



    2. 콘솔에서 java -jar asm.jar 를 실행한다.


    3. 기기를 선택한다.




    4. 모니터링이 실행된다.
       모니터링 화면에서 우클릭하면 부가 기능을 사용할 수 있다 (화면전환, 이미지 저장 등)


Posted by kimgisa.net
2011.03.18 16:23
> UML의 확장메커니즘 - 스테레오타입

  UML에서는 3가지 확장메커니즘 - tagged value, stereo types, constraints - 을 제공하고 있는데, 그 중 하나가 스테레오타입이다. 스테레오타입은 이중꺽쇄(« »)로 나타내며 모델링 요소에 스테레오타입이 표시되면 모델링 요소는 그 의미가 확장된다.

 예) 클래스 표기법에 «interface» 를 표시하여 인터페이스를 나타낸다.

> 클래스와 객체간의 관계 - «instantiate»

  클래스와 객체간의 관계는 «instantiate» 스테레오 타입을 사용한 의존관계로 나타낸다. 클래스의 변화가 객체에 영향을 미치므로 화살표 방향은 클래스를 가리키게 된다.

 
Posted by kimgisa.net
2011.03.18 16:04

  의존관계(dependency)는 공급자(supplier)와 클라이언트(client)간의 관계로 공급자의 변경이 클라이언트에 영향을 미치는 경우 사용된다. UML로 의존관계를 나타내는 방법은 점선으로 두 요소를 이은 뒤 공급자(supply)쪽에 화살표를 표시한다.

The UML Reference Manual [Rumbaugh 1]에서는 의존관계를 다음과 같이 정의하고 있다.

A relationship between two elements in which a change to one element (the supplier) may affect or supply information needed by the other element (the client).






Posted by kimgisa.net
2010.05.08 11:07
Maven을 통해 build를 하다보면 가끔 자바 버전의 하위호환성 문제로 인해 build가 되지 않을 때가 있다.

> 에러내용
  에러내용중에 Java 버전과 관련된 내용이 포함되어 있음을 발견할 수 있다.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.000s
[INFO] Finished at: Sat May 08 11:06:22 KST 2010
[INFO] Final Memory: 3M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project HibernateEntity: Compilation failure: Compilation failure:
D:\workspace\HibernateEntity\src\main\java\kr\nextree\nexbay\domain\entity\User.java:[15,1] annotations are not supported in -source 1.3
(use -source 5 or higher to enable annotations)

@Entity


> 해결방법
  pom.xml에 다음과 같이 maven compile plug-in을 선언하고 java 버전을 세팅해준다.

  <build>
    <plugins>
   <plugin>
     <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
  </configuration>
      </plugin>
 </plugins>
  </build>




Posted by kimgisa.net
2010.05.05 00:25
지난 주초에는 제법 쌀쌀한 날씨에 '이게 무슨 봄이냐' 하며 투덜되었었는데,
며칠새 날씨가 많이 풀렸네요. 짧은 거리를 걸어다녀도 땀도 나고...

머 딱히 포스팅함에 있어 주제가 있는 것은 아니고, 
오랜만에 그냥 요즘 근황을 적고자 이렇게 자판을 두드립니다.


봄날의 연인 그리고...

 아침에 숙소에서 나오면서 회사 차장님을 만나 함께 출근을 했는데요. 포근한 날씨에 제가 한숨을 쉬며, '내 생에 봄날은 올까요?' 하며 넉두리를 내 뱉었었는데... 아니나 다를까 세상의 봄날은 이미 와있더군요. 
 지금 근무하고 있는 본사의 건물은 1호선 전철 플랫폼이 보이는 곳에 위치하고 있는데요. 오늘 낮에 못볼 것을 보고야 말았습니다. 벌건 내낮에 연인이 고개를 마주하며 있었던 거죠. 그것도 사람들이 오고가는 전철 플랫폼에서 ...마음도 싱숭생숭하고 봄날의 내청춘이야~ 하면서 깊은 한숨을 쉬었습니다...(연인분들.. 때와 장소는 가립시다)

공식자리에서의 첫 강의

 이번 한주는 이웃 건물에서 진행되고 있는 교육과정을 맡아 강의를 하고 있는데요.총 12시간을 4시간씩 3일간 진행합니다. 생각하는 내용, 알고 있는 내용을 정리해서 다른사람에게 전달하는 일이 얼마나 어려운 일인지 느끼고 있습니다.
 강의를 통해 다양한 경험을 가진 분들의 의견을 듣고 배우고 느끼며, 제가 준비해간 부분을 모두 쏟아내고 나니 어느덧 4시간이 훌쩍 지나가더군요. 하루 4시간 강의를 처음에는 어떻게 진행할까~ 막막하기도 했는데요. 수업내내 집중하여 열심히 참여해 주시는 분들을 보면 더욱 힘이 나고, 그게 또 보람인 것 같습니다.
 오늘로 2일차 강의를 마쳤습니다. 이제 남은 목요일 4시간만 소화하면 강의는 끝이납니다. 마지막 남은 4시간 강의를 위해 내일 하루도 열심히 준비해봐야 겠습니다. 

일신일신 우일신

 몸담고 있는 회사의 부사장님께서 늘 하시는 말씀이 있습니다. '엔지니어에게 모든 경험은 선하다. 단 그 경험을 받아들이는 사람에게만'. 제가 아직 많은 경험이 있는 편은 아니지만, 지난 세월동안 겪었던 삽질의 경험들이 요즘에 본사에 돌아와서 많은 분들과 의견을 나누고, 책을 보며 정리할 때 확실이 깨달음으로 오는 것 같습니다. 
 지금 하는일이 비록 하찮게 느껴지더라도 나태해지지 말고, 지금 하는일이 너무 쉽더라도 자만하지 않으며, 지금 하는 일이 너무 어려워도 좌절하지 않은 지혜가 필요한 것 같습니다. 모든 경험은 선하니까요. 날마다 새로워지는 그런 삶...을 위해서요.

끝.
Posted by kimgisa.net
2010.05.04 00:14
Maven은 의존하여 사용하고 있는 라이브러리의 성격에 따라 사용범위를 지정할 수 있다.
JUnit과 같은 라이브러리는 테스트에만 사용하며 배포시에는 필요하지 않다.

 라이브러시 사용범위에 따른 5가지 Scope의 의미
Scope  적용범위
compile  scope를 지정하지 않은 경우 기본범위.
 컴파일할 때도 사용되고, 배포할  때도 포함되어야 하는 라이브러리 
provided   컴파일 시점에는 필요하지만, 배포할 때는 포함되지 않는 라이브러리.
 예를 들어, servlet.jar는 서블릿컨테이너에서 제공되므로 컴파일시에는 필요하지만 배포될 필요는 없음 
runtime  컴파일 시에는 사용되지 않지만 실행시에는 필요한 라이브러리 
test  테스트 컴파일 및 테스트 실행 시에만 사용되는 라이브러리
 예를들어, JUnit은 테스트시에만 필요함
system  provided와 유사하나, jar파일을 저장소(repository)에서 검색하지 않음. 즉 jar파일을 직접 제공해 주어야 함  


Posted by kimgisa.net
2010.04.19 00:25

최근 너무나 나태해진 자신을 발견했다. 그리고 어느순간 부터 싹트기 시작한
부정의 씨앗들이 어느덧 숲을 이뤄 나의 사고를 통제하고 나섰다.

스스로 만든 덫

언제부터일까? 왜일까?
돌이켜 생각해보면 이유있는 반항이었고, 이유있는 행동들이었지만
이런 것들이 모이고 모여 내가 추구해왔던 자아상은 그 모습을 잃어가고 있었고, 
그러한 사실을 오늘에서야 자각하게 되었다.

내 삶의 이유, 행복

지금 나는 꿈을 향해 달려왔고, 그곳에서 행복을 발견해 나가고 있다.
행복은 목적지가 아니며, 목표를 향해 달려가는 도중에 얻어지는 산물이다.
긍정의 생각을 하리라. 그리고 실천하리라...

내일을 위해...

Posted by kimgisa.net
2010.02.25 14:41

비즈니스의 주요 개념에는 자원, 프로세스, 목표, 규칙등이 있다.
아래 다이어그램은 기본적인 비즈니스 개념들과 그들간의 관계를 나타낸 메타모델이다.

A basic meta-model of business modeling concepts
(원본 : 'Willey - Business Modeling With UML'의 Chapter 3 참조)

Posted by kimgisa.net

티스토리 툴바