Clojure를 여행하는 히치하이커를 위한 안내서

  • Clojure라는 언어 자체가 정말 강력한 도구이고, 그나마 대중적인 편에 속한 Lisp 계열언어입니다. 하지만, 국내에는 인지도가 많지도 않고, 리소스가 그렇게 많지도 않으며, 초보자가 입문하기에도 진입장벽이 있습니다. (이 글을 처음 쓴 사람도 역시 초보자입니다.)
    • Clojure라는 프로그래밍 언어를 배우는데 있어서 생태계에 적응하는 것 역시 어려울 뿐만 아니라, 타 프로그래밍 언어 커뮤니티처럼 따라해보면서 직접 뭔가를 만들어보는 방식의 예제도 빈약합니다.
    • Clojure 프로젝트를 빌드할 때 볼 수 있는 uberjar, classpath, gradle 등 자바를 모르는 사람이 봤을때 토가 나오는 키워드들, 한번 에러가 발생할때마다 stacktrace가 어렵게끔 출력되는 최소 10개 이상의 에러 로그들, 신경쓰이는 것들이 한두가지가 아닙니다.
  • Clojure로 프로그래밍을 처음 해보는 사람들, 호기심에 Clojure를 접해봤지만 어떻게 써야할 지 몰라 헤매는 사람들, Clojure를 본격적으로 배우기도 전에 헤매는 사람들을 위한 가이드를 만들어보고자 거창하게 Clojure를 여행하는 히치하이커를 위한 안내서라는 제목으로 가이드를 작성하고 있습니다.
  • 이 가이드는 실용적인 목적으로 쓰이는 것을 지향하고 있습니다. 함수형 프로그래밍이 왜 좋은지보다는 좀 더 실전에서 직접 활용해볼 수 있는 방향으로 가는 것을 추구합니다.

시작하기

로드맵

TODO

분야별로 입문하기

TODO

기초

Clojure 커뮤니티 참여하기

Clojure 커뮤니티에 참여하는 것만으로도 충분히 도움이 됩니다! 다른 개발자 분들과의 인맥을 쌓을수도 있고, 알지 못했던 정보를 알아가기도 하겠죠. 여러분의 조그마한 기여가 저희 Clojure 커뮤니티에 큰 도움이 될 수도 있어요!

유명 개발자들 팔로우하기

Clojure 커뮤니티의 유명한 개발자를 팔로하는 것도 역시 여러분에게 도움이 될 수 있어요! Clojure 관련된 소식을 빠르게 접해볼 수도 있고, Clojure 개발자로서 안목을 키우게 될 수도 있어요!

Twitter

Twitter는 개발자들이 많이 이용하는 SNS 중 하나입니다. 라이브러리 업데이트 소식, Clojure 버전 갱신 소식, 혹은 신기술 동향 등 많은 정보들이 실시간으로 올라옵니다. 관심있는 계정들을 팔로해서 RSS 서비스처럼 이용할 수 있습니다.

한국
  • @dalzony : Clojure Bridge Seoul을 주최하신 분입니다.
해외
  • @weavejester : Clojure 관련 오픈소스 라이브러리를 많이 만드시는 분입니다. compojure, codox, environ 등 Github 레포지토리의 절반 이상이 Clojure로 짜여져 있습니다.
  • @fogus : Joy of Clojure 저자입니다.
기타
  • @oss_clj : Clojure 관련된 오픈소스 라이브러리 소식이 올라오는 계정입니다.
  • @planetclojure : Clojure와 관련된 아티클들이 실시간으로 올라옵니다.

개발환경, 툴

편집기

Leiningen

TODO

참고자료

라이브러리

Mathematics

  • cats : 카테고리 이론을 이용한 FP 구현체입니다.

Cryptography

  • buddy : Luminus에서 쓰이는 보안 모듈입니다.

Data Analysis

  • neanderthal : 행렬 연산에 쓰이는 라이브러리입니다.
  • gorilla-repl : Python의 Jupyter notebook처럼 입력에 따른 결과를 시각화시켜서 표시해주는 프레임워크입니다.

Natural Language Processing

  • postagga : 자연어 처리 라이브러리 입니다.

Web Scraping

  • enlive : Python의 beautiful-soup처럼 HTML 의 특정 id, class에 해당되는 문서의 내용을 추출하는데 쓰이는 라이브러리 입니다.

Web Development

Web Framework

  • arachne : Clojure로 짜인 MVC 웹프레임워크입니다.
  • Luminus : Clojure로 짜인 마이크로 웹프레임워크 입니다.

Template engine

  • Selmer : Django에서 영감을 얻어서 만들어진 템플릿 엔진입니다.

Clojure Script : Clojure와 같은 문법으로 작성하는 프로그래밍 언어이며, 자바스크립트로 트랜스파일됩니다.

  • re-frame : Clojure Script로 React 컴포넌트를 사용할 수 있습니다.
  • datascript

Documentation

  • codox
    • 함수의 description에 작성한 내용을 토대로 HTML 포맷으로 문서를 생성해줍니다.
    • Markdown 포맷으로 문서를 작성할 수도 있습니다.

Database

Database Migration

  • ragtime
  • migratus : Luminus 공식 문서에서 권정하는 라이브러리입니다.

Environment

  • environ : 환경변수를 관리할때 쓰이는 라이브러리입니다.

Infra

  • chazel : Hazelcast 클라이언트입니다.
  • langohr : RabbitMQ 클라이언트입니다.
  • carmine : Redis 클라이언트입니다.

API

For fun

  • yetibot : 챗봇 라이브러리 입니다.

국내에 출판된 책들

  • Brave Clojure : 이해하기 쉽게, 수많은 예제코드와 일러스트를 이용해서 설명한 것이 특징입니다.
    • 웹상에서도 무료로 볼 수 있습니다. Web Version
  • Living Clojure : 초보자가 입문하기 괜찮은 책입니다.
  • Joy of Clojure : 어느 정도 Clojure 프로그래밍 경험을 쌓고 나서 보는 것을 추천합니다.

해외에 출판된 책들

웹사이트

  • Clojure Docs : Clojure의 Core 라이브러리에 정의된 함수에 대한 친절한 문서와 예제들이 있습니다. 커뮤니티가 주도해서 문서화하는 것이기 때문에, 여러분도 문서화에 참여할 수 있습니다.

문제풀이 사이트

  • Project Euler : 수학문제 풀이 중심입니다.
  • 4clojure : Clojure 문제풀이 사이트라면 항상 언급되는 사이트 중 하나입니다. 문제를 풀고나면 다른 사람들이 어떻게 풀이했는지 확인할 수 있습니다.
  • Codewars : 4clojure와 비슷하지만, Ruby/Python/Elixir/C#/Java 등 다양한 언어로 문제풀이를 할 수 있도록 지원합니다. 4clojure와 달리, 새로운 문제가 여러번 갱신된다는 것이 특징입니다.
  • Exercism
  • Hackerrank : 프로그래밍 문제를 알고리즘, 자료구조, 함수형 프로그래밍, 기타 다양한 분야별로 풀어볼 수 있다는 것이 특징입니다. 여러 기업에서 코딩인터뷰 목적으로 이용하는 사이트이기도 합니다.

아티클

동영상

슬라이드

Best Practices

TODO

Clojure를 사용하는 기업들