728x90

세상에는 굉장히 다양한 이미지 포맷이 존재합니다. 압축 포맷의 대명사인 JPG 부터 비트맵으로 이미지를 표현하는 BMP, 투명한 이미지가 필요할 때 많이 찾게되는 PNG 와 간단한 애니메이션 용도로 널리 사용되는 GIF 등이 대표적입니다. 사람들은 각자의 목적에 따라 이런 이미지들을 활용하게 되는데요, 서로 다른 여러가지 포맷을 바꾸어 가면서 사용해야 하는 경우가 간혹 생기곤 합니다. 


예를 들어 프론트엔드 디자이너라고 하면 PNG 포맷을 많이 사용하겠지만 책을 한권 같이 쓰고 있다면 TIFF 포맷이 필요할 수도 있습니다. 다양한 이미지 관련 프로그램이나 플러그인으로 포맷을 변경하는 것도 가능하지만 왠지 상황에 맞게 이미지를 캡쳐 할 때부터 PNG, TIFF 등을 정할 수 있으면 좋을 것 같습니다. OS X 운영체제에는 간단한 터미널 명령으로 기본 내장 캡쳐 옵션으로 이미지를 만들때 사용하는 포맷을 변경할 수 있습니다.


[ 캡쳐 이미지 포맷 변경하기 ]

$ defaults write com.apple.screencapture type tiff && killall SystemUIServer


위의 명령을 이용하면 지정된 이미지 포맷으로 쉽게 캡쳐 파일의 형식을 지정할 수 있습니다. && 로 연결된 또 다른 명령은 해당 변경사항이 운영체제를 재부팅 하지 않고 적용될 수 있도록 하기 위한 명령입니다. 간단한 명령이지만 이걸 매번 외워서 치거나 어디에 저장해 두었다가 입력하는 것은 왠지 불합리해 보입니다. 개인적으로는 블로그와 회사 공식 블로그에 글을 올릴때 PNG 를 사용하고 있고 저술 작업을 위해 TIFF 를 쓰고 있어서 아래와 같이 쉘 프로파일을 지정해 보았습니다.


[ .bash_profile 파일에 Alias 를 지정 ]

alias png="defaults write com.apple.screencapture type png && killall SystemUIServer"

alias tiff="defaults write com.apple.screencapture type tiff && killall SystemUIServer"


이렇게 지정해두면 터미널이 실행 될때 alias 가 지정되고 간단히 커맨드 프롬프트에서 png, tiff 를 입력하는 것 만으로 쉽게 캡쳐 이미지 포맷을 변경할 수 있습니다. 캡쳐 이미지 포맷을 자주 변경해야 하는 분들이 계시다면 유용하게 활용하실 수 있겠네요!



728x90
728x90

회사에서 지급받은 맥북에어(MacBook Air)가 3년을 넘기면서 슬슬 배터리 광탈 현상을 보이기 시작했습니다. 아직 회사에서 터치바(Touch Bar)가 내장된 신형 맥북을 지급하고 있지 않아 노트북 교체 신청을 할까 말까 고민했습니다만, 외부 미팅시마다 베터리 걱정에 끙끙 앓느니 뽑는게 낳을거라는 판단에 기존 맥북프로를 한대 지급받았습니다. 일단 메모리와 디스크 용량 커지니 좋고, 외장 모니터를 두개 연결해서 사용하니 이런 천국이 따로 없네요.


안타깝게도 회사에서 타임머신과 같은 장비를 지급해 주진 않기에 새로 받은 맥북에 정성껏 기존 환경에서 쓰던 설정들을 한땀한땀 옮기는 중입니다. 어플리케이션의 환경 설정 파일은 Import / Export 를 통해 쉽게 진행중입니다만, 운영체제 환경설정은 하나씩 옮겨야 하는 탓에 기억도 안나고 (자주 있는 작업이 아니니...) 여러가지로 괴로운 시간을 보내고 있습니다. 내가 이러려고 새로운 PC 달라고 했나 하는 생각에...


