Systems/Unix2014.08.01 09:01

If you are using Ubuntu 14.04, and fed up with the slow speed of compiz (Ubuntu xwindow manager) especially in the virtualized environment, there's a solution. Just boot into the text mode. 


First step is to edit /etc/default/grub as follows: (sudo vi /etc/default/grub)


...

GRUB_CMDLINE_LINUX_DEFAULT="text"

GRUB_CMDLINE_LINUX="quiet splash"

...


After that, do sudo update-grub. Once finished, just reboot. That's it. Now you can boot directly into the simple 'text' mode. 


If you want to start XWindow manager after boot, all you need to do is:


$ sudo service lightdm start


If you want to turn that GUI down, you just need to stop the service. 


$ sudo service lightdm stop


Then, you might see some cursor flickering with no respose: don't panic, just press Ctrl-Alt-F1. Then you will be returned to the original screen that you started the lightdm service. 

저작자 표시 비영리 변경 금지
신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

Languages/Java2008.11.12 15:57

대략적인 작업 순서는 다음과 같다. (이 글은 "까먹기 전에 적어둔다"는 원칙을 지키기 위해 적은 것임을 미리 밝힌다. 그러므로 설명이 좀 덜 자세할 수도 있다. 필요하면 요청하시길...)

SVN 설치

sudo apt-get install subversion

SVN 저장소 생성

편한 곳으로 가서 svnadmin create repository 라고 치면, 그 디렉터리 아래에 repository라는 이름의 Subversion 저장소가 생성된다. 여기에 프로젝트 소스 코드를 등록하면 공유된다. 이 디렉터리 아래에 가면 conf 디렉터리가 있는데, 이 디렉터리에 있는 파일들을 수정하면 접속 가능한 사용자와 그 사용자의 패스워드를 설정할 수가 있다. 다음의 파일을 참고하자.

1. authz파일

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to a
### single user, to a group of users defined in a special [groups]
### section, or to anyone using the '*' wildcard.  Each definition can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').

[groups]
developers=bjlee,ngen

[repository:/]
@developers = rw
* = r

[/]
@developers = rw
* = r

# [/foo/bar]
# harry = rw
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

2. passwd 파일

### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
bjlee=xxx
ngen=yyy

# harry = harryssecret
# sally = sallyssecret

3. svnserve.conf 파일

### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository.  (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)

### Visit http://subversion.tigris.org/ for more information.

[general]
### These options control access to the repository for unauthenticated
### and authenticated users.  Valid values are "write", "read",
### and "none".  The sample settings below are the defaults.
anon-access = read
auth-access = write
### The password-db option controls the location of the password
### database file.  Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control.  Unless you specify a path
### starting with a /, the file's location is relative to the conf
### directory.  If you don't specify an authz-db, no path-based access
### control is done.
### Uncomment the line below to use the default authorization file.
authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa.  The default realm
### is repository's uuid.
# realm = My First Repository

SVN Server 실행

svnserve라는 프로그램을 실행하면 SVN 서버를 외부에서 svn://으로 시작하는 URL로 참조하여 사용할 수가 있다. 아까 생성한 repository 디렉터리로 가서, svnserve -d -r . 이라고 해 주자. -d는 daemon으로 띄우라는 소리이고, -r . 은 바로 여이가 repository 디렉터리란 뜻이다.

Maven2 설치

설치법은 인터넷에 다른 좋은 문서들이 많이 있으니 알아서 찾아보시길. ^^;

Maven2 프로젝트 생성

Maven 프로젝트는 다음과 같이 생성한다.

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app

artifact id는 내 프로젝트의 ID라고 생각하면 된다. 위와 같이 실행하면 다음과 같은 디스크 레이아웃이 만들어지게 된다.

