콘텐츠로 건너뛰기

수식 파서를 이용한 계산기 만들기

일전에 수식을 직접 입력 받아 후위식으로 변환하여 계산하는, 사칙연산과 괄호를 처리할 수 있는 계산기를 만들어 본 적이 있는데, 1이 계산기는 지금까지 유용하게 잘 쓰고 있는 중임, 이번에는 좀 다른 계산기를 만들어보고자 한다. 사실 파서를 한 번 직접 구현해보고 싶어서 이리 저리 알아보다가 가장 간단하게 만들어 볼 수 있는 구현체가 수식 파서가 아닐까 해서, 정말 실용적으로 사용 가능한 수식 파서를 사용한 계산기를 구현해 보려고 한다.

더 보기 »수식 파서를 이용한 계산기 만들기

대용량 데이터와 엑셀 파일

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

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

:global 명령

:global 혹은 :g 명령은 Ex 명령인 [cmd]를 전체 혹은 지정한 range 사이의 모든 라인에 중에서 패턴이 일치하는 라인에 대해 실행한다. 의외로 놓치고 활용을 많이 안하는 명령인데, 반복적인 편집 뿐만 아니라 조금만 연습하면 강력한 편집 기능을 구현할 수 있다. 또한 일상적으로는 잘 쓰이지 않는 일부 명령들을 조합하여 유용하게 사용하게 되기 때문에 편집 명령에 대해서도 공부할 수 있는 좋은 출발점이 된다.

더 보기 »:global 명령

모평균의 추정

중심극한 정리에 따르면 모집단의 데이터의 분포에 무관하게, 표본의 크기가 충분히 크다면 표본 평균의 분포는 그 평균의 모평균과 같고, 분산이 모분산을 표본수로 나눈 값인 정규분포에 가까워진다. 이 말은 어떤 집단에서 표본을 추출하여 얻는 표본 평균이 모평균의 근처에 있을 가능성이 높다는 의미이다. 그리고 표본 평균의 분산은 모분산을 표본수로 나눈 값이므로 표본의 수가 충분히 크다면 더더욱 표본 평균은 모평균과 가까워질 것이다. 따라서 표본 조사를 통해 얻은 표본 평균을 통해 모평균을 추정하는 것은 너무 터무니 없는 것은 아닌 것이다. 그렇다면 표본 조사를 통한 모평균의 추정은 어떻게 할 수 있을까?

더 보기 »모평균의 추정

Python 101 : 맵, 필터와 반복문

지난 글에서는 리스트 및 그와 비슷한 집합 형태의 자료형을 살펴보면서 “반복 가능”이라는 개념에 대해서 소개했다. 반복 가능하다는 특성은 꼭 리스트가 아니어도 여러 개의 값을 포함하는 집합/모임(collection)의 성질을 갖는 다양한 자료형에서 나타나는 성질이며, 이러한 특성을 갖는 객체들은 그 내부 구현에 상관없이 for 루프나 comprehension 축약 문법에 적용될 수 있다.

더 보기 »Python 101 : 맵, 필터와 반복문

Python101 : 다른 집합 유형들

지난 글에서 리스트의 특징에 대해서 언급할 때나, 리스트 축약에 대해서 이야기하면서 “연속열”이나 “반복가능”이라는 단어를 사용한 적이 있다. 사실 파이썬에 연속열이나 반복객체 혹은 반복가능객체는 이제는 거의 공식적으로 사용되는 개념이다. 리스트는 이런 “연속열”과 “반복가능”에 공통적으로 속하는 유형의 데이터 타입인 것이다. 이번 글에서는 그럼 리스트 외에 어떤 다른 집합형 데이터 타입이 있는지 알아보고 그 면면을 좀 살펴보기로 하겠다. 값의 타입 일단 값의 타입을 확인하는 방법을 알아보자. 사실 여기서 말하는 타입들은 아주 “대표적인” 파이썬 타입들이며, 사실 파이썬에는 엄청나게 많은 데이터 유형이 존재한다. (사실 어떤… 더 보기 »Python101 : 다른 집합 유형들

Python 101 : 리스트

지난 글에서 파이썬에서 사용되는 가장 기본적인 값의 유형에 대해 살펴보았다. 오늘은 리스트에 대해서 이야기해보려고 한다. 리스트는 여러 개의 값이 연속적으로 배치된 일종의 집합이다. 다른 프로그래밍 언어에서는 배열(Array)이라고 하기도 한다. 사실 배열과 다른 리스트라는 자료 구조가 별도로 존재하기는 하는데 (연결 리스트 같은 걸 들어본 적이 있을지도 모르겠다.) 파이썬의 리스트는 C의 배열과 크게 다르지 않다고 생각하면 된다.

더 보기 »Python 101 : 리스트

vim에서 scss 파일을 컴파일하기

typescript나 scss 처럼 다른 언어로 컴파일하는 스크립트를 작성하고, 이 결과를 별도의 창에서 확인하는 기능을 vim에서 구현하는 방법을 알아보자. 기본적으로 vim에서는 :r 명령을 사용하면 쉘을 통해 실행한 외부 명령의 출력을 현재 버퍼로 가져오는 것을 수행할 수 있다. 그 외에도 job을 이용한 비동기 방식의 처리도 가능하고 아예 vim 내에 터미널 창을 만들어서 실행하는 방법등 여러 방법이 있다. 오늘은 이러한 방법을 사용해서 vim에서 scss를 컴파일한 결과를 보여주는 방법에 대해서 살펴보겠다.

더 보기 »vim에서 scss 파일을 컴파일하기
Pages: 1 2

vim script 함수 총정리

vim에서 자주 사용하는 간단한 매크로는 키 맵으로 정의해서 사용할 수 있다. 하지만 여러 명령을 결합하거나, 데이터를 조작하거나 상황에 따라서 분기해야하는 등의 좀 더 복잡한 동작을 구현하기 위해서는 함수가 필요하다. vim script에서도 함수를 지원하고 있어서 이를 활용할 수 있는데, 오늘은 함수를 정의하고 사용하는 여러 방법에 대해서 정리해보도록 하겠다. 가능하면 이 포스트 하나로 vim 스크립트에서 함수를 정의하고 사용하는 것과 관련된 내용은 모두 다뤘으면 한다. (그리고 이후에 vim script 관련 포스팅을 하더라도 참고용으로 긴 설명 글이 필요하기도 하고…)

더 보기 »vim script 함수 총정리

워드프레스에 jupyter notebook 삽입

워드프레스 포스트에 Jupyter notebook을 삽입하는 방법을 알아보겠습니다. 가장 손쉬운 방법은 Github Gist 에 정적 HTML로 변환한 파일을 업로드하고 해당 Gist를 포스트에 삽입하면 되는 것입니다. 로컬에서 작성한 ipynb 파일을 업로드해도 되지만, Google Colab을 사용하면 Gist로 저장하는 일을 좀 더 간편하게 할 수 있습니다.

더 보기 »워드프레스에 jupyter notebook 삽입