2016년 12월 23일 금요일

Java G1GC 관련 도움될만한 Site 들

오라클 문서들
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/G1.html
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html

G1GC로그 이해
https://blogs.oracle.com/poonam/entry/understanding_g1_gc_logs

튜닝
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#G1Options
http://blog.mgm-tp.com/2013/03/garbage-collection-tuning/
http://blog.mgm-tp.com/2014/04/controlling-gc-pauses-with-g1-collector/
https://www.infoq.com/articles/G1-One-Garbage-Collector-To-Rule-Them-All
https://docs.google.com/spreadsheets/d/tItfbzaXbZ0gfAgnz_yRCZg/htmlview


GC 분석 사이트
http://gceasy.io/




2016년 12월 14일 수요일

Linux에서 간단히 UDP 패킷을 하나 날려보고 싶을때

echo "udp send test" > /dev/udp/192.168.0.16/20000

192.168.0.16의 20000포트로 "udp send test" content를 가진 udp 를 보낸다.

당연히 패킷 헤더는 내주소랑 쓰인 주소로 자동으로 들어간다.

2016년 11월 11일 금요일

Ubuntu 16.04 런처 (작업표시줄) 위치 바꾸기 / GRUB부팅 순서 바꾸기

GUI툴을 깔아도 되고...

위치만 바꿀것이라면

왼쪽(기본)
gsettings set com.canonical.Unity.Launcher launcher-position Left

아래
gsettings set com.canonical.Unity.Launcher launcher-position Bottom


gsettings set com.canonical.Unity.Launcher launcher-position Top



Grub 부팅 순서는..


sudo vi /etc/default/grub 로 열면

GRUB_DEFAULT=4
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

이런게 나오는데

GRUB_DEFAULT=4

이부분을 0 부터 시작해서 원하는 것으로 바꾸면 된다.
마지막으로 적용

sudo vi /etc/default/grub 

그리고 reboot

2016년 11월 5일 토요일

윈도우10 단축키들

Windows Key + Tab – Launch Task view (테스크 뷰)
Windows Key + X – Open Start button context menu
Windows Key + K – Open the Connect quick action (connect to wireless display and audio devices)
Windows Key + I – Open Settings
Windows + R – Run a command
Windows + P – Project a screen
Windows Key + E – Open File Explorer (Windows Explorer)
Windows Key + H – Open the Share content
Windows Key + T – Cycle through apps on the task bar
Windows Key + L – Lock Windows 10 device
Windows + Space – Switch keyboard input language (if you have added at least a second one)
Windows + [Up][Down] - 전체 화면 (스냅보기 모드)
Windows + [Left][Right] - 2분할 화면 (스냅보기 모드)  [Windows + [Up][Down] - 2분할 화면에서 위아래로 4분할 화면 (스냅보기 모드) ]
Windows + Shift + [Left][Right] – Move current Window from one monitor to another (다중모니터(Multi Monitor)를 사용중일때)
Ctrl + Shift + Esc – Open Task Manager
Alt + Tab – (최근 윈도우 전환하기) Switch to previous window
Alt + Space – Restore, move, size, minimize, maximize or close current window
Alt + F4 – Close current window


Microsoft Edge
Ctrl + D – Add current site to favorites or reading list
Ctrl + J – Open downloads pane
Ctrl + I – Open favorites pane
Ctrl + H – Open history pane
Alt + C – Open Cortana
Ctrl + Shift + R – Enter reading view
F12 – Open F12 Developer Tools
F7 – Turn caret browsing on for the current tab
Ctrl + K – Duplicate tab
Ctrl + Shift + P – Open a new InPrivate Browsing window


Virtual Desktops
Windows Key + Ctrl + D – Create new virtual desktop
Windows Key + Ctrl + Right arrow – Switch between virtual desktops created on the right
Windows Key + Ctrl + Left arrow – Switch between virtual desktops created on the left
Windows Key + Ctrl + F4 – Close the virtual desktop
Windows Key + Tab – Launch Task view


