2010년 4월 22일 목요일

[스크랩] Linux 에서 실행 중인 각 프로세스에 대한 가상 메모리 크기를 표시하기

  문] 실행 중인 각 프로세스에 대한 가상 메모리 크기를 표시하려면 어떻게 해야 합니까?

답] 프로세스당 총 메모리 사용량을 확인하려면 다음을 사용합니다.

# UNIX95= ps -e -o ruser,vsz,pid,ppid,args|sort -rnk2 |more

다음과 같은 형식의 내용이 출력됩니다. #

UNIX95= ps -e -o ruser,vsz,pid,ppid,args|sort -rnk2 |more 
RUSER VSZ PID PPID COMMAND
root 20096 13271 1 /opt/mx/lbin/mxagent 
































항목 설명
ruser 프로세스 소유자
vsz 가상메모리 사용량(셀제 메모리 사용량을 기준으로 한 크기)
pid 프로세스 ID
args 프로세스 작성시 명렬줄 인수


명령줄 옵션

sort -rnk2 = 가장 큰 프로세스부터 내림차순으로 정렬



현재 메모리를 가장 많이 사용하는 상위 프로세스 5개의 사이즈, pid 프로세스 이름 확인 방법



tail 다음의 숫자로 찾고자 하는 프로세스의 개수를 조정



ps -elf | awk '{print $10" "$4" "$16}' | sort -n | tail -5 | sort -rn

ip주소로 컴퓨터의 이름알아보는법

도스창에서 nbtstat -A [ip addresss] 하세요

그럼 컴퓨터 이름이 나오고요.

아니면 ARP , mac address 를 이용하는 방법도 있읍니다.

C:\>nbtstat

C:\>arp

2010년 4월 14일 수요일

젠투 리눅스에서 NAT 설정

젠투 리눅스에서 NAT(Network Address Translation) 을 사용하는 방법입니다.
NAT을 사용하기 위해서는 커널에 MASQUERADE가 활성화 되어있어야 합니다만.. 커널에 기본적으로 모듈로 올라와 있습니다.
- 네트워크 설정
외부, 내부 네트워크 설정을 해줍니다.

ruo91 ~ # nano /etc/conf.d/net
config_eth0="dhcp"
config_eth1="192.168.0.1 netmask 255.255.255.0"

런레벨에 eth0, eth1 인터페이스를 부팅시 자동 시작 하도록 설정 해줍니다.
ruo91 ~ # rc-update add net.eth0 default
ruo91 ~ # rc-update add net.eth1 default

- iptables 설정
트래픽 정책 설정을 해줍니다.
ruo91 ~ # iptables -P INPUT ACCEPT
ruo91 ~ # iptables -P OUTPUT ACCEPT
ruo91 ~ # iptables -P FORWARD DROP

외부와 내부 인터페이스를 지정합니다.
ruo91 ~ # export WAN=eth0
ruo91 ~ # export LAN=eth1

LAN 설정
ruo91 ~ # iptables -I INPUT 1 -i ${LAN} -j ACCEPT
ruo91 ~ # iptables -I INPUT 1 -i lo -j ACCEPT
ruo91 ~ # iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT
ruo91 ~ # iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT

외부에서 SSH 접속 허용
ruo91 ~ # iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

포워딩과 마스커레이드를 설정 합니다.
ruo91 ~ # iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j DROP
ruo91 ~ # iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.255.0 -j ACCEPT
ruo91 ~ # iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.255.0 -j ACCEPT
ruo91 ~ # iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

커널에서 아이피 포워딩을 사용 하도록 설정합니다.
ruo91 ~ # echo 1 > /proc/sys/net/ipv4/ip_forward
ruo91 ~ # for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

iptables 룰을 저장하고 부팅시 자동으로 실행 하도록 런레벨에 등록합니다.
ruo91 ~ # /etc/init.d/iptables save
ruo91 ~ # rc-update add iptables default

sysctl.conf 에 아이피 포워딩 설정을 활성화 해줍니다.
ruo91 ~ # nano /etc/sysctl.conf
#net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1

내부 LAN 인터페이스를 시작 합니다.
ruo91 ~ # /etc/init.d/net.eth1 start
  또는 재부팅 하면 됩니다.
ruo91 ~ # shutdown -r now

속도 측정 해본 결과 만족한 결과가 나오네요!! 역시 젠투인듯.. (-ㅅ-)/

출처 : http://www.cyworld.com/ruo91/3473457

참고
http://www.gentoo.org/doc/en/home-router-howto.xml

Linux Performance Metrics

리눅스의 성능을 모니터링 할려고 검색하니 좋은 자료가 있어서..

http://support.uptimesoftware.com/article.php?id=117#6

http://tael.egloos.com/3669592

http://kldp.org/node/93155

https://www.ibm.com/developerworks/kr/library/au-analyze_aix/

http://blog.daum.net/_blog/BlogView.do?blogid=0Mdzp&articleno=7186366#

http://www.itmoa.co.kr/gzboard.php?code=study&mode=gz_read&Page=&no=797

프로세스 메모리볼때

ps -elf | awk '{print $10" "$4" "$20}' | sort -n | tail -5 | sort -r

(프로세스중에서 메모리 사용량 큰거부터 내림차순으로 정렬 5개) - 확인해봅세~

