블로그 이미지
윤영식
Full Stacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

2012. 11. 23. 10:00 Middleware, Cloud/Linux

jboss source build를 위하여 ubuntu에 maven을 설치해 보자 


1) maven2 설치 하기

2) maven 설치 와 실행 파일 위치

root@ip-10-146-81-140:/etc/maven2# cd /usr/share/maven2   <-- 설치 위치
root@ip-10-146-81-140:/usr/share/maven2# ls
bin  boot  conf  lib
root@ip-10-146-81-140:/usr/share/maven2# cd /etc/maven2    <-- 환경 파일 저장 위치
root@ip-10-146-81-140:/etc/maven2# ls
m2.conf  settings.xml
root@ip-10-146-81-140:/etc/maven2# ls -alrt /etc/bin/mvn     <-- 실행 파일 symbolic link
ls: cannot access /etc/bin/mvn: No such file or directory
root@ip-10-146-81-140:/etc/maven2# ls -alrt /usr/bin/mvn
-rwxr-xr-x 1 root root 6331 Oct 24  2011 /usr/bin/mvn
root@ip-10-146-81-140:/etc/maven2# cd bin
bash: cd: bin: No such file or directory
root@ip-10-146-81-140:/etc/maven2# cd /usr/share/maven2/bin
root@ip-10-146-81-140:/usr/share/maven2/bin# ls -alrt
total 8
lrwxrwxrwx 1 root root   21 Oct 24  2011 mvnDebug -> ../../../bin/mvnDebug
lrwxrwxrwx 1 root root   16 Oct 24  2011 mvn -> ../../../bin/mvn
lrwxrwxrwx 1 root root   15 Oct 24  2011 m2.conf -> ../conf/m2.conf
drwxr-xr-x 5 root root 4096 Nov 23 00:26 ..
drwxr-xr-x 2 root root 4096 Nov 23 00:26 .
root@ip-10-146-81-140:/usr/share/maven2/bin#


설치하면 현재(2012.11)기준 Maven version 2.2.1 이다. 그러나 최신 버전은 3.0.4 이다 


  - 아파치 메이븐 사이트


Ubuntu에 최신버전을 설치하려면 apt-get으론 안되고 별도의 과정을 거친다.

  - wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.zip

  - 압축을 풀고 환경변수 : export M2_HOME=<install dir path> 그리고 export M2=$M2_HOME/bin

  - PATH 환경변수 : export PATH=$M2:$PATH

  - 버전확인 : mvn -version 

dev@ip-10-146-81-140:~/deploy$ wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.zip

--2012-11-23 00:55:59--  http://apache.mirror.cdnetworks.com/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.zip

Resolving apache.mirror.cdnetworks.com (apache.mirror.cdnetworks.com)... 61.110.198.174

Connecting to apache.mirror.cdnetworks.com (apache.mirror.cdnetworks.com)|61.110.198.174|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 4889768 (4.7M) [application/zip]

Saving to: `apache-maven-3.0.4-bin.zip'


100%[============================================================================>] 4,889,768   1.46M/s   in 3.2s


2012-11-23 00:56:02 (1.46 MB/s) - `apache-maven-3.0.4-bin.zip' saved [4889768/4889768]


dev@ip-10-146-81-140:~/deploy$ ll

total 4784

drwxrwxr-x 2 dev dev    4096 Nov 23 00:55 ./

drwxr-xr-x 7 dev dev    4096 Nov 23 00:53 ../

-rw-rw-r-- 1 dev dev 4889768 Sep  5 07:01 apache-maven-3.0.4-bin.zip

dev@ip-10-146-81-140:~/deploy$ unzip apache-maven-3.0.4-bin.zip

Archive:  apache-maven-3.0.4-bin.zip

   creating: apache-maven-3.0.4/

   creating: apache-maven-3.0.4/boot/

  inflating: apache-maven-3.0.4/boot/plexus-classworlds-2.4.jar

   -- 중략 --

   creating: apache-maven-3.0.4/lib/ext/

  inflating: apache-maven-3.0.4/lib/ext/README.txt

dev@ip-10-146-81-140:~/deploy$vi .bashrc 


<.bashrc 삽입 내역> 

export M2_HOME=/home/dev/deploy/apache-maven-3.0.4

export M2=$M2_HOME/bin

export PATH=$M2:$PATH



dev@ip-10-146-81-140:~$ . .bashrc

dev@ip-10-146-81-140:~$ mvn -version

Apache Maven 3.0.4 (r1232337; 2012-01-17 08:44:56+0000)

Maven home: /home/dev/deploy/apache-maven-3.0.4

Java version: 1.7.0_09, vendor: Oracle Corporation

Java home: /usr/lib/jvm/java-7-oracle/jre

Default locale: en_US, platform encoding: UTF-8

OS name: "linux", version: "3.2.0-31-virtual", arch: "amd64", family: "unix"


posted by 윤영식
2012. 11. 22. 16:19 Middleware, Cloud/OSGi

Virgo v3.5.0 RELEASE 버전의 springframework는 3.0.x 버전 번들이 패키징 되어있다. 3.1.x 버전으로 재패키징을 할 경우 대비하여 Springsource에서 번들링 해놓은 파일을 받아서 virgo_home/repositories/ext/ 밑으로 넣으면 될듯! 아직 미 테스트함 


  - 번들의 개념에 대해서 알자 (하단 요약 참조 사이트)

  - SpringSource에서 운영하는 Bundle Repository

  - Spring 방식으로 Bundle을 만들 수 있는 Spring Dynamic Modules



