본문 바로가기

전체 글

(20)
[shell script] getopts - 스크립트 옵션 처리 명령어에는 옵션을 같이 입력받는 경우가 대부분이다 옵션은 보통 POSIX에 명시된 형식에 따라 지정하게 되는데 형식은 다음과 같다 $ cmd -a arg1 -bc arg2 --param-x 사용자는 이 옵션들을 셸 기본 변수인 $@, $*, $1... 등을 통해 받아서 파싱하여 각 옵션에 대응할 수 있도록 처리를 해 주게 된다 문제는 이 때 처리해 주어야 할 경우의 수가 상당히 많다는 것이다 예를들어 -bc 처럼 둘 이상의 옵션을 붙여서 사용하는 경우도 있고 옵션값이 붙는 경우도, 아닌 경우도 있고 --param와 같은 long 옵션도 있으며, 그 뒤에 -값이 올 때도 있다 (이 때는 옵션이 아니다) 다행히도 getopts라는 유닉스 내장 스크립트가 이러한 파싱을 대신 해준다 참고로 c의 라이브러리인 g..
Vundle 사용 과정 요약 vi에서 사용하는 각종 플러그인들을 사용하기 위해 Vundle을 사용하게 된다 그 과정을 간단히 정리하고자 한다 작업은 홈 폴더에서 진행한다 vim 설치 보통 기본으로 vim이 설치되어 있겠지만, 그래도 설치해 준다 - 데비안 $ sudo apt install vim - 레드헷 $ sudo yum install vim Vundle 내려받기 $ git clone https://github.com/VundleVim/Vundle.vim.git git이 없으면 설치해 주자 내려받은 Vundle 적절히 위치시키기 $ mkdir -p .vim/bundle $ mv Vundle.vim .vim/bundle ~/.vim/bundle은 vim 플러그인을 관리하기 위한 곳이다 .vimrc 작성 & 적용 .vimrc가 없다..
vi와 vim (Vundle 사용 관련) 이 게시글은 Vundle 설치중 발생한 문제애 대하여 의문이 생겨 작성하게 되었다 문제 발생 과정은 다음과 같았다 Vundle을 설치하여 ~/.vim/bundle 내부에 넣어 주어서 vi를 통해서 사용하려고 하는데 Vundle을 인식하지 못했다 결론부터 말하면 vim을 추가로 설치하여 문제가 해결되었다 여기서 드는 의문점은, 그럼 기본적으로 설치되어 있는 vim과, 패키지 관리자를 통하여 설치하는 vim은 다른 것인가 하는 것이었다 상용 리눅스 버전에는 보통 기본으로 vi가 아닌 vim이 설치되어 있다 vi를 실행해도 VIM - Vi IMproved가 실행된다 심지어 버전조차 똑같다! 따라서 vim을 설치했을 때 무언가 추가로 설정되는게 아닌가 하고 추측해 보았다 다음은 vim을 실행했을 때의 로그 정보..
[Java] ConcurrentModificationException 직역하면 '동시 수정 예외' 라는 뜻으로 일반적으로 Iterator 의 동작 중에 무턱대고 컬렉션의 요소를 더하거나 수정할 때 발생되는 예외이다 >Iterator 동작 원리 왜 동시 수정 예외이고 하니, 한 스레드에서 컬렉션 객체를 순회 중일 때 동시에 다른 스레드에서 해당 컬렉션 객체를 수정할 수 있기 때문이다. 하지만 이름과는 달리 싱글 스레드 작업 도중에도 해당 예외는 발생한다! 다음 코드를 보겠다 ArrayList arrayList = new ArrayList(); //10개 요소 삽입 for (int i = 1; i < 10; i++) { arrayList.add(i); copyOnWriteArrayList.add(i); } Iterator itr = arrayList.iterator(); tr..