Harfang's Perch

  • 글 목록
  • 소개
  • RSS
  • Atom
  • English
  • 한국어
  • 리치 히키와의 인터뷰 (마이클 포거스)

    2017-12-09

    서문

    이 글은 마이클 포거스가 클로저(Clojure)의 창시자인 리치 히키(Rich Hickey)를 인터뷰하여 CodeQuarterly에 게재한 글을 번역한 글입니다. 인터뷰가 게재된 잡지가 발행된 시기는 2011년 6월 경으로 추정됩니다. 이 글을 작성하는 목적은 두 가지입니다.

    1. 보존 CodeQuarterly 사이트와 함께 인터뷰의 일차 출처가 사라졌기 때문에 보존을 위해 사본을 남깁니다.

    2. 한국어 번역
      참 좋은 글인데 한국어 번역본이 없는 것 같아서 공유하고자 번역합니다.

    전체 보기
  • Type-Driven Development with Idris 리뷰

    2017-10-23

    요약

    Type-Driven Development with Idris에서는 타입을 중심으로 하는 소프트웨어 개발 방식을 소개합니다. 기존에는 타입이 데이터가 올바른지 확인하는 정도의 역할을 수행했지만 이 방식에서는 타입이 보다 많은 역할을 수행합니다. 예를 들면 함수 실행 전과 후의 상태를 타입을 사용해서 표현하거나 함수와 데이터가 준수해야하는 계약(contract)을 타입으로 정의할 수 있습니다. 이를 통해 프로그래머가 정한 계약이나 약속을 프로그램이 컴파일 타임에 준수하도록 강제하며, 소프트웨어가 올바르게 작성되었는지를 다른 소프트웨어 개발 방식보다 더 확실하게 보장해줄 수 있습니다.

    이 책에서는 타입 주도 개발(TDD: Type-driven Development)을 이드리스(Idris) 프로그래밍 언어를 사용해서 소개합니다. 이드리스는 범용 순수 함수형 프로그래밍 언어로 이 책의 저자이기도 한 에드윈 브레이디(Edwin Brady)가 만들었습니다. 이드리스는 하스켈과 ML의 영향을 받은 언어로, TDD에 적합한 최신형 타입 시스템을 사용합니다. 이 책에서는 TDD와 함께 이드리스 언어의 기본도 배우게 됩니다.

    전체 보기
  • How to Bake Pi 리뷰

    2017-09-08

    요약

    How to Bake Pi: an Edible Exploration of the Mathematics of Mathematics (파이를 굽는 방법: 수학의 수학에 대한 식용 안내서)는 제빵을 포함한 일상 생활 속의 예시를 사용해서 수학의 목적과 기초적인 개념을 이해하기 쉽게 설명해주는 책입니다.

    추상수학에 대해서 배워본 적이 없지만 일반인도 이해할 수 있는 언어로 쓰인 범주론(category theory) 입문서를 원하는 분께 추천드립니다.

    범주론을 배우고 싶거나 소프트웨어 개발에 이를 적용하는 방법을 배우고 싶은 분께는 추천하지 않습니다. 이 책은 범주론이 무엇을 다루는지에 대해 대략적으로 소개해주지만 실제로 범주론의 내용을 제대로 다루지는 않습니다. 범주론이라는 분야를 책으로 표현한다면, 이 책의 내용은 좀 길게 쓰인 서장정도에 해당할 것 같습니다.

    (추가: 글 작성 이후에 알게 되었는데 이 책은 이미 한국어 번역본이 있습니다. 수학을 요리하다라는 제목으로 출간되었습니다. 직접 읽어보진 않아서 번역의 질은 잘 모르겠습니다.)

    전체 보기
  • Understanding Computation 리뷰

    2017-08-17

    요약

    소프트웨어 개발자 중에서 컴퓨터 과학을 정식으로 배우지 않았지만 관심이 있어서 배워보고 싶은 분들께 이 책을 추천합니다.

    이 책은 컴퓨터 과학의 개념 중에서 프로그래밍 언어의 문법(syntax)과 의미(semantics), 그리고 프로그램을 실행할 수 있는 기본적인 추상 기계(abstract machine)를 다룹니다. 글이 간결하면서도 쉽고 재밌게 읽을 수 있도록 쓰여 있는데, 직장에서 업무시간에 직접 작성할 법한 코드를 예시로 써서 개념을 설명합니다. 이런 주제를 다루는 책은 보통 기묘한 수학적 기호로 가득한데, 그에 비하면 덕분에 정말 눈에 쏙쏙 들어옵니다.

    전체 보기
  • 도커를 활용한 샌드박스

    2017-08-11

    개요

    사용자가 엘릭서 코드를 입력하면 실행한 뒤 그 결과값을 반환하는 엘릭서 어플리케이션을 만들고 있는데, 이런 앱에서는 보안이 정말 중요합니다. 인터넷 어딘가에 존재하는 해커가 작성한 악질적인 코드를 실행하게될 수도 있으니까요. 이런 것을 만들어보는 것은 처음이라서 좋은 해법이 있나 찾아봤습니다.

    안타깝게도 항상 그러하듯이 완벽한 해법은 없었습니다. 득실을 저울질해본 결과 보안 설정을 해놓은 도커 컨테이너를 사용하기로 결정했는데, 제 경우에는 적절한 보안과 성능을 제공하는 안이라고 생각합니다. 이 글에서는 이 앱을 만드는 과정에서 어떤 것을 배웠나 기록하고자 합니다.

    이 주제에 관해서는 저도 초보기 때문에 이 글은 기술적 분석이 아니라 개인적인 경험담으로 읽어주셨으면 좋겠습니다. 혹시 틀린 내용이 있으면 지적해주시고, 추가적으로 볼만한 자료가 있으면 알려주시면 감사드리겠습니다. 참고로 샌드박싱 기술 전반 현황을 보시고 싶으시면 Marek(@majek04)가 작성한 Sandboxing landscape를 추천드리고 싶습니다. 제가 판단할 수 있는 수준 하에서는 최신 정보를 폭 넓게 망라한 글입니다.

    전체 보기
  • 엘릭서에서 캐스트 테스트 요청 시 레이스 컨디션 방지하기

    2017-07-09

    이 글은 독자가 GenServer.cast/2와 GenServer.call/2 함수가 어떻게 동작하는지 알고 있다는 것을 전제로 작성되었습니다.

    TL;DR

    GenServer.cast/2 함수를 호출하고 나서 GenServer.call/2 함수를 호출하세요. 그러면 cast/2와 call/2 양 함수를 호출한 프로세스는 call/2 함수에 대한 응답을 받을 때까지 기다린 뒤에야 call/2 호출 뒤에 이어지는 코드를 실행합니다. 또한 cast/2 함수의 메시지를 받은 프로세스도 해당 메시지를 처리한 뒤에야 call/2로부터 받은 메시지에 대한 응답을 보냅니다. 달리 말해 코드의 순차적 실행을 보장할 수 있습니다. 해당 용도로 사용하기 편리한 범용 함수로 :sys.get_state/1가 있습니다.

    전체 보기
  • 하스켈 나라 탐험기 (2)

    2017-05-15

    요즘은 다른 언어에서도 원래 하스켈에서만 볼 수 있던 기능을 종종 발견할 수 있습니다. 하지만 타 언어는 하스켈과는 다른 목표를 염두에 두고 설계된 만큼 그런 언어에 도입된 하스켈의 기능은 원래 언어와 뭔가 따로 노는 느낌을 줍니다. 반면 하스켈은 함수형 프로그래밍 요소를 최우선적으로 고려합니다. 저는 하스켈을 특별하게 만들어주는 것은 그 기능보다는 함수형 프로그래밍에 순수하게 집중하는 점이라고 봅니다. 그래서 하스켈과 타 언어에서 이론적으로는 동일한 기능을 제공한다고 해도, 해당 기능을 사용하는 경험은 완전히 다르게 느껴집니다. 제가 다음과 같은 것을 배울 수 있었던 것은 아마 하스켈만이 제공할 수 있는 특수한 환경 덕분이었으리라고 생각합니다.

    전체 보기
  • 하스켈 나라 탐험기 (1)

    2017-04-29

    뭔가 무서운 하스켈 나라

    하스켈은 뭔가 이름부터 이상해서 배우기 겁이 나는 언어입니다. 워낙 배우기 어렵고 특이하기로 유명하기도 하니까요. 그래도 하스켈을 배우면 프로그래밍에 대해 더욱 폭넓게 이해할 수 있다고 다들 그래서 하스켈 나라를 방문할 기회는 항상 눈독들이고 있었습니다.

    전체 보기
  • 엘릭서에서 모듈 이름을 포함한 함수의 전체 이름 찾기

    2017-04-24

    가끔 임포트한 함수의 전체 이름을 알고 싶을 때가 있습니다. 즉, 그 함수가 원래 정의되어 있던 모듈 이름을 알고 싶을 때 말입니다.

    그 함수 이름을 &를 사용해서 캡쳐해서 IO.inspect/1에 넘겨주면 전체 이름을 알 수가 있습니다.

    다른 방법은 __ENV__.functions/0를 실행했을 때 나오는 정보를 살펴보는 것입니다. 해당 함수는 컴파일 타임 환경에 로드된 모듈과 함수를 전부 열거합니다. __ENV__ 관련 문서는 여기에서 확인해볼 수 있습니다.

    전체 보기
  • 엘릭서 언어 디자인 목표

    2017-04-12

    이 글은 조제 발림이 엘릭서 언어 공식 블로그에 올린 Elixir Design Goals라는 글의 전문을 번역한 글입니다.

    전체 보기
1 2 3 4 5