Friday, May 8, 2015

monkeyrunner

2011년 탐구하던 주제... 
샘플 코드이다. 

# Imports the monkeyrunner modules used by this program
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

def lockDevice(device):
    return device.press("POWER", MonkeyDevice.DOWN_AND_UP)

def unlockDevice(device):
    device.wake()
    device.drag((50, 450), (250, 450))

def browse(d):
    d.broadcastIntent("http://www.google.com/", "ACTION_MAIN")
    d.startActivity(component="com.android.browser/.BrowserActivity")

def debug(device):
    print" package:%s" % str(device.getProperty('am.current.package'))
    print" action:%s" % str(device.getProperty('am.current.action'))
    print" comp.class:%s" % str(device.getProperty('am.current.comp.class'))
    print" comp.package:%s" % str(device.getProperty('am.current.comp.package'))
    print str(device.getProperty('display.width')), str(device.getProperty('display.height'))

def screenshot(d):
    MonkeyRunner.sleep(1.0)
    result = d.takeSnapshot()
    MonkeyRunner.sleep(1.0)
    result.writeToFile('screenCapture/device.png', 'png') 

def call(d):

    d.startActivity(component="com.android.contacts/.TwelveKeyDialer")
    print "Start Activity"
    MonkeyRunner.sleep(1.0)
    d.type("+XXXXXXXX")    # Call number.
    print "Call"
    d.touch(190, 800, 'DOWN_AND_UP');
    # not working device.press('KEYCODE_CALL', 'DOWN_AND_UP')
    print "Wait 10 sec"
    MonkeyRunner.sleep(10.0)
    # HangUp Call
    device.press('KEYCODE_ENDCALL', 'DOWN_AND_UP')
    print "Hang Up"
    #x1 = 215
    #x2 = 230
    #y = 700
    #start = (x1,y)
    #end = (x2, y)
    #steps = 2
    #pause = 0.2
    #device.drag(start, end, pause, steps)

    d.startActivity(component="com.android.phone/.InCallScreen")
    #device.touch(230, 700, "DOWN");
    MonkeyRunner.sleep(1.0)
    #device.touch(230, 700, "UP");

    d.touch(230, 700, 'DOWN_AND_UP');
    #device.touch(270, 650, 'DOWN_AND_UP');


def main():
    print "Start"

    # Connect to the current device returning the MonkeyDevice object
    device = MonkeyRunner.waitForConnection()

    #MonkeyRunner.alert("Starting Activity", "monkeyrunner", "OK")

    if not device:
        print "Couldn't get connection"
        sys.exit()
    print "Found device"



if __name__ == '__main__':
    main()

vi

제목: vi/vim notes
글쓴이 : Darin Brezeale
원문 : http://home.comcast.net/~brezeale/vim_notes.html
번역자 : 손권남 Translator : KwonNam Son
작성일 : 05-28-2002

* 글 수정하기
* 복사와 붙여넣기
* 삭제하기
* 외부 명령어
* 삽입하기
* 이동하기
* 검색과 치환
* 옵션들
* 기타
* Tips

글 수정하기
◆ cc : 한 줄 전체 수정하기
◆ C : 커서의 현재 위치부터 줄의 끝까지 수정하기
◆ cw : 커서의 현재 위치부터 단어의 끝까지 수정하기
◆ J : 아래 줄을 현재 줄과 합치기
◆ :12,24j : 12줄부터 24줄까지 합치고 각 줄의 공백은 그대로 두기.
◆ ~ : 대소문자 전환하기
◆ r : 현재 커서아래에 있는 글자를 다른 문자로 바꾸기
◆ 4rx : 현재 커서 이후 4개의 글자를 "x" 문자로 바꾸기
◆ R : ESC키를 누를때 까지 덮어쓰기
◆ s : 현재 글자를 삭제하고 삽입 모드로 변경하기
◆ S : 현재 줄을 삭제하고 삽입 모드로 변경하기
◆ >> : 현재 줄을 오른쪽으로 들여쓰기 하기
◆ 3>> : 세 줄을 오른쪽으로 들여쓰기 하기
◆ >% : 괄호등이 있는 곳에서 실행하며, 괄호의 다른 짝이 되는 부분까지를 오른쪽으로 들여쓰기 하기
◆ >} : 한 문단을 오른쪽으로 들여쓰기 하기
◆ >'m : m 문자로 마크된 줄까지 들여쓰기 하기 (마크는 mx 에서 x를 원하는 마크 문자로 지정해서 한다)
◆ << : 왼쪽으로 내어쓰기 하기(그 외 다른 기능들은 들여쓰기와 같은 조합을 사용할 수 있음)

복사와 붙여넣기
◆ yl (와이엘) : 현재 커서 아래의 글자를 복사하기
◆ nyl : n 개의 문자를 복사하기
◆ yw : 한 단어 복사하기
◆ yy : 현재 줄 복사하기
◆ Y : 현재 줄 복사하기(yy와 동일)
◆ nyy : n 줄 복사하기
◆ y$ : 줄 끝까지 복사하기
◆ y) : 문장(구두점 등으로 끝남) 끝까지 복사하기
◆ y'x : 현재 위치부터 마크 x 까지 복사하기 (마크는 mx 에서 x를 원하는 마크 문자로 지정해서 한다)
◆ y/word : 현재 위치부터 "word"라는 단어 직전까지 복사하기
◆ "ay'm : 현재 위치부터 마크 m까지를 복사하여 버퍼 "a"에 저장하기. ":e filename" 혹은 ":n filename"으로 다른 파일로 이동하여서로 다른 파일간의 복사에 사용될 수 있음.
◆ "ayy : 버퍼 "a"에 현재 줄을 복사하여 저장하기
◆ "a3Y : 버퍼 "a"에 세 줄을 복사하여 저장하기
◆ "A3Y : 버퍼 "a"에 3줄을 복사하여 그 이전 버퍼 내용에 이어 저장하기
◆ "ap : 아래 줄에 버퍼 "a"의 내용을 붙여넣기
◆ p : 현재 커서 위치의 오른쪽에 붙여넣기
◆ P : 현재 커서 위치의 왼쪽에 붙여넣기