Cortana
Windows Key‌ + Q – Launch search the web and Windows with Cortana (speech)
Windows Key‌ + S – Launch search the web and Windows with Cortana (keyboard input)
Windows Key‌ + C – Open Cortana in listening mode


Action Center
Windows Key + A – Open Windows 10 notification or Action center
Windows Key + V – Cycle through notifications
Windows Key + Shift + V – Cycle through notifications in reverse order
Windows Key + B – Set focus in the notification area


Game bar
Windows Key + G – Open Game bar when a game is open
Windows Key + Alt + G – Record the last 30 seconds
Windows Key + Alt + R – Start recording (press the shortcut again to stop recording)
Windows Key + Alt + Print Screen – Take a screenshot of your game
Windows Key + Alt + T – Show/hide recording timer


명령 프롬프트 : Ctrl + C , Ctrl + V 단축키 사용가능
CTRL + SHIFT + (Mouse) SCROLL UP - Increase transparency.
CTRL + SHIFT + (Mouse) SCROLL DOWN - Decrease transparency.
CTRL + SHIFT + Plus (+) - Increase transparency.
CTRL + SHIFT + Minus (-) - Decrease transparency.

2016년 10월 28일 금요일

sar 네트워크 판단 기본 명령어들

sar로 여러가지 정보를 볼 수 있지만... 난 주로 sar -n 을 보게 됨.. (서버 프로그래머니..)

1) sar -n DEV (network device 통계)

IFACE: Network Interface 이름
rxpck/s: 초당 받은 패킷수
txpck/s: 초당 전송한 패킷수
rxbyt/s: 초당 받은 bytes
txbyt/s: 초당 전송한 bytes
rxcmp/s: 압축된 패킷을 초당 받은 수
txcmp/s: 압축된 패킷을 초당 전송한 수
rxmcst/s: 초당 받은 multicast 패킷 수
(mucticast 만 받고 있다면 rxmcst/s 과 rxpck/s 의 값이 같음)


2) sar -n EDEV (network device 에러 통계)

IFACE: Network Interface 이름
rxerr/s: 초당 불량 패킷을 받은 수
txerr/s: 패킷전송중 초당 발생한 에러 수
coll/s: 패킷전송중 초당 발생한 충돌 수
rxdrop/s: 리눅스 buffer 의 부족으로 패킷을 받는도중 초당 drop 된 패킷 수
txdrop/s: 리눅스 buffer 의 부족으로 전송중 초당 drop 된 패킷 수
txcarr/s: 패킷전송도중 초당 발생한 carrier-error 수
rxfram/s: 패킷을 받는도중 초당 발생한 frame alignment 에러 수
rxfifo/s: 패킷을 받는 도중 초당 발생한 FIFO overrun 에러 수
txfifo/s: 전송된 패킷중 초당 발생한 FIFO overrun 에러 수

3) sar -n SOCK (소켓 통계)

totsck: 총 사용된 socket 수
tcpsck: 현재 사용중인 TCP sockets 수
udpsck: 현재 사용중이 UDP sockets 수
rawsck: 현재 사용중인 RAW sockets 수
ip-frag: 현재 사용중인 IP fragments 수

2016년 8월 2일 화요일

2016년 7월 29일 금요일

file 여러개 자동으로 복사하기... (맨날 새로 만들기 귀찮아..ㅠㅠ)

#!/bin/bash
if [ "$#" -ne 2 ]; then
    echo "usage: $0 [filename] [repeat count]"
    exit
fi

if [ -f "$1" ]; then
    echo "$1 file exists."
else
    echo "$1 No such file. will exit"
    exit
fi

fileName=$(echo $1 | cut -d"." -f1)
fileCount=0
modInterval=$(( $2 / 10 ))
until [ "$fileCount" -ge $2 ]; do
    fileCount=$(expr $fileCount + 1)
    modulo=$(( $fileCount % $modInterval ))
    if [ $modulo -eq 0 ]; then
        echo "current fileCount: $fileCount completed"
    fi
    cp -f $1 "$fileName$fileCount.mpg"
done





===================================================

뭔가 주기적으로 반복할때
#!/bin/bash
while true
do
    TODAY=$(date)
    echo "$TODAY excute command 'rm -rf Session*' "
    rm -rf Session*
    sleep 1800
