콘텐츠로 건너뛰기

띄어쓰기에 대한 생각

업무 메일을 쓸 때 가장 많이 쓰는 말 중에 하나가 메일 말미에 ‘업무에 참고 부탁 드립니다.‘인데요, 어느 날부터 아웃룩에서 이 ‘부탁 드립니다’가 틀렸다고 맞춤법 지적을 하기 시작했습니다. 맞는 말은 ‘부탁드립니다’라고 붙여 쓰는 거라고. 사실 아래아한글 시절부터 이전의 MS워드까지, 워드프로세서들의 한국어 맞춤법 검사 실력은 거의 있으나 마나 한 것이어서 그 말을 곧이 곧대로 믿기가 어려웠습니다. 그리고 느낌상 ‘부탁드립니다’라는 말은 붙여 쓰기에는 너무 긴 것이 아닌가하는 생각도 들었구요. 그래서 한 번 찾아보기로 했습니다. 가장 상위에 표시된 결과에서는 띄어 써야 한다고 합니다. 하지만… 더 보기 »띄어쓰기에 대한 생각

구글 포토에서 아이클라우드로 탈출한 후기

한 때 구글 포토가 백업 용량을 무제한으로 제공해 주겠다고해서, 구글 포토를 사용해서 사진을 백업해왔습니다. 물론 이 이야기의 결말은 저나 이 글을 읽고 있는 여러분이나 모두 알고 있습니다. 사실 AI에게 학습 시킬 이미지 데이터를 모으기 위한 것일 뿐이라거나 하는 이야기는 그 당시에도 있었습니다만, 에이 그래도 구글인데 용량은 넉넉하게 주겠지…하는 순진한 생각을 했던 게 실수였습니다. 구글은 어느 틈엔가 구글 계정의 저장 공간을 하나로 통합했고, 구글 포토에 사진이 많이 올라가 있는 사람은 구글 원 서비스를 구독하지 않으면 메일 용량이 꽉차서 메일을 더 이상 수신할 수가 없었습니다.

더 보기 »구글 포토에서 아이클라우드로 탈출한 후기

Julia의 함수 사용팁

연산자의 함수적 표기 Julia의 연산자는 기본적으로 함수이며, 함수 호출 표기와 같은 방식으로 호출하는 것이 가능합니다. 또한 그 자체로 함수이기 때문에 filter(), map() 과 같이 함수를 인자로 받는 함수에도 연산자를 그대로 적용하는 것이 가능합니다. 특히 + 연산자는 sum() 함수와 같이 여러 인자를 받아 인자들의 합을 구할 수 있습니다. 이 때, 비교 연산자들은 첫번째 인자만 전달된 경우에는 부분 적용된 함수를 생성합니다. 이는 특히 함수를 인자로 전달하는 함수에 사용될 때, 표현을 간결하게 하는데 유용합니다. map / filter / reduce 배열과 관련해서 가장 많이… 더 보기 »Julia의 함수 사용팁

git 사용자 선택 팝업 생략하기

git을 사용하다보면 언젠가부터 아래의 UI가 표시되면서 사용자 계정을 선택하라는 메시지가 표시되어 귀찮습니다. 처음에는 매번 인증을 하라는 건가?라고 생각했는데, 시스템에 git 사용자가 2개가 되면서 어떤 사용자로서 git 명령을 수행할 것인지를 묻는 내용이더군요. 매 번 이렇게 계정을 선택하라는 팝업이 뜨는 것은 git이라는 계정이 자동으로 등록되면서 시스템에 2개의 계정이 등록되어 있기 때문인데, 늘 같은 사용자 계정만 쓴다면 간단히 다음과 같은 명령으로 설정하여 이 귀찮은 계정 선택 팝업을 생략할 수 있습니다. 여기서 my_user_name 부분은 당연히 자신의 사용자 계정이어야 합니다.

vim에서 패턴에 매칭되는 영역을 추출하기

지난 글에서 notepad++에서 특정 패턴에 매칭되는 영역만 추출하는 방법에 대해 소개하였는데요, 이번에는 vim에서 같은 기능을 어떻게 구현할 수 있는지에 대해서 알아보겠습니다. :s/{pattern}/\= 버퍼 내의 텍스트를 치환하는 :s 명령에서, 패턴 다음에 오는 치환할 문자열 부분이 \= 으로 시작하는 경우에는 이 영역이 표현식(expression)으로서 평가됩니다. 만약 표현식을 평가한 결과가 리스트 타입인 경우에는 최종 결과는 개행 문자로 결합된 형태가 됩니다. 이 표현식 내부에서는 submatch()함수가 매치된 텍스트를 얻는데 사용될 수 있습니다. 매치된 전체 영역은 submatch(0)으로 표현하며, 만약 매치 패턴에 그룹을 지정했다면, 괄호 안에는 그룹의 번호가… 더 보기 »vim에서 패턴에 매칭되는 영역을 추출하기

Capslock 키의 활용도 높이기 (AutoHotkey)

