@jasonkim자손킴
@lionhairdino 아항 제가 생각한거랑은 좀 다르네요. ROP의 시각화가 마음에 듭니다.
자손킴
@jasonkim@hackers.pub · 1 following · 11 followers
@bglbgl gwyng
@lionhairdino 오 시간이 되실때 소개해 주시면 감사히 배우겠습니다.
여성향 커미션 중개 플랫폼 크레페를 운영하는 쿠키플레이스에서 시니어 백엔드 엔지니어 채용을 진행중입니다. 채용공고에 해당 직무 소개, 복지, 연봉, 회사문화의 내용이 포함돼 있습니다. 많은 관심 부탁드립니다. Node.js, TypeScript, GraphQL에 대한 높은 숙련도 및 지식으로 팀에 기여해주실 분을 쿠키플레이스에서 극진히 기대하고 있습니다.
크레페에서는 이런 기술스택을 사용합니다
- Node.js, TypeScript, Vitest, Fastify
- GraphQL - Yoga, Relay, Pothos, Prisma
- ElasticSearch, MongoDB, FCM
- Docker, Github Actions
- AWS - ElasticBeanstalk, CloudWatch, Aurora PostgreSQL, Lambda, SES, S3, ElastiCache (Redis)
- Grafana, Sentry
구성원의 성장과 덕질을 지원해요
- 희망 도서 구매 (만화책 및 TRPG 룰북 포함)
- 워크샵 및 교육 프로그램 지원
- 전시, 공연 및 각종 행사 티켓 지원
- 월 5만 크레페 포인트
- 전동작탁 AMOS JP-EX COLOR
- 6인용 TRPG/보드게임 테이블
지원자님이 예상하실 수 있는 처우는 이래요
- 연봉: 최소 8000만원 ~ 최대 2억원 (주 40시간)
- 스톡옵션 부여에 열려있는 포지션
@jasonkim자손킴
@lionhairdino 아 철길 비유가 이미 널리 쓰이고 있었나요? 얼마전에 재발명해놓고 뿌듯해하고 있었는데 부끄럽군요
@bglbgl gwyng
@lionhairdino 보통 railway oriented programming 이라고 부르더라구요. 독자적으로 생각하신거라면 엄청 자랑스러우실 것 같아요! 부끄럽지만 전 보고서도 이해하는데 꽤 시간이 걸렸었어요 ㅎㅎㅎ
자손킴 replied to the below article:
펑터Functor

lionhairdino @lionhairdino@hackers.pub
하스켈 펑터 입문자를 위한 이 글은 `Maybe Int` 타입의 값에서 `Int`를 직접 "꺼내올 수 없다"는 개념을 설명합니다. `Maybe`의 `fmap`이나 `fromJust`가 마치 값을 꺼내는 것처럼 보이지만, 이는 실제로는 값을 꺼내는 것이 아니라, 원본 타입(`Int`)의 구조를 보존하며 새로운 `Maybe Int` 타입의 값을 "생성"하는 과정이라는 것입니다. 미끄럼틀 비유를 통해, `Maybe Int`의 `Just 1`은 `Int` 값 `1`과 연관되어 있지만, `Just 1` 자체가 `1`을 의미하는 것은 아닙니다. 펑터는 원본 타입의 관계(구조)를 그대로 유지하며 다른 타입으로 변환하는 역할을 합니다. `fmap`은 `Maybe Int` 안의 `Int`를 직접 조작하는 것이 아니라, 원본 `Int` 값의 관계를 바탕으로 새로운 `Maybe Int` 값을 만들어내는 것입니다. 상자 메타포가 유용할 때도 있지만, 펑터의 본질을 오해하게 만들 수 있습니다. 상자 안의 값을 꺼내는 것이 아니라, 값의 "성격"은 값을 다루는 함수들의 동작에 따라 결정된다는 점을 강조합니다. 이 글은 "없을 수도 있는 수를 꺼낸다"는 표현의 모순을 지적하며, 펑터의 개념을 더 깊이 이해하도록 돕습니다.
Read more →@lionhairdino 저도 그래서 상자나 철길 비유를 가급적 피하려고해요. 너무 구체적이라 추상화의 핵심을 표현하는데 한계가 생기더라구요.
tanstack query의 initialPageParam에 대하여 오늘 배운 것
자손킴 @jasonkim@hackers.pub
TanStack Query의 `useInfiniteQuery` 훅을 사용할 때 `initialPageParam`이 어떻게 동작하는지에 대한 중요한 통찰을 공유합니다. 이 훅은 초기 렌더링 시 `initialPageParam`을 `pageParams[0]`으로 설정하고, 동일한 `queryKey`를 가진 캐시가 유지되는 동안 이 값을 계속 사용합니다. 따라서 여러 컴포넌트에서 동일한 `queryKey`로 `useInfiniteQuery`를 호출하면서 다른 `initialPageParam` 값을 제공하더라도, 처음 호출된 `initialPageParam` 값으로 고정됩니다. 이는 시작 커서가 다를 경우 `queryKey`를 다르게 지정해야 함을 의미합니다. 이러한 동작은 이해하고 나면 당연하지만, 익숙하지 않은 개발자에게는 혼란스러울 수 있습니다. `initialPageParam`이 `queryKey`와 강하게 연결되어 있다는 점이 InfiniteQueryOptions에서 타입 제약으로 더 명확하게 표현된다면 개발 경험이 향상될 것입니다.
Read more →