리눅스는 실행중인 어플리케이션에서 요구하는 메모리를 제외한 대부분의 메모리를 디스크 캐쉬로 활용한다. 이러한 사실을 모르고 있다면, 메모리 현황 조회시 왜 free 메모리가 부족한지를 이해할 수 없을 것이다.
사실은 내가 그랬다. ^^;
Linux 에서는 메모리 사용 현황을 top 명령으로 조회할 수 있으며, 아래는 top 결과 샘플이고 샘플 내의 여러 항목들 중에서 free 와 cached 의 값이 이번 주제에서 중요 항목이다.

top - 09:40:42 up 74 days, 16:47,  3 users,  load average: 0.00, 0.02, 0.08
Tasks: 212 total,   1 running, 210 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.0% us,  0.0% sy,  0.0% ni, 99.9% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:  16630888k total, 16559108k used,    71780k free,   100516k buffers
Swap: 16771776k total,    31920k used, 16739856k free, 16034200k cached

free 메모리가 작지만, cached 메모리는 어플리케이션이 메모리를 필요로 할 때 바로 반환될 수 있으므로 cached 메모리를 실질적으로는 free 메모리로 보아도 무방하다.
따라서 리눅스에서 가용 메모리 계산은 free + buffers + cached 로 할 수 있다.
위의 top 명령 결과로 메모리 용량을 분석해 본다면,
  - 전체 Pyhsical 메모리 : 16630888k total
  - 실질적으로 사용중인 메모리 : 16559108k used - 16034200k cached - 100516k buffers = 424392k
  - 실질적으로 가용한 메모리 : 71780k free + 100516k buffers + 16034200k cached = 16206496k
아래는 free -m 명령으로 조회한 결과이다. (m 옵션으 MB 단위 표시임)

             total       used       free     shared    buffers     cached
Mem:         16241      16188         52          0         98 15669
-/+ buffers/cache:        419      15821
Swap:        16378         31      16347

Mem: 라인에서의 free + buffers + cached 의 값은 -/+ buffers/cache: 라인의 free 값과 비슷하다

[출처] 프로세스 메모리 사용량 볼때|작성자

FFmpeg 설명

 http://blog.naver.com/mrcoram/60095813997

http://kref.naver.com/doc.naver?docid=6688483 USB웹캠을 이용한 임베디드 감시카메라 시스템

http://kin.naver.com/db/detail.php?d1id=1&dir_id=108&eid=lm2IoKCHLZWlBkWhGMKBYX5QZcg2NlNh&qb=UlNTIMD7v+s= RSS적용

http://www.nzeo.com/ 제로보드

http://cafe.naver.com/linuxcare.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=8224 리눅스 캠 녹화 관련.

http://cafe.naver.com/linuxcare.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=9272 5. 웹 감시 카메라 주목.

http://tong.nate.com/ggtong/22772905 Linux와 USB-Camera를 사용한 웹 카메라 개발

http://usr/share/ubuntu-artwork/home/index.htm

`-L' license 보여준다

`-h' 도움말

`-formats' 이용가능한 포맷,코덱,프로토콜 ....

`-f fmt' 포멧을 강제한다.

`-i filename' 입력 파일 이름

`-y' 출력 파일에 덮어쓰기

`-t duration' 레코딩 하는 시간 설정 hh:mm:ss[.xxx] syntax 또한 지원.

`-title string' 타이틀 설정

`-author string' 권한자 설정

`-copyright string' copyright 설정

`-comment string' comment 설정

`-target type' target 파일 타입 명시 ("vcd", "svcd" 또는 "dvd"). 모든 포맷 옵션들(bitrate, codecs, buffer sizes)은 자동적으로 이 옵션에 의해 설정 된다. 단지 ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg이렇게 쳐넣기만 하면 된다

`-hq' 높은 질의 설정들을 활성화

[ Video Options ]

`-b bitrate' video bitrate 설정 (default = 200 kb/s)

`-r fps' frame rate 설정 (default = 25)

`-s size' frame size 설정. WidthxHeight (default 160x128) 다음의 약어들은 정의 되어있다

set frame size. The format is `WxH' (default 160x128). The following abbreviations are recognized:

`sqcif'

128x96

`qcif'

176x144

`cif'

352x288

`4cif'

704x576

`-aspect aspect' 화면 비율 설정(4: 3, 16: 9 or 1.3333, 1.7777)

`-croptop size' 위로 잘리는 band 사이즈 설정(in pixels)

`-cropbottom size' 밑으로 잘리는 band 사이즈 설정 (in pixels)

`-cropleft size' 왼쪽으로 잘리는 band 사이즈 설정 (in pixels)

`-cropright size' 오른쪽으로 잘리는 band 사이즈 설정 (in pixels)

`-vn' 비디오 저장 되지 않게 함

`-bt tolerance' 비디오 bitrate 오차 설정(in kbit/s)

`-maxrate bitrate' 최대 비디오 bitrate 오차 설정(in kbit/s)

`-minrate bitrate' 최소 비디오 bitrate 오차 설정(in kbit/s)

`-bufsize size' 속도조절 buffere 사이즈 설정 (in kbit)

set ratecontrol buffere size (in kbit)

`-vcodec codec' 'codec'에 비디오 코덱 으로 강제 한다. 특별한 값이 있는 카피 사용 그것은 원레의 코덱 데이타가 존재 해야 한다.

