Profile img

박준규

@curry@hackers.pub · 314 following · 168 followers

darcs hub
hub.darcs.net/vincent
Hackage
hackage.haskell.org/user/JoonkyuPark

줄리 모로누키(Julie Moronuki) 님이 원래 언어학을 전공하셔서 그런지 글을 참 잘 쓰시는 것 같고 그 필력으로 하스켈 책을 세 권이나 써주셔서 너무 감사하다. 새로운 콘텐츠를 만들어 주시기를 고대하고 있는데 최근 어떻게 지내시는지 너무 궁금하다.

ChatGPT는 Moronuki가 일본식 성씨일 가능성을 제기했다.

그렇지 않아도 그의 블로그를 보니, 그가 일본에 방문해서 영어를 가르쳤던 경험이, 프로그래밍을 전혀 몰랐던 그로 하여금 하스켈을 대중에게 가르치는 사명을 일깨워준 계기가 된 것 같다.

만약 일본식 성씨가 맞다면 아마도 もろぬき라고 쓰는 것 같다.

0
0

회사에서 쓴 코드를 공개 저장소에 올릴 수는 없어서 hackage-server를 직접 돌려보기로 했다. 빌드할 때 의존성 맞추기가 어려울 것 같아서 속는 셈 치고 Nix를 써봤는데⋯ 한 번에 서버가 에러 없이 실행됐다. 이제 사내에서 하스켈 패키지 관리를 할 수 있다!(그런데 아무도 안 씀⋯)

0

회사에서 쓴 코드를 공개 저장소에 올릴 수는 없어서 hackage-server를 직접 돌려보기로 했다. 빌드할 때 의존성 맞추기가 어려울 것 같아서 속는 셈 치고 Nix를 써봤는데⋯ 한 번에 서버가 에러 없이 실행됐다. 이제 사내에서 하스켈 패키지 관리를 할 수 있다!(그런데 아무도 안 씀⋯)

0

간혹 "이모지"가 아니라 "에모지"라고 쓰는 이유에 대한 질문을 받습니다. 여기다 써 두면 앞으로 링크만 던지면 되겠지?

요약: 에모지라서 에모지라고 씁니다.

"이모지"라는 표기는 아마도 "emoji"가 "emotion"이나 "emoticon"과 관련이 있다고 생각해서 나오는 것으로 보이는데요. "emoji"와 "emoticon"은 가짜동족어(false cognate)입니다. "emoji"는 일본어 絵文字(에모지)를 영어에서 그대로 받아들여 쓰고 있는 것입니다. 심지어 구성원리도 에모+지가 아니고 에+모지(絵+文字)입니다. "emotion"과 유사해 보이는 것은 순전히 우연일 뿐, 계통적으로 전혀 아무 상관이 없습니다. "이모티콘"과 "이미지"의 합성어가 아닙니다. (그랬으면 "-ji"가 아니라 "-ge"였겠죠.)

그리고 그렇기 때문에 에모지를 에모지로 표기할 실익이 생깁니다. :), ¯\_(ツ)_/¯, ^_^ 등은 이모티콘입니다. 반면 😂는 명확히 에모지입니다.

프로그래머에게 이건 정말 중요한 구분입니다. "이모티콘을 잘 표현하는 시스템"과 "에모지를 잘 표현하는 시스템"은 전혀 다른 과제이기 때문입니다. 에모지는 "그림 문자"라는 원래 뜻 그대로, 어떤 문자 집합(예를 들어 유니코드)에서 그림 문자가 "따로 있는" 것입니다. 내부 표현이야 어떻든, 적어도 최종 렌더링에서는 별도의 글리프가 할당되는 것이 에모지입니다. "무엇이 에모지이고 무엇이 에모지가 아닌가"는 상대적으로 명확합니다(문자 집합에 규정되어 있으니까).

