Git Bash 팁 두 가지

류광, 2019/11/05 12:18
Git 자체와는 관련이 없는 Git Bash 팁 두 가지입니다.

저번 달 중순부터 오라일리의 Cybersecurity Ops with bash라는 책을 번역하고 있습니다. 책의 예제 중에 Git Bash를 기준으로 하는 것들이 많은데요. 예전에는 Git Bash를 주로 git을 실행하는 용도로만 사용했는데, 이 책을 번역하면서 좀 더 본격적으로 사용하다 보니 여러모로 감탄을 자아내는 측면도 있고 좀 불편한 부분도 있더군요. 다음은 특히 불편했던 점 두 가지에 대한 간단한 해결책입니다.

한글화된 Windows 고유 명령의 출력이 깨져 나오는 문제의 해결책

Git Bash 창의 문자들은 기본적으로 UTF-8이지만, 안타깝게도 Windows 한국어판의 경우 명령 프롬프트의 기본 문자 집합은 EUC-KR 또는 UHC에 해당하는 CP949입니다. 그래서 Git Bash 창에서 한글화된 Windows 명령을 실행하면 출력 메시지들이 깨져 나옵니다.

예를 들어 다음을 실행하면

$ netstat --help

다음과 같이 전혀 도움이 안 되는 도움말이 나옵니다.

Imgur

환경 변수 또는 Git Bash 창의 설정 메뉴를 이용해서 로캘을 아예 CP949나 EUC-KR 등으로 바꾸는 방법도 있지만, 요즘은 웹페이지든 프로그램 소스 코드이든 대부분의 텍스트 파일이 UTF-8이니 로캘은 아무래도 UTF-8로 두고, 대신 필요에 따라 다음처럼 출력을 iconv로 변환하는 게 나을 것입니다.

$ netstat --help 2>&1 | iconv -f CP949 -t UTF-8

Imgur

2>&1netstat이 도움말을 표준 출력이 아니라 표준 오류로 출력하기 때문에 넣은 것입니다. 모든 명령이 그렇지는 않지만, 어차피 오류 메시지도 봐야 할 것이므로 다른 명령들도 그냥 이렇게 하는 것이 좋겠죠.

참고로 iconv는 Git Bash와 함께 설치되므로 따로 설치할 필요가 없습니다.

매번 iconv -f CP949 -t UTF-8를 입력하기가 번거롭다면 다음처럼 별칭 설정을 ~/.bashrc~/.bash_profile에 넣으면 됩니다.1

alias tou8="iconv -f CP949 -t UTF-8"

다시 로그인(또는 source 적용)한 후에는 다음처럼 좀 더 간결하게 사용할 수 있습니다.

$ netstat --help 2>&1 | tou8

커스텀 man 명령

Git Bash에는 유닉스류 운영체제의 기본 매뉴얼 시스템인 man이 없습니다. Git Bash에 man 명령과 man 페이지들을 설치하는 게 불가능하지는 않겠지만, 좀 더 간단한 해결책은 그냥 웹에서 man 페이지를 찾아 보는 것입니다. 개인적으로는 터미널 창에서 man 페이지를 읽는 것보다 브라우저로 보는 게 더 편합니다.

다음은 주어진 명령의 man 페이지를 브라우저로 띄워주는 셸 함수입니다.

man()
{
  start "http://man.he.net/?topic=$1&section=all"
}

이 함수 정의를 ~/.bashrc./bash_profile에 추가하고 다시 로그인한 후 예를 들어

$ man ls