삭제하기
◆ x : 현재 커서 아래의 문자 삭제하기
◆ dd : 현재 줄 삭제하기
◆ d^ : 현재 위치부터 줄의 처음까지 삭제하기
◆ d$ : 현재 위치부터 줄의 끝까지 삭제하기
◆ dw : 커서의 현재 위치부터 단어의 끝까지 삭제하기
◆ d3w : 3 단어 삭제하기
◆ 3dd : 현재 줄포함 아래로 3 줄 삭제하기
◆ d/word : 현재 위치부터 오른쪽으로 "word" 검색하여 그 직전까지 삭제하기
◆ d?word : 현재 위치부터 왼쪽으로 "word" 검색하여 그것을 포함해서 삭제하기
◆ dfx : 현재 위치부터 오른쪽으로 문자 "x" 까지 삭제하기
◆ dFx : 현재 위치부터 왼쪽으로 문자 "x" 까지 삭제하기
◆ D : 현재 위치부터 줄 끝까지 삭제하기
◆ u : 삭제 취소하기
◆ U : 방금 수정했던 줄 전체를 원래 상태로 되돌리기

외부 명령어 - 여기 지정된 외부 명령어들은 Unix/Linux의 명령어들이다
◆ :!cmd : 외부 프로그램 실행하기
◆ :%!cmd : 버퍼 내의 모든 내용을 외부 프로그램의 입력으로 제공하고, 외부 프로그램을 실행한 결과로 현재 버퍼를 대체한다.
◆ !! : 현재 줄을 외부 프로그램의 입력으로 제공하고, 외부 프로그램을 실행한 결과로 대체한다.
◆ !$ : 현재 줄을 외부 프로그램의 입력으로 제공하고, 외부 프로그램을 실행한 결과로 대체한다.
◆ !L : 현재 커서 위치 줄부터 부터 화면상의 마지막 줄까지를 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다.
◆ !23G : 현재 커서 위치 줄부터 23번째 줄까지를 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다.
◆ !/word : 현재 줄 부터 해당 "word"가 검색된 줄까지를 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다.
◆ !) : 현재 줄 부터 문장 끝까지의 줄을 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다.
◆ !} : 현재 줄 부터 문단 끝까지의 줄을 외부 프로그램의 입력으로 제공하고, 외부 프로그램 실행 결과로 대체한다.
◆ !!date : 현재 줄을 날짜로 대체
◆ !!cut -c41- : 현재 줄에서 처음 40칸(41 - 1)을 삭제한다.
◆ 3!!sort : 현재 줄 부터 3줄을 sort의 입력으로 제공하고, 그 실행 결과로 대체한다.
◆ !Grev : 현재 줄 부터 끝까지 "rev" 명령의 입력으로 보내고 그 결과로 대체한다. rev 명령은 각 줄의 문자들을 뒤집는다. ( 예) apple -> elppa)
◆ !}sort : 현재 줄 부터 문단 끝(첫번째 빈 줄 나오는 부분)을 정렬한다.
◆ :'x,.!sort : mx 명령으로 마크된 줄부터 현재 줄까지를 정렬한다.
◆ :r !ls : ls 명령의 결과를 현재 줄 다음 줄 부터 삽입한다.
◆ :'t,'b !spell : 마크 t 부터 마크 b 까지 스펠링 체크
◆ :'t,. !awk '{print $3 " " $2 " " $1}' : 마크 t 부터 현재 줄까지 3 컬럼을 역순으로 배열한다.
◆ :%! sed G : 전체 문서의 각 줄에 빈 줄을 삽입한다.
◆ :1,5! sed G : 1 - 5 줄에 각각 빈 줄을 삽입한다.
◆ :'x,.!sed '/^$/d' : 마크 x 줄부터 현재 줄까지 빈 줄을 삭제한다.

삽입하기
◆ i : 현재 문자 앞에 삽입하기
◆ I : 현재 줄의 맨 첫칸에 삽입하기
◆ 20I- : 줄의 시작부분에 20개의 빼기기호(-) 삽입하기
◆ a : 현재 문자 뒤에 추가하기
◆ A : 현재 줄의 맨 끝에 추가하기
◆ o : 현재 줄 아래에 새 줄 삽입하고 입력 시작
◆ O : 현재 줄 위에 새 줄 삽입하고 입력시작

