'2011/01'에 해당되는 글 3

  1. 2011.01.26 find 와 grep
  2. 2011.01.25 오픈 소스 소프트웨어 라이센스 가이드
  3. 2011.01.04 Thrift (1)

find 와 grep

grep 과 find 조합해서 특정 문자가 들어간 파일 찾기

-i 는 대소문자 구분 없이.
-n 는 라인수 -H 는 파일 이름
$ find ./ -name '*.log' -exec grep -H -n -i 'check' {} \;
find 로 찾은 파일들이 {} 에 들어가고, -exec 로 grep 을 실행해서 문자열이 포함된 걸 검사.
find 의 여러 옵션을 사용해서 원하는 파일의 범위를 좁힐 수 있다. 

copy example

find ./ -type f \( -name 'aa*' -o -name 'bb*' \) -exec cp {} text \;

 


모든 파일 에서 grep 하기
$ grep -n 'hello' *
$ grep -r -n 'hello' * ( 하위디렉토리까지 검사)
$ find ./ * -exec grep -n -H 'mapred.task.id' {} \;
(어쨋든 find 와 결합한다면...-H 는 파일명 보이기)

RegExp 를 사용해서 검색 가능.
Examples

$ grep '^n' *

n으로 시작하는 모든 행을 출력한다.


$ grep '4$' file

(4로 끝나는 모든 행을 출력한다.)

$ grep -rni  '\.5' *

.5가 나오는 모든 행을 출력한다.
 

$ grep -rni  '^[we]' *

(w나 e로 시작하는 모든 행을 출력한다.)

 

$ grep -rni '\<[a-z].*n\>' *
소문자 하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가 포함된 모든 행을 출력한다. 여기서 .*는 공백을 포함한 임의의 문자들을 의미한다.

$ grep -r -n -i 'CREATE.*.EMP' *
CREATE 다음에 여러 다른 문자열이 온 후 EMP가 있는 라인 리턴.




참고



신고

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

find 와 grep  (0) 2011.01.26
DEB package install, remove 하는 방법  (2) 2010.06.22
tar 사용법  (0) 2010.04.26
Ubuntu 부트 메뉴 리스트  (0) 2010.03.15
Ubuntu 에서 Remote Folder 마운트 하기  (0) 2008.12.17
TRACKBACK 0 COMMENT 0

오픈 소스 소프트웨어 라이센스 가이드

KLDP 에 완전 잘 정리 되어 있군요.


내용을 조금 인용하자면,

소스 코드의 공개 여부가 주요 쟁점인데, 

GPL의 경우, GPL 프로그램의 소스코드를 이용자가 개발한 프로그램코드에 삽입하거나 링크시킨 후 함께 배포하고자 하는 경우, 이용자가 개발한 프로그램도 GPL 조건으로 배포해야 한다, 
즉 GPL에 의해 소스 코드 제공해야 함.
 
LGLP 은 GPL보다 조금 완화,
LGPL Library의 일부를 수정하는 경우 수정한 Library를 LGPL에 의해 소스 코드 공개. 
LGPL Library에 응용프로그램을 링크시킬(Static과 Dynamic Linking 모두) 경우 해당 응용프로그램의 소스를 공개할 필요 없음. 

BSD/Apache License 등은 수정하더라도 소스코드를 공개할 의무가 발생하지 않는다.

그런데 GPL 일 경우도 완화된 조건을 제시하는 경우가 있는데, Java 의 경우
두 번째 사례는 GNU Classpath 프로젝트와 자바(Java) 플랫폼사례이다. GNU Classpath 프로젝트는 자바(java)언어의 가상머신(virtual machines) 및 컴파일러에서 사용되는 핵심 클래스라이브러리(core class libraries)를 자유소프트웨어로 대체하기 위한 프로젝트인데, 동 프로젝트의 결과물을 GPL로 배포하면서도 이와 링크된 다른 독립된 소프트웨어는 GPL로 배포할 필요가 없다는 내용의 예외를 인정하였다. 그런데 2006년 말 Sun이 향후 자바 플랫폼을 GPL 조건으로 배포하겠다는 선언을 하면서, 자바 플랫폼 중 특히 Java SE(Java Platform Standard Edition)와 Java EE(Java Platform Enterprise Edition)의 GPL 배포조건에 Classpath 예외를 추가한다고 발표하였다. 그 결과 Classpath 예외조항을 포함한 GPL 조건의 자바 플랫폼을 이용한 응용프로그램도 소스코드를 공개하지 않고 배포할 수 있다.


