posted by 지니우스 2017. 5. 23. 23:30

> npm이란?

npm은 Node.js의 모듈을 관리하는 패키지 관리자다. 기본적으로 Node.js의 모듈을 설치하는 목적으로 사용된다. 그리고 Node.js로 만든 애플리케이션을 설치할 수도 있다.


> npm install 로 모듈 설치

그러면 npm의 기본적인 사용법을 알아보자. 모듈을 설치할 때에는 'npm install'을 사용한다. 커맨드 라인 창에서 다음과 같이 명령어를 입력한다.


[서식] npm으로 모듈 설치

$ npm install (모듈 이름)


예를 들면, 웹사이트로부터 파일이나 데이터를 내려받을 때에는 request 모듈을 많이 사용한다. request 모듈을 설치하기 위해서는 다음과 같이 입력하면 된다.


$ npm install request


그러면 다음과 같은 화면을 볼 수 있다.


▲ npm 실행 화면


위 화면에서 볼 수 있듯이 npm install을 실행하면 그 모듈에서 사용하는 다른 모듈(즉, 의존 모듈)도 같이 설치된다. 따라서 request 모듈을 사용하기 위해 mime-types 모듈과 form-data 모듈을 따로 설치하지 않아도 된다. 이것은 npm을 이용할 때의 커다란 장점으로 매우 편리한 기능이다.


- 모듈이 설치되는 경로

그러나 주의해야 할 점이 있다. 기본적으로 'npm install'로 모듈을 설치하면 이 명령을 실행한 현재 디렉터리에 모듈이 다운로드된다. 정확하게는 현재 디렉터리에 node_modules라는 디렉터리가 만들어지고, 그 안에 모듈이 다운로드된다.


그래서 한 번 모듈을 설치했어도 다른 디렉터리에 배치된 프로젝트에서는 그 모듈에 접근할 수 없다. 여기서 잠시 정리해 보자. 다음과 같은 디렉터리 구성으로 두 개의 프로그램이 있다고 하자.


+ <root>

|---+ <ProjectA>

|    |---+ <node_modules>

|    |--- program-a.js

|

|---+ <ProjectB>

|    |--- program-b.js 


<Project A>의 program-a.js에서 request 모듈을 사용하기 위해 Project A의 디렉터리에서 npm install request를 실행했다고 하자. 그러면 program-a.js에서는 request 모듈을 사용할 수 있게 된다. 그러나 Project B의 program-b.js에서는 request 모듈을 발견할 수 없으므로 Project B의 디렉터리에서 다시 request 모듈을 설치해야 하는 것이다.


- 글로벌 설치 -g

그러나 자주 사용되는 모듈을 매번 설치하는 것은 성가신 일이다. 모든 프로젝트 및 폴더에서 사용하고 싶다면 모듈을 설치할 때 -g 옵션을 붙인다. 그러면 글로벌한 경로에 모듈이 설치된다.


# 모듈을 글로벌하게 설치

$ npm install -g (모듈 이름)


-g 옵션을 붙여서 설치하는 것을 글로벌 설치라고 하고, 그렇지 않은 경우를 로컬 설치라고 한다. 글로벌 설치를 할 때의 주의점은 대부분의 환경에서 관리자 권한이 필요하다는 점이다. CentOS나 Mac OS X에서는 명령어 앞에 sudo를 붙여서 관리자 권한으로 명령을 실행할 수 있다.


# 관리자 권한으로 글로벌 설치

$ sudo npm install -g (모듈 이름)


sudo로 명령어를 실행하면 패스워드를 물어 보는데 이때 관리자 패스워드를 입력하도록 한다.

올바른 패스워드로 관리자 권한이 확인되면 관리자 권한으로 명령어가 실행된다.


- 글로벌 설치 시 PATH에 주의

npm을 통해 모듈을 글로벌하게 설치하면 CentOS5에서는 /usr/lib/node_modules에 설치된다. Mac OS X에 Homebrew로 설치한 경우에는 /usr/local/lib/node_modules에 설치된다. 어디에 모듈이 설치되는지는 다음 명령어로 확인할 수 있다.


# 글로벌 설치 경로 확인

$ npm root -g


