754 posts
파이썬의 filter 내장 함수로 데이터 추출하기

파이썬의 filter 내장 함수로 데이터 추출하기

함수형 프로그래밍에서 데이터 필터링(filtering) 작업을 할 때 반복문 대신에 함수 호출로 처리하는 경우가 많은데요. 이번 포스팅에서는 파이썬의 filter() 함수를 사용하여 특정 조건을 충족하는 요소만 추출하는 방법에 대해서 알아보겠습니다. filter 내장 함수 파이썬의 내장 함수인 filter()는 여러 개의 데이터로 부터 일부의 데이터만 추려낼 때 사용하는데요. 따라서, 여러 개의 데이터를 담고 있는 리스트(list)나 튜플(tuple)을 대상으로 주로 사용하는 함수입니다. 사용 방법은 매우 간단한데요. 기본 문법은

파이썬의 map 내장 함수로 데이터 변환하기

파이썬의 map 내장 함수로 데이터 변환하기

함수형 프로그래밍에서 데이터 맵핑(mapping) 작업을 할 때 반복문 대신에 함수 호출로 처리하는 경우가 많은데요. 이번 포스팅에서는 파이썬의 map() 함수를 사용하여 여러 데이터를 한 번에 변환하는 방법에 대해서 알아보겠습니다. map 내장 함수 파이썬의 내장 함수인 map()는 여러 개의 데이터를 한 번에 다른 형태로 변환하기 위해서 사용하는데요. 따라서, 여러 개의 데이터를 담고 있는 리스트(list)나 튜플(tuple)을 대상으로 주로 사용하는 함수입니다. 사용 방법은 매우 간단한데요. 기본 문법은 다음과 같습니다. ma

Sentry로 애플리케이션 에러 모니터링하기

Sentry로 애플리케이션 에러 모니터링하기

개발 환경에서는 브라우저 콘솔이나 터미널에 에러가 바로 찍히니까 디버깅이 어렵지 않은데요. 프로덕션에 배포하고 나면 이야기가 완전히 달라집니다. 사용자가 "뭔가 안 돼요"라고 제보하면 로그를 뒤지면서 뭐가 문제인지 추적해야 하는데, 이게 생각보다 꽤 고된 작업이거든요 😅 이런 상황에서 빛을 발하는 도구가 바로 Sentry입니다. Sentry는 애플리케이션에서 발생하는 에러를 실시간으로 수집하고, 스택 트레이스와 함께 발생 맥락까지 보여주는 에러 모니터링 서비스인데요. 이번 글에서는 Sentry를 처음 도입하려는 분들을 위해 프로젝

파이썬의 불변(immutable) 자료구조 - tuple, frozenset, namedtuple

파이썬의 불변(immutable) 자료구조 - tuple, frozenset, namedtuple

Immutability (불변성) 최근 소프트웨어 개발 트랜드를 보면 프로그래밍 언어에 관계없이 불변(imuutable) 데이터 타입의 사용을 권장하는 추세입니다. 여러 가지 이유가 있겠지만 메모리의 가격이 계속해서 싸지면서 데이터를 복제하는 대신에 변경하는 것이 더 이상 큰 이점으로 여겨지지 않고 있습니다. 반면에, 데이터를 변경하는 것에 대한 리스크는 멀티 스레드 기반의 동시/병렬 프로세싱 기법이 발달하면서 점점 더 커지고 있습니다. 즉, 여러 스레드가 동시에 데이터를 변경할 경우, 소프트웨어가 어떻게 동작할지 예측이 어렵고 버

파이썬으로 가짜 데이터 생성하기 - Faker

파이썬으로 가짜 데이터 생성하기 - Faker

가짜 데이터 소프트웨어를 개발하다 보면, 특히 시제품(prototype)을 개발하거나, 단위 테스트를 작성할 때 가짜 데이터가 필요할 때가 있습니다. 이럴 때, 직접 가짜 데이터를 하드코딩(hard-coding)할 수도 있겠지만, 좀 더 쉽고 빠르게 가짜 데이터를 얻을 수 있는 방법이 있어서 소개드리려고 합니다. 바로, Faker라는 라이브러리인데요. Faker를 사용하면 가짜 데이터를 정말 너무 간단하게 생성할 수 있습니다. 👍 패키지 설치 패키지 임포트 가짜 이름 생성 name() 메서드를 사용하면 간단하게 가짜 이름을 생성할