▶ 번들 개념에 대하여 간단히 이해하고 가자 

  - OSGi Bundle은 모듈화 단위이다. (unit of moduelarization)

  - Bundle 구성 = resources + mainfest file(META-INF/MANIFEST.MF파일에 의존성 jar, 번들 정보) + OSGI-OPT 디렉토리(부가적인 정보)  

  - manifest.mf : 20 가지 헤더 정보를 가짐

    + Export-Package : package + name, 외부노출됨

    + Import-Package : package + name, 사용할 것들

    + Bundle-SymbolicName : unique name

    + Bundle-Name : human-readable name

    + Bundle-Activator : BundleActivator를 상속받아 구현한 것으로 start/stop 관련

    + Bundle-Classpath : embeddied libraries 의 여러 폴더나 파일 classpath 지정

    + Bundle-ManifestVersion : 1 = OSGi release 3, 2 = OSGi release 4

Bundle-Name: spring-core
Bundle-SymbolicName: org.springframework.bundle.spring.core
Bundle-ManifestVersion: 2
Export-Package:org.springframework.core.task;uses:="org.springframework.core,org.springframework.util";version=2.5.1 org.springframework.core.type;uses:=org.springframework.core.annotation;version=2.5.1[...]
Import-Package:org.apache.commons.logging,edu.emory.mathcs.backport.java.util.concurrent;resolution:=optional[...]



▶ bnd 툴 사용하기 

  - http://www.aqute.biz/Bnd/Bnd  사이트에서 다운로드

  - 하기와 같이 수행하면 manifest 정보가 출력됨 

java -jar bnd.jar print c3p0-0.9.1.2.jar

[MANIFEST c3p0-0.9.1.2.jar]
Ant-Version Apache Ant 1.7.0
Created-By 1.5.0_07-87 (&quot;Apple Computer, Inc.&quot;)
Extension-Name com.mchange.v2.c3p0
Implementation-Vendor Machinery For Change, Inc.
Implementation-Vendor-Id com.mchange
Implementation-Version 0.9.1.2
Manifest-Version 1.0
Specification-Vendor Machinery For Change, Inc.
Specification-Version 1.0


  - 또는 OSGify 로 manifest를 수정하여 준다 (detail)

java -jar bnd.jar wrap c3p0-0.9.1.2.jar


번들 툴을 사용해 보자 

posted by 윤영식
2012. 11. 22. 11:11 Git, GitHub

diff는 commits 된 것들 사이에서 차이를 보기위한 방법이다. (참조

어디에서 수행할 수 있는가?

  • workspace 입장 (Working Directory)
    • git diff : "workspace" <- "index"
    • git diff HEAD or <another branch> : "workspace" <- "local repository"
  • index 입장 (Stage)
    • git diff : "workspace" <- "index"
    • git diff --cached : "index" <- "local repository"
  • local repository 입장
    • git diff HEAD  or <another branch>  : "workspace" <- "local repository"
    • git diff <commit 1> <commit 2> : "local repository" commit 1 -> commit 2
    • git diff --cached : "index" <- "local repository" 


위 내용에 대한 정리를 보자. 

> local repository 내부 비교 : git diff <commit> <commit>  예) git diff da985 b325c
> local repository와 index 비교 : git diff --cached
> local repository 특정 branch와 workspace 비교 : git diff HEAD 또는 git diff maint

> index와 workspace 비교 : git diff



posted by 윤영식
2012. 11. 21. 15:12 Languages/Java

Java란 무엇인가? 그 본질은 무엇인가라는 궁금증에 대하여 심도있고, 상세한 설명과 함께 쓰여진 블로깅이 있어서 링크한다. 엑셈의 WAS성능 관리 솔루션을 만드는 분이 아닐까 추측을 해본다. 


[JVM Internal]Java Performance Fundamental 교재를 공유합니다.

  - JVM = Runtime Data Area + Execution Engine + ClassLoader + Garbage Collection + Native Code (JVM 위키피디아)

  - Runtime Data Area = Java Stack(Frame Data = Operand Stack + Local Variable) + Method Area + Method Area

    + istore : Operand Stack -> Local Variable

    + iload : Local Variable -> Operand Stack

  - ClassLoader = Bootstrap (rt.jar) + Extension (jdk/ext directory) + System ClassLoader (application)

  - ClassLoader Work = Loading -> Linking -> Initializing

  - Execution Engine : byte code를 interpreting 하여 수행

    + JIT (Just In Time) Compiler : 많이 수행되는 것 일부를 Native Code로 Compile 하여 수행

    + HotSpot Compiler = Client or Server Compiler

      + Profile을 이용하여  Native Code Compiler 코드를 결정

      + Native -> Interpet로 돌아갈 수도 있음



> JVM 과 JavaScript Engine의 차이


posted by 윤영식
2012. 11. 21. 11:33 Lean Agile Culture/Lean Startup

시장 조사를 통하여 모바일 서비스에서 주고자 하는 가치를 찾거나, 가치를 발견하는 것은 기획자가 초기단계에 수행해야 하는 일이다. 검색을 통하여 정적 데이터들을 획득하여 정리 할 수 있지만, 실제 답변을 원하는 항목에 대한 설문 조사(Survey) 또는 투표(Poll)를 쉽게 할 수 있다면  살아있는 데이터를 가지고 분석을 할 수 있으리라 본다. 역시 가치가 의미있으려면 시장(마켓)의 추측이 아닌 사실(팩트)가 중요하다. 사용해 볼만한 onDemand 서비스를 알아보자 


  - http://polldaddy.com  

    + Poll(투표) 사용 예

    + 상세 설명 블로그

  - https://ko.surveymonkey.com 

    + 서베이 몽키 설명


니츠마켓을 만들기 위한 시장 조사(Survey)나, 프로젝트 관리에서 의견 취합용 투표(Poll)등을 적극 사용해 보자. 역시 필요한 것은 서비스로 나오는 세상이다.

posted by 윤영식