그런데, 배포라는게 직접적인 배포만 의미하는 것 같다.
예로 든 MYSQL 을 보면, dual license 정책을 적용하여 GPL 과 상용라이센스를 제공한다. 
만약 GPL 을 사용하여 배포한다면 소스코드의 공개 의미가 있지만 웹 사이트에서 서비스만 제공할 경우는 직접 배포하는 것이 아니라서 GPL 의무를 지키지 않아도 된다는 것이다. 
배포라는 의미가 조금 혼란스럽다. 직접적으로 같이 패키징해서 주지 않는다면 배포가 아닌가보다.

그러나 한가지 주지하여야 할 것은 GPL의 의무사항은 소프트웨어를 배포할 때 발생하는 것이므로 만약 MySQL을 다운로드해서 MySQL과 연동되는 웹사이트 등을 만들어서 서비스만 하는 경우는 MySQL을 직접 배포하지 않는 것이므로 GPL의 의무사항이 발생하지 않는다는 것이다. 예를 들어 인터넷 포털 업체들은 MySQL의 상용 버전을 구입하지 않고 GPL 버전을 사용하면서 MySQL이나 관련 소프트웨어의 소스코드를 공개하지 않고 있다.


 

신고

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

MongoDB  (0) 2011.02.13
RailLink 무선랜카드 오류  (0) 2011.02.09
오픈 소스 소프트웨어 라이센스 가이드  (0) 2011.01.25
Thrift  (1) 2011.01.04
Self signed certificate Browser 에 적용하기  (0) 2010.03.25
Ubuntu 에서 apache2에 SSL 설정  (5) 2010.03.18
TRACKBACK 0 COMMENT 0

Thrift

RPC 서버 라이브러리.
RPC Server 와 이 서버에서 제공하는 서비스를 호출하는 Client 에서 사용할 코드를 생성해주는 프레임워크.
RPC 기반이기 때문에 함수 호출 방식으로 원격 서버에서 제공하는 서비스를 호출할 수 있고, 사용자 정의 타입을 사용할 수 있다. 
IDL(Interface Definition Language) 를 thrift 를 사용해서 코드로 생성(stub-client 에서 사용, skeleton-server에서 사용) 하고, 서버는 위에서 생성한 코드와 서버 라이브러리를 이용해서 개발하고, 클라이언트는 위에서 생성한 코드와 클라이언트 라이브러리를 이용해서 개발. 라이브러리는 소켓 서버와 RPC 호출을 위한 serializtion 을 제공.
IDL 파일을 여러 언어(C++, Java, py, php...and so on) 로 변환 가능.

Apache incubator project.
코드 생성기는 C++ 로 만들어짐.
 
thrift 설치 방법 (Ubuntu 10.04 기준)


필요한 library 설치

sudo apt-get install libboost-dev libboost-test1.40-dev libevent-dev automake libtool flex bison pkg-config g++
$ sudo apt-get install python-dev

소스 다운 로드 받아 tar 풀기
$ tar xvf thrift-0.5.0.tar.gz 

install 하기
$ cd thrift-0.5.0/
$ ./configure JAVAC=/usr/lib/jvm/java-6-sun --prefix=/usr/local/thrift
$ make
$ sudo make install
 
PATH 에 thrift bin 추가 하기
PATH 에 /usr/local/thrift/bin 추가하고, 적용
$ vi .profile
수정 한 후
$ source .profile
환경설정은 .profile 보다는 ~/.pam_environment 에 해야 하나 일단 패쓰~

Java library compile
$ cd thrift-0.5.0/
$ cd lib/java
$ ant
하면 libthrift.jar 생성 

그런데, maven repository 에 보면 libthrift artifact 있음.
0.5.0.0 보면 group id 가 hadoop 인데, 그냥 이거 사용해도 괜찮음. 

코드 생성
thrift --gen java hello.thrift
thrift -r --gen java blog.thrift





신고

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

RailLink 무선랜카드 오류  (0) 2011.02.09
오픈 소스 소프트웨어 라이센스 가이드  (0) 2011.01.25
Thrift  (1) 2011.01.04
Self signed certificate Browser 에 적용하기  (0) 2010.03.25
Ubuntu 에서 apache2에 SSL 설정  (5) 2010.03.18
Ubuntu 에서 Apache와 Tomcat 연결하기  (0) 2009.02.27
TRACKBACK 0 COMMENT 1