`-sameq' 원본과 같은 비디오 질 사용 (포함 VBR)

`-pass n' pass number (1 or 2) 선택. 이것은 두가지 패스 encoding 에 유용하다. 비디오의 통계는 저장되어진다 첫번째 패스에 그리고 정확한 비트 속도가 요구된 비디오는 두번째 패스에 생성 되어진다.

select the pass number (1 or 2). It is useful to do two pass encoding. The statistics of the video are recorded in the first pass and the video at the exact requested bit rate is generated in the second pass.

`-passlogfile file' 두 패스 로그 파일 네임을 파일에 선택

[ Advanced Video Options ]

`-g gop_size' 사진 사이즈 그룹 설정

`-intra' 내부 프레임만 사용

`-qscale q' 고정된 양자화 비율 사용 (VBR)

`-qmin q' 최소 양자화 비율 사용(VBR)

`-qmax q' 최대 양자화 비율 사용(VBR)

`-qdiff q' 양자화 비율 사이의 차이를 최대화 (VBR)

`-qblur blur' 비디오 양자화 비율 흐리게 (VBR)

`-qcomp compression' 비디오 양자화 비율 압축(VBR)

`-rc_init_cplx complexity' 1-pass encoding 를 위한 초기의 복잡함

`-b_qfactor factor' p와 b 프레임 사이의 qp 요인

`-i_qfactor factor' p와 i 프레임 사이의 qp 요인

`-b_qoffset offset' p와 b 프레임 사이의 qp offset

`-i_qoffset offset' p와 b 프레임 사이의 qp offset

`-rc_eq equation' 속도조절 균등화 설정 tex^qComp 가 초기화

`-rc_override override' 구체적인 간격을 위한 override 속도 조절

`-me method' 동작 방법의 method 에 설정. 이용 가능한 메소드는 (from lower to best quality)

set motion estimation method to method. Available methods are (from lower to best quality):

`zero'

Try just the (0, 0) vector.

`phods'

`log'

`x1'

`epzs' (초기 메소드)

`full' 거대한 서치( 느리고 epzs보다 더 많은 마진이 있다)

`-dct_algo algo' dec 알고리즘을 algo에 설정

`-idct_algo algo' idct알고리즘 설정

`-ec bit_mask' bit_mask에 오류 은폐 설정

`-bf frames' B 프레임 사용 (MPEG-1, MPEG-2 and MPEG-4가 지원됨)

`-mbd mode' 매크로 블럭 결정

`-4mv' 매크로블럭에 의한 four motion vector 사용(오직 MPEG-4)

`-part' data partitioning 사용(only MPEG-4)

`-bug param' workaround 는 자동으로 encoder bugs를 검출하지 않는다

`-strict strictness' 얼마나 엄격하게 표준을 따르느냐

`-aic' advanced intra coding 활성화

`-umv' 무제한 모션 백터 활성화

`-deinterlace' 사진을 얽히지 않게 함

`-interlace' encoder 상에서 interlacing 강제 (only MPEG-2 and MPEG-4) 만일 입력파일이 interlaced 됬거나 최소 손실을 위해 interlaced 를 유지하길 원한다면 이옵션 사용. 반대는 deinterlace '-deinterlace'와 함께 입력, 그러나 deinterlacing 는 좀 더 손실이 있다.

force interlacing support in encoder (only MPEG-2 and MPEG-4). Use this option if your input file is interlaced and if you want to keep the interlaced format for minimum losses. The alternative is to deinterlace the input stream with `-deinterlace', but deinterlacing introduces more losses.

`-psnr' 압축된 프레임의 PSNR 측정

`-vstats'  `vstats_HHMMSS.log'에 dump 비디오 코딩 통계

`-vhook module' 비디오 프로세싱 모듈 삽입. 모듈은 모듈이름과 그것의 파리미터 들은 공간으로 분리하여 포함하고 있다

[ Audio Options ]

`-ab bitrate' 오디오 비트속도 설정

`-ar freq' 오디오 샘플링 freq 설정 (초기값=44100 Hz)

`-ab bitrate' 오디오 비트레이트를 in kbit/s 설정 (초기값 -64)

`-ac channels' 오디오 채널의 수를 설정 (초기값 =1)

`-an' 오디오 사용 안함

`-acodec codec' codec에 오디오코덱 입력. 원본 데이타 codec 이 존재하는 특별한 값을 갖는 copy사용.

[ Audio/Video grab options ]

`-vd device' grab 비디오 장치 설정(e.g. `/dev/video0')

`-vc channel' grab 비디오 채널 설정(DV1394 only)

`-tvstd standard' TV 표준 설정(NTSC, PAL (SECAM))

`-dv1394' DV1394 grab 설정

`-ad device' 오디오 장치 설정(e.g. `/dev/dsp')

[ Advanced options ]

`-map file: stream' 맵핑할 입력 스트림 설정

`-debug' 특정 디버그 정보 출력

`-benchmark' 벤치마킹을 위한 타이밍 추가

`-hex' 각 입력 패킷 dump

`-bitexact' 오직 정확한 알고리즘 비트 사용 (for codec testing)

`-ps size' bits로 패킷 사이즈 설정

`-re' 본래의 프레임 속도에 입력. 주로 가상 그랩 디바이스에 사용

`-loop' 입력 스트림을 loop. 일반적으로 이미지 스트림에만 사용. 이옵션은 ffserver 자동 테스팅을 위해 사용되어진다.

[출처] ffmpeg 한글 옵션 설명|작성자 펩스삼촌

 