반면 이모티콘은 "무엇이 이모티콘인가?"부터 불명확합니다. 우선 대부분의 이모티콘은 이모티콘이 아닌 문자를 조합하여 이모티콘이 만들어지는 형식입니다. 예를 들어 쌍점(:)이나 닫는 괄호())는 그 자체로는 이모티콘이 아니지만 합쳐 놓으면 :) 이모티콘이 됩니다. 하지만 조합에 새로운 의미를 부여했다고 해서 다 이모티콘이라고 부르지도 않습니다. -_- 같은 것은 대다수가 이모티콘으로 인정하지만, -> 같은 것은 이모티콘이라고 부르지 않는 경향이 있습니다.

- 문자와 > 문자에는 화살표라는 의미가 없기 때문에, -> 조합과 화살표의 시각적 유사성에 기대어 화살표라는 새로운 의미로 "오용"한 것은 이모티콘의 구성 원리에 해당합니다. 하지만 화살표는 인간의 특정한 정서(emotion)에 대응하지 않으므로 이모티콘이라고는 잘 부르지 않습니다. 그렇다고 얼굴 표정을 나타내야만 이모티콘인가 하면 그렇지도 않습니다. orz 같은 것은 이모티콘으로 간주하는 경향이 있어 보입니다. 오징어를 나타내는 <:=는 이모티콘인가? 이모티콘이 맞다면, 왜 ->는 이모티콘이 아니고 <:=는 이모티콘인가? 알 수 없습니다. ㅋㅋㅠㅠ는 둘 다 정서를 나타내는데, ㅠㅠ만이 아이콘적 성질을 가지므로 이모티콘이고 는 이모티콘이 아닌가? 알 수 없습니다. 만약 만 이모티콘이 아니라고 한다면, ㅋ큐ㅠ 에서 는 이모티콘인가 아닌가?? 알 수 없습니다. 이 알 수 없음은 이모티콘의 생래적 성질입니다. 어쩔 수 없죠.

패키지 저장소에 내가 만든 패키지를 업로드해보니까 다음과 같이 코딩말고도 할 게 꽤 많다.

  • 저장소 계정 만들고 권한 승인 받기[1]
  • 라이브러리 코드에 주석 적기
  • 라이선스 정하기
  • 소스 코드 저장소 정하기
  • 커밋 메시지 적기
  • 체인지로그 적기
  • 테스트 코드 적기
  • 버전 관리하기[^4]

LLM 덕분에 영어로 적어야 하는 문서 대부분은 어렵지 않게 할 수 있었다. LLM 때문에 바보 된다는 말도 많지만 영어 때문에 주저 했던 작업을 쉽게 시작할 수 있었다는 점에서 확실히 진입 장벽은 낮아졌다.

앞으로 더 해볼 일은 특정 배포판에 패키지를 배포하는 일이다. 해키지에서 지원하는 배포판은 다음과 같다.

  • Arch
  • Debian
  • Fedora
  • FreeBSD
  • LTS
  • LTSHaskell
  • NixOS
  • Stackage
  • openSUSE

도전 과제로 위에 적은 모든 배포판에 내가 만든 패키지 배포해보는 것도 재밌겠다. LTS, LTSHaskell은 뭔가 했는데, 스태키지(Stackage)에 패키지 업로드하는 방법을 안내한 문서를 보니까 스태키지의 저장소 종류인 것 같다.

한편 해커즈 퍼브의 홍민희 님도 헤비(?) 하스켈 패키지 업로더이신데 예를 들어 seonbi도 사실 하스켈 패키지이다.

해키지 업로더 계정이 필요하신 분은 나와 홍민희 님을 멘션하면 이미 두 명의 승인은 따 놓은 당상이다.


  1. 해키지에서는 가입 후 기존 해키지 업로더 2명의 승인이 필요하다. ↩︎

0

@lionhairdino 근데, 이미 고쳤습니다. ANSI 구문 강조 테스트:

  Welcome to VitePress!

  Where should VitePress initialize the config?
  ./docs

  Site title:
  My Awesome Project

  Site description:
  A VitePress Site

  Theme:
 Default Theme (Out of the box, good-looking docs)
 Default Theme + Customization
 Custom Theme