my-app
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- mycompany
    |               `-- app
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java
이제 여기에 소스 코드를 추가해 나가기만 하면 된다. 프로젝트가 여러 가지 다른 jar 파일에 의존하고 있다면, 그 파일에 대한 의존성도 역시 추가해 나가기만 하면 된다. Maven이 좋은 점은, 내 프로젝트가 의존하는 jar 파일을 어떻게 다운 받아서 어떻게 설치할 것인지를 고민하지 않아도, 대부분 알아서 다 해준다는 점이다. 의존성은 pom.xml 파일에 추가한다.

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.5</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>maven-plugins</groupId>
      <artifactId>maven-findbugs-plugin</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>jalopy</groupId>
      <artifactId>jalopy</artifactId>
      <version>1.5rc3</version>
    </dependency>
    <dependency>
      <groupId>com.thoughtworks.xstream</groupId>
      <artifactId>xstream</artifactId>
      <version>1.3</version>
    </dependency>
    <dependency>
      <groupId>org.jmock</groupId>
      <artifactId>jmock-junit4</artifactId>
      <version>2.5.1</version>
    </dependency>
    <dependency>
      <groupId>org.jmock</groupId>
      <artifactId>jmock-legacy</artifactId>
      <version>2.5.1</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.15</version>
    </dependency>
    <dependency>
      <groupId>commons-net</groupId>
      <artifactId>commons-net</artifactId>
      <version>2.0</version>
    </dependency>
    <dependency>
      <groupId>xpp3</groupId>
      <artifactId>xpp3_min</artifactId>
      <version>1.1.4c</version>
    </dependency>
  </dependencies>

필자의 프로젝트는 저렇게 많은 3rd-party 프로젝트들에 의존하고 있다. 의존 대상이 되는 라이브러리의 group id와 artifact id를 적어주고, 버전 정보만 정확하게 적어주면 이 파일들을 어떻게 다운받아 어떻게 설치할 것인지는 Maven이 다 알아해 준다. 그런데 group id와 artifact id 등의 정보는 어떻게 알아내느냐고? www.mvnrepository.com 에 가서 프로젝트 이름으로 검색을 해 보면, 여러분의 POM 파일에 끼워넣어야 할 dependency 태그 코드를 버전 별로 다 알려준다.

그런데 한가지 귀찮은 것은, sun에서 배포하는 jar 파일 중에는 자동 설치가 되지 않는 놈이 있다는 사실이다. 그런 것이 발견될 경우, Maven은 친절하게 "그런 파일은 어떻게 어떻게 처리해 주십사"는 안내 메시지까지 보여준다.[각주:1]

코드를 적절히 작성했다면 컴파일 해 보고 싶을 것이다. mvn compile 하면 컴파일 되고, mvn test 하면 jUnit 테스트 코드가 실행된다.

SVN 서버에 프로젝트 코드 올리기

SVN 서버에 프로젝트 코드를 올리는 것은 간단하다.

svn import <ProjectName> svn://<서버주소>/<프로젝트 이름>

위와 같이 하면 된다. 프로젝트 이름을 URL 위에 꼭 붙여주는 것이 좋은데, 아까 만들었던 repository가 범용 리파지토리, 그러니까 여러가지 프로젝트가 동시에 등록될 수 있는 리파지토리이기 때문이다. 이 이름을 주지 않으면 나중에 프로젝트를 Eclipse를 통해 직접 체크아웃한 다음 빌드하려고 할 때 애로사항이 꽃피게 될 수도 있다. 그러니 반드시 주자. 아이디와 패스워드를 묻거든, authz파일과 passwd 파일에 설정한 대로 입력하자. 그러면 성공적으로 등록될 것이다.

SVN 서버에 올린 프로젝트 다운 받아 빌드하기

Eclipse에서 다운받아 빌드하는 것에는 대략 두 가지 방법이 있다. TortoiseSVN같은 툴을 써서 임의의 디렉터리에 프로젝트 코드를 통째로 checkout한 다음 eclipse 프로젝트로 임포트 해서 빌드하는 방법이 있고, Eclipse 안에서 SVN 연동기능을 사용해 직접 checkout 받아 빌드하는 방법이 있다.

첫 번째 방법을 쓰던 두 번째 방법을 쓰던 방법 자체가 너무 뻔해서 따로 설명하진 않겠다. 다만 Eclips에 Maven 2 플러그인을 설치해야 한다는 것에만 주의하자.

SVN 서버에 올린 프로젝트를 Hudson으로 빌드하기

이게 SVN 서버에 올라간 프로젝트를 Hudson을 통해 CI 할 수 있다. Hudson 설치는 너무 간단한 관계로 따로 설명하지 않겠지만 한가지만 언급하자면, 굳이 Hudson을 다른 웹 서버에 붙여 돌리려고 애쓰지 말기 바란다. 그래봐야 별 차이가 없는데다, standalone으로 돌리는 편이 훨씬 간단하다.

java -jar hudson.war 만 하면 hudson 서버가 실행되기 때문.

이렇게 실행시키고, 실행시킨 서버의 URL의 8080 포트번호로 웹 브라우저를 통해 접속해보면, 허드슨 main 페이지를 보게 된다. 여기에 새로운 죠브를 등록한다.

새로운 죠브를 등록할 때 SVN Repository의 URL을 입력하게 되는데, 여기에는 아까 SVN 서버에 프로젝트 코드를 올릴때 썼던 URL을 주면 된다. svn://<서버주소>/<프로젝트 이름> 이렇게 주면 된다는 것. 그러면 Hudson은 해당 이름의 프로젝트로 등록된 코드들을 쭉 받아서 빌드하게 될 것이다.

한가지 유의할 것은, compile 이외의 maven goal들을 실행하고자 하는 경우에는 Build 섹션의 goals and options 부분에 여러 가지 goal 들을 나열해주어야 한다는 것. 필자는 compile test findbugs:findbugs 를 적어주었다. compile은 컴파일하기 위한 것이고, test는 테스트를 수행하기 위한 것이고, findbugs:findbugs는 findbugs 리포트를 생성하기 위한 것이다. findbugs는 Maven 플러그인 중 한가지로, 이 플러그인을 사용하면 코드에 존재하는 잠재적인 버그를 검사할 수 있다. Maven 프로젝트를 정의할 때 pom.xml에 다음과 같이 적어주면 작동하도록 할 수 있다.

<project>
  [...]
  <reporting>
    <plugins>
      <plugin>
        <groupId>maven-plugins</groupId>
        <artifactId>maven-findbugs-plugin</artifactId>
        <version>1.4</version>
        <configuration>
          <findbugsXmlOutput>true</findbugsXmlOutput>
          <findbugsXmlWithMessages>true</findbugsXmlWithMessages>
          <xmlOutput>true</xmlOutput>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
</project>

이렇게 한 다음에 Hudson의 project configuratiojn 부분에서는 Build Setting 섹션에 가서 Publish Findbugs Analysis Result를 세팅한다. 이렇게 하고 나면 빌드가 끝난 후에 그 결과가 성공이었는지 실패였는지의 여부 이외에도 다양한 정보와 버그 추이를 쉽게 확인할 수 있을 것이다. Publish Findbugs Analysis Result 항목이 보이지 않는 경우에는 Hudson에 findbugs 플러그인이 설치되어 있지 않은 것이므로, 설치해 주어야 한다. (정리해보자면, findbugs를 돌리기 위해서는 Maven 프로젝트에 설정을 해 주어야 하고, Hudson에도 플러그인을 설치해 주어야 하고, 최종적으로 Hudson 프로젝트 설정을 수정해야 하는 셈.) 플러그인 설치는 Hudson 관리 메뉴쪽으로 들어가보면 할 수 있다.

[그림이 업로드가 안되어서 (무슨조환지) 참고할만한 그림은 못올렸습니다. 나중에 시간나면 업데이트..]
  1. Windows 환경에서 Eclipse 위에 Maven 2 플러그인을 돌리고 있는 사용자가 Maven 2 프로젝트를 임포트받아 컴파일하는 경우에는 그런 메시지를 받았을 경우 처리하기가 좀 난감한데, 다음과 같이 처리하면 된다. 우선, 자동 설치가 안되는 파일을 sun의 홈페이지에 가서 다운 받는다. (어디서 다운받아야 하는지는 Maven이 알려준다.) 다운 받은 파일을 C:Document and Settings&lt;자기 사용자 이름&gt;.m2repository 디렉터리의 적절한 위치에 옮긴다. 어느 위치로 옮겨야 하느냐는 역시 Maven이 보여주는 안내메시지를 보면 대략적으로 짐작할 수 있다. 옮긴 뒤에는, 해당 디렉터리 안에 있는 pom 파일명에 포함된 버전 번호와 같은 버전 번호를 갖도록 파일 이름을 적절히 바꾸어 주어야 한다. [본문으로]
신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

  1. 좋은 조합이네요.

    2008.11.12 16:16 신고 [ ADDR : EDIT/ DEL : REPLY ]

Systems/Unix2008.06.14 16:54
Ubuntu 8.04를 설치하고 gcc를 실행하여 c 파일을 컴파일하려고 했을때 위와 같은 오류가 발생하는 경우가 있다. 이 경우, 다음과 같이 해 주면 문제가 해결된다.

sudo apt-get install libc6-dev

참고링크:

http://ubuntuforums.org/showthread.php?t=190193

신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

Systems/Unix2008.01.08 10:27
This article describes the easist way to setup Ubuntu on Windows XP using virtualization software: VMWare Player. 이 문서는 Windows XP 상에 VMWare Player를 사용하여 Ubuntu를 설치하는 방법을 설명합니다. 아마 이 방법이 Windows에 Ubuntu를 설치하는 가장 쉬운 방법일 겁니다.

First, you should download and setup the "VMWare Player". VMWare player can be downloaded at the following link: http://www.vmware.com/products/player/ 위의 링크를 방문하여, 우선 WMWare Player부터 설치하세요.

After download the VMWare player, execute it. Than you can see following window. 설치하고 실행해 보면 다음과 같은 화면이 뜰겁니다.

사용자 삽입 이미지

At this, click "Download" icon. This will lead you to the "Virtual Applicance MarketPlace" (http://www.vmware.com/appliances/). There, enter "Ubuntu" in the "Search Virtual Appliances" form, and press Enter. You can find "Ubuntu 7.10 (Gutsy Gibbon) Desktop - English" from the search Result. Then, just click. You can see the following screen. 그 화면에서 "DOwnload" 아이콘을 클릭하세요. 그러면 "Virtual Appliance MarketPlace"라는 곳으로 이동합니다. 거기 화면을 자세히 보면 "Search Virtual Appliances"라는 폼이 있는데, 거기서 Ubuntu를 입력하고 엔터 키를 눌러보시기 바랍니다. 그러면 검색 결과 중 하나로 "Ubuntu 7.10 (Gutsy Gibbon) Desktop - English"를 보실 수 있을 겁니다. 그 링크를 클릭하시면 다음과 같은 화면으로 이동합니다.

사용자 삽입 이미지

Then, click download. The browser will lead you to the following screen. 이 화면에서 다운로드 링크를 클릭하세요. 화면 오른쪽에 있습니다. 그러면 브라우저 화면이 다음과 같이 바뀔거에요.

사용자 삽입 이미지

You can download the VMWare Image of Ubuntu from there. After downloading has been finished, move it to some convenient place of your Windows XP filesystem, and decompress it. 여기서 VMWare 이미지를 다운받으시면 됩니다. 적당한 곳에 다운받으시고, 입축을 푸세요.

After that, go back to the WMware player, and click "Open". Then you can see following dialog box appears on the screen. 그런 다음 VMWare Player 화면으로 돌아가서 "Open" 아이콘을 클릭합니다. 그러면 다음과 같은 다이얼로그 박스가 화면에 뜹니다.

사용자 삽입 이미지

At the screen, selects the image file (witn .vmx extension) and press "Open" button. By that, you can execute the Ubuntu image that you've just downloaded. 이 화면에서 아까 다운받아 압축 푼 디렉터리로 간 다음에 이미지 파일을 선택하고 (.vmx 확장자를 갖습니다) 열기 버튼을 누르면 됩니다.

If you followed this instruction exactly, the id and password of your Ubuntu image would be "jars/jars". Just login your Ubuntu desktop with the ID and password. That's it. 이 절차를 정확하게 다 따라하셨다면, 설치된 Ubuntu에 로그인 할 수 있습니다. "jars/jars"를 아이디와 패스워드로 사용하시면 됩니다.

If you need another account to login, you can create it after you log in(Systrem->Administration->Users and Groups). If you need a language pack (for example, Korean language pack), you can also download and setup after you log in(System->Administration->Language). One thing to note is that these procedures will prompt you to input password. If you have logged in using "jars/jars", then you should enter "jars" as the password. 일단 로그인 한 다음에는 또다른 계정을 생성할 수도 있고(System->Administration->Users and Groups), 한글화 팩을 다운받아서 설치할 수도 있습니다(System->Administration->Language). 그러면 한글 Ubuntu가 됩니다. X-) 주의할 점은, 그런 작업을 하고자 하면 패스워드를 묻는다는 점인데, 로그인할 때 썼던 패스워드를 입력해 주면 됩니다.

If you have a problem with the network connection, the reason probably is that the network connection type of your virtual Ubuntu is set to "Bridged". You can alter it by clicking the combo box on top of your vmware player screen. 그런데 이렇게 설정해 놓고 나서 Ubuntu에서 네트워크 연결이 잘 안될 수도 있습니다. 그런 경우에는 아래의 그림과 같이, 네트워크 타입을 Bridged에서 NAT로 변경해 주어야 합니다.

사용자 삽입 이미지

You can change the setting to the "NAT" just like the above image. After that, you should change the "network" configuration of your Ubuntu desktop to "DHCP"(System->Administration->Network). This will make your Ubuntu connects to the internet using the same connection with your Windows XP. 그런 다음에는 Ubuntu의 "네트워크" 설정을 "DHCP"로 변경해 주어야 합니다. (시스템->관리->네트워크)

I hope this would be helpful tip :-)
모두에게 도움이 되는 팁이었으면 좋겠네요.


신고
Posted by 이병준

소중한 의견, 감사합니다. ^^