done

2016년 6월 21일 화요일

Ununtu 처음 설치하고 했던 일들...

1. root 비번 변경 sudo passwd root
2. /etc/lightdm/lightdm.conf file 에서 autologin-user=root로 변경
3. /root/.profile 에서 mesg n 대신에 tty -s && mesg n 으로 변경 (에러 팝업 감추기)

4. 기본적인 app
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install vim git wget curl ssh

5. docker 최신버전 설치
sudo wget -qO- https://get.docker.com/ | sh

2016년 6월 13일 월요일

gdb 간단한 사용법

맨날 까먹는다... 자주 안써서 그런지...

gdb [bin name]
가장 흔한 실행방법... Break point 걸고 싶을때..

gdb [bin name] [core name]
core 파일 분석하고 싶을때... back trace라던가...

gdb [bin name] [pid number]
현재 돌아가는 pid에 붙어서 디버깅 할때.

run (r)
프로그램을 시작
quit, kill (k)
디버깅 종료

break (b)
break point 걸때
여러가지 방법이 있음
b aaa.c:this_method
aaa.c파일에 this_method 함수에 설정함
b CAaa::this_method
CAaa클래스에 this_method 함수에 설정
b aaa.c:10
aaa.c파일 10번째 줄에 설정
b +5
현재행에서 5번째 아래에 설정

info b            
현재 설정된 브레이크 포인트의 정보
info locals    
현재 상태의 지역변수 정보
info variables
현재 상태의 전역변수 정보
info registers
현재 레지스터 정보
info frame
현재 스택 프레임 정보
info args
현재 스택 프레임의 함수가 호출될때 인자
info catch
현재 스택 프레임의 함수내에 예외 핸들러
info signals
보낼 수 있는 시그널의 종류
info set
변경 가능한 환경설정 정보
info functions
함수 리스트

clear (cl)
break point 제거

cl 1
첫번째 break point 제거
cl CAaa::this_method
CAaa클래스에 this_method break point 제거
cl
모든 break point 제거

step (s)

s
현재행 수행 (함수가 나타나면 해당 함수로 진입)
s 10
10개행을 수행
n
현재행 수행 (함수가 나타나도 해당 함수를 실행후 넘어감)
n 10
위의 방식으로 10개행 수행

continue (c)
다음 break 만날때까지 진행

finish
현재함수를 실행하고 빠져나감
return
현재 함수를 마저 실행하지 않고 나감
return false
함수를 빠져나갈때 false를 return

watch bFlag
bFlag값이 변경될때마다 break point를 수행 (매우 편함)

p pStr
pStr의 값을 확인
p func
func 함수의 주소 확인
p tVal
tVal의 구조체 주소를 확인(내용을 보고 싶으면 포인터 * 붙이면됨)
display pVal
pVal값을 계속 퐈면에 표시

frame [숫자]
해당 frame으로 이동 (주로 core 분석할때)
up, down
frame을 올리고 내림

혹시 보고 싶은 var 의 길이가 너무 길때
set print elements 0

2016년 3월 25일 금요일

Linux 가장 큰 디렉토리 용량 확인 하는 방법

df 쳐서 디스크가 full 인 상태면 당황....

보통 log가 쌓이는 경우가 대부분인데 어떤 log인지 찾을려도 쉽지 않다.

그때 주로 쓰는 명령어.

df 에서 꽉찬 disk를 확인하고 해당 디스크 / 로 가서

du * | sort -n | tail -10

라고 치면 용량큰 상위 폴더나 file이 용량이 큰 순서대로 10개가 나온다.

범인 검거!

2016년 3월 3일 목요일

너는 정성껏 살아라

- 시인 림태주 어머니의 편지


아들아, 보아라.

나는 원체 배우지 못했다.
호미 잡는 것보다 글 쓰는 것이 천만 배 고되다.
그리 알고, 서툴게 썼더라도 너는 새겨서 읽으면 된다.