그런데 npm으로 글로벌하게 설치한 모듈을 Node.js가 찾을 수 없다며 다음과 같은 에러 메시지가 표시되는 경우가 있다.


Error: Cannot find module '(모듈 이름)'


이것은 해당 모듈을 아직 설치하지 않았거나 Node.js에서 npm으로 글로벌하게 설치한 모듈을 찾을 수 없을 때 발생하는 에러 메시지다. 그렇다면 Node.js가 모듈을 찾을 때 어떤 경로를 검색할까? 다음 명령어를 통해 확인할 수 있다.


$ node -e "console.log(global.module.paths)"


CentOS에서는 다음과 같이 나타난다.


[ '/home/nodejs/node_modules',

  '/home/node_modules',

  '/node_modules' ]


잘 보면 현재 작업 디렉터리의 node_modules 폴더, 그리고 그 상위 폴더의 node_modules폴더, 다시 그 상위 폴더의 node_modules 폴더 .. 이러한 순으로 차례대로 모듈을 검색하는 것을 알 수 있다. 이와 별개로 Node.js는 환경 변수 NODE_PATH에 저장된 경로도 검색한다.


결론적으로, npm의 글로벌 모듈 설치 경로를 환경 변수 NODE_PATH에 등록하면 Node.js에서 모듈을 찾을 수 있게 된다.


다음은 가상 머신의 CentOS에서 'npm root -g'를 실행한 결과다.


$ npm root -g

/home/nodejs/.nvm/versions/node/v0.12.4/lib/node_modules


리눅스(CentOS)나 Mac OS X에서 환경 변수 값을 등록하려면 사용자의 홈 디렉터리에 있는 '~/.bash_profile'(가상 머신 환경에서는 '/home/nodejs/.bash_profile')을 편집한다. 다음과 같이 NODE_PATH에 npm의 글로벌 설치 경로를 지정한다.


# 환경 변수 NODE_PATH 설정

export NODE_PATH=/home/nodejs/.nvm/versions/node/v0.12.4/lib/node_modules



출처: 자바스크립트와  Node.js를 이용한 웹 크롤링 테크닉

posted by 지니우스 2017. 5. 23. 22:50

자바스크립트 엔진인 Node.js를 설치하자. 

Node.js는 버전에 따라 동작이 다르다. 그래서 nvm이라는 도구를 사용해서 특정 버전의 Node.js를 설치할 것이다.

먼저, 다음과 같은 명령어를 통해 nvm을 설치한다.


$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.3/install.sh | bash


설치 후 셸의 재시작을 위해 'logout' 명령어를 이용하여 로그아웃하였다가 재접속하여 다시 로그인한다. 이어 Node.js 0.12.4를 설치한다.


$ nvm install v0.12.4

$ nvm alias default v0.12.4


제대로 설치되었는지 확인해 보자. 'node -v' 명령어로 설치된 Node.js의 버전 정보를 확인할 수 있다. 다음과 비슷하게 표시되면 성공한 것이다.


$ node -v

v0.12.4


Node.js에는 REPL(Read-Eval-Print-Loop)이라 불리는 대화 환경이 준비되어 있다. 터미널에서 인자 없이 node 명령어를 실행하면 REPL이 시작된다. 여기서 3 + 5라 입력하고, 엔터를 눌러보자. 8이라는 결과가 표시될 것이다.


$ node

> 3 + 5

8


그런데 nvm을 사용해서 Node.js를 설치한 경우에는 sudo 명령어와 함께 npm이나 node 명령어를 사용할 수 있다. 이를 위해 sudo 명령을 실행할 때의 패스(PATH: 프로그램이나 명령을 찾는 기본 경로를 담고 있는 환경 변수)를 일반 사용자의 패스와 같게 해야 한다. 먼저, '.exit'를 입력하여  REPL 환경을 종료하고 다음과 같이 visudo 명령어를 실행하도록 한다.


$ sudo visudo


많은 설정 항목이 있는데 env_keep을 설정한 행을 찾아서 주석 표시 '#'을 없애도록 한다. 그런데 visudo를 실행하면 vi 에디터가 실행된다. vi 에디터는 명령 모드와 문자를 입력할 수 있는 입력 모드를 바꿔가면서 편집을 수행한다. vi를 실행하면 명령 모드로 시작된다. i 키를 눌러 입력 모드로 변환하여 편집을 수행하고, 편집이 끝나면 esc 키를 눌러 명령 모드로 돌아가도록 한다.


