vi 단축키(전부는 아니고..)

어디서 가져왔는데, 본인이 쓰신 것 같고…
문제되면 지울께요…^^

h, j, k, l – 좌,하,상,우 커서이동

i – 현재 커서 위치에 Insert 하기
I – 현재 줄 맨앞에 Insert 하기
a – 현재 커서 다음칸에 Insert 하기
A – 현재 줄 맨뒤에 Insert 하기
O – 윗줄에 Insert 하기
o – 아랫줄에 Insert 하기

w – 단어 첫글자로 이동하기
W – 화이트스페이스 단위로 다음 글자로 이동하기
b – 백워드 방향으로 단어의 첫글자로 이동하기
B- 백워드 방향으로 화이트스페이스 단위로 다음 글자로 이동하기
e – 단어의 마지막 글자로 이동하기
ge – 백워드 방향으로 단어의 마지막 글자로 이동하기
gg – 문서 맨 앞으로 이동
G – 문서 맨끝으로 이동
^ – 문장 맨 앞으로 이동
0 – 라인 맨 앞으로 이동
$ – 문장 맨 뒤로 이동
f문자 – 문자의 위치로 이동 ; 를 누르면 계속 이동
F문자 – 백워드로 문자의 위치로 이동
t문자 – 문자의 앞위치로 이동
T문자 – 백워드방향으로 문자의 앞위치로 이동

/단어 – 문서에서 단어 찾기 n이나 N으로 다음/이전 찾기
* – 현재 단어를 포워드 방향으로 찾기
# – 현재 단어를 백워드 방향으로 찾기