0
0
0

@hongminhee洪 民憙 (Hong Minhee) 아⋯ 이 커밋 보고 언어 설정과 관련이 있을 것 같아서 설정을 보다가 그 옵션을 보긴 했는데 ‘이게 원래 없었나?’라고 생각했습니다. 다른 서비스에서는 못본 기능 같은데 꽤 유용할 것 같습니다! 한편 요즘 타임라인에 일본어가 자주 올라오긴 했는데 안 보고 싶다는 생각보다는 번역해서 보고 싶다고 생각했어요. 팬피의 일본어 번역 품질은 별로더라고요.

0
0
0
0

닉스(Nix)를 써보려고 Nix Pills라는 글을 읽기 시작했다. 화면에 Hello, world!를 출력하는 패키지 hello를 닉스로 설치하는 방법이 나오더라.

nix-env -i hello

저런 하찮은 프로그램이 패키지로 존재하는지 처음 알았다.

혹시 해키지에도 저런 게 있는지 검색을 해봤는데 있더라.[1] 2010년에 Simon Marlow가 업로드했다. 그런데 특이한 점이 이 패키지의 소스 코드 저장소 주소가 darcs.haskell.org라는 것이다. darcs를 호스팅하는 곳은 hub.darcs.net만 있는 줄 알았는데 haskell.org에도 있었구나⋯ 그런데 이 사이트 UI도 아예 없고 그냥 디렉터리 리스팅이 나오는데 hub.darcs.net으로 이전하시면 안 되려나.


  1. https://hackage.haskell.org/package/hello-1.0.0.2 ↩︎

0
0

해키지(Hackage)[1]에 패키지를 업로드하면 자동으로 빌드, 문서 생성, 테스트가 진행된다. 그런데 이게 시간이 좀 걸린다.(체감상 10분 정도) 이 과정이 자동으로 완료되기 전에 참지 못하고 수동으로 문서를 업로드하면 자동으로 진행되던 것들이 모두 중단된다. https://github.com/haskell/hackage-server/issues/1376


  1. 하스켈 패키지 저장소 ↩︎

0
0
0
0
0
0

몇 년 전에 취미로 프로그래밍 책 제본을 했다. 인터넷에서 업체에 PDF 파일을 전달하면 제본해서 택배로 받았다. 그렇게 읽지도 않는 책은 쌓여만 갔다. 결국 몇 달 전에 하스켈 학교 모르는 분에게 한 권만 나눔하고 모두 버렸다.

그런데 프로그래밍 책은 펼쳐 놓고 노트북을 켜서 실습할 때가 많기 때문에 잘 펴져야 한다. 떡제본은 펼침성이 나빠서 불만이었고 여러 제본 방식을 알아보다가 바인더 형식을 써보기로 했다. 적당한 업체를 찾아서 첫 주문을 했는데 오늘 도착했다. 원래 표지 디자인을 직접 해서 업체에 PDF를 전달해야 하는데 하는 법도 모르고 시간도 없어서

“그냥 대충 알아서 해주세요.”

했는데⋯

너무 이쁘게 잘 뽑아 주셨다. 책등 문구 디자인도 알아서 센스 있게 해주셨는데 너무 마음에 든다. 과연 이 책은 끝까지 읽을 수 있을까!

책등 이미지책의 목차 일부주문 제작한 B5 크기의 3공 바인더
0
0
0

회사에서 거의 10년 동안 운영한 서버를 교체 중이다. 고생 많으셨습니다. 서버님⋯ 새로 오신 서버님에게는 돼지 머리랑 막걸리 준비는 못했지만 절이라도 올려야겠다.

0
0
0
0
0

프로그래밍 언어 하스켈은 1990년 4월 1일에 처음 나와 올해 35주년이 되었습니다. 오늘이 하스켈 생일이에요. 이거 만우절 농담 아니고 진짜예요.

0
0
0
0
0
0