### 첫 번째 수정(env_reset을 무효화)

Defaults env_reset

         ↓

Defaults !env_reset


### 두 번째 수정(HOME을 추가)

#Defaults env_keep += "HOME"

         ↓

Defaults env_keep += "HOME"

### 세 번째 수정(sudo 명령어 실행 시 사용할 패스를 덮어쓰지 않도록 주석 처리한다)
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

         ↓

#Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin


명령 모드에서 :wq 키를 누르면 저장 후 vi가 종료된다. 한 번 로그아웃하고 다시 로그인하면 설정이 반영된다.




[덤] git 설치


$ sudo yum install git



출처: 자바스크립트와  Node.js를 이용한 웹 크롤링 테크닉

posted by 지니우스 2017. 5. 22. 15:17

출처: http://blog.naver.com/aonezip/220846868749


Bash Shell도 충분히 멋지지만, Zsh를 이용하면 git를 터미널로 사용할 때 여러모로 편리하다. 또한 몇몇 기능은 나 같은 귀찮니즘이 많은 골수 윈도우 유저에게 많은 도움이 준다. 그럼으로 처음 리눅스를 설치하면, Bash에서 Zsh로 변경해서 사용하자. CentOS, Ubuntu에서 잘 작동한다.

현재 사용 Shell 확인

echo $SHELL

설치된 Shell 목록

cat /etc/shells

Zsh 설치

Ubuntu : sudo apt-get install zsh CentOS : sudo yum -y install zsh

shell 변경

Ubuntu : chsh -s /usr/bin/zsh CentOS : chsh -s /bin/zsh


터미널 접속을 끊고 다시 접속하면, Zsh로 된다. 접속하면 아래와 같은 문구가 나오는데, 0이나 혹은 2번을 선택하여 ./zshrc가 생성되도록 한후, Oh my Zsh설치하면 된다.

This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~). This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q) Quit and do nothing. The function will be run again next time.

(0) Exit, creating the file ~/.zshrc containing just a comment.
That will prevent this function being run again.

(1) Continue to the main menu.

(2) Populate your ~/.zshrc with the configuration recommended
by the system administrator and exit (you will need to edit
the file by hand, if so desired).


Oh my Zsh 설치

via curl sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" via wget sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"


테마 agnoster로 변경

vi ~\.zshrc ZSH_THEME="robbyrussell" 를 ZSH_THEME="agnoster" 로 변경

이후 터미널을 다시 접속하면 적용된다. 그럼 다음과 같이 Zsh가 작동하는 걸 볼 수 있다.


Note! 만약 설치가 안되면, 아래 사이트에서 변경된 점이 있나 확인하자.

zsh : http://www.zsh.org/
on my zsh gitHub : https://github.com/robbyrussell/oh-my-zsh


posted by 지니우스 2017. 5. 17. 14:20

sudo 입력시 아래와 같은 메시지가 나온다면

 

[username] is not in the sudoers file. This incident will be reported.



/etc/sudoers 파일에 아래와 같이 추가하면 된다. (su 권한 필요)


[username]  ALL=(ALL)       NOPASSWD:ALL


posted by 지니우스 2017. 4. 21. 11:15

CentOS 6.5 기준

zip(unzip) 이 디폴트로 설치되어있지 않은 듯 하다.

아래와 같이 설치해주고 unzip 을 사용하도록 하자.


[설치]

su -

yum install zip

yum install unzip


[사용]

unzip spring-xd-1.3.2.RELEASE-dist.zip



posted by 지니우스 2017. 4. 21. 11:11

jdk 7 버전 이상부터 wget <URL> 과 같이 단순 명령어로는 다운이 되지 않는다. 

아래와 같이 쿠키 옵션을 주어야 함.


wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz



자세한 내용은 아래의 친절한 블로그 내용 참고


posted by 지니우스 2017. 4. 18. 16:38

netcat-win32-1.11.zip




열려있는 모든 port 확인


netstat -anp




LISTEN 중인 포트 표시


netstat -anp | grep LISTEN



특정 host의 특정 port가 열려 있는지 확인 (netcat = nc)