여기도 참고. http://www.ruliweb.com/ruliboard/read.htm?main=psp&table=etc_psp&db=2&sort=reply&num=2025

Ffmpeg 기본 사용법

 

ffmpeg파일이 있는 폴더에서 아래와 같은 커맨드 명령어를 사용하여 인코딩할수있다.

C:\> ffmpeg -i [인코딩할파일이름] -t 300 -acodec ac3 -ar 48000 -ab 640k -ac 6 -vcodec libx264 -b 3695k -r 24 [저장할파일이름]

ex)ffmpeg -i e:\video\2001.720p.x264.mkv -t 300 -acodec ac3 -ar 48000 -ab 640k -ac 6 -vcodec libx264 -b 3695k -r 24 E:\091217_trans\2001_h264_ac3.mp4

옵션

-i e:\video\2001.720p.x264.mkv – 인코딩할 파일

-t 300 – 동영상 처음부터 시간 300초

-acodec ac3 – 오디오코덱 ac3

-ar 48000 – 샘플링레이드 48.0Khz

-ab 640k – 오디오비트레이트 640k

-ac 6 – 오디오체널 6체널

-vcodec libx264 – 비디오 코덱 h264

-b 3695k – 비트레이트 3695k

-r 24 – 프레임레이트 24

E:\091217_trans\2001_h264_ac3.mp4 – 컨테이너= mp4 ,저장할 파일이름

기타 옵션

-aspect 16:9

화면비율을 16:9로 만든다.

-s 1280x720

해상도를 1280x720으로 만든다. –aspect 옵션과 같이 사용 해야 적당히 맞춰진다. 정확히 1280x720으로 맞춰지지 않는 경우가 많다.

-ss 00:07:30

인코딩시작시간을 00:07:30으로 맞춘다.

-ss 00:07:30

–t 00:05:00

인코딩시작시간을 00:07:30으로 맞추고 그 지점부터 5분을 인코딩한다.(00:07:30 ~ 00:12:30)

-sn

mkv파일을 mkv로 인코딩할 때 필요한 옵션.

-acodec libmp3lame

오디오코덱 mp3 사용

-acodec libfaac

오디오코덱 aac 사용

-acodec ac3

오디오코덱 ac3 사용

-vcodec libx264

비디오코덱 h264 사용

-vcodec mpeg4

비디오코덱 mpeg4

xxxxx.mp4

컨테이너를 mp4로 인코딩한다.

xxxxx.avi

컨테이너를 avi로 인코딩한다.

xxxxx.mkv

컨테이너를 mkv로 인코딩한다.

그 외 옵션도 많이 있으므로 더 정확한 사용을 원하거나 정보가 필요할시에는 ffmpeg홈페이지의 옵션 페이지를 참고한다.

Ffmpeg 옵션 페이지 - http://ffmpeg.org/ffmpeg-doc.html

Ffmpeg 버전별 사용

Ffmpeg은 버전에 따라 코덱의 버전도 다르기 때문에 원활한 재생을 위해 위해서 여러 버전사용

또다른관점의 기능명세

개발을 진행하다 보면 다 같은 기능인데 사용자 , 기획자 , 개발자가 보는 관점이 모두 다르다. 그런데 이 내용은 기획자 중심으로 정리가 되고 최근에는 유저 중심에서 정리가 되다 보니 개발자와의 기획자간의 잡음이 항상 끊이지 않는다.
그래서 이런 형식은 어떨지 생각을 해 보았다.
각 관점별로 기능에 대한 것들을 정리 하고 그것들에 대한 내용들을 적어 보고 그것들을 기획자 및 개발자가 서로 이야기를 해서 합의를 보는 것에 대해서..
아래는 좀 적다만  SAMPLE 제공 ...

프로젝트명

기능 분류 1

기능 분류 2

기능 코드

작성자

GENIUS

Setting 관련

권한 관리

AT_10001

장운봉

1. 사용자 관점

쉽게 하위 관리자들을 추가,권한을 주고 대회를 운영.

A. WCG는 특정인을 고용해서 특정 리그를 대행할 수 있다.

B. WCG는 특정 SP에게 특정 국가들의 대회를 관리하게 할 수 있다.

C. SP는 특정 Referee에게 특정 리그를 관리하게 한다. (Q&A , Appeal , Match 결과 등 )

D. 각 권한을 주는 프로세스는 간단했으면 한다.

E. 사용자는 관리자를 쉽게 신청할 수 있으면 좋겠다. ( 이메일이 아니라 웹을 통해서 )

2. 기획자 관점

쉽고 직관적인 인터페이스를 통해서 사용자가 관리자를 등록 / 승인.

전제 :

WCG = 모든권한 / OP = Operator (WCG가 고용) / SP=파트너 / Admin = Referee, Moderator 로 분리가 되며 이 권한구조는 하이라키 형태를 갖는다.

Referee의 권한 중에 리그 관리를 하는 기능에 있어 Event 및 League를 생성수정 하는 기능외의 리그가 진행 중일 때 관리하는 Match , Appeal , Q&A처리는 그 기능은 데이터 상에서는 명시가 되어 있으나 화면상에서 따로 권한을 부여하지 않는다. ( 예를 들면 A Referee는 Match만 B Referee는 Appeal만 이런 식으로는 관리하지 않는다. 단 , 데이터에서는 관리를 하고 있어 차후에 상세한 권한관리가 더 필요할 경우 이를 적용할 수 있게 한다. )
각 등급에는 필요한 기능들이 모두 명세되어 데이터화 되어 있으며 만약 추가로 더 필요한 예외의 기능들이 있다면 예외 권한 주기를 통하여 예외로 권한을 주는 방식을 택한다.