내 유품을 뒤적여 네가 이 편지를 수습할 때면 나는 이미 다른 세상에 가 있을 것이다.
서러워할 일도 가슴 칠 일도 아니다.
가을이 지나고 겨울이 왔을 뿐이다.
살아도 산 것이 아니고, 죽어도 죽은 것이 아닌 것도 있다.
살려서 간직하는 건 산 사람의 몫이다.
그러니 무엇을 슬퍼한단 말이냐.

나는 옛날 사람이라서 주어진 대로 살았다.
마음대로라는 게 애당초 없는 줄 알고 살았다.
너희를 낳을 때는 힘들었지만, 낳고 보니 정답고 의지가 돼서 좋았고,
들에 나가 돌밭을 고를 때는 고단했지만, 밭이랑에서 당근이며 무며 감자알이 통통하게 몰려나올 때 내가 조물주인 것처럼 좋았다.
깨꽃은 얼마나 예쁘더냐.
양파꽃은 얼마나 환하더냐.
나는 도라지 씨를 일부러 넘치게 뿌렸다.
그 자태 고운 도라지꽃들이 무리지어 넘실거릴 때 내게는 그곳이 극락이었다.
나는 뿌리고 기르고 거두었으니 이것으로 족하다.

나는 뜻이 없다.
그런 걸 내세울 지혜가 있을 리 없다.
나는 밥 지어 먹이는 것으로 내 소임을 다했다.
봄이 오면 여린 쑥을 뜯어다 된장국을 끓였고, 여름에는 강에 나가 재첩 한 소쿠리 얻어다 맑은 국을 끓였다.
가을에는 미꾸라지를 무쇠솥에 삶아 추어탕을 끓였고, 겨울에는 가을무를 썰어 칼칼한 동태탕을 끓여냈다.
이것이 내 삶의 전부다.

너는 책 줄이라도 읽었으니 나를 헤아릴 것이다.
너 어렸을 적, 네가 나에게 맺힌 듯이 물었었다.
이장집 잔치 마당에서 일 돕던 다른 여편네들은 제 새끼들 불러 전 나부랭이며 유밀과 부스러기를 주섬주섬 챙겨 먹일 때 엄마는 왜 못 본 척 나를 외면했느냐고 내게 따져 물었다.
나는 여태 대답하지 않았다.
높은 사람들이 만든 세상의 지엄한 윤리와 법도를 나는 모른다.
그저 사람 사는 데는 인정과 도리가 있어야 한다는 것만 겨우 알 뿐이다.
남의 예식이지만 나는 그에 맞는 예의를 보이려고 했다.
그것은 가난과 상관없는 나의 인정이었고 도리였다.
그런데 네가 그 일을 서러워하며 물을 때마다 나도 가만히 아팠다.
생각할수록 두고두고 잘못한 일이 되었다.
내 도리의 값어치보다 네 입에 들어가는 떡 한 점이 더 지엄하고 존귀하다는 걸 어미로서 너무 늦게 알았다.
내 가슴에 박힌 멍울이다.
이미 용서했더라도 애미를 용서하거라.

부박하기 그지없다.
네가 어미 사는 것을 보았듯이 산다는 것은 종잡을 수가 없다.
요망하기가 한여름 날씨 같아서 비 내리겠다 싶은 날은 해가 나고, 맑구나 싶은 날은 느닷없이 소낙비가 들이닥친다.
나는 새벽마다 물 한 그릇 올리고 촛불 한 자루 밝혀서 천지신명께 기댔다.
운수소관의 변덕을 어쩌진 못해도 아주 못살게 하지는 않을 거라고 믿었다.
물살이 센 강을 건널 때는 물살을 따라 같이 흐르면서 건너야 한다.
너는 네가 세운 뜻으로 너를 가두지 말고, 네가 정한 잣대로 남을 아프게 하지도 마라.
네가 아프면 남도 아프고, 남이 힘들면 너도 힘들게 된다.
해롭고 이롭고는 이것을 기준으로 삼으면 아무 탈이 없을 것이다.