를 실행하면 기본 브라우저에 ls의 온라인 man 페이지(http://man.he.net/?topic=ls&section=all)가 표시됩니다.

man 페이지들을 제공하는 웹사이트는 많이 있으므로, http://man.he.net보다 나은 사이트가 있다면 man() 본문의 URL을 그 사이트의 것으로 대체하면 됩니다. 단, 명령 이름(함수의 $1)만으로 원하는 man 페이지에 접근할 수 있는 형태의 URL을 제공하는 곳이어야 합니다. 예를 들어 man7.org를 사용하려면 함수 본문을

start "http://man7.org/linux/man-pages/man1/$1.1.html"

으로 바꾸면 됩니다.

top
트랙백 0 : 의견 # + 0

번역서 '신경망과 심층 학습' 출간 소식 및 근황

류광, 2019/10/12 14:19
'Neural Network and Deep Learning: A Textbook'을 번역한 '신경망과 심층 학습' 출간 소식과 번역 마친 책, 번역 시작한 책 이야기.

소식이 좀 늦었습니다. 2월 중순에 탈고한 Neural Networks and Deep Learnig: A Textbook의 번역서가 지난 달 중순에 '신경망과 심층학습'이라는 제목으로 출간되었습니다.

실행 가능한 예제 코드 같은 것은 없고 수학 공식이 많은 교과서임을 주의하시고요. 학부 고학년&대학원용 교재를 독학용으로 좀 더 친절하게 다듬은 책이라고 하면 될 것 같습니다. 텐서플로나 파이토치 같은 기계 학습 프레임워크들을 그저 블랙박스처럼, 그러니까 "이걸 넣으면 저게 나온다" 정도만 알고 사용하는 수준을 넘어서고 싶은, 또는 그런 틀 자체를 벗어나고 싶은 분들에게 이안 굿펠로의 심층 학습과 함께 좋은 독본 세트가 되었으면 합니다.

오탈자나 오역 보고, 질문 및 의견은 이 책을 위한 페이지 http://occamsrazr.net/book/NeuralNetAndDeepLearning로 오세요~

그리고 간단한 근황입니다. 저번 근황 글에서 언급한 Natural Language Processing In Action을 저번 주에 탈고했습니다. 이번 달부터는 오라일리의 Cybersecurity Ops with bash를 번역합니다.

그밖에... 가능하면 올해 안으로 (드디어!) 루아 5.1을 벗어나서 루아 5.3으로 넘어가기 위해 주로 사용하는 루아 확장 모듈(C/C++로 작성된)들을 짬짬이 빌드하고 있습니다. 어제는 Lua-zip(https://github.com/brimworks/lua-zip)을 빌드하느라 삽질을 좀 했습니다. CMake 덕분에 Windows에서도 C/C++ 라이브러리 빌드가 한결 쉬워지긴 했지만 그래도 여전히 어렵습니다...

top
트랙백 0 : 의견 # + 0

'Blockchain By Example' 번역서 '예제로 배우는 블록체인' 출간 소식

류광, 2019/09/05 12:04
'Blockchain By Example'을 번역한 '예제로 배우는 블록체인'이 며칠 전 출간되었습니다.

작년 겨울 출간된 Packt의 'Blockchain By Example'의 번역서 '예제로 배우는 블록체인'이 8월 31일 출간되었습니다.

구체적인 예제 프로젝트들로 비트코인, 이더리움, 하이퍼레저 등 주요 블록체인 플랫폼&프레임워크의 개념과 활용 방법을 배울 수 있는 개발서입니다. 투자나 투기와는 물론 무관하고요.

플랫폼, 프레임워크만큼이나 예제의 언어도 JavaScript, Solidty, Java, Python, C++ 등으로 다양합니다. 이것 저것 설치할 것도 많고 해서 지루할 새가 없는 책입니다. 그리고 예제 위주이긴 하지만 배경 지식이나 개념 설명도 충분히 갖추었기 때문에 이 분야를 처음 접하는 개발자가 첫 번째로 보기에 딱 좋은 책입니다.

예제들이 무조건 따라 하기 좋은 형태는 아닙니다. 관련 패키지나 라이브러리, 언어의 변화에 맞게 예제 코드를 적절히 수정하거나 GitHub에 있는 소스 파일을 참고해서 필요한 코드를 더 추가해야 할 수도 있다는 점에서, 블록체인에 관해서는 초보라도 프로그래밍에는 어느 정도 경험이 있는 개발자를 위한 책이라고 하겠습니다.

이 책을 위한 페이지 http://occamsrazr.net/book/BlockchainByExample에 오탈자나 질문, 의견을 올릴 공간을 마련해 두었으니 활용해 주세요~

top
TAG 번역서
트랙백 0 : 의견 # + 0

Mecab-ko 설정 파일과 사전 디렉터리를 상대 경로로 지정하기

류광, 2019/08/31 18:48
배포와 설치가 쉽도록 Mecab-ko의 설정 파일과 사전 디렉터리를 상대 경로로 지정하는 방법입니다.

본문 열기

top
트랙백 0 : 의견 # + 0

루아 5.2 이상에서 루아 스크립트를 실행 가능한 .bat 파일에 담는 방법

류광, 2019/08/26 17:20
루아 스크립트를 .bat 파일로 만들면 여러모로 편리합니다. goto가 도입된 루아 5.2 이상에서 루아 스크립트를 .bat 파일에 담는 방법을 소개합니다.

본문 열기

top
트랙백 0 : 의견 # + 0

◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [66] : NEXT ▶