권한을 주고 나면 그 사람의 Email 로 권한에 대한 처리 결과를 나타내는 이메일이 자동으로 발송 된다. 권한을 막거나 삭제하게 되면 실시간으로 사용자에게 적용된다.

관리자 화면이라 함은 관리자들이 신청 또는 신청된 Tab으로 분리된 형태로 각 권한등급에 따라 WCG , OP , SP는 접근이 가능하고 자신이 관리하는 국가의 신청된 사용자를 볼 수 있으며 , 하위 등급에 대해서는 수정이 가능하나 , 상위 등급에 대해서는 수정이 불가능하고 , Referee는 이 메뉴자체에 접근이 불가능 하다.

자세한 사항은 # 권한 등급별 하이라키 와 # 권한 구조 의 별첨 문서를 참고 한다. 아래에서 관리자 화면이라고 되어 있는 부분은 관리자들을 신청한

A. 관리자 설정화면에서 권한 등급을 OP로 설정하고 [모든 국가의 리그 관리됨 ] ,이미 OP의 권한 등급에는 사용 가능한 기능들이 명세되어 있다. 특정한 리그에 대해서만 권한을 주려면 권한 등급을 Referee를 선택하고 국가와 리그를 선택한다.

B. 관리자 화면에서 권한 등급을 SP로 선택하고 관리하는 국가를 선택한다.
이미 권한 등급 SP에는 SP가 할 수 있는 권한들이 명세되어 그룹화 되어 있다.

C. 관리자 화면에서 SP가 관리하는 국가의 사용자들이 보이고 사용자 아이디를 클릭하면 관리자인지 신청한 사람인지 보이고 신청을 처리하고 나면 이에 권한을 줄 수 있다. 이에 특정 리그를 선택하여 권한을 주도록 한다.

D. 권한 그룹이라는 개념을 통해 미리 각 권한등급에 대한 권한을 데이터에 명세하고 이를 한번에 데이터에 처리 할 수 있도록 준비 한다.

E. GENIUS Main 에서 Register를 통해서 WCGZONE ID 를 입력하고 필요한 권한 등급을 선택하고 관리할 국가를 선택하면 신청이 되고 이를 관리자는 확인하고 이에 대한 권한을 주도록 한다. 대신 의미 없는 사람이 계속해서 신청할 경우가 있는데 이를 막을 방법을 생각해 본다. (IP BAN / 반려할 경우 데이터에서 삭제되고 , History Table로 이동 )

3. 개발자 관점

기능,권한에 대한 유연성 유지 , 복잡한 구조를 단순하게 표현 및 관리

구조 : 권한 등급을 먼저 설계하고 , 메뉴 및 기능을 분류하고 , 이에 대한 권한 등급에 대한 메뉴 및 기능에 권한들을 미리 정의한 Table을 만들고 승인시 이 테이블에 정리되어 있던 권한들이 데이터에 적용되도록 한다.

관리자 관련

관리자 신청 기능 , 관리자 권한 설정 , 관리자 권한 변경 , 관리자 리스트 , 관리자 정보 뷰 ( 프로필 및 권한 내용 그리고 권한 추가 변경 )

권한 그룹 관리

권한 그룹 생성 , 권한 그룹 수정

출처 http://goodboys.egloos.com/2324681

기능명세서의 적용

오늘 간단한 미팅을 통해서 요구사항명세, 기능명세에 대한 이야기를 나누었는데, 매우 유익한 시간이었다고 생각합니다.

주요한 개발 산출물인 위의 2가지 명세에 대하여 역시나 각자의 생각의 정도나 활용의 목적도 다른 부분이 많았고,

이를 통하여 어느 정도 우리 조직에 맞는 공통된 언어를 사용하는 것은 개발에 큰 힘이 될 것으로 생각합니다.

오늘을 기점으로 저희 팀원 모두가 명세서 작성에 있어서 좀더 관심을 가지고 의미있는 산출물이 나올 수 있었으면 합니다.

금일 미팅을 진행하면서 사실 저도 제가 알고 있는 개념들에 있어서 정확하게 정의하지 않고 혼돈스럽게 이해한 부분들이 있었음을 느꼈습니다.

걍 습관적으로 하다보니 개념적으로 이해하기 보다는 기계적으로 혹은 느낌으로 적용하였던 것들이 있었고,

개념적으로 다시금 정리하고 정확히 정리된 개념들이 몸으로 체득되어 다시 “기계적으로 적용”될 수 있도록 노력해 보겠습니다.

다시 잡아야 할 개념들:

금일 회의가 끝나고 생각해 보니까 제가 지속적으로 언급했던

“Implementation의 구체적 사항을 제외한 나머지 세부 구현 기능을 열거하는 문서”의 정체는

요구사항명세가 아니라 기능명세서 입니다.

제가 잘못 개념잡고 있었던 큰 이유는 “요구사항명세는 기능 명세를 포함한다”라는 사실 때문이었습니다.

엄격한 의미의 요구사항명세서는 상세기능명세서를 한 꼭지로 포함하는 상당히 큰 범주의 보통은 분량도 좀 많은 문서로서

