콘텐츠로 건너뛰기
Home » 분류할 수 없는

분류할 수 없는

NU Shell에서 여러 인자를 외부 명령에 전달하기

컴파일러 명령과 같이 많은 양의 인자를 전달해야 하는 명령을 Nu shell 스크립트에서 호출할 때, 명령들을 변수에 저장하여 호출하면 하나의 변수가 하나의 인자로 취급되어 예상했던 대로 작동하지 않는 문제가 있다. 예를 들어 vim을 빌드할 때 명령줄에서는 다음과 같이 실행한다. 이 때 각 인자를 하나의 변수에 넣고 실행하면? $build_opt 의 값이 따옴표로 묶인 것처럼 하나의 인자로 전달되어 제대로 컴파일이 되지 않는다. 이 경우에는 문자열 변수를 split row 명령으로 분해하여 파이프를 통해 넘겨준다. $in 은 파이프라인으로 넘겨받은 값을 가리키는 변수로 위와 같은 경우외에… 더 보기 »NU Shell에서 여러 인자를 외부 명령에 전달하기

대용량 데이터와 엑셀 파일

엑셀과 같은 프로그램을 스프레드 시트라고 한다. 스프레드 시트는 개념상 무한히 큰 종이를 행과 열로 나누고 여기에 데이터와 수식을 넣어서 표를 계산하거나 데이터를 분석하는 프로그램을 말한다. 하지만 ‘무한히 큰 종이’는 말 그대로 개념적인 것이며, 실제로 컴퓨터의 메모리는 유한하기 때문에 스프레드 시트의 크기 역시 실제로는 유한한 크기를 갖는다.

더 보기 »대용량 데이터와 엑셀 파일

Altair에서 변형 함수 사용하기

Vega-Lite는 몇 가지 간단한 데이터 변형 함수를 제공합니다. 물론 보통의 경우에 차트로 시각화하려는 원본 데이터는 DataFrame의 형태로 나와 있고, 데이터 프레임 자체를 조작하여 원하는 변형을 미리 처리하는 것이 보다 유연하고 강력합니다. (데이터 프레임은 원래 그럴려고 쓰는 것이니까요) 그렇지만 원본 데이터를 미리 조작하기 어려운 경우라면 간단한 변형은 Vega-Lite의 기능을 활용하는 방법도 고려해볼 수 있습니다. 오늘은 이 글을 통해서 Altair에서 데이터 변형을 적용하는 방법을 알아보겠습니다. 인코딩에서 집합 함수를 사용하기 가장 간단하게 쓰이는 방법으로는 차트 정보를 인코딩할 때, 필드 이름 대신에 집합 함수를… 더 보기 »Altair에서 변형 함수 사용하기

Jupyter용 시각화 라이브러리 Altair

파이썬 생태계에서 데이터 시각화 분야에서는 matplotlib이 사실상 독보적인 위치에 있음은 반론의 여지가 별로 없긴합니다. 하지만 일관성이 부족한 API나 그래프의 외관을 예쁘게 만드려면 과다한(?) 노동이 필요한 점은 단점으로 지적받기는 합니다. 이런 문제를 극복하기 위해서, 기본적으로 예쁜 그래프를 만들 수 있도록 해주는 Seaborn이나, R의 ggplot의 인터페이스를 이식해온 plotnine 같은 대안이 존재합니다.

데이터 시각화에 대한 니즈는 유독 파이썬에서만 있는 것은 아니기에, 다른 많은 언어들에서도 훌륭한 데이터 시각화 도구들이 나오고 있습니다. jupyter의 경우 웹 기반의 노트북을 지원하고 있기 때문에 자바 스크립트로 만들어진 프론트엔드 시각화 도구를 접목하여 사용하기가 용이합니다. 자바 스크립트 쪽에서 선언적인 API, 높은 자유도 등의 요구조건을 만족하는 시각화 프론트엔드로 Vega가 있습니다.

더 보기 »Jupyter용 시각화 라이브러리 Altair

예금과 적금의 차이

예금 예금은 일정기간을 정해놓고 자신의 돈을 은행에 맡기는 것을 말한다. 예금의 종류에는 보통예금, 정기예금, 당좌예금이 있다. 보통 예금 : 입출금이 자유롭고 금액이나 기간에 제약이 없음 당좌 예금 : 돈을 은행에 두고 예금자의 요구에 따라 일부 혹은 전부를 언제든 지급받는 예금 정기 예금 : 일정한 기간을 정해여 금액을 맡기고 기간 만료일까지 환급을 받지 않는 기한부 예금. 적금 적금은 은행에 일정 금액을 일정 기간 동안 낸 다음 찾는 것으로 다시 정기 적금과 부금으로 나뉜다. 정기적금 : 일정한 기간 동안 일정액을 매월 적립하고… 더 보기 »예금과 적금의 차이