여러분은 CapsLock키 많이 쓰시나요? 유용하게 잘 쓰시는 분들도 있겠지만, 저 같은 경우에는 거의 사용하지 않습니다. 심지어 어떤 분들은 이 커다란 키가 뭐하는 키인지 모르는 분들도 계실 것 같고요. CapsLock키에 대해 한 가지 아쉬운 점은, 그 쓰임새가 신통치 않은 것에 비해서는 너무 좋은 자리에 위치하고 있다는 점입니다. 이 낭비되는 키를 어떻게 더 효율적으로 활용할 수 있는 방법이 없을까요? CapsLock키를 다른 키로 변경하기 먼저 해야 할일은 키보드에서 CapsLock 키를 누르더라도 해당 키가 아닌 다른 키로 인식하도록 하는 것입니다. AHK에서도 CapsLock 키를 조합키의… 더 보기 »Capslock 키의 활용도 높이기 (AutoHotkey)

Notepad++ – 특정 패턴의 단어나 문구만 추출하여 정리하기

최근에 텍스트로 된 CSV, JSON 파일과 엑셀을 모두 사용하면서 지난한 작업을 많이 하고 있는데, 다시금 Notepad++의 덕을 많이 보고 있습니다. 단순히 데이터를 포맷팅하거나, 단순한 찾기/바꾸기 외에도 제품바코드 번호나 주문번호 같은 특정 규격의 정보를 큰 파일에서 추출한다거나, 엑셀 파일에서 칼럼을 복사해와서 컴마로 연결하거나 하는 일을 주로 하게 됩니다. 오늘은 이런 일들을 처리하면서 평소에 잘 쓰지 않다가 익숙해진 몇 가지 기능들을 소개하려고 합니다. Notepad++는 정규식을 사용하여 검색이나 치환을 할 수 있는 강력한 기능을 갖고 있습니다. 정규식은 보통 특정 패턴에 매치되는 부분을 찾거나… 더 보기 »Notepad++ – 특정 패턴의 단어나 문구만 추출하여 정리하기

엑셀에서 주어진 생년월일로부터 만나이 구하기

엑셀에서 주어진 날짜를 생년월일로 하는 만나이를 계산하는 것은 상당히 귀찮고 번거로운 일입니다. 만약 생년월일이 A2 셀에 있다면, 그 날짜에 대한 오늘 기준의 만나이는 다음과 같이 계산합니다. 날짜를 년, 월, 일로 분리해서 오늘과 그날을 비교해야하는 로직이기 때문에 불가피하게 수식이 복잡하고 길어집니다. 물론 오늘의 연, 월, 일을 특정한 셀에 넣어두고 참조하는 방법도 있겠지만, 그것도 뭐 그리 내키는 수식은 아닙니다. 하지만 엑셀에서 날짜를 다루는 방식을 이해한다면 좀 더 간단한 만나이 계산을 할 수 있습니다. 엑셀에서 날짜는 1900년 1월 1일부터 하루씩 센 일수로 정의됩니다.… 더 보기 »엑셀에서 주어진 생년월일로부터 만나이 구하기

Rust 기초 (1)

데이터의 변수와 메모리 관리 방식 Rust는 정적 타이핑 언어로, 컴파일 시점에 모든 변수의 타입이 결정됩니다. Rust는 다양한 데이터 타입을 가지고 있는데, 이러한 타입들은 메모리를 사용하는 특성에 따라 스칼라 타입과 복합형으로 구분됩니다. 스칼라 타입은 하나의 단일 값을 의미하는데, 불리언(bool), 정수, 실수, 문자(char) 타입등이 여기에 속합니다. 복합형은 한 가지 정보로만 구성되는 데이터가 아니며, 같은 타입이어도 크기가 다를 수 있는 유형입니다. 문자열(String) 같은 타입이 복합형에 해당합니다. 스칼라 타입은 단일 값이며, 항상 그 크기가 고정되어 있습니다. 따라서 이러한 타입들은 스택에 저장됩니다. 문자열과 같은 복합형은… 더 보기 »Rust 기초 (1)

Python – 스도쿠 문제 풀이

예전에 LiveScript를 사용해서 스도쿠 문제를 푸는 코드를 소개한 적이 있었는데, 세상 쓸데없는 글이었습니다. LiveScript는 별로 알려지지도 않았고, 심지어 제가 처음 관심을 갖고 익혀본 그 즈음부터는 아예 개발도 중단된 상태로 방치되고 있는 언어거든요. 게다가 언어 자체가 함수형 언어식 표현을 적극적으로 도입하고 있고, 가독성하고는 크게 관련이 없다보니 코드 하나하나가 지금 읽어봐도 뭔지 도대체 알 수가 없더군요. (사실 알 수는 있습니다;) 그래서 다시 파이썬으로는 스도쿠를 푸는 프로그램을 어떻게 만드는지 소개하고자 합니다. 이번에는 최대한 간결하고 읽기 편한 코드를 만드는 것을 목표로, 가장 짧게(?) 작성하는… 더 보기 »Python – 스도쿠 문제 풀이