과제의 목적, 관련된 용어 및 개념, 사용자 특성, 제약 사항, 가정 및 의존성, 상세 기능, 유스케이스 분석 등이 포함됩니다.

(샘플문서는 이거를 한번 참조해보심이… 눈에 참 익은 포맷인데, 다시는 쓰고 싶지 않은 괴물과 같은 놈이지요.)

PDPv2.0은 이러한 무거운 요구사항명세서를 지양하기 때문에,

요구사항명세서의 일부인 기능명세서를 충실히 작성하는 것만으로도 과제 진행에 충분하다고 생각됩니다.

(이 시점에서 PDP의 요구사항 템플릿을 보면 요구사항명세서라고 하지 않고, “요구사항목록”이라고 정의하고 있습니다.

고객이 요구한 주요 기능을 열거하는 것이 목적인 듯 합니다.)

어떻게 적용할까 :

1. 요구사항목록(요구사항명세서가 아닙니다) 문서를 통하여 고객이 요구하는 주요 기능들을 열거합니다.
이를 통하여 시스템이 이루고자 하는 방향성을 잡을 수 있을 듯 합니다. 주요 요구 기능이 적은 플랫폼 입장에서는 그닥 쓸모있는 문서가 되지는 않겠습니다….
필수적인 문서일 필요는 없을 것 같습니다. 되도록 이면 과제 계획 단계에서 PM이나 팀장이 작성하는 것으로 하는게 좋을 듯 하네요. ( --> 아래 댓글에 요구 사항 목록에 대한 제 회의감을 피력했습니다.)

2. 기능명세서는 Acceptance Test가 가능한 레벨의 Complete한 set으로 작성합니다. 개발자 뿐만 아니라 고객이나 QA입장에서도 의미 있는 내용이어야 하며, 지속적인 변경이 있을 수 있습니다.
이 부분은 구현을 담당할 개발자가 고객이 요구한 명시적 기능과 시스템에 요구되는 암시적 기능을 포함하여 작성하여야 겠습니다.

3. 스크럼의 product backlog는 2번에서 작성한 기능명세 개념을 기반으로 작성합니다. product backlog는 기능명세서와 동급의 문서이며 이를 작성하는 경우에 기능명세서를 대체할 수 있습니다.

4. 스크럼의 sprint backlog는 product backlog에서 해당 sprint에서 구현할 목록을 추출한 subset이 되는 것을 기본으로 합니다. 추가적으로 세부 구현 사항을 언급하기 위하여 product backlog의 항목을 분해할 수도 있습니다.

[출처] 요구사항명세와 기능명세의 줄타기...|작성자 스탤론

2010년 4월 12일 월요일

엑셀에서 줄바꿈제거

엑셀에서 셀의 내용을 편집할 때 Alt+Enter키를 누르면 여러줄로 셀의 내용을 채울 수 있습니다. 이때 Alt+Enter키를 누른 부분에는, 눈에 보이지 않는 줄바꿈 문자, 즉 개행문자(CR-LF)가 들어갑니다.

이 엑셀 셀(Cell)의 개행문자를 검색, 치환하는 방법입니다. 즉, 줄바꿈문자 찾기와 바꾸기입니다.

요점은 줄바꿈 문자를 Alt+10 으로 변환하여 찾기와 바꾸기를 하는 것입니다. Alt+10 이란 키보드의 Alt키를 누르면서, 우측 키패드에 있는 1과 0을 연달아 눌러주는 것입니다.

(1) 셀 속의 개행문자를 찾으려면, Ctrl+F키로 찾기 대화상자를 꺼낸 후

(2) "찾을 내용"이라는 입력칸을 마우스로 클릭한 후,

(3) 키보드의 Alt키를 누른 상태에서,

(4) 키보드의 맨 우측의 "숫자 키패드(Numeric Keypad; 계산기 모양으로 숫자만 나열된 작은 자판)"에 있는 아라비아 숫자 1과 0을 연속으로 눌러 줍니다.

(5) 이제 키보드에서 손을 뗍니다. 눈에 보이지는 않지만 개행문자가 "찾기 대상 문자열"로서 입력되었습니다.

(6) "다음 찾기" 버튼을 누르면, 셀 속에 개행문자가 들어 있는 셀을 찾아줄 것입니다.

바꾸기 작업도 마찬가지입니다.

만약 Alt+10 이 먹히지 않는다면, Alt+010 을 눌러 줍니다.

잘 안될 수도 있는데 여러번 시도해 보면 됩니다.

Alt키를 누르면서, 십진수 아스키 코드 번호를 누르면, 그 번호에 해당하는 문자들이 찍히는데 그것을 이용하는 것입니다. 엔터키의 십진수 아스키 코드 번호는 10 입니다. (13 일 수도 있지만 엑셀에서는 10 으로 해야 합니다.)

출처 : http://mwultong.blogspot.com/2008/03/excel-find-replace-cell-newline.html

2010년 4월 9일 금요일

쓰레드의 최대 생성 갯수확인

쓰레드의 최대 생성 갯수 확인 법

cat /proc/sys/kernel/threads-max

쓰래드 확인

ps –efm | grep 이름.

쓰레드의 최대 생성 갯수확인

쓰레드의 최대 생성 갯수 확인 법

cat /proc/sys/kernel/threads-max

쓰래드 확인

ps –efm | grem 이름.

2010년 4월 8일 목요일

PDF 편집기

PDF 편집기를 찾던 중 정리가 잘된 블로그가 있어 퍼옴.

