파이썬 – 클래스를 사용하지 않기

보통 객체 지향 언어를 설명할 때, 객체 지향의 기본적인 개념으로 클래스를 언급하는 경우가 많습니다. 그리고 자바나 C++ 등의 언어에서도 어떤 현실의 문제를 해결할 때, 그에 맞는 클래스부터 설계하는 방식으로 접근하기도 하지요. 파이썬 역시 객체지향 컨셉이 주가 되는 언어이며, 당연하게도 사용자가 직접 원하는 클래스를 정의하여 사용할 수 있습니다. 실제로 파이썬의 모든 것이 객체이기도 하지요.

그럼에도 불구하고 몇몇 특수한 경우를 제외하면 사실 파이썬에서 클래스를 직접 만들어서 사용하는 방식을 그리 권장하고 싶지는 않습니다.

파이썬 – 클래스를 사용하지 않기 더보기

(Swift) Float 타입 사용법

Float 타입은 32비트 부동 소수점 숫자를 다루기 위해 제공되는 기본 타입이다. 64비트 정밀도를 가지는 Double 타입도 제공된다.


지수(exponent)와 가수(significand)에 대해

컴퓨터에서 사용하는 부동소수점 숫자는 기본적으로 근사값이다. 모두들 알다시피 컴퓨터는 내부적으로 모든 데이터를 이진수로 표현한다. 정수나 자연수에 있어서 진법은 특정한 값을 표시하는데 있어서 필요한 숫자의 개수만 달라지지만 소수점 이하의 값에 대해서는 그 사정이 다르다. 먼저 10진수 13을 생각해보자. 13은 10 + 3 이며 이를 10을 밑으로 하는 다항식으로 쓰면 1 \times 10^1 + 3 \times 10^0 의 꼴로 표현된다. 같은 식으로 이 값을 이진수로 표현하면 1011(2)가 되는데, 이 표현은 다시 이는 1\times2^3 + 0\times2^2 + 1\times2^1 + 1\times2^0 이라는 의미이다.

(Swift) Float 타입 사용법 더보기

multipart/form-data 타입의 HTTP 메시지 구성 방법

파일 업로드를 구현할 때, 클라이언트가 웹브라우저라면 폼을 통해서 파일을 등록해서 전송하게 됩니다. 이때 웹브라우저가 보내는 HTTP 메시지는 Content-Type 속성이 multipart/form-data로 지정되며, 정해진 형식에 따라 메시지를 인코딩하여 전송합니다. 이를 처리하기 위한 서버는 멀티파트 메시지에 대해서 각 파트별로 분리하여 개별 파일의 정보를 얻게 됩니다.

만약 서버사이드가 이러한 방식으로 동작할 때, 웹브라우저처럼 파일을 멀티파트 메시지로 만들어서 업로드하는 것을 별도의 앱에서 구현하려면 어떻게해야 할까요? 그 방법을 알기 위해서 멀티파트 http 메시지가 어떻게 생겼는지를 살펴보면 거기에 해답이 있을 것 같습니다. 먼저 http 메시지의 구조를 보겠습니다.

multipart/form-data 타입의 HTTP 메시지 구성 방법 더보기

사전은 처음이라

이번 시간에는 사전에 대해서 알아보겠습니다. 사전은 리스트와 더불어 대표적인 (그리고 가장 중요한) 파이썬의 데이터 타입 중 하나입니다. 리스트와 마찬가지로 하나 이상의 값들을 담을 수 있는 집합이며, 특이한 점은 담겨지는 객체들(원소라 부르겠습니다)이 별도의 순서를 가지지 않습니다. 대신 모든 값들은 사전 내에서 참조하기 위한 키를 필요로 하며, 이 키를 통해서 저장된 값을 액세스하게 됩니다. 즉 사전의 모든 원소는 키와 값의 쌍으로 취급됩니다. 논리적으로는 (키, 값)의 튜플로 된 리스트와 비슷한 구조라고 생각해도 무방합니다.

사전은 처음이라 더보기

Codable

많은 프로그래밍 작업은 데이터를 어딘가로 전달하는 것과 관련된다. 네트워크를 통해서 전송하거나, 디스크와 같은 영구 저장소로 전달하여 기록할 수도 있다. 프로그램이 실행시간에 사용하는 데이터는 그 필요와 목적에 맞게 구조화되고 각 단위가 연결되어 입체적인 그래프를 형성하기도 하지만, 전달과정에서 만큼은 일렬로 늘어선 비트의 연속체가 되어야 한다. 따라서 필연적으로 어떤 데이터가 유용성을 가지려면 직렬화 될 수 있어야 하고 그 반대로 역직렬화도 가능해야 한다.

이러한 직렬화 / 역직렬화와 관련하여 Foundation은 오래전부터 NSCoding 이라는 기술을 보유하고 있었다. 이는 간단하게 가장 기본이 되는 몇 가지 타입이 인코딩이 가능하다면, 각 객체의 속성을 키-값 쌍으로 묶어서 인코딩할 수 있다는 가정하에 일반적으로 사용될 수 있는 임의의 타입의 데이터까지 간단하게 확장할 수 있는 기술이다. (물론, 현재도 쓰인다. 단 보안상의 문제로 NSSecureCoding으로 대체되었다.)

Codable 더보기