세상 사는 거 별 거 없다.
속 끓이지 말고 살아라.
너는 이 애미처럼 애태우고 참으며 제 속을 파먹고 살지 마라.
힘든 날이 있을 것이다.
힘든 날은 참지 말고 울음을 꺼내 울어라.
더없이 좋은 날도 있을 것이다.
그런 날은 참지 말고 기뻐하고 자랑하고 다녀라.
세상 것은 욕심을 내면 호락호락 곁을 내주지 않지만, 욕심을 덜면 봄볕에 담벼락 허물어지듯이 허술하고 다정한 구석을 내보여 줄 것이다.
별 것 없다.
체면 차리지 말고 살아라.
왕후장상의 씨가 따로 없고 귀천이 따로 없는 세상이니 네가 너의 존엄을 세우면 그만일 것이다.

아녀자들이 알곡의 티끌을 고를 때 키를 높이 들고 바람에 까분다.
뉘를 고를 때는 채를 가까이 끌어당겨 흔든다.
티끌은 가벼우니 멀리 날려 보내려고 그러는 것이고, 뉘는 자세히 보아야 하니 그런 것이다.
사는 이치가 이와 다르지 않더구나.
부질없고 쓸모없는 것들은 담아두지 말고 바람 부는 언덕배기에 올라 날려 보내라.
소중하게 여기는 것이라면 지극히 살피고 몸을 가까이 기울이면 된다.
어려울 일이 없다.
나는 네가 남보란 듯이 잘 살기를 바라지 않는다.
억척 떨며 살기를 바라지 않는다.
괴롭지 않게, 마음 가는대로 순순하고 수월하게 살기를 바란다.

혼곤하고 희미하구나.
자주 눈비가 다녀갔지만 맑게 갠 날, 사이사이 살구꽃이 피고 수수가 여물고 단풍물이 들어서 좋았다.
그런대로 괜찮았다.
그러니 내 삶을 가여워하지도 애달파하지도 마라.
부질없이 길게 말했다.
살아서 한 번도 해본 적 없는 말을 여기에 남긴다.
나는 너를 사랑으로 낳아서 사랑으로 키웠다.
내 자식으로 와주어서 고맙고 염치없었다.
너는 정성껏 살아라.

2016년 2월 19일 금요일

Linux RPM 명령어..

참고로 RPM은 Redhat Package Manager...

즉 redhat에서 제공하는 패키지 관리용 프로그램임.

1) 현재 설치된 package 확인
rpm -q 패키지이름

예) rpm -q gcc

근데 이건 패키지 이름 모르면 쓰기 힘듬. 보통 패키지 이름 일부만 알거나 하지..
그래서 쓰는게
rpm -qa
이건 OS에서 설치된 모든 패키지가 나온다. 엄청 길 수도 있다
그래서 보통

rpm -qa | grep 내가아는이름

해서 내가 아는 일부 이름으로 검색한다.

2) 패키지 삭제

rpm -e 패키지이름

지우고나서 -q 로 확인하면 된다.

3) 패키지 설치

rpm -i 나 -U를 쓰는데...
-i는 설치의 의미이고 -U는 없으면 설치하고, 있으면 Upgrade한다.
그래서 보통 -U옵션을 가장 많이 쓴다.

설치하고 싶은 rpm 을 다운로드 받고
rpm -Uvh 설치할rpm

하면 끝~

근데 의존성문제가 생길 수도 있는데.. 그건 해당 rpm 으로 여기저기 알아보고 하면 된다.

이미 설치된 rpm 의 의존성은 rpm -qR 패키지이름 으로 확인 가능하다.

2016년 2월 17일 수요일

iptables 사용법

이건 은근히 자주 쓰는데.. 쓸때마다 까먹어서 찾느라 고생이다 ㅠㅠ

자주 쓰는 용법만 적어놓음.

규칙 모두 삭제
iptables -F

ip를 차단
iptables -A INPUT -s 0.0.0.0 -j DROP

tcp로 333포트에서 밖으로 나가는것을 차단
iptables -A INPUT -p tcp --sport 333 -j DROP

tcp로 외부에서 내꺼 22번 포트를 향해서 들어오는거 차단
iptables -A INPUT -p tcp --dport 22 -j DROP