ChatGPT에게 링크 주고 요약문 작성을 부탁했다. SNS에 공유할 거라고 했더니 이모지도 막 달아주네⋯ 글쓴이는 하스켈 안정성 작업 그룹(SWG) 의장인 테일러 님인데 학부 때 과목에도 없는 하스켈 쓰다가 교수님이 “너 그런 거 쓰면 취업 못한다.”라고 했다고⋯

0

📢 Haskell 생태계에서 안정성이란 무엇일까요?

Haskell 재단의 안정성 작업 그룹(SWG)이 생태계의 변화를 효과적으로 관리하기 위해 어떤 노력을 기울이고 있는지 소개합니다. GHC 언어 확장 분류, 컴파일러 안정성 기능 개선, 커뮤니티 소통 촉진 등 우리가 진행한 작업과 앞으로 나아갈 방향에 대해 이야기합니다. 함께 Haskell 생태계를 더 강하게 만들어가요! 💪🚀

🔗 자세히 보기

ChatGPT에게 링크 주고 요약문 작성을 부탁했다. SNS에 공유할 거라고 했더니 이모지도 막 달아주네⋯ 글쓴이는 하스켈 안정성 작업 그룹(SWG) 의장인 테일러 님인데 학부 때 과목에도 없는 하스켈 쓰다가 교수님이 “너 그런 거 쓰면 취업 못한다.”라고 했다고⋯

0

📢 Haskell 생태계에서 안정성이란 무엇일까요?

Haskell 재단의 안정성 작업 그룹(SWG)이 생태계의 변화를 효과적으로 관리하기 위해 어떤 노력을 기울이고 있는지 소개합니다. GHC 언어 확장 분류, 컴파일러 안정성 기능 개선, 커뮤니티 소통 촉진 등 우리가 진행한 작업과 앞으로 나아갈 방향에 대해 이야기합니다. 함께 Haskell 생태계를 더 강하게 만들어가요! 💪🚀

🔗 자세히 보기

0

ChatGPT 덕분에 우연히 하찮은 버그 하나를 발견했다.

ChatGPT에게 소스 코드 보여주고 주석으로 문서 작성을 부탁했는데 다음과 같이 알아서 파이썬 doctest와 같은 코드를 출력했다.

>>> prefixLength "key=value"
3
>>> prefixLength "a=b"
1
>>> prefixLength "noequals"
8

이 함수는 입력 문자열에서 ‘=’ 왼쪽에 있는 문자열의 길이를 리턴한다. 그런데 ‘=’가 없을 경우는 미처 생각을 못했는데 ChatGPT가 출력한 코드를 보고 그 사실을 깨달았다.

덕분에 코드 패치하고 난생 처음 메이저 업데이트라는 것도 해본다.(원래 리턴 타입이 Int였는데 Maybe Int로 바꿔서 브레이킹 체인지가 되었다.)

https://hackage.haskell.org/package/align-equal-0.1.1.1/docs/Data-Text-AlignEqual.html

0

좋은 글 잘 읽었습니다. 글도 잘 쓰시고 코딩도 잘 하시고 부럽습니다. 본문 내용 중 ‘두부와 강철 영수증’이란 표현이 재밌네요. ‘오라클’이라는 전문 용어도 처음 알게 되었습니다. 과거에 하시던 블록체인과 현재 하시는 액티비티펍이 뭔가 탈중앙화라는 공통 분모가 있는 것 같네요.

0
0
0

인라인 스크립트 메타데이터를 기술하는 PEP 723 규격과 Unix 셔뱅(shebang), 그리고 차세대 Python 패키지 관리자인 uv를 이용하여 단일 파일로 실행되는 Python 스크립트를 만드는 방법. 물론 uv가 시스템에 설치되어 있어야 하기 때문에 진정으로 “self-contained”하지는 않다.

참고로 PEP 723 규격은 pipx 등도 구현하고 있기 때문에, 반드시 uv가 아니더라도 다른 도구로도 비슷한 스크립트를 만드는 게 가능하다.

0
0
0