콘텐츠로 건너뛰기

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 – 스도쿠 문제 풀이

async for 구문의 작동 원리

비동기, 즉 작업이 완료되지 않더라도 리턴하는 함수는 프로그래밍에서 꽤 오랜 역사를 가지고 있는 아이디어입니다. . 비동기 함수는 ‘동시성’ 혹은 ‘병렬처리’를 위해 고안된 개념이기도 하고요. asyncio 가 비동기 처리에 관한 라이브러리라는 것은 그 이름부터 이미 알려주고 있습니다. 그런데 다시 말하지만 ‘비동기’는 동시성이나 병렬처리를 위해 고안된 개념이라는 것입니다. 컴퓨터 공학 분야에서 병렬처리나 분산처리에 대한 논의는 오래전부터 있었고, 지금 널리 사용되고 있는 다중 스레드의 개념도 이때 등장하여, 여러 상황이나 조건들에 의해 채택되고 지금까지 이어지고 있는 것입니다. 거꾸로 말하면 동시성 처리를 위해서 반드시 스레드만… 더 보기 »async for 구문의 작동 원리

Textual 강좌 3 – 위젯과 DOM 쿼리

위젯은 화면의 일정 영역을 관리하는 역할을 담당하는 구성 요소라고 정의된다. 위젯은 앱이 하는 것과 똑같은 방식으로 이벤트에 응답하고, 하위 위젯을 포함하여 계층 구조를 이룰 수도 있으므로 일종의 미니앱이라고 생각할 수 있다. DOM 쿼리 Textual에서 위젯의 UI 스타일은 CSS를 통해서 설정하게 된다. 해석한 CSS 내의 특정한 스타일을 위젯에 적용하기 위해서는 CSS 셀렉터로부터 그에 매칭하는 위젯을 선택할 수 있어야 함을 의미한다. 따라서 Textual에는 웹브라우저와 마찬가지로 DOM 쿼리를 통해 요소를 찾는 기능을 기본적으로 제공한다. query_*로 시작하는 메소드들을 사용하는데, 가장 많이 사용하는 메소드는 query_one… 더 보기 »Textual 강좌 3 – 위젯과 DOM 쿼리