본문 바로가기

분류 전체보기110

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.
간단한 파일 대칭키 암호화/복호화 openssl 명령어로 쉘에서 여러 암호화 함수를 사용할 수 있다. 암호를 공통 계정의 서버에 저장하거나 공유할 때 그대로 노출하기가 꺼려질 때 AES-256의 cbc 방식으로 쉽게 처리할 수 있다. 대칭형 방식이기 때문에 암호화/복호화할 때 같은 키를 사용한다. 암호화 openssl aes-256-cbc -a -in password.txt password.txt 파일을 읽어 aes-256-cbc 방식으로 암호화한다. 편의를 위해 -a 옵션을 추가해서 base64로 인코딩했다. openssl aes-256-cbc 명령은 기본으로 salt가 포함된다. Use a salt in the key derivation routines (default) key derivation routines가 어떤 원리인지는 모.. 2019. 12. 24.