파이썬 로깅 설정 - logger, handler, formatter

파이썬 로깅 설정 - logger, handler, formatter

지난 포스팅에서 파이썬의 logging 내장 모듈을 이용해서 정말 기본적인 로깅 방법에 대해서 살펴보았습니다. 이번 포스팅에서는 애플리케이션 규모가 커짐에 따라 어떻게 효과적으로 로깅을 설정해야 하는지에 대해서 다뤄보도록 하겠습니다. 핵심 컴포넌트 로깅 설정을 제대로 하기 위해서는 먼저 로깅 시스템을 구성하는 핵심 컴포넌트를 이해하는 것이 중요합니다. 먼저 가장 로깅 시스템의 가장 근간이 되는 로거(logger)는 로그 메시지를 남기기 위해서 우리가 직접 사용하는 프로그래밍 인터페이스를 제공합니다. 우리는 로거를 통해서 debug(

HTML의 picture 요소로 상황에 맞는 이미지 제공하기

HTML의 picture 요소로 상황에 맞는 이미지 제공하기

웹 페이지에서 이미지를 다룰 때 한 가지 파일로 모든 상황을 커버하기란 쉽지 않습니다. 모바일에서는 세로로 길쭉한 이미지가 잘 어울리는데 데스크톱에서는 가로로 넓은 이미지가 필요할 수 있고, 최신 브라우저에서는 AVIF로 용량을 줄이고 싶지만 구형 브라우저에서는 JPEG로 보여줘야 하죠. <img> 태그 하나로는 이런 분기를 처리할 수가 없습니다. HTML의 <picture> 요소는 바로 이런 문제를 해결하기 위해 등장했는데요. 화면 크기, 이미지 포맷 지원 여부, 해상도 등 여러 조건에 따라 브라우저가 최적의 이미지를 골라서 보여

파이썬에서 환경 변수 다루기 (os.environ)

파이썬에서 환경 변수 다루기 (os.environ)

여러 환경에 파이썬 애플리케이션을 배포하려면 환경 변수라는 것을 이용해야하는데요. 이번 포스팅에서는 파이썬에서 환경 변수에 어떻게 접근하고 설정할 수 있는지에 대해서 알아보겠습니다. 환경 변수란? 먼저 환경 변수(environment variable)가 무엇인지 간단하게 짚고 넘어가면 좋을 것 같은데요. 환경 변수는 운영 체제(operating system) 수준에서 설정되는 변수로, 주로 애플레케이션 수준에서 설정하기가 불가능하거나 어려운 값들을 환경 변수로 관리하는 경우가 많죠. 그중에서도 PATH 환경 변수는 터미널에서 명령어

[GraphQL] React Apollo로 Subscription 호출

[GraphQL] React Apollo로 Subscription 호출

Subscription GraphQL에는 query와 mutation 그리고 subscription 이렇게 총 3가지 operation type이 있습니다. 이 중에 query는 데이터 조회를 위해서 필수적으로 사용되고, mutation은 데이터 변경을 위해서 많이 사용되고 있습니다. query와 mutation 대비 다소 생소한 subscription은 주로 실시간(real-time) 애플리케이션을 구현하기 위해서 사용되는데요. subscription도 기본적으로 query처럼 데이터를 조회를 위해서 사용되지만 작동 방식에서 큰

[GraphQL] Apollo Server로 Subscription 구현

[GraphQL] Apollo Server로 Subscription 구현

Subscription GraphQL에는 query와 mutation 그리고 subscription 이렇게 총 3가지 operation type이 있습니다. 이 중에 query는 데이터 조회를 위해서 필수적으로 사용되고, mutation은 데이터 변경을 위해서 많이 사용되고 있습니다. query와 mutation 대비 다소 생소한 subscription은 주로 실시간(real-time) 애플리케이션을 구현하기 위해서 사용되는데요. subscription도 기본적으로 query처럼 데이터를 조회를 위해서 사용되지만 작동 방식에서 큰

[파이썬] 테스트 모킹 - patch

[파이썬] 테스트 모킹 - patch

지난 포스팅에서 unittest.mock 모듈의 Mock 또는 MagicMock 클래스를 사용하여 기본적인 mocking을 하는 방법에 대해서 알아보았습니다. 이번 포스팅에서는 실전에서 더 많이 쓰이는 unittest.mock 모듈의 patch() 데코레이터를 이용하여 단위 테스트를 좀 더 세련되게 작성하는 방법에 대해서 알아보겠습니다. patching? mocking? unittest.mock 모듈의 patch() 데코레이터를 이용하면 특정 모듈의 함수나 클래스를 가짜(mock) 객체, 좀 더 엄밀히 말하면, MagicMock 인

파이썬 소수 연산 - float 타입과 decimal 모듈

파이썬 소수 연산 - float 타입과 decimal 모듈

float 타입 파이썬의 float 기본 타입은 대부분의 다른 프로그래밍 언어들처럼 소수를 내부적으로 이진수의 형태로 저장합니다. (컴퓨터라는 기계는 결국에 0 또는 1로 모든 데이터를 저장히기 때문이죠...) 예를 들어, 십진 소수 0.875을 float 타입으로 저장하면 이진 소수인 0.111의 형태가 됩니다 (1/2 + 1/4 + 1/8). 하지만 불행이도 모든 십진 소수가 이와 같이 딱 떨어지게 이진 소수의 형태로 표현될 수 있는 것은 아닙니다. 예를 들어, 십진 소수 0.895를 이진 소수로 변환해보면 0.111001010

[파이썬] 테스트 모킹 - unittest.mock

[파이썬] 테스트 모킹 - unittest.mock

본 포스팅의 내용을 문제없이 이해하려면 파이썬의 기본 테스팅에 대한 선수 지식이 필요합니다. 해당 지식이 부족하신 분들은 관련 포스팅를 먼저 읽고 돌아오시는 것을 추천드립니다. Mocking이란? 단위 테스트를 작성하다보면 데이터베이스 또는 외부 API에 의존하는 코드를 테스트해야 할 일이 필연적으로 생기기 마련입니다. 운영 환경 대비 제약이 많은 테스트 환경에서는 실제 데이터베이스와 연동하거나 실제 외부 API를 호출하기가 불가능한 경우가 많습니다. 가령 가능하더라도, 이렇게 외부 서비스에 의존하는 테스트는 해당 서비스에 문제가

파이썬 기본 로깅 - logging 내장 모듈

파이썬 기본 로깅 - logging 내장 모듈

logging 내장 모듈 외부 라이브러리가 없더라도 대부분의 애플리케이션에서는 파이썬에 내장되어 있는 logging 모듈만으로도 충분히 로깅이 가능합니다. logging 내장 모듈은 파이썬만 설치되어 있다면 다음과 같이 인터프리터에서도 간단히 임포트해서 사용해볼 수 있습니다. 심각도 별 로깅 logging 모듈은 5단계의 심각도 따라 다른 메서드를 제공하고 있습니다. 기본적으로 이 중 하나의 메서드에 로깅할 메시지를 인자로 넘겨서 호출하면 로그가 남습니다. 위 프로그램을 실행해보면 다음과 같이 debug와 info를 제외하고 로그가

Pipenv를 사용한 파이썬 가상 환경과 패키지 관리

Pipenv를 사용한 파이썬 가상 환경과 패키지 관리

파이썬의 패키지 매니저 대부분의 프로그래밍 언어들은 자체적으로 패키지 관리 도구(package manager)를 제공하고 있습니다. 자바의 Maven, 자바스크립트의 npm처럼 파이썬에서는 pip라는 매우 간단한 패키지 관리 도구가 있는데요. 다른 언어의 패키지 매니저와 비교했을 때 부족한 부분들이 많다고 느끼실 겁니다. 일단 기본적으로 패키지 설치가 전역으로(global) 설치되기 때문에 한 컴퓨터 상에서 여러 파이썬 프로젝트에 걸쳐 작업을 하기가 힘들고, 프로젝트 별로 설치가 필요한 패키지를 정의하는 방식도 어디는 require

Black으로 파이썬 코드 스타일 통일하기

Black으로 파이썬 코드 스타일 통일하기

코드 스타일 파이썬과 같이 사용차층이 넓은 범용 프로그래밍 언어의 경우, 개발자들이 선호하는 코드 스타일이 다양해지게 됩니다. 개인 프로젝트에서는 자신이 선호에 따라 어떤 방식으로 코드를 포맷팅하든지 코드가 돌아가기면 하면 큰 상관이 없지만, 협업 프로젝트에서는 이러한 개발자 간의 사소한 코드 스타일 차이로 불필요한 감정 싸움이 발생하기도 합니다. 예를 들어, 똑같은 문자열을 표현하기 위해서 개발자 A는 홑따옴표를 사용하고 싶은데, 개발자 B는 쌍따옴표를 사용하고 싶습니다. 만약에 개발자 A가 작성한 코드를 나중에 개발자 B가 수정

파이썬의 venv 모듈로 가상 환경 사용하기

파이썬의 venv 모듈로 가상 환경 사용하기

이번 포스팅에서는 의존성 충돌없이 파이썬 개발을 할 수 있도록 도와주는 매우 유용한 도구인 venv 내장 모듈에서 대해서 알아보겠습니다. 의존성 충돌 문제 하나의 컴퓨터 상에서 Python으로 개발된 여러 개의 프로젝트 돌리는 경우 프로젝트 간에 의존성(dependency) 충돌이 발생하기 쉬운데요. 예를 들어서 프로젝트 A에서 Django 패키지 3.x 버전을 사용하는데, 프로젝트 B에서 Django 패키지를 4.x 버전을 사용하고 있다면, 둘 중 하나의 프로젝트에서는 Django 앱을 실행할 때 오류가 발생할 가능성이 높습니다.

여러 버전의 파이썬 관리하기 (pyenv)

여러 버전의 파이썬 관리하기 (pyenv)

2020년 파이썬 2 지원 종료 파이썬 2는 2020년 1월 1일부로 공식적으로 지원이 중료되었으며, 버전 2.7 이후로는 더 이상 업데이트가 되지 않습니다. (참고: https://pythonclock.org) 하지만 Mac의 경우, 아직도 파이썬 2가 기본 실행 환경(runtime/interpreter)로 사용되고 있어서, 파이썬 3를 사용하려면 추가 설치가 필요한 실정입니다. macOS에 내장된 파이썬의 정확한 버전과 바이너리 파일의 위치는 다음과 같이 확인하실 수 있습니다. Mac에서 파이썬 3 설치 Mac의 패키지 매니저인

Storybook 소개 / 기본 사용법

Storybook 소개 / 기본 사용법

Storybook이란? 스토리북(Storybook)은 한 문장으로 정의가 어려울 정도로 다양한 방식으로 사용되고 있는 UI 컴포넌트 개발 도구입니다. 단순히 회사의 UI 라이브러리를 내부 개발자들을 위해 문서화(documentation)하기 위해서 사용할 수 있고, 외부 공개용 디자인 시스템(Design System)을 개발하기 위한 기본 플랫폼으로도 사용할 수 있습니다. 스토리북(Storybook)을 기본 구성 단위는 스토리(Story)이며 하나의 UI 컴포넌트는 보통 하나 이상의 Story를 가지게 됩니다. 각 Story는 해당

파이썬의 asyncio를 통한 비동기 프로그래밍

파이썬의 asyncio를 통한 비동기 프로그래밍

파이썬에서도 자바스크립트처럼 비동기로 작동하는 코드를 짤 수 있을까요? 이번 글에서는 파이썬에 내장된 asyncio 모듈을 통해 비동기 프로그래밍을 어떻게 수행하는지에 대해서 알아보겠습니다. 동시 프로그래밍의 패러다임의 변화 전통적으로 동시 프로그래밍(concurrent programming)은 여러 개의 스레드(thread)를 활용하여 이루어졌는데요. 하지만 스레드를 이용해서 직접 코딩을 해보신 분이라면 겪어보셨겠지만, thread safe한 프로그램을 작성하는 것은 생각보다 쉬운 일이 아닙니다. 게다가 싱글 코어 프로세서에서 이

Discord