이동하기
◆ h : 커서를 한 칸 왼쪽으로
◆ j : 커서를 한 칸 아래로
◆ k : 커서를 한칸 위로
◆ l : 커서를 한 칸 오른쪽으로
◆ 0 : 커서를 줄의 맨 처음으로
◆ $ : 커서를 줄의 끝으로
◆ w : 한 단어 앞으로(현재 위치에서 오른쪽으로, 구두점이 있으면 구두점 앞까지 단어로 간주)
◆ 3w : 세 단어 앞으로
◆ W : 구두점을 무시하고 공백 기준으로 한 단어 앞으로
◆ b : 한 단어 뒤로(현재 위치에서 왼쪽으로, 구두점이 있으면 구두점 앞까지 단어로 간주)
◆ B : 구두점을 무시하고 공백 기준으로 한 단어 뒤로
◆ e : 커서를 단어의 맨 끝으로
◆ E : 구두점을 무시하고 공백을 기준으로 커서를 단언의 맨 끝으로
◆ G : 커서를 파일의 맨 마지막 줄로
◆ nG : 줄번호 n 의 맨 첫칸으로
◆ 1G : 파일의 맨 첫 줄로
◆ n| : n번째 칸으로. | 은 Shift- 를 누르면 나오는 세로 바이다.
◆ f : 현재 줄에서 앞으로로 한 문자 찾아가기
◆ fa : 현재 줄에서 앞쪽으로 문자 "a" 찾아가기
◆ 2fa : 현재 줄에서 앞쪽으로 두 번째 문자 "a" 찾아가기
◆ F : 현재 줄에서 뒷쪽으로 문자 찾아가기
◆ Fz : 현재 줄에서 뒷쪽으로 문자 "z" 찾아가기
◆ t : 현재 줄에서 앞쪽으로 지정된 문자의 바로 앞 칸으로
◆ T : 현재 줄에서 뒷쪽으로 지정된 문자의 바로 뒷 칸으로
◆ ) : 다음 문장으로(구두점으로 구분)
◆ } : 다음 문단으로(빈 줄로 구분)
◆ ] : 다음 섹션으로
◆ % : 괄호 짝 찾아가기
◆ ^B : 한 페이지 뒤로 스크롤한다. (^B 는 Ctrl-B를 의미한다)
◆ ^F : 한 페이지 앞으로 스크롤한다.
◆ ^U : 반 페이지 뒤로 스크롤한다.
◆ ^D : 반 페이지 앞으로 스크롤한다.
◆ z: 현재 줄을 화면 맨 위로 올린다.
◆ z. : 현재 줄을 화면 가운데로 옮긴다.
◆ z- : 현재 줄을 화면 맨 아래로 내린다.
◆ m : 마크(mark)를 시작한다. m 다음 문자가 마크의 이름이 되며, 문자는 a-z 중 아무것이나 될 수 있다.
◆ ma : 현재 위치를 문자 "a"로 마크한다.
◆ 'a : "a" 마크의 줄로 이동한다.
◆ `a : "a" 마크된 문자로 이동한다.
◆ '' : 직전에 있던 줄로 이동한다.(자동 마크)
◆ `` : 직전에 있던 문자로 이동한다.(자동 마크)

검색과 치환
◆ :set ic : 대소문자를 무시한다. noic 는 대소문자 가림. 이 설정에 따라 검색과 치환시 검색어의 대소문자 무시여부가 결정된다.
◆ /word : word를 앞으로 검색한다.
◆ ?word : word를 뒤로 검색한다.
◆ n : 검색한 단어의 앞방향 다음 위치로 이동한다.
◆ N : 검색한 단어의 뒷방향 다음 위치로 이동한다.
◆ * : 현재 커서 위치에 있는 단어를 앞으로 검색한다.(vim)
◆ # : 현재 커서 위치에 있는 단어를 뒤로 검색한다.(단어 단위 일치, 완전한 한 단어로 존재할 경우에만 검색됨) (vim)
◆ g* : 현재 커서 위치에 있는 단어를 앞으로 검색한다.(부분 일치, 다른 단어의 일부라도 검색됨) (vim)
◆ g# : 현재 커서 위치에 있는 단어로 뒤로 검색한다.(부분 일치) (vim)
◆ :noh : 검색된 단어에 대한 강조 표시를 끈다.
◆ :s/old/new/ : 현재 줄에서 처음 만난 old 문자열을 때 new로 치환한다.
◆ :s/old/new/g : 현재 줄에 있는 모든 old 문자열을 new로 치환한다.
◆ :%s/old/new/g : 현재 버퍼에 있는 모든 old 문자열을 new로 치환한다.
◆ :s/old/new/gc : 치환시 치환여부를 물어본다.
◆ :%s/^V^M//g : DOS의 Carrage Return(^M)을 모두 제거한다. (^V^M 은 Ctrl-V, Ctrl-M을 의미한다)
◆ :%s/,/^V^M/g : 버퍼 전체에서 쉼표를 새줄로 바꾼다. (DOS Carrage Return 이 추가될 것 같겠지만, UNIX에서는 실제로는 newline 만 추가된다)
◆ :%s/s*$// : 줄 끝에서 공백을 제거한다.
◆ :%s/[ ^I]*$/!d : 줄 끝에서 공백을 제거한다.(^I는 Tab키이다)
◆ :%s/.*/L&/ : 버퍼 전체를 소문자로 변경한다.(U는 대문자로)
◆ :s/.*/u&/ : 줄의 첫번재 문자를 대문자로 변경한다.
◆ :%s/<./u&/g : 현재 버퍼의 모든 단어의 첫번째 문자를 대문자로 변경한다.
     < 단어의 시작을 의미한다.
     . 위와 합쳐져서 단어의 첫번째 문자를 의미한다.
     u VI에게 치환할 문자열의 다음 문자를 대문자로 바꾸라고 지시한다.
     & 일치한 나머지 문자열들을 의미한다.

◆ :s/book{./l&/ : book을 포함해서, { 직후의 첫번째 문자까지 소문자로 변경한다.
◆ :'x,.s/([a-z])=/1 =/ : 마크 x 부터 현재 줄까지, 알파벳소문자와= 기호인 문자열을 같은 문자에 한 칸 공백에 = 기호로 바꾼다. 예) book= >> book =
◆ ::%s/(That) or (this)/2 or 1/ : "That or this"를 "this or That"으로 바꾼다.
◆ ::%s/(^\foilhead{(.*)})/%1^M\section{2}/ : "foilhead"로 시작하는 줄에서 "foilhead"를 주석처리(주석기호는 %)하고, 그 아래줄에 "foilhead"를 "section"으로 바꾼 줄을 생성해 넣는다. 아래와 같은 예제가 있을 때,
foilhead{haha} 이런저런...
foilhead{hihi} 그럭저럭...

아래처럼 바뀐다.
%foilhead{haha}
section{haha} 이런저런...
%foilhead{hihi}
section{hihi} 그럭저럭...

◆ ::%s/(.*)/1/ : 모든 줄에 있는 문자열을 HTML 로 감싼다.
◆ :s/ (d{1,2}).(d{1,2})(.*)/
1.23 : 현재 커서가 위치한 아래와 같은 줄을 
1.1 Accessing Substring

다음처럼 바꾼다.
1.1 Accessing Substrings

◆ :'x,.s/^/#/ : 마크 x 부터 현재줄까지 줄 시작 부분에 # 기호를 넣는다.
◆ :s/edu/edu/ : edu로 끝나는 줄들을 다음줄과 합친다.(새줄 삭제)
◆ :& : 직전 치환 명령을 다시 실행한다.
◆ :g/string/d : string 문자열을 포함한 모든 줄을 삭제한다.
◆ :g/.c/+|s/^/.cc/ : 모든 ".c" 명령을 찾아서, 그 다음 줄로 가서, 줄 처음에 ".cc"를 삽입한다.look for all ".c" commands, jump to next line, substitute the beginning of line with ".cc".
◆ :g/^..*/|s//U&/ : "."으로 시작하는 줄의 모든 문자를 대문자로 바꾼다.
◆ :v/string/d : string을 포함하지 않은 모든 줄을 삭제한다.
◆ :g/.*/m0 : 현재 파일의 모든 줄의 순서를 바꾼다. m0 는 현재 줄을 0번째 줄로 이동하는 ex 명령이다.
◆ : : 이전 명령 목록
◆ "zyy 그 후에 @z : "zyy 는 현재 줄을 버퍼 z 에 넣는다. 그리고 @z 는 z 버퍼의 내용을 실행한다. 이것을 이용해서 긴 문자열 검색 패턴등이 문서에 있을때 버퍼에 그 패턴을 저장하고, 바로 검색하는 등의 일을 할 수 있다.
◆ :v/./d or :g/^$/d : 빈줄을 삭제한다.
◆ :g/^s*$/d : 공백만 있는 모든 줄을 삭제한다.
◆ :v/./.,/./-1join : Replaces multiple blank lines with just one blank line. (작동안됐음)
◆ Q:g/^.ds/i 엔터키 .ks 엔터키 :vi : globally look for the pattern ".ds" at the beginning of a line (^), and insert (i) a line before each one and the characters ".ks". The back slash () is used to hide the return. Also global commands that require more than one line have to be done in ex mode, as shown. : 정확히 기능 파악 안됨
◆ Q엔터키:g/xx/a엔터키these are the엔터키characters xx.엔터키:vi : globally look for the pattern "xx", and append after each the sentence shown. End the sentence with a return. : 정확히 기능 파악 안됨

옵션들
◆ :se ai : 자동 들여쓰기(:se noai 로 끈다)
◆ :se ff=unix : 파일 포맷을 unix 방식으로 지정한다.(dos,mac 가능)
◆ :set ic : 검색시 대소문자 무시(반대 :set noignorecase)
◆ :se list : 탭과 새줄을 특수문자로 표시해준다.
◆ :se nu : 줄 번호를 출력한다.(:set nonu 로 끈다)
◆ :se sm : 대괄호나 괄호 입력시 대응하는 대괄호나 괄호를 보여준다.
◆ :se smd : 현재 모드를 출력한다.
◆ :se sw=2 : 들여쓰기를 공백 2개로 설정한다.
◆ :se tabstop=4 : 탭 크기를 공백 4개로 설정한다.
◆ ^^D : 글 입력 상태에서 입력하며, 현재 줄에서 자동 들여쓰기를 끄고, 다음줄에서는 현재 위치에서 다시 입력을 시작한다.(실제로는 다음줄에서 들여쓰기가 일어나지 않았다)
◆ 0^D : 글 입력 상태에서 입력하며, 자동 들여쓰기를 재설정한다. 왼쪽 끝에서 입력을 다시 시작한다.
◆ :set nobackup : 백업파일(*~)을 생성하지 않는다.
◆ :set formatoptions-=r : 주석(//, /* 등)을 쓰고 엔터를 쳤을 때 다시 주석이 출력되지 않게 한다.
◆ :set sw=4 sts=4 ts=8 et : 소스코드 인덴트를 공백 4글자로 맞춘다. Tab 키를 눌러도 공백이 들어가게된다. sts(softtabstop) 설정에 따라 공백 개수가 결정되며 et(expandtab) 옵션에 의해 Tab키 대신 공백이 들어가게 된다. 이 상태에서 Tab을 누르고 싶다면, 를 치면된다. 실제 Tab이 삽입 될 때는 8 자리로 인식된다(ts=8 때문) (해제는 :set noet sts=0)
◆ set nohlsearch : 검색시 검색어 반전 안함
◆ set guioptions-=m : GVIM에서 메뉴를 없앤다.
◆ set guioptions-=T : GVIM에서 툴바를 없앤다.

기타
◆ ^G : 파일명, 상태, 현재 줄번호, 상대적인 위치 등을 출력한다.
◆ ^L : 화면 다시 그리기(가끔씩 ^P 혹은 ^R)
◆ ^Q : MS-Windows에서 Ctrl-V가 "붙여넣기" 기능을 할 때 Ctrl-Q를 Ctrl-V 기능(특수키 입력)으로 대신 사용한다.(vim)
◆ . : 마지막 명령 재실행
◆ & : 마지막 ex의 치환명령(예 :s/wrong/good) 재실행한다.
◆ vi +/string filename : vi를 시작하면서 string 문자열이 처음 나오는 곳으로 이동한다.
◆ vi -r filename : VI가 다운됐을 때, 작성중이던 파일을 복구한다.
◆ vi `cat file` : file 파일에 들어있는 파일 이름들을 모두 연다.
◆ :r filename : 지정된 파일의 내용을 현재 줄 아래에 삽입한다.
◆ :1,4w filename : 1부터 4줄까지를 지정된 파일명으로 저장한다.
◆ :e filename : 지정된 파일을 편집한다.
◆ :f filename : 현재 파일명을 filename으로 변경한다.
◆ :n : 다음 파일을 편집한다.
◆ :sh : 셸을 실행한다. Ctrl-D를 누르면 셸을 종료하고 VI로 돌아온다.
◆ :vi : VI 모드.
◆ @a : 버퍼 "a"에 있는 문자열을 명령으로써 실행한다. VI 모드와 EX 모드 모두에서 작동한다. 즉 @a 와 :@a 둘다 된다.
◆ 자동완성 : 입력 모드에서, Ctrl-P와 Ctrl-N은 이미 입력되었던 단어들로 자동완성을 시도한다.
◆ : : 실행했던 명령보기

Tips
◆ au GUIEnter * simalt ~x : _vimrc 파일에 이 내용을 추가하면 Windows에서 최대 화면으로 실행된다.
◆ :e ftp://username@hostname/path/to/filename.txt : FTP 경로상의 파일을 읽고 편집한다. 파일이 없으면 생성된다. 경로는 /가 아니라 사용자 홈디렉토리를 기준으로 한다.
◆ :set backupdir=C:/WINDOWS/Temp,./_backup : ~로 만들어지는 백업파일을 저장할 디렉토리를 지정한다. 이 설정이 없으면 편집하는 파일이 있는 디렉토리에 백업파일을 저장한다.
◆ :set directory=C:/WINDOWS/Temp,./_backup : 파일을 편집할 때 생성되는 파일명.swp 파일이 생성되는 디렉토리를 지정한다. 이 설정이 없으면 편집하는 파일이 있는 디렉토리에 백업파일을 저장한다.(http://www.vim.org/tips/tip.php?tip_id=20
◆ :e ++enc=ENCODING : 현재 버퍼의 문자 인코딩을 변경한다.
◆ :TOhtml 혹은 :runtime! syntax/2html.vim : 현재 버퍼 내용을 HTML로 출력한다. ":10,20TOhtml" 같은 명령도 가능하다.
◆ 파일 드래그 앤 드롭시 항상 탭으로 열기 (7.0 이상)

autocmd VimEnter * tab all
autocmd BufAdd * exe 'tablast | tabe "' . expand( "

◆ 윈도우 Gvim에서 연결 프로그램으로 파일 열 때 탭으로 열기 (7.0 이상) : Windows에서HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command 키의 실행 옵션에 --remote-tab을 추가하면 연결 프로그램으로 GVim을 지정했을 경우 이미 GVim이 있으면 해당 GVim 창에서 새 탭을 생성해 파일을 열도록 한다.


Vim 7.0 Tab관련 매핑
" Vim 7.0 탭 매핑 from http://www.vim.org/tips/tip.php?tip_id=1221
map th :tabprev
map tl :tabnext
map tn :tabnew
map td :tabclose 

References

1. vi Fast Reference Guide
2. Vim documentation: starting
3. Best of VIM Tips (VIM's best Features)

Monday, October 14, 2013

UMTS interview questions

UMTS interview questions:
1) What are the RRC states?
a. Cell DCH
b. Cell FACH
c. Cell PCH
d. URA PCH
2) Describe different RRC States?
a. Cell DCH:
· When UE is switched ON, it assumes the CELL_DCH State by default.
· It exists when UE really requires UL/DL dedicated resource.
· UE is characterized at cell level according to its current Active set.
· Logical channels DCCH+DTCH are mapped to transport channel DCH.
· E.g. Voice call(CS), Video telephony(CS+PS)
b. Cell FACH:
· This happens when,
(1) UE doesn’t require continuous circuit connection with n/w, but DL packets will work.
(2) UE is forced to release the n/w resources to decrease the congestion problems (flip-flop between DCH and FACH).
(3) Eventual location updates to support CELL_PCH and URA_PCH states (flip-flop between FACH and PCH).
· E.g. Call on hold(CS), File downloading(PS)
· No dedicated UL/DL is provided. However, UE will keep monitoring to DL common transport channel FACH ‘continuously’ and receives packet data meant for UE itself.
· When UL transmission is required, it uses RACH for 1-2 frames or CPCH for few more frames, depending on common access procedures; still UL transmission will be ‘discontinuous’.
· UE is known on cell level, but this time it’s based on the last cell update it made.
c. Cell PCH:
· This happens when UE doesn’t require an active connection(common/dedicated). But still needs to be connected, as it’s expecting a n/w initiated or terminated call(CS or PS) in future.
· So, no UL transmission is allowed. Selects a PCH(based on algo.) and keep monitoring (receiving) it in ‘discontinuous’ mode(DRX).
· Can commute only into CELL_FACH state.
· E.g. No outgoing call or data receive for long time
· UE is still identified on cell level, but now in the cell where UE made its last update, when it was in CELL_FACH state.
· At regular time interval, UE would have to move in CELL_FACH state to update the location area. If UE is traveling, this update will become frequent because of changing cells.
· In some cases UE can have the transition from CELL_DCH to CELL_PCH, but not vice versa; it has to go via CELL_FACH.
d. URA PCH:
· This can be considered as a general case of CELL_PCH state. Because all the characteristics are same except one.
· That is, UE is known on URA(UTRAN Registration Area) level rather than cell level. It listens to PCH(and updates URA when required).
· If UE is traveling continuously from one cell to another. It would have to transit multiple time to CELL_FACH state for location update. By assigning URA_PCH state, this condition is avoided, since 1 URA contains one or more cells and vice versa.
3) In which conditions UE will be in Cell FACH state?
This happens when,
· UE doesn’t require continuous circuit connection with n/w, but DL packets will work.
· UE is forced to release the n/w resources to decrease the congestion problems (flip-flop between DCH and FACH).
· Eventual location updates to support CELL_PCH and URA_PCH states (flip-flop between FACH and PCH).
E.g. Call on hold(CS), File downloading(PS)
4) What is the difference between Cell PCH and URA PCH state?
· UE is known on URA(UTRAN Registration Area) level rather than cell level
· If UE is traveling continuously from one cell to another. It would have to transit multiple time to CELL_FACH state for location update. By assigning URA_PCH state, this condition is avoided, since 1 URA contains one or more cells and vice versa
5) What is U-RNTI?
URNTI is a 32bit identity.
SRNC identifier + SRNTI makes URNTI
6) Describe the CELL search procedure?
The Cell Search procedure can be summarised into the following steps:
a. Cell Selection: Determine the cell whose received carrier power is the strongest
b. Slot Synchronisation: the UE reads the P-SCH of the strongest carrier and feeds the received signal through a matched filter (that is matched to the Primary Synchronisation Code). The slot timing is detected via detection of peaks in the output of the matched filter.
c. Frame Synchronisation and Scrambling Code Group Identification: the UE reads the S-SCH of the strongest carrier, and correlates the received signal with all the possible 64 Secondary Synchronisation Codes. The output that gives maximum correlation gives the group of the Primary Scrambling Code used in the cell. This process also gives the frame timing since the Secondary Synchronisation Code is different for each slot and the group tells the mapping between slots and SSCs.
d. Scrambling Code Identification: The UE attempts then to read the P-CPICH so as to extract the Primary Scrambling Code used in the cell. The P-CPICH is always scrambled by the Primary Scrambling Code of the cell and is spread a factor 256 and an OVSF whose index is zero. Since the Primary Scrambling Codes are grouped into 64 groups of 8 Scrambling Codes and the S-SCH has
given the Scrambling Code group only 8 possibilities remain. So the P-CPICH is unscrambled separately withevery possible Scrambling Code (8) in the group and only one output will produce correct results and the Primary Scrambling Code of the cell is determined.
e. Read Broadcast Information: Since the P-CCPCH is always scrambled by the Primary Scrambling Code of the cell (which has now been determined) and is always spread using SF=256 with OVSF index=1, The UE can read the P-CCPCH without any problem. The P-CCPCH carries the BCH where system information blocks are broadcast throughout the entire cell. The UE can acquire at this stage various information (e.g. Spreading Factors, OVSF indexes and Scrambling Codes used in other downlink channels, important
parameters for PRACH transmission, Measurement Parameters, Transport Formats etc.) and can then decodeother downlink channels, initiate a PRACH procedure, performs some specific measurements etc.
7) Radio bearer configuration mappings?
· Signalling radio bearer RB0 shall be used for all messages sent on the CCCH (UL: RLC-TM, DL: RLC-UM).
· Signalling radio bearer RB1 shall be used for all messages sent on the DCCH, when using RLC unacknowledged mode (RLC-UM).
· Signalling radio bearer RB2 shall be used for all messages sent on the DCCH, when using RLC acknowledged mode (RLC-AM), except for the RRC messages carrying higher layer (NAS) signalling.
· Signalling radio bearer RB3 and optionally Signalling radio bearer RB4 shall be used for the RRC messages carrying higher layer (NAS) signalling and sent on the DCCH in RLC acknowledged mode (RLC-AM).
· Additionally, RBs whose identities shall be set between 5 and 32 may be used as signalling radio bearer for the RRC messages on the DCCH sent in RLC transparent mode (RLC-TM).
8) What are the types of hand over?
Here are following categories of handover (also referred to as handoff):
· Hard HandoverHard handover means that all the old radio links in the UE are removed before the new radio links are established. Hard handover can be seamless or non-seamless. Seamless hard handover means that the handover is not perceptible to the user. In practice a handover that requires a change of the carrier frequency (inter-frequency handover) is always performed as hard handover.
· Soft Handover
Soft handover means that the radio links are added and removed in a way that the UE always keeps at least one radio link to the UTRAN. Soft handover is performed by means of macro diversity, which refers to the condition that several radio links are active at the same time. Normally soft handover can be used when cells operated on the same frequency are changed.
· Softer handoverSofter handover is a special case of soft handover where the radio links that are added and removed belong to the same Node B (i.e. the site of co-located base stations from which several sector-cells are served. In softer handover, macro diversity with maximum ratio combining can be performed in the Node B, whereas generally in soft handover on the downlink, macro diversity with selection combining is applied.
· Generally we can distinguish between intra-cell handover and inter-cell handover. For UMTS the following types of handover are specified:
· Handover 3G -3G (i.e. between UMTS and other 3G systems)
· FDD soft/softer handover
· FDD inter-frequency hard handover
· FDD/TDD handover (change of cell)
· TDD/FDD handover (change of cell)
· TDD/TDD handover
· Handover 3G - 2G (e.g. handover to GSM)
· Handover 2G - 3G (e.g. handover from GSM)

The most obvious cause for performing a handover is that due to its movement a user can be served in another cell more efficiently (like less power emission, less interference). It may however also be performed for other reasons such as system load control.
9) What are types of measurements?
· Intra-frequency measurements: measurements on downlink physical channels at the same frequency as the active set. A measurement object corresponds to one cell.
· Inter-frequency measurements: measurements on downlink physical channels at frequencies that differ from the frequency of the active set and on downlink physical channels in the active set. A measurement object corresponds to one cell.
· Inter-RAT measurements: measurements on downlink physical channels belonging to another radio access technology than UTRAN, e.g. GSM. A measurement object corresponds to one cell.
· Traffic volume measurements: measurements on uplink traffic volume. A measurement object corresponds to one cell.
· Quality measurements: Measurements of downlink quality parameters, e.g. downlink transport block error rate. A measurement object corresponds to one transport channel in case of BLER. A measurement object corresponds to one timeslot in case of SIR (TDD only).
· UE-internal measurements: Measurements of UE transmission power and UE received signal level.
· UE positioning measurements: Measurements of UE position.
10) What is paging? Why paging is required?
Paging: This procedure is used to transmit paging information to selected UEs in idle mode, CELL_PCH or URA_PCH state using the paging control channel (PCCH).
Paging can be initiated :
· Upper layers in the network may request paging, to e.g. establish a signaling connection.
· UTRAN may initiate paging for UEs in CELL_PCH or URA_PCH state to trigger a cell update procedure.
· UTRAN may initiate paging for UEs in idle mode, CELL_PCH and URA_PCH state to trigger reading of updated system information.
· UTRAN may also initiate paging for UEs in CELL_PCH and URA_PCH state to release the RRC connection.
11) Type of Paging?
· Paging Type 1
· Paging Type 2(UE dedicated paging)
12) When dedicated paging is used?
a. This procedure is used to transmit dedicated paging information to one UE in connected mode in CELL_DCH , CELL_FACH or CELL_PCH (FDD only) state. Upper layers in the network may request initiation of paging.
b. For a UE in CELL_DCH, CELL_FACH or CELL_PCH (FDD only) state, UTRAN initiates the procedure by transmitting a PAGING TYPE 2 message on the DCCH using AM RLC. When not stated otherwise elsewhere, the UTRAN may initiate the UE dedicated paging procedure also when another RRC procedure is ongoing, and in that case the state of the latter procedure shall not be affected.
c. UTRAN should set the IE "Paging cause" to the cause for paging received from upper layers. If no cause for paging is received from upper layers, UTRAN should set the value "Terminating – cause unknown".
13) In what situation UE goes to CELL PCH and URA PCH states?
a. Cell PCH:
This happens when UE doesn’t require an active Connection(common/dedicated). But still needs to be connected, as it’s expecting a n/w initiated or terminated call(CS or PS) in future
b. URA PCH:
In Cell PCH UE is still identified on cell level, but now in the cell where UE made its last update, when it was in CELL_FACH state.At regular time interval, UE would have to move in CELL_FACH state to update the location area. If UE is traveling, this update will become frequent because of changing cells. If UE is traveling continuously from one cell to another. It would have to transit multiple time to CELL_FACH state for location update. By assigning URA_PCH state, this condition is avoided, since 1 URA contains one or more cells and vice versa
14) What is Cell Update Procedure? What are various Cell Update causes?
· Uplink data transmission:
For FDD, if the variable H_RNTI is not set, and for TDD:
if the UE is in URA_PCH or CELL_PCH state; and
if the UE has uplink RLC data PDU or uplink RLC control PDU on RB1 or upwards to transmit:
perform cell update using the cause "uplink data transmission".
· Paging response:
if the criteria for performing cell update with the cause specified above. are not met; and
if the UE in URA_PCH or CELL_PCH state, receives a PAGING TYPE 1 .message fulfilling the conditions for initiating a cell update procedure.
perform cell update using the cause "paging response".
· Radio link failure:
if none of the criteria for performing cell update with the causes specified above in the current subclause is met:
if the UE is in CELL_DCH state and the criteria for radio link failure are ,or
if the transmission of the UE CAPABILITY INFORMATION message fails.
perform cell update using the cause "radio link failure".
· MBMS ptp RB request:
if none of the criteria for performing cell update with the causes specified above in the current subclause is met; and
if the UE is in URA_PCH, Cell_PCH or Cell_FACH state; and
if the UE should perform cell update for MBMS ptp radio bearer request,
perform cell update using the cause "MBMS ptp RB request".
· Re-entering service area:
if none of the criteria for performing cell update with the causes specified above in the current subclause is met; and
if the UE is in CELL_FACH or CELL_PCH state; and
2> if the UE has been out of service area and re-enters service area before T307 or T317 expires:
3> perform cell update using the cause "re-entering service area".
· RLC unrecoverable error:
if none of the criteria for performing cell update with the causes specified above in the current subclause is met; and
if the UE detects RLC unrecoverable error [16] in an AM RLC entity:
perform cell update using the cause "RLC unrecoverable error".
· Cell reselection:
if none of the criteria for performing cell update with the causes specified above in the current subclause is met:
if the UE is in CELL_FACH or CELL_PCH state and the UE performs cell re-selection; or
if the UE is in CELL_FACH state and the variable C_RNTI is empty:
perform cell update using the cause "cell reselection".
· Periodical cell update:
if none of the criteria for performing cell update with the causes specified above in the current subclause is met; and
if the UE is in CELL_FACH or CELL_PCH state; and
if the timer T305 expires; and
if the criteria for "in service area" and
if periodic updating has been configured by T305 in the IE "UE Timers and constants in connected mode" set to any other value than "infinity":
perform cell update using the cause "periodical cell update".
· MBMS reception:
if none of the criteria for performing cell update with the causes specified above in the current subclause is met; and
if the UE is in URA_PCH, Cell_PCH or Cell_FACH state; and
if the UE should perform cell update for MBMS counting ,
perform cell update using the cause "MBMS reception".
15) What is Active set?
Active Set is defined as the set of Node-Bs the UE is simultaneously connected to (i.e., the UTRA cells currently assigning a downlink DPCH to the UE constitute the active set).
16) What is Monitor set and detected set Cells?
a. Cells, which are not included in the active set, but are included in the CELL_INFO_LIST belong to the Monitored Set.
b. Cells detected by the UE, which are neither in the CELL_INFO_LIST nor in the active set belong to the Detected Set. Reporting of measurements of the detected set is only applicable to intra-frequency measurements made by UEs in CELL_DCH state.
17) What are the various types of RNC?
a. Serving RNC
b. Drift RNC
c. Controlling RNC
18) What is the use and difference between CRNC, Drift RNC and SRNC?
RNC from which the UE is currently getting Served or connected to is called SRNC or Serving RNC.
During a soft handover procedure the RNC UE is moving to, is called Drift RNC.
The RNC which controls the movement of UE from Serving RNC to the Drift RNC is called Controlling RNC.
19) What is initial direct transfer message? What is the use?
The initial direct transfer procedure is used in the uplink to establish a signaling connection. It is also used to carry an initial upper layer (NAS) message over the radio interface.
20) What is security mode command? Why it is used?
Security mode command is a RRC Message,
The purpose of this procedure :
· To trigger the start of ciphering or to command the restart of the ciphering with a new ciphering configuration, for the radio bearers of one CN domain and for all signalling radio bearers.
· It is also used to start integrity protection or to modify the integrity protection configuration for all signalling radio bearers
21) What is CCTrCH?
A Coded Composite Transport Channel is the result of combining (multiplexing) several Transport Channels of the same type; i.e.: we can have a CCTrCh made up of one or several DCHs, a CCTrCh made up of DSCHs. One exception is that we can have one or several FACHs multiplexed with a PCH on the same CCTrCh.
A better notation would be for example:
CCTrCh4DCH: A CCTrCh consisting of 4 DCHs
CCTrCh3FACH: A CCTrCh consisting of 3 FACHs
CCTrChPCH,2FACH: A CCTrCh consisting of the PCH and 2 FACHs
22) What is compressed mode?
Higher layers can request a UE to monitor cells on other frequencies (FDD, TDD), or other systems (GSM). This implies that the UE has to perform measurements, on the other frequencies/systems and thus higher layers command the UE to enter Compressed Mode. The UTRAN need to send to the UE all the parameters for the Compressed Mode.
Compression Methods:
When in Compressed Mode the information normally transmitted during a 10 ms frame is compressed in time sothat gaps of adequate length are created. To achieve this one of three mechanisms
· Puncturing
This method is NOT applicable to downlink.
· Spread Factor Reduction
Actually halving the Spread Factor. So with this method if SF is used in non-compressed frames then SF/2 is used in the compressed frames.
· Higher Layer Scheduling
Higher Layers set restrictions so that only a subset of allowed TFCs are used in Compressed Mode.
Compressed Mode Parameter:
TGSN (Transmission Gap Starting Slot Number): A transmission gap pattern begins in a radio frame, called firstradio frame of the transmission gap pattern, containing at least one transmission gap slot. TGSN is the slot numberof the first transmission gap slot within the first radio frame of the transmission gap pattern;
• TGL1 (Transmission Gap Length 1): Duration of the first transmission gap within the transmission gap pattern, expressed in number of slots;
• TGL2 (Transmission Gap Length 2): Duration of the second transmission gap within the transmission gap pattern, expressed in number of slots. If this parameter is not explicitly set by higher layers, then TGL2 =TGL1;
• TGD (Transmission Gap Start Distance): Duration between the starting slots of two consecutive transmission gaps within a transmission gap pattern, expressed in number of slots. The resulting position of the second transmission gap within its radio frame(s) shall comply with the limitations of TS 25.101 (Ref [2]). If this parameter is not set by higher layers, then there is only one transmission gap in the transmission gap pattern;
• TGPL1 (Transmission Gap Pattern Length): Duration of transmission gap pattern 1;
• TGPL2 (Transmission Gap Pattern Length): Duration of transmission gap pattern 2. If this parameter is not explicitly set by higher layers, then TGPL2 = TGPL1.
The following two parameters (integers) control the transmission gap pattern sequence start and repetition:
• TGPRC (Transmission Gap Pattern Repetition Count): Number of transmission gap patterns within the transmission gap pattern sequence; From Figure 10 it seems TGPRC is even, therefore the number of slots in TG Sequence is: 0.5*TGPRC (TGPL1+TGPL2)
• TGCFN (Transmission Gap Connection Frame Number): CFN of the first radio frame of the first pattern 1 within the transmission gap pattern sequence.
23) What is FACH measurement occasion?
GAPs in S-CCPCH to perform measurement on Different Frequencies or Interrat resection.
24) MIB/SB/SIB details?
MIB: The Scheduling of MIB is Static.
25) Why we perform Channelisation or spreading before scrambling?
Before sending a data we need to identify the channel to send the data. A particular Channelisation code is the “identity” for the channel.
Hence we use Channelisation code to select the channel and then scramble it so as to send the identity of the UE over the channel
26) When TMSI , P- TMSI , IMSI , IMEI used?
· TMSI (GSM-MAP): The TMSI (GSM-MAP) shall be chosen if available. The IE "LAI" in the IE "Initial UE identity" shall also be present when TMSI (GSM-MAP) is used, for making it unique.
· P-TMSI (GSM-MAP): The P-TMSI (GSM-MAP) shall be chosen if available and no TMSI (GSM-MAP) is available. The IE "RAI" in the IE "Initial UE identity" shall in this case also be present when P-TMSI (GSM-MAP) is used, for making it unique.
· IMSI (GSM-MAP): The IMSI (GSM-MAP) shall be chosen if available and no TMSI (GSM-MAP) or P-TMSI is available.
· IMEI: The IMEI shall be chosen when none of the above three conditions are fulfilled.
27) What is Auto attached?

Auto Attach
Enabled
Disabled
When Power On
If
MNO I
It will perform a combined Attach
If NMOII
It will do a LAU and Attach.
If UE is Location updated i.e. SIM LAI is same as Cell LAI
Then it will do nothing.
If UE is not Location updated i.e.
SIM LAI differs from the Cell LAI then UE will perform Location Area Update
PS Call
Same RRC connection can be used for the PS call.
Will do a PS attach then the PS call.

28) Why we do a Combined Attach?
If the network operates in Network Mode Of Operation I i.e. NMO I and GPRS MS that operates in Mode A or Mode B will do a simultaneous IMSI attach for GPRS and non GPRS services and shall use the Combined GPRS attach, combined and periodic routing area updating procedures instead of the corresponding MM specific procedures IMSI attach and normal and periodic Location area updating.
29) When UE triggers Event 3A Measurement Report?
Event 3A:The Estimated Quality of currently used UTRAN frequency is below a certain threshold and the estimated quality of the other system is above a certain threshold.
30) How many transport channels will be configured when a CSV and a PSD call is simultaneously going on?
Five transport channels will be configured.
1 for 4 SRBs
3 for CSV
1 for PSD
31) When event 2A, 2B, 2C,2E occurs?
Event 2a: Change of best frequency
Event 2b: The estimated quality of the currently used frequency is below a certain threshold and the estimated quailty of a non-used frequency is above a certain threshold.
Event 2c: The estimated quality of a non-used frequency is above a certain threshold
Event 2d: The estimated quality of the currently used frequency is below a certain threshold
Event 2e: The estimated quality of a non-used frequency is below a certain threshold
32) When event 1A – 1F Event occurs?
event 1A: A Primary CPICH enters the reporting range
event 1B: A primary CPICH leaves the reporting range
event 1C: A non-active primary CPICH becomes better than an active primary CPICH
event 1D: Change of best cell
event 1E: A Primary CPICH becomes better than an absolute threshold
event 1F: A Primary CPICH becomes worse than an absolute threshold
33) Where CK and IK gets generated?
In RRC CK and IK gets generated.
34) Where CK and IK gets stored?
In USIM CK and IK will get stored.
35) Where the Security procedure will start?
Security Procedure will start in RRC but Ciphering will start for AM and UM data security procedure will start at RLC layer. And for TM mode security procedure start at MAC layer.
36) What are the mandatory SIB’s which UE has to read before
campign
campaign? 
SIB 1, 3,5,7,11
37) What are the important RACH parameters and which SIB contains this information?
SIB 7/5
38) Which SIB contains S criteria information?
SIB 3