출처 : http://www.thirdtype.net/1567

이제 공용 포맷으로 광범위하게 사용하고 있는 PDF 화일. 편집이 안되는 것이 장점일 수도 있지만 사실 불편한 점이 많은게 사실입니다. 그래서 오늘은 PDF 파일의 편집과 생성에 관련된 포터블 프로그램을 모아봤습니다.

1. Foxit PDF Editor

PDF_Editor_Portable_2.1.0.0702_En.paf.exe

PDF 파일을 편집할 수 있습니다만 워드처럼 자유로운 것은 아니고 개별 단어를 객체화 시켜서 수정할 수 있습니다. 단순 오타 정도 수정하는데 유용할 것 같네요.

2. PDF Split/Merge

Ap PDF Split Merge.zip

말 그대로 PDF 파일을 잘라서 여러개로 만들거나, 여러개의 PDF 파일을 하나로 합쳐주는 프로그램입니다. 아이팟터치에서 큰 용량의 PDF를 잘라서 저장하면 쉽게 읽을 수 있습니다.

3. PDFtoJPG

PDFtoJPG.zip

이 프로그램은 PDF의 개별 페이지들을 각각의 이미지 파일로 변환시켜 주는 프로그램입니다. PDF 파일을 볼 수 없을 경우 사용하면 유용합니다. 단점이라면 실제 보이는 PDF 페이지 레이아웃과 100% 동일하게 이미지화 되지는 않습니다.

4. Image to PDF

Image To PDF v3.1.zip

여러개의 이미지들을 하나의 PDF로 만들어 주는 프로그램 입니다만 딱히 써먹을데가...

5. PDF2Word

PDF2Word.zip

PDF 파일은 워드로 바꿔주는 프로그램 입니다. 한글 PDF 파일도 문제없이 변환됩니다.

전문적으로 오피스 파일을 PDF로 변환해 주는 프로그램들 중에 포터블로 제작되어서 제대로 작동되는걸 본적이 없는 것 같습니다. 아무래도 대부분의 PDF 변환 프로그램들이 프린터 드라이버를 통해 변환시켜 주기 때문이라고 생각되는데요.

MS오피스와 호환되는 무료 오피스 프로그램인 오픈오피스 자체가 PDF 문서 변환을 지원해 주니까 포터블 오픈오피스를 가지고 다니시면 간단히 PDF로 변환하실 수 있습니다.

2010년 4월 7일 수요일

TOP명령어

top이라고 친 후 h라고 입력 하면 도움말이 나옵니다. 거기에서 보고싶은 걸 입력하면 됩니다.

>#top

----------------------------------------------------------------------------

  1: top - 11:35:19 up 44 days,  5:09,  5 users,  load average: 0.03, 0.05, 0.05
  2: Tasks: 343 total,   1 running, 342 sleeping,   0 stopped,   0 zombie
  3: Cpu(s):  1.2% us,  0.1% sy,  0.0% ni, 96.7% id,  1.9% wa,  0.0% hi,  0.0% si
  4: Mem:   2070100k total,  1748748k used,   321352k free,   233704k buffers
  5: Swap:  2096472k total,      236k used,  2096236k free,   642728k cached
  6: PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                              
  7: 1629 webadmin  16   0  2808 1116  756 R    1  0.1   0:00.15 top 


----------------------------------------------------------------------------



@각 행별 내용








1행 : 시스템의 가동 시간과 평균 부하의 숫자를 출력



top - 11:35:19 up 44 days,  5:09,  5 users,  load average: 0.03, 0.05, 0.05



현재시간(11:35:19 )과 uptime 값(up 44 day)를 알수 있으며, 현재 로그인 된 사용자의 수(5 users)와



시스템의 최근 1분, 5분, 15분에 대한 각각의 평균 부하율(load average: 0.03, 0.05, 0.05)를 나타냄



Load average: 작업의 대기시간을 말한다. 값이 1이 나왔다면 1분 동안 평균 1개 정도의 프로세서가 대기상태에 있다는 것이다. 서버마다 차이가 있긴 하지만 5 정도면 서버가 부하를 받는 다고 생각한다. 과부하는 10 ~ 15이상이면 과부하라고 본다.



동일한 명령어는 uptime이다.



시스템 평균 부하율 정보 : uptime



- 시스템의 평균 부하율을 확인할 수 있는 명령어



-1분, 5분, 15분간의 시스템 평균 부하율을 출력



-# uptime



11:35:19 up 44 days,  5:09,  5 users,  load average: 0.03, 0.05, 0.05



-현재시간(11:35:19), 44일 동안 시스템 재부팅 없이 운영중임(up 44 day),  로그인한 시간(5:09), 현재 시스템에 접속한 사용자(5 users), 1분, 5분, 15분간의 시스템 평균 부하율(load average: 0.03, 0.05, 0.05) 정보를 출력




2) 2행 : 현재 실행중인 프로세스들의 상황



Tasks: 343 total,   1 running, 342 sleeping,   0 stopped,   0 zombie



-> 전체 실행된 현재 프로세스의 수는 (343 total), 실행중인 프로세스 ( 1 running), 유휴상태의 프로세스(342 sleeping),



정지 된 프로세스( 0 stopped), 좀비 프로세스(0 zombie)들의 상황을 알려줌



