본문 바로가기

기타23

bracketed paste mode 프로그램에 따라 같은 문자라도 직접 타이핑하는 경우와 복사해서 붙여 넣을 경우는 구분이 필요하다. vim에서 코드를 복붙 해봤으면 공감이 갈 것이다. 자동 indentation 기능으로 직접 코딩할 때는 문제없지만, 다른 코드 여러 줄을 복붙 하면 indentation이 엉망이 되는 경우가 있다. 물론 이를 해결해주는 기능도 있지만 더 근본적으로 vim 입장에서 이 코드가 복사한 건지, 직접 입력한 건지 구분할 수 있다면 좋을 것이다. 구분을 위해 사용하는 게 bracketed paste mode이다. 이게 설정되면 붙여 넣기로 추가된 문자에 대해서 앞뒤로 특수 기호가 추가된다. 그 정체는 앞에는 \e[200~, 뒤에는 \e[201~ 가 붙는데 실제 눈에 보이는 건 00~와 01~일 것이다. 복사 여부를.. 2020. 2. 12.
newline의 골치 CR, LF 개행 문자는 참 문제가 많다. 그냥 엔터 아닌가? 하고 넘기면 참 좋겠지만, 엔터도 사실 문자이기 때문이다. 문자라면 그냥 \n 아닌가? 하고 넘기면 또 좋겠지만 이게 아니다. window에서는 \r\n, linux는 \n, Mac OS 구버전에서는 \r 등 다양하다. 문제를 해결하기 전에 이해하는 게 더 중요하니 유래부터 보면 결국 타자기로 거슬러 올라간다. 써본 적은 없지만 키보드와 비슷하게 생긴 옛날 키보드다. 타이핑하면 활자 막대에 잉크를 묻혀 종이에 찍힌다. 이렇게 종이 끝가지 타이핑했으면 다음 줄로 어떻게 내려야 할까? 타자기 왼쪽을 손잡이 하나가 튀어나와 있다. 리턴 레버라 불리는 이 손잡이를 누르고 원위치로 옮기면 다음 줄 처음으로 갈 수 있다. 다음 줄(newline)의 의미를 이 타자기.. 2020. 2. 11.
[bash] history 사용법 이전에 어떤 명령을 입력했었는지 이력을 확인하는 명령이다. 단순히 history 명령만으로는 어제 무엇을 했었나 상기시켜주는 정도밖에 안되고 추가 기능을 활용하면 더욱 쓸모가 있다. !로 시작하는 옵션으로 이전 명령을 실행할 수 있지만 실행 전에 확인을 못한다는 점에서 이건 잘 안 쓰게 된다. 아예 방금 전 명령을 치더라도 직접 보고 하는 게 맘 편하니 오히려 방향키를 더 자주 쓴다. 하지만 방향키만으로는 80% 정도 부족하다. 이전에 입력했던 명령들을 검색 정도는 할 수 있어야 한다. ctrl+r ctrl+r을 누르면 (reverse-i-search) 라는 문구와 함께 이전 명령어를 검색할 수 있는 폼이 뜬다. 검색 결과는 가장 최근의 명령어부터 입력한 문자와 일치하는 명령을 보여준다. backspac.. 2020. 2. 11.
ssh 터널링 aws를 사용하면서 VPC로 가상 네트워크를 만들고, security group으로 방화벽을 설정하다 보니 해당 서버나 서비스에 접근이 필요한 수작업을 해야 할 때에는 주로 사무실/개인 IP와 22번 포트만 열어둔 bastion 서버를 이용한다. 이 bastion 서버를 이용하면 로컬에서 띄운 서버도 포트 포워딩을 통해 VPC 안에 있는 서비스에 접근할 수 있다. 가장 흔히 접하는 db(mysql)의 경우는 접속하는 툴에서 ssh port forwarding을 지원하기도 한다. 하지만 로컬에서 띄운 서버가 VPC에 접근하려면 ssh -L 옵션으로 터널링 프로세스를 띄어 놓아야 한다. ssh -v -N -L :: 옵션 설명 -L: 소켓으로도 가능하지만 주로 [bind_address:]port:host:ho.. 2020. 2. 2.
mongodb index를 통한 쿼리튜닝 쿼리 튜닝은 흔히 slow query를 찾아, 인덱스 비용을 감수해서 추가할지 판단하는 정도로 진행한다. 다른 엔진과 비슷하게 mongodb에서도 explain을 통해 실제로 인덱스를 추가했을 때 예상한 대로 query plan이 생기는지 쉽게 확인할 수 있다. 테스트 데이터를 만들고 인덱스 추가 전/후를 explain을 통해 비교해보자. 먼저 class, grade를 갖는 데이터를 추가한다. > db.test.insertMany([ { class: "A", grade: 1 }, { class: "A", grade: 2 }, ... { class: "A", grade: 9 }, { class: "A", grade: 10 } ]) > db.test.insertMany([ { class: "B", grade.. 2019. 12. 31.
[bash] screen 사용 설명서 screen은 terminal multiplexer로 세션 관리와 함께 여러 개의 창을 사용할 수 있는 명령이다. 백그라운드 데몬으로 실행되어 세션 걱정 없이 오래 걸리는 프로그램을 돌리기 유용하다. 요새는 더 기능이 많은 tmux를 사용하는 것 같은데, 오히려 기능이 많다 보니 열심히 사용하지 않는 입장에서 잘 익숙해지지 않았다. 사용방법 screen 명령으로 새로운 프로세스를 생성해서 attach 한다. ctrl+a 으로 명령 모드로 들어가면 여러 기능을 사용할 수 있다. 세션 attach/detach screen -ls 으로 조회한 screen pid로 attach 할 수 있다. $ screen -r pid 현재 세션에서 빠져나오려면 명령 모드에서 d를 누른다. $ ctrl+a d 세션 이름 변경 .. 2019. 12. 26.