역시 하스켈은 알아야 할 내용이 많은 것 같다. 어떤 발표에서 하스켈 4단계인가 5단계인가로 되어 있는 피라미드를 보여주고 대부분의 하스켈 개발자들은 4단계에 있고 그 정도에 있으면 실무에서 하스켈 사용하는데 무리가 없다고 했던 말에 위로를 받아본다. 국내에 하스켈에
오늘은 서비스에 하스켈에서 어니언 아키텍처를 어떻게 구현했는지 적어보려고 한다. 어니언 아키텍처는 헥사고날 아키텍처, 포트 어뎁터 아키텍처, 클린 아키텍처 등 여러 가지 아키텍처로 불리지만 사실 나는 세부적인 차이는 잘 모른다. (하지만 우리 서비스는 포트 어뎁터 아키
어제는 어니언 아키텍처에 대해 적어봤다. 어니언 아키텍처는 Tagless Final이라고 하는 패턴으로 구현했다. 타입 변수로 만들어진 모나드 컨텍스트를 사용하는 곳에서 타입에 따라 결정할 수 있었다. 테스트 코드 역시 테스트를 위한 모나드 타입을 만들어 의존성의 목(
오늘은 노는 날이니 짧게 쓰자. 요즘 하스켈 사용하면서 가장 많이 보이는 것이 많은 프로젝트에서 Prelude 대신 Relude를 사용한다는 점이다. Relude의 목표 중 하나가 생산성이기 때문에 팀원 분들에게 소개하고 프로젝트에 도입할 수 있을지 고민해보려고 한다.
오늘은 하스켈로 GraphQL 서버를 가볍게 만들어보자. 이전에 Clojure나 Kotlin(Spring)으로 프로젝트할 때 GraphQL 서버를 만들어 본 적이 있고 각각 자주 사용하는 라이브러리가 있어 어떤 라이브러리를 쓸지 고민을 하지 않았다. 하지만 하스켈로 G
오늘은 Logger에 대해 지금까지 탐구한 내용을 적어보려고 한다. 지금 만들고 있는 API 서버는 Docker로 빌드해서 GPC에 있는 쿠버네티스(GKE)에 배포한다. 카카오에 있을 때는 로그 플랫폼을 전담하는 팀이 있어 서비스 개발팀은 로그 플랫폼을 구성할 필요가
오늘은 하스켈 개발 환경 세팅에 관련해서 기록해보자. 지금 업무용으로 사용하고 있는 랩탑은 Apple Macbook Pro(M1 Pro)이다. 올 초만 해도 하스켈 생태계에서 M1을 잘 지원하지 않아 조금 고생했지만 지금은 자주 쓰는 툴은 모두 M1 버전을 지원해서 크
지난주 여행을 다녀오고 일기를 조금 쉬었다. 쓰고 싶을 때마다 마음대로 쓰는 일기라서 부담은 없다. 우리 회사는 매주 하스켈 위클리를 하고 있다. 사실 일정 맞추기가 어려워 1회를 진행했다. 나도 그렇지만 아직 모두 하스켈을 잘 아는 것이 아니기 때문에 서로 새로 알게
지난 금요일은 미루고 있던 mongoDB 패키지에서 연결 관리를 어떻게 하는지 살펴보기로 했다. 일단은 잘 동작하고 기능 개발도 바쁘기 때문에 나중에 살펴보려고 했지만 개발 중에도 가끔 데이터베이스에 연결이 끊겨 불편함이 있었기 때문에 살펴봤다. mongoDB 패키지는
오늘은 잘못 손대면 어둠의 길로 빠질 수 있는 프로그래밍 기술인 메타프로그래밍에 대해 살펴보려고 한다. 대부분의 언어는 코드를 생성할 수 있는 메타프로그래밍을 지원하고 잘 활용하면 코드를 많이 줄일 수 있지만 잘못 쓰면 디버깅이 어려운 애물단지가 돼버린다. 하스켈도 역
어제 시간이 없어서 완성하지 못한 Bson Val(https://hackage.haskell.org/package/bson-0.4.0.1/docs/Data-Bson.html어쨌든 똑똑한 인공 지능에게 도움을 받아 다음과 같이 어떤 타입 레코드 타입(범용적이지는
오늘 팁은 자료가 정말 없어서 오랜 삽질 끝에 얻은 결과라 귀하다. 하스켈로 realworld api를 만들고 있다. realworld api는 스펙이 정리되어 있어 그대로 보고 만들면 된다. 그 중 Update User라는 것을 만들고 있는데, 요청 본문에 User