nc -z hostaddress port

ex) nc -z www.google.com 80

result ex) Connection to www.google.com 80 port [tcp/http] succeded!



특정 host의 port 범위 지정 open port 확인


nc hostaddress -z startPort-endPort

ex) nc 10.20.30.40 -z 19-23

result ex) Connection to 10.20.30.40 21 port [tcp/ftp] succeded!

Connection to 10.20.30.40 22 port [tcp/ssh] succeded!

Connection to 10.20.30.40 23 port [tcp/telnet] succeded!



특정 port를 외부에서 접속할 수 있도록 open!


iptables -I INPUT -p tcp --dport 12345 -j ACCEPT



I : 새로운 규칙을 추가

p : 패킷의 프로토콜을 명시

j : 규칙에 해당되는 패킷을 어떻게 처리할 것인지를 정함


이 명령은 외부에서 들어오는 (INBOUND) TCP port 12345의 연결을 받아들인다는 규칙을 방화벽 1번 방화벽 규칙으로 추가한다는 의미이다.



추가한 port 설정 조회


iptables -L -v




L : 규칙을 출력

v : 자세히



추가한 port 설정 삭제


규칙번호로 삭제

iptables -D INPUT 1


추가한 규칙으로 삭제

iptables -D INPUT -p tcp --dport 12345 -j ACCEPT



D : 규칙을 삭제






출처: http://loonyhyun.tistory.com/14 [Like to LoonyHyun's Life]

posted by 지니우스 2013. 12. 16. 09:45

출처: http://blog.naver.com/sujioq/30097313110



zcat adminpoc.log.2010-10-29-* | grep 0000015839
bzcat aomSvr11.out-20111212.bz2  | grep -c "tokenAct   :   N"


posted by 지니우스 2013. 12. 3. 11:40

참고: http://www.inet.co.kr/faq/stories.php?story=07/09/03/8092951


* 리눅스 버전 확인
uname -a
cat /proc/version 


* 레드햇 리눅스 배포본 확인
cat /etc/redhat-release


* 메모리 보기( /proc 파티션은 램에 있는 내용이다)
cat /proc/meminfo


* cpu 정보 보기
cat /proc/cpuinfo

* 하드 디스크 정보(scsi)
cat /proc/scsi/scsi

* 하드 디스크 정보(ide일 경우(모델보기))
cat /proc/ide/hda/model (첫번째 하드 hda인경우)
/proc/ide/ 아래에는 하드가 몇개인지 확인 가능하고
/proc/ide/hda/ 아래에는 그 하드에 대한 여러 정보가 보인다.

만약 raid를 사용한다면 cat /proc/mdstat 로 상태를
확인한다.

* 네트워크에 대한 정보
cat /proc/net/netlink
 



posted by 지니우스 2013. 9. 5. 16:07

※ 만약 8080 포트를 딴 프로그램에서 선점하고 있다면?

http://localhost:8080/
 이렇게 치면 딴 창이 뜨거나 에러창이 뜰것이다.

1. tomcat 의 포트를 바꿔보자

tomcat의 하위폴더 conf로 이동
C:\apache-tomcat-5.5.26\conf 

server.xml 파일이 보일것이다

사용자 삽입 이미지


에디트 플러스 따위로 열어본다
94번째 라인에 보면 Connector port="8080" 가 적혀있는걸 확인할수있다. 

사용자 삽입 이미지


바꿔줄 포트를 입력한다 . 여기선 80으로 바꿔주겠다
이젠 http://localhost 만 입력해도 80번 포트를 사용할것이다.

그리고 한글과 관련해서 GET 방식으로 전달된 한글을 제대로 처리하기 위해서

 URIEncoding="utf-8" 한줄을 추가해준다

사용자 삽입 이미지


저장하고 나온다.

2. 오라클이 설치되어있고 오라클이 쓰고있는 8080 포트를 ,  tomcat이 쓰고싶다면?

오라클의 HTTPServer이 8080 포트를 선점하고 있다.

오라클의 HTTPServer를 중지하자

시작 → 제어판 → 관리도구 → 서비스  선택  

OracleOraHome92HTTPServer 선택한후 수동에 중지로 바꿔놓는다


사용자 삽입 이미지




참고: http://dandyboys.tistory.com/76