3) 3행 : CPU의 사용에 대한 상황 (이 정보를 통해 CPU의 사용현황을 파악하여 CPU의 추가적인 보강 계획이나



업그레이드 등의 계획을 세울수 있슴)



Cpu(s):  1.2% us,  0.1% sy,  0.0% ni, 96.7% id,  1.9% wa,  0.0% hi,  0.0% si



-> 사용자가 사용중인 CPU의 사용율(1.2% us), 시스템이 사용하는 CPU의 사용율(0.1% sy), NICE 정책에 의해 사용되는 CPU의 사용율( 0.0% ni), 사용되지 않는 CPU의 미사용율(96.7% id), 입출력 대기상태의 사용율(1.9% wa)등의 상황에 대해



알려줌



4) 4행 : 메모리의 사용에 대한 상황 (이 정보를 통해 메모리의 사용 현황에 대해 파악하고 메모리의 부족 현상 등을 분석하여 추가적인 메모리의 확장에 대해 고려할수 있슴)



Mem:   2070100k total,  1748748k used,   321352k free,   233704k buffers



-> 전체 물리적인 메모리(2070100k total), 사용중인 메모리(1748748k used), 사용되지 않는 여유 메모리(321352k free), 버퍼된 메모리의 ㅣ양(233704k buffers)등의 상황에 대해 알려줌



5) 마지막행 : 스왑메모리의 사용에 대한 상황(스왑 메모리의 사용이 증가할 경우에는 물리적 메모리의 확장을 고려)



Swap:  2096472k total,      236k used,  2096236k free,   642728k cached



-> 전체 스왑 메모리(2096472k total), 사용중인 스왑 메모리( 236k used), 남아있는 스왑메모리(2096236k free), 캐싱메모리(642728k cached)등의 상황에 대해 알려줌



@ 세부 정보 필드별 항목



PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                



PID : 프로세스 ID (PID)



USER : 프로세스를 실행시킨 사용자 ID



PRI : 프로세스의 우선순위 (priority)



NI : NICE 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높다.



VIRT : 가상 메모리의 사용량(SWAP+RES)



SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.



S : 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies) ]



%CPU : 프로세스가 사용하는 CPU의 사용율



%MEM : 프로세스가 사용하는 메모리의 사용율



COMMAND : 실행된 명령어



RES : 현재 페이지가 상주하고 있는 크기(Resident Size)



---------------------------------------------------------------------------------



A. CPU 과부하를 인지하는 것은 매우 어렵다.



    씨피유의 과부하는 실제로 메모리 문제들과 I/O 문제들 사이의 틈에 끼워져 있다. CPU과부하 여부를 확인하는 방법



    i. Uptime을 사용해 로드 평균값을 확인해 증가 하는지 혹은 감소 하는지 본다. 통상 시스템의 CPU개수에 2를 곱한 값을



       로드 평균의 적정 수준으로 보기 때문에 해당 시스템의 CPU개수에 따라 적절한 로드 평균값은 달라질 수 있다.



    ii. 디스크 접근이나 페이징을 위해 대기하고 있는 프로세스가 있나?



1. 그럼 프로세스가 있다면 I/O와 메모리 서브 시스템을 검사한다.



    iii. CPU의 대부분을 사용하고 있는 프로세스는 무엇인가?



1. CPU를 많이 사용하고 있는 프로세스들을 적절히 재배치 해 워크 로드를 보다 좋게 분산 시키도록 도와 준다.



    iv. 시스템 스테이트에서 CPU의 대부분 50% 이상의 시간을 소비 하고 있는가?



1. 그렇다면 I/O를 의심해 볼 필요가 있다. 소스 코드를 액세스 할 때 애플리케이션이 I/O를 효과적으로 사용하고 있는지 검사한다.



    v.  CPU로드가 높은데도 불구하고 IDLE 스테이트에서 CPU를 많이 10% 이상 사용하고 있는가?



1. 그렇다면 I/O나 메모리에 의심



    vi. CPU IDLE시간이 끊임 없이 0인가?



1. CPU가 활동량이 많은 것은 시스템을 잘 사용하고 있는 것이지만 항상 100% 사용하고 있다면 일은 어떤 곳에서 계속 쌓인다는 것이다. 즉, CPU 오버로드 발생하고 있다는 것이다.



B. 처방



     i. 불필요한 데몬 프로세스를 제거한다. Rwhod, routed는 성능에 문제를 주는 프로세스이다. Kill 한다.



     ii. at이나 다른 큐잉시스템을 이용해 사용자의 일을 야간에 수행하도록 한다. CPU(메모리, I/O 시스템)가 야간에는



        과부하가 걸린다고 하더라도 아침에 그 작업이 끝나면 보통 별 문제가 되지 않는다.



    iii. CPU에 의존적인 일의 우선순위를 낮추는데 nice를 사용함으로써 인터랙티브 퍼포먼스를 향상시킬 수 있다.



        여기서 CPU내에 의존적인 일의 우선순위를 높이는데 nice를 사용함으로써 그 일은 성능을 향상시키겠지만



        인터랙티브 퍼포먼스는 해치게 된다. Nice를 사용하는 것은 임시 방편적인 방법으로만 써야 한다. 만약 시스템의



        워크로드가 증가하게 된다면 이런 방법으로는 충분하지 않으며, 시스템을 업그레이드 하든지 교체 혹은 다름 시스템을



        구입해 로드를 공유, 분산해야 한다.



http://kdaq.empas.com/knowhow/view.html?num=1222412&ht=p