Ctrl + f – 다음 페이지 이동
Ctrl + b – 이전 페이지 이동
Ctrl + u – 페이지절반만큼 다음으로 이동
Ctrl + d – 페이지절반만큼 이전으로 이동
H – 현재 화면의 맨 위라인으로 이동
M – 현재 화면의 중간 라인으로 이동
L – 현재 화면의 마지막 라인으로 이동

]] – 포워드 방향으로 여는 컬리 블레이스( { )로 이동
[[ – 백워드 방향으로 여는 컬리 블레이스( { )로 이동
][ – 포워드 방향으로 닫는 컬리 블레이스( { )로 이동
[] – 백워드 방향으로 닫는 컬리 블레이스( { )로 이동
% – {}나 ()에서 현재 괄호의 짝으로 이동

dd – 현재 줄 잘라내기
dw – 단어 잘라내기
yy – 현재 줄 복사하기
p – 붙혀넣기
r – 현재 글자 교체하기
u – Undo
Ctrl + R : Redo
x – 현재 글자 지우기
X – 앞의 글자 지우기
> – 들여쓰기
< – 내어쓰기
. – 이전 명령어를 다시 실행

v – 비쥬얼모드(비쥬얼 모드에서 커서 이동해서 블럭지정 가능)
y – 복사하기
c – 잘라내기
cw – 단어 잘라내기
J – 다음 라인을 현재 줄의 끝으로 이어 붙힘
~ : 선택 문자 대소문자 변경
Ctrl + A : 숫자를 증가시키기
Ctrl + X : 숫자를 감소시키기

:w – 문서 저장하기
:q – 현재 문서 닫기
:q! – 저장하지 않고 닫기
:wq – 저장하고 닫기
:숫자 – 지정한 라인넘버로 이동

:new – 가로로 분할된 창 열기
:vs – 세로로 분할된 창 열기
Ctrl + w – 분할창 간에 이동하기
:tabnew – 새로운 탭 열기
:gt – 다음 탭으로 이동하기
:gT – 이전 탭으로 이동하기
:e ./ – 현재 탭에 오픈할 파일 탐색하기( ./ 는 현재위치에서 탐색 시작)
:colorscheme 스키마명 – VIM의 칼라스키마를 변경함(blue, desert, evening 등.. 스키마명에서 탭누르면 자동완성됨)

zc – 코드 접기(fold)
zo – 접힌 코드 펼치기
zd – fold 지우기
zR – 접힌 코드 모두 펼치기
zM – 코드 모두 접기
zD – 모든 fold 지우기

:buffers – 현재 Vim에서 여러 파일을 열었을때 버퍼에 있는 목록 확인
:buffer 숫자 – 버퍼 목록에 나온 숫자를 입력하면 해당 파일을 오픈함 ( :buffer 대신 :b 도 가능)
:bnext – 버퍼에 있는 다음 파일로 이동 ( :bn 도 가능)
:bprevious – 버퍼에 있는 이전 파일로 이동 ( :bp 도 가능)
:ball – 버퍼 목록에 있는 파일들이 가로로 분할된 창에 열림

lombok이 있는 줄은 아는데, getter/setter 가 안 먹히고 있다…

일단 찾은 주소는 있는데…집에가서 더 해보고…쩝..

https://stackoverflow.com/questions/42444457/lombok-does-not-work-for-eclipse-neon

되면 좋고…아니면…

# build path에서 installed > alternative 쪽으로 변경

# compiler 체크 해제 된 것 아래쪽에서 버전 똑같이..

# facet 에서 역시 버전 똑같이 체크…

이래도 안되면…걍 다른 곳에서…;;;;;

eclipse tomcat server 추가할 때 server name이 disable 되어 있는 짜증…

server를 추가했다가 계속 apache 폴더에 권한이 없다고 나오길래( admin이 admin 폴더를 쓰는데 권한이 없단다… )

좀 찾아봤더니, 아래처럼 하면 되더라.

1. 이클립스를 닫는다.

2. {workspace-directory}/.metadata/.plugins/org.eclipse.core.runtime/.settings 폴더로 이동

3. org.eclipse.wst.server.core.prefs, org.eclipse.jst.server.tomcat.core.prefs 파일 삭제

4. 이클립스 재실행

traffic 계산 방법(어디선가 돌아다니는)

문제 되면 지우겠음..

서버호스팅 트레픽은 보통 3MB,5MB,10MB등이 존재한다
이는 초당 접속속도를 이야기하는 것이며, 단위는 bps(bit per second) 이다
이를 일반 웹호스팅에 빗대어(예를들어 하루 전송량 1기가)이야기 하면 계산하는 방법은 아래와 같다
[3Mbps]
= 3*1024*1024 bit = 3,145,728 bit
bit를 byte로 전환하면 (byte는 bit가 8개 모인 단위)
3Mbps / 8 = 3,145,728 / 8 = 393,216 byte
즉 초당 데이터 전송할 수 있는 양이 384kbyte가 된다.
이를 하루 단위 트래픽으로 계산하면 다음과 같다
393,216 byte * 86,400 초 (하루 60*60*24)
= 33,973,862,400 byte
= 약 32 Gbyte
[5Mbps]
초당 : 640kbyte
하루 : 약 52Gbyte
한달 : 약 1,582 Gbyte
[10Mbps]
초당 : 1.25Mbyte
하루 : 약 105 Gbyte
한달 : 약 3,164 Gbyte
단순한 계산이르모 운영시는 차이가 있을 수 있음
1. 트래픽이란
트래픽이란 어떤 통신장치나 시스템에 걸리는 부하(負荷)를 말합니다.
트래픽은 매우 일반적인 용어이기 때문에, 스트리밍 서비스에서는 네트웍을 통해 움직이는 데이터의 양 이라고 생각하시면 됩니다.
2. 트래픽 계산방법
예) 10M짜리 동영상 파일을 10번 보면?
     10M x 10 = 100M (트래픽)
3. 동시접속자 수 계산
예) 100Kbps로 인코딩하고, 100M Dedicated로 서비스 받을 경우 한 동영상에 동시에 접속할 수 있는 인원은?
     102,400Kbps (회선) / 100Kbps (동영상파일) = 1,024명 (동시접속자수)
4. 대역폭 계산방법
멀티미디어 파일의 인코딩 비트레이트에 멀티미디어 파일을 볼 고객, 즉 동시접속자 수를 곱합니다.
[ 인코딩 비트레이트 x 동시접속자 수 = 대역폭 ]
예) 250Kbps로 인코딩된 동영상파일을 동시에 4명이 본다고 예상할 때 필요한 대역폭은?
     250Kbps(인코딩 비트레이트) x 4명(동시접속자수) = 1000Kbps (대역폭)
[출처] 서버호스팅/트래픽 계산방법|작성자 dandyleader

출처: http://l2j.co.kr/2675 [L2J with DuraBoys]

정규식..참..적응이 안된다..이제는 특수문자 제거도 해야 하고 하니..하..놔..그래서 어디선가 가져왔어요..

function fn_hangulChk(obj) {

var val = obj.value;

var pattern = /[^가-힣ㄱ-ㅎㅏ-ㅣa-zA-Z0-9]/gi;

// 특수문자 체크

// 한글도 제거하고 싶다면 가-힣ㄱ-ㅎㅏ-ㅣ  조건 제거.. 이런 형태로 원하는 것 체크

 

if (pattern.test(val)) {

  obj.value = val.replace(pattern, “”);

}

}

———————————————————————-

참고..

* 출처 : http://cheolgoon.tistory.com/162

* 출처 :http://egloos.zum.com/xxwony/v/74767

* 출처 :http://nalpari.blogspot.kr/2014/12/blog-post_29.html

* 출처 :http://egloos.zum.com/rucaus/v/2405770

 

 

 

모든 공백 체크 정규식
var regExp = /\s/g;

 

숫자만 체크 정규식
var regExp = /^[0-9]+$/;
이메일 체크 정규식
var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
핸드폰번호 정규식
var regExp = /^\d{3}-\d{3,4}-\d{4}$/;
일반 전화번호 정규식
var regExp = /^\d{2,3}-\d{3,4}-\d{4}$/;
아이디나 비밀번호 정규식
var regExp = /^[a-z0-9_]{4,20}$/;
휴대폰번호 체크 정규식
var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;

 

##############  정규표현식

1. 확장문자 (: backslash)
– s : 공백 문자(스페이스, 탭, 폼 피드, 라인 피드)

– b : 단어의 경계
– B 이를 제외한 모든 문자 매칭

– d : 숫자
– D : 숫자가 아닌 문자 [^0-9] 와 동일

– w : 알파벳, 숫자로 된 문자, 밑줄 기호(_) [A-Za-z0-9]
– W : w의 반대 문자 [^A-Za-z0-9]

– 특수문자 : 특수문자 자체를 의미 예) + (+ 기호 자체)

2. 특수문자
– * : 0회 이상 반복
– + : 1회 이상 반복
– ? : 0 또는 1개의 문자 매칭
– . : 정확히 1개 문자 매칭

3. 플래그
    – g : 전역매칭
– i : 대소문자 무시
– m : 여러 줄 매칭

4. 기타
– () : 괄호로 묶인 패턴은 매칭된 다음, 그 부분을 기억한다.
– $1,…,$9 : 괄호로 갭처한 부분 문자열이 저장 됨.
– | : ~또는~
– {} : 반복 횟수
##############  간단한 정규 표현식
var re = /a/         –a 가 있는 문자열
var re = /a/i        –a 가 있는 문자열, 대소문자 구분 안함
var re = /apple/    — apple가 있는 문자열
var re = /[a-z]/    — a~z 사이의 모든 문자
var re = /[a-zA-Z0-9]/    — a~z, A~Z 0~9 사이의 모든 문자
var re = /[a-z]|[0-9]/  — a~z 혹은 0~9사이의 문자
var re = /a|b|c/   —  a 혹은 b 혹은 c인 문자
var re = /[^a-z]/  — a~z까지의 문자가 아닌 문자(“^” 부정)
var re = /^[a-z]/  — 문자의 처음이 a~z로 시작되는 문장
var re = /[a-z]$/  — 문자가 a~z로 끝남
상기에 정의된 간단한 표현식을 아래에 넣어 직접 해 보시기 바랍니다.
var str = “sample string”;
re.test(str)?”true”:”false”;

* 특수문자(””, ”^”, ”$”, ”*”, ”+”, ”?”, ”.”, ”(”, ”)”, ”|”, ”{”, ”}”, ”[”, ”]”)를 검색할 경우는 ”” 를 넣는다.

 

##############  간단한 응용예제

var re = /s$/;          — 공백체크
var re = /^ss*$/;   — 공백문자 개행문자만 입력 거절
var re = /^[-!#$%& amp;’*+./0-9=?A-Z^_a-z{|}~]+@[-!#$%&’*+/0-9=?A-Z^_a-z{|}~]+.[-!#$%& amp;’*+./0-9=?A-Z^_a-z{|}~]+$/; –이메일 체크
var re = /^[A-Za-z0-9]{4,10}$/ — 비밀번호,아이디체크 영문,숫자만허용, 4~10자리
var re = new RegExp(“(http|https|ftp|telnet|news|irc)://([-/.a-zA-Z0-9_~#%$?&=:200-377()]+)”,”gi”) — 홈페이지 체크

var re = “<[^<|>]*>”;  — 태그제거
var re = /[<][^>]*[>]/gi;– 태그제거
str = str.replace(RegExpTag,””);

var RegExpJS = “<script[^>]*>(.*?)</script>”;  — 스크립트 제거
str = str.replace(RegExpJS,””);

var RegExpCSS = “<style[^>]*>(.*?)”;  — 스타일 제거
str = str.replace(RegExpCSS,””);

var RegExpHG = “(/[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/)”;  — 한글 제거
str = str.replace(RegExpHG,””);

var RegExpDS = /<!–[^>](.*?)–>/g;   — 주석 제거
str6 = str.replace(RegExpDS,””);

var regExp = /[a-z0-9]{2,}@[a-z0-9-]{2,}.[a-z0-9]{2,}/i; –이메일 체크
## 기타 응용
re = new RegExp(“^@[a-zA-Z0-9]+s+”,”i”);//문장의 처음이 @이고 문자가 1나 이상 있으면 ok

 

기타 상기와 동일하나 약간씩 다른 샘픔
영숫자 조합책크
if ((new RegExp(/[^a-z|^0-9]/gi)).test(frm.loginid.value)) {
alert(“ID는 영숫자 조합만 사용하세요”);
frm.loginid.focus();
}

홈페이지 주소 책크
function chk(v){
str=”;
re = new RegExp(“^http://”,”i”);
re.test(v)?str=’y’:str=’n’;
alert(str);
}

hanmail인지를 책크
function chk(v){
str=”;
re = new RegExp(“hanmail.net”,”i”);
re.test(v)?str=true:str=false;
return str
}

//본문내에서 도메인 구하기
var patt = /(http(s)?://)?w+(.w+)+/gi;
var result = (aa.value.match(patt));

//본문내에서 url구하기
상기와 유사 var patt = /(http(s)?://)?w+(.w+).S*-gi;

########### 정규식 메소드 및 사용법

참조 http://eknote.tistory.com/1251
참조 http://www.javascriptkit.com/javatutors/redev3.shtml
RegExp.exec(string)
RegExp.test(string)
String.match(pattern)
String.search(pattern)
String.replace(pattern,string)
String.split(pattern)

 

 

 

 

 

 

 

* 특수문자 검증 및 제거

function regExp(){
//특수문자 검증 start
var str = “2011-12-27″;
var regExp = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\’\”]/gi
if(regExp.test(str)){
//특수문자 제거
var t = str.replace(regExp, “”)
alert(“특수문자를 제거했습니다. ==>” + t)
}else{
alert(“정상적인 문자입니다. ==>” + str)
}
//특수문자 검증 end
}

 

 

* 닉네임 체크 – 특문 제외 2자 ~ 20자

var pattern = /^[\w\Wㄱ-ㅎㅏ-ㅣ가-힣]{2,20}$/;

[\w]는 [A-Za-z0-9_] 이다
[\W]는 \w를 제외한 특수문자들이다.
[ㄱ-ㅎ] 은  ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ
[ㅏ-ㅣ]는 ㅏㅑㅓㅕㅗㅛㅜㅠㅡㅣ
[가-힣]는 가나다라~~타파하 ~ 기니디리~ 티피히 ~ 각낙닥락 ~ 틱픽힉 ~ 깋닣딯맇 ~ 팋핗힣  이 된다.
즉 그냥 모든 문자열에 대한 {2,20} 글자 수 체크가 된다.

 

 

 

 

 

 

 

 

****

 

var pattern = 정규식;
var testee = “테스트 스트링”;
var true_or_false = pattern.test( testee);  // 정규식 필터를 통과하면 true, 아니면 false 리턴.

다른 방법들도 있는데 나는 그냥 위와 같이 사용중이다.
아래는 내가 사용하는 정규식 몇 가지 예제..

1) 정수와 소수점 달고다니는 수들만 통과시키는 필터. 예를 들어 ’12’ ‘12.123’ ‘-0.571’ ‘-8100’ 등에 대해 true를 리턴하고 나머지는 false 리턴.

var pattern =  /^[-]?\d+(?:[.]\d+)?$/;
return pattern.test( testee);

1-2) 위의 필터에서 좀더 조건을 추가해서, 양수면서 최대 소수점 2자리 이하까지만 통과시키는 필터. 예를 들어 12.23, 0.41, 51 등에는 true를 리턴하고, -12, -9.43, 1.234 등에는 false를 리턴하는 필터.
var pattern = /^\d+(?:[.]?[\d]?[\d])?$/;
return pattern.test( testee);

2) 숫자 및 x, X, P, E 만 포함한 스트링만 통과시키는 필터.
예를 들어,
x123 : true
XPE : true
125 : true
1234O : false
pXP : false

var pattern = /[^1234567890xXPE]/;
return !(pattern.test( testee));

3) 문자 전체에서 특수문자를 하나라도 포함하지 않아야만 함
예를 들어,
@123 : false
12Hello5 : true
!!! : false

var pattern = /[^\w\s]/i;
return !(pattern.test( testee));

4) 다음과 같은 형식만 통과함. Q로 시작하면서, 0000~9999 까지의 숫자만 Q 뒤에 달고 있어야 함.
즉,
Q0001, Q0002, Q1234, Q9999  : true
Q00, Q194, Q1  : false
Q0001A  : false
QUESTION : false

var pattern = /^Q[0-9][0-9][0-9][0-9]$/;
return pattern.test( testee);
5) 정규식에서 g 플래그를 쓸 때 주의해야 한다. 최근에 매칭한 곳에서부터 다시 정규식 검사를 시작하는 속성이 있다.

이것때문에 다음 문제가 일어난다. 연속적으로 한 스트링에 대해 정규식 테스팅을 하면, 처음에는 필터가 잘 동작하다가 나중에는 통과하지 말아야 할 조건을 가진 스트링이 정규식 패턴을 통과했다고 나오게 된다. 구글에서 ‘regex g flag consecutive’ 등으로 검색하면 이 문제로 매우 많은 질문과 답이 나온다. 해결 방법은.. 난 g 플래그 대신 i 플래그를 줘서 해결했다. 아래 링크도 도움이 될 것이다.

http://stackoverflow.com/questions/15610251/why-pattern-testname-opposite-results-on-consecutive-calls
http://stackoverflow.com/questions/6739136/consecutive-calls-to-regexp-test-fail-for-pattern-with-global-option
6) 문자열 양 끝에 공백문자를 없애 주는 정규식. 예를 들어 ”   hi hello! “; 를 “hi hello!”; 로 바꿔 주는 코드.
(출처 : http://stackoverflow.com/questions/3000649/trim-spaces-from-start-and-end-of-string)

function trim_whitespace( str)
{
return str.replace(/^\s\s*/, ”).replace(/\s\s*$/, ”);
}
7) “[192.244.1.123]” 같은 string에서 안의 ip부분만 빼낸다(“192.244.1.123” 을 빼내는 작업)
function main()
{
var regex = /\[([.\d]+)]/;
var str = “[192.244.1.123]”;
var res = regex.exec( str);

// print res[1] = “192.244.1.123”;
}