SQLite3 – Union 연산

SELECT 문을 사용해서 여러 테이블에서 결과를 조회할 때, JOIN을 사용하여 여러 테이블의 결과를 하나의 테이블로 결합할 수 있는 것을 살펴본 바 있다. JOIN은 두 개의 테이블을 열 방향으로 이어 붙이는 결과를 만들어 낸다. 이와 달리 각 열의 구성이 비슷한 테이블들을 아래/위, 즉 행 방향으로 이어붙이는 방법도 필요할 것이다. 이 때 사용할 수 있는 연산자가 바로 UNION이다. UNION은 하나 이상의 데이터베이스에서 SELECT 쿼리를 사용해 얻을 수 있는 비슷하게 생긴 여러 데이터를 하나의 테이블로 결합할 때 사용한다. 이 때 특이한 점은 연결되는… 더 보기 »SQLite3 – Union 연산

[vim] coc-python의 인터프리터가 변경되지 않을 때

coc-python에서 파이썬 파일을 편집할 때 인터프리터가 아무거나 설정되기 때문에 ~/.vim/coc-settings.json 파일에 기본 파이썬 인터프리터 경로를 다음과 같이 설정하면 인터프리터를 고정할 수 있다. 문제는 이렇게 설정했을 때에는 별도의 프로젝트별 .vim/coc-settings.json에서 설정을 해주지 않는 이상, python.setInterpreter에서 설정한 값으로 변경이 안된다는 것이다. 방법은 두 가지인데, coc-settings.json에서 기본 인터프리터 경로를 빼거나, 아니면 다음과 같이 coc#config()함수를 호출하는 것이다. 이렇게 호출한 뒤에 :CocRestart하면 적용된다.

타입 지우기 – Type Erasure (Swift)

프로토콜은 특정한 타입에 기대할 수 있는 인터페이스를 정의한 것입니다. 어떤 코드에서 사용되는 객체의 타입을 강제한다는 것은, 해당 타입의 인터페이스를 사용하기 위함임을 의미하는 것과 같습니다. x.foo 라는 프로퍼티를 코드에서 참조한다면, 변수x는 foo 라는 프로퍼티를 가지고 있는 타입이어야 하기 때문입니다. 만약 이 foo가 어떤 P라는 프로토콜에서 선언되었다면, x의 타입은 P라는 프로토콜을 채택한 임의의 타입이어도 무방합니다. 이 말은 단순히 인터페이스의 측면에서 봤을 때, 프로토콜은 그 자체로 타입처럼 간주되는 것이 가능하다는 말입니다.

더 보기 »타입 지우기 – Type Erasure (Swift)

오일러 프로젝트 81

문제

\begin{pmatrix}  131  & 673 & 234 & 103 & 18\\ 201  & 96 & 342 & 965 & 150 \\ 630 & 803 & 746 & 422 & 111 \\ 537 & 699 & 497 & 121 & 965 \\ 805  & 732 & 524 & 37 & 331 \end{pmatrix}

위와 같은 5 x 5 행렬에서 좌측 상단에서 출발하여 오른쪽이나 아래쪽으로만 움직이면서 우측 하단까지 가는 경로의 합을 구해 보면 아래와 같이 빨갛게 표시된 경로가 2427로서 가장 작습니다.

31KB 짜리 파일 matrix.txt에는 80 x 80 행렬의 정보가 들어있습니다. 위와 같은 방법으로 이 행렬의 좌측 상단에서 출발하여 우측 하단까지 갈 때, 경로합의 최소값은 얼마입니까?

더 보기 »오일러 프로젝트 81
Pages: 1 2

오일러 프로젝트 76

76번 문제는 예전 31번(영국화폐 조합의 수)와 사실상 같은 문제이다. 임의의 자연수 N 을 N보다 작은 자연수들의 합으로 나타내는 경우의 수를 분할수라고 하는데, 이는 결국 1…N-1 의 액면가를 가지는 동전들로 N 만큼의 금액을 만드는 것과 동일한 연산이다.

더 보기 »오일러 프로젝트 76