그 중 하나가 맥(Mac)의 파인더(Finder)에서 숨김파일을 보여주는 옵션입니다. 회사 인트라넷 게시판 어딘가에 기술된 내용이 있었습니다만 링크가 어디 갔는지도 모르겠고 해서... 구글링 후 다시 한번 블로그에 옮겨 적어 둡니다. 비슷한 경우가 또 언제 생길지 모르니 쉽게 찾아보기 위한 용도입니다. 후후후...


$ defaults write com.apple.finder AppleShowAllFiles YES && killall Finder


위의 명령을 터미널에서 입력하면 실행중인 파인더 프로세스가 모두 종료되고 모든 파일을 보여주도록 변경된 후 파인더가 다시 실행됩니다. 맥에서 숨김파일은 점(".")으로 시작하는 파일이나 폴더이기 때문에, 명령 실행 전후에 해당하는 파일이나 폴더가 보이는지 살펴보시면 됩니다. 언제나 숨김파일이 보이는게 부담스럽다면 필요할 때 위의 명령을 실행하고, 옵션을 "NO"로 바꾸어서 제한하는 것도 방법입니다.


$ defaults write com.apple.finder AppleShowAllFiles NO && killall Finder


- NoPD -

728x90
728x90

터미널에서 대량의 로그 데이터를 다루는데 무척 유용한 명령이 awk 입니다. awk 는 기본적으로 파일 내의 컬럼 구분자가 공백이라는 가정하게 동작합니다. 데이터를 추출하려는 원본 로그 파일이 공백을 구분자로 이용하는 경우 문제가 없지만 CSV (Comma Seperated Value) 형태 혹은 파이프와 같은 구분자로 컬럼을 식별하는 경우에는 구분자가 어떤 문자인지 awk 에게 전달해 주어야 합니다.


[ 예시 로그 파일 ]

$ cat domain.log

2016-03-28, 09:00:00, www.samsung.com

2016-03-28, 09:00:00, www.naver.com

2016-03-28, 09:00:00, www.apple.com

...


위와 같이 사용자들이 접근한 도메인에 대한 이력을 정리한 로그파일이 있다고 가정해 보겠습니다. 각 도메인별로 사용자의 요청 횟수를 카운트 하고 싶다면 아래와 같은 명령이 머릿속에 떠오르실 겁니다. 


$ cat domain.log | awk '{print $3}' | sort | uniq -c | sort -rn


하지만 위의 명령은 awk 의 기본 구분자인 공백을 사용하기 때문에 원하는 결과가 제대로 나오지 않게 됩니다. 로그 파일이 콤마를 명시적인 구분자로 사용하고 있기 때문에 아래와 같이 awk 의 파라메터로 구분자를 알려주어야 합니다. 


$ cat domain.log | awk -F ',' '{print $4}' | sort | uniq -c | sort -rn


자주 사용하지만 자꾸만 잊어버리는 명령어들 시리즈였습니다 ;-)


728x90
728x90

터미널에서 다량의 로그, 텍스트 파일을 핸들링 할때 awk 명령을 파이프로 연결하여 작업하는 경우가 많습니다. 예를 들어 텍스트 파일의 첫번째 컬럼이 "A" 인 행의 세번째 필드를 출력하는 방법은 대략 아래와 같을겁니다.


$ cat sample.txt | awk '$1=="A" {print $3}'


그런데 가끔은 특정한 조건을 만족하는 행의 모든 내용을 출력하고 싶을 때가 있습니다. 컬럼이 몇 개 안된다고 하면 print 명령으로 모든 컬럼을 지정하면 되겠지만 컬럼이 많다면 쉽지 않습니다. 이때는 print 의 파라메터로 $0 을 넘기면 모든 컬럼이 출력되게 됩니다.


$ cat sample.txt | awk '$1=="A" {print $0}'


자주 사용하지 않으면 잊어버리기 때문에 기억을 위해 남겨둡니다.


- NoPD -

728x90

+ Recent posts