Profile img

Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub! My main account is at @hongminhee洪 民憙 (Hong Minhee).

Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다. 제 메인 계정은: @hongminhee洪 民憙 (Hong Minhee).

FedifyHolloBotKit、そしてこのサイト、Hackers' Pubを作っています。私のメインアカウントは「@hongminhee洪 民憙 (Hong Minhee)」に。

Website
hongminhee.org
GitHub
@dahlia
Hollo
@hongminhee@hollo.social
DEV
@hongminhee
velog
@hongminhee
Qiita
@hongminhee
Zenn
@hongminhee
Matrix
@hongminhee:matrix.org
X
@hongminhee

洪 民憙 (Hong Minhee) shared the below article:

Mobile Attribution in The Privacy-First Era

01010011 @01010011@hackers.pub

이 글은 개인 정보 보호가 강화되는 시대에 모바일 어트리뷰션 획득 방식이 어떻게 변화하고 있는지 설명합니다. 과거에는 IDFA, GAID와 같은 광고 식별자를 통해 정확한 측정이 가능했지만, 이제는 Apple의 SKAdNetwork(SKAN)와 Google의 Privacy Sandbox와 같은 개인 정보 보호 프레임워크를 통해 확률론적으로 어트리뷰션을 획득해야 합니다. SKAN은 Apple이 데이터 측정의 심판 역할을 하며 제한된 정보(Conversion Value)만 제공하는 반면, Privacy Sandbox는 광고 생태계 참여자들이 자체적인 프라이버시 보호 솔루션을 구축할 수 있도록 빌딩 블록을 제공합니다. 특히 Privacy Sandbox는 사용자 디바이스 안에서 Ad Network 정보와 매칭되는 어트리뷰션을 생성하고, Attribution Reporting API(ARA)를 통해 익명화된 리포트를 수집합니다. Ad Tech 기업들은 암호화된 리포트를 받아 클라우드 보안 환경(TEE)에 Aggregation Service를 구축하고 운영하여 데이터를 처리해야 합니다. 이 글을 통해 독자는 개인 정보 보호 시대에 모바일 어트리뷰션을 어떻게 획득하고 활용할 수 있는지에 대한 인사이트를 얻을 수 있습니다.

Read more →
2
6
1
1
5
3
3
1
3
2
3
6
1
3
2
9

갑자기 불현듯 하이텔이나 나우누리 같은 옛날 PC통신이 떠올라서 난 한 번도 그 시절을 겪어본 적이 없었는데 어떤 느낌일까 싶어서 해보고 싶어가지고 검색 해봤는데 생각보다 쉽게 사설 BBS를 접속하는 프로그램을 찾아내서 탐방했음. 미국은 사설 BBS가 아직 명맥을 이어가는 것 같은데 국내 거는 사실상 멸종한 것 같다...여튼 하니깐 어릴 때 친구네집 펜티엄 컴퓨터 갖고 스치듯 했던 MS-DOS 갬성이 엄청 느껴져서 하는 내내 헤벌레 미소 지으면서 했다 ㅋㅋㅋ 나갈 때 작별인사 페이지도 따로 있어서 살짝 감동 먹음 🥹

참고로 사용한 프로그램은 MuffinTerm이고 애플 계열 기기에서 돌아간다 (아이패드 포함). 접속한 BBS는 8bit-boyz라는 미국 레트로 컴퓨팅 커뮤니티다.

8bit-boyz BBS 접속 사진
7

대학원 다닐 때 썼던 학술용 개인홈피 몇 주 전에 싹 다 뒤엎고 맘에 드는 블로그 테마 하나 포크해서 다시 만들고 있는데 포크한 리포가 Astro 프레임워크랑 타입스크립트로 쓰인 거다. 근데 난 자바/타입스크립트 둘 다 제대로 써보기는 커녕 강의도 들어본 적이 없어서 포스트도 하나 테스트로 쓸 겸 로컬 호스트로 띄워놓고 파일들 이것 저것 하나하나 건들면서 깨부하는 중...어차피 맛이 가도 나한테만 맛이 가니깐(??) 맘 편하게 하고 있다. 어릴 때 게임 파일 소스 코드나 .config 파일 갖고 이것저것 뜯어보는 느낌이 들어서 재밌음 ㅋㅋ

3
2

DDIA (Designing Data Intensive Application) 2판을 읽고 있다.

처음 빌딩블록 얘기부터 정리를 잘해주는듯..

DB: 데이터를 저장하여, 자신 또는 다른 애플리케이션이 나중에 다시 찾을 수 있도록 한다 (데이터베이스)

Cache: 비싼 연산의 결과를 기억하여 읽기 속도를 높입니다 (캐시)

Index: 사용자가 키워드로 데이터를 검색하거나 다양한 방법으로 필터링할 수 있도록 허용합니다 (검색 인덱스)

Stream: 이벤트와 데이터 변경이 발생하는 즉시 처리합니다 (스트림 처리)

Batch: 주기적으로 축적된 많은 데이터를 분석합니다 (배치 처리)

4

동일한 DB 스키마를 사용하는 4개의 프로젝트를 만들었다. UI 컴포넌트가 공통적으로 겹치는 부분도 있어서 이참에 Monorepo 구성을 검토했다가 (ChatGPT와 Claude의 답변 최우선순위도 Monorepo 구성으로 추천받았다) 결론적으로는 Private Package Registry를 사용해서 패키지 공유해서 쓰는 쪽으로 방향을 잡았다.

1
1
1

살짝 다른 차원에서 확장해서 바라보는 얘기이긴 한데 그냥 첨언하자면 언어학의 하위 분야인 화용론에서 전제(Presuppositions)라는 주제랑 연결되는 것 같네요. 댓글에 프랑스 왕은 머머리다 예문도 써주신 걸 보니 더욱 더 그런 것 같고요. 간단하게 설명드리자면, 일단 한국어 예문으로 하면 살짝 오해의 소지가 있어[1] 영어 예문을 갖고 쓰면 다음과 같이 생각해볼 수 있습니다.

  • P: The King of France is bald.[2]
  • Q: There exists an entity that is King of France.

이 때 P의 명제가 참일 수 있는 이유는 Q를 전제로 깔고 가기 때문입니다. 이렇게 Q를 전제로 갖고 가면 P에 부정을 넣어도 (The King of France is not bald 혹은 ¬(The King of France is bald)) 여전히 그 명제는 참입니다. 하지만 실제 현실에서 Q는 거짓입니다. 왜냐하면 오늘날 프랑스는 군주국가가 아니니깐요. 그럼에도 불구하고 P는 여전히 참을 진리값으로 가지죠.

따라서 실제로 전제를 이렇게 정의하기도 합니다 (Levinson, 1983, p. 175).

  • A sentence P sematically presupposes a sentence Q iff:
  • (a) P ⊨ Q
  • (b) ~P ⊨ Q

참고로 여기서 "⊨"는 "함의한다"를 지칭하는 기호입니다 (예: "하스켈은 함수형 언어다."란 문장은 "하스켈은 언어다"란 걸 함의하죠.).

그렇다면 Q가 전제되는 건 알겠는데, 이 진리값이 무엇이느냐에 대한 질문이 생길 수 있습니다. 이에 대해서 언어학자들은 보통 크게 두 가지로 봅니다. 하나는 참으로 간주하는 거고, 다른 하나는 참도 거짓도 아니다라고 보는 거죠. 전자같은 경우엔 어떻게 보면 기계적으로 바라보는 거고, 후자의 경우엔 참/거짓이라는 기존 이치논리(two-valued logic) 혹은 1 또는 0으로 하는 불 논리에서 확장해서 Kleene의 삼치논리(three-valued logic)로 가게 되죠.

참고로 전제 성립 여부 포함 화용론 전체에서 깔고 가는 가장 큰 가정이 하나 있는데, 이 경우에는 바로 해당 발화(utterance) P, 즉 '프랑스왕은 머머리다'라는 명제가 이루어질 때 화자와 청자가 프랑스에는 왕이란 개체가 존재한다(=Q)라고 암묵적으로 서로 동의한다라는 가정입니다.


  1. 사실 문제가 영어 관사 'The'에서 시작되기 때문이라서 그렇습니다. ↩︎

  2. 논리형으로 치환하면 다음과 같습니다: ∃x(KoF(x) & ∀y(KoF(y) → y=x) & Bald(x)) where KoF stands for "King of France". ↩︎

5
10
3
3

클라우드플레어가 원래 캐시를 하는 CDN이다 보니(근거없음) 터널을 주로 로컬 디버깅 용도로 사용하면 각종 캐시 문제에 맞닥뜨리긴 하는데 그치만 무료면서 커스텀 도메인 연결이 되는 터널링 서비스를 이거 말고는 못 찾았어요

2

하스켈 쪽에는 《Finding Success (and Failure) in Haskell》이라는 책이 있습니다. 이 책에서는 크게 다음과 같은 타입을 소개합니다.

  • Maybe의 한계를 극복한 Either.
  • Either의 한계를 극복한 Validate.
5
8
1

어떤 조건문을 만족하는 원소의 집합을 QQ 라고 해봅시다
그럼 QQ의 임의의 부분집합 PP 의 원소는 QQ의 원소이므로, 그 조건문을 만족할 겁니다
이 때, 공집합\empty은 모든 집합의 부분집합이죠?
따라서 공집합의 원소는 모든 조건문을 만족합니다

공허한 참(Vacuous truth)은 사실 좀더 포괄적인 개념입니다
가정이 거짓이면 명제는 항상 참이다라는 개념입니다
공허한 참이라고 부르니 어렵게 느껴지죠?
저는 항상 한국어 한정으로 '니 말이 진짜면 내일 해가 서쪽에서 뜨겠다' 참으로 이름을 바꿔야한다고 주장해왔습니다
가정(니 말)이 거짓이니 결론(해가 서쪽에서 뜨는 것)이 참이든 거짓이든 명제는 참이 되죠

이걸 공집합의 원소는 모든 명제를 만족한다 에 적용시켜볼까요?
이 명제를 좀더 조건문처럼 쓰기 위해 만약 (가정)이라면 (결론)이다 형태로 바꿔보죠
그럼 a가 공집합에 포함된다면, a는 모든 명제를 만족한다 가 됩니다
그런데, a가 공집합에 포함된다 는 거짓이죠?
따라서 해당 조건문은 가정 자체가 거짓인 공허한 참입니다

4

재미 삼아, Cairo를 백엔드로 하는 쉽게 그래픽 처리를 할 수 있는 간단한 언어를 하나 만들고 있다.

전체적으로 Lua나 Visual Basic에게 영감을 받아 쉽게 읽을수 있는 문법을 가지게 만들려고 생각중이다.

demo for image drawingdemo for general purpose computing
3

https://github.com/bglgwyng/nix-x-cabal

한달간의 삽질끝에 Nix + Haskell 빌드 프레임워크를 완성했다. 늘 Nix, Haskell에 기여하고 싶었지만, 솔직히 이걸 내가 직접해야하는 상황이 올줄은 몰랐네. Nix 디버깅하느라 정말 개고통이었다..

4
2

Ailrun (UTC-5/-4) replied to the below article:

공허한 참

박준규 @curry@hackers.pub

하스켈의 `all` 함수에 빈 리스트를 넣었을 때 왜 `True`가 반환되는지에 대한 의문을 "공허한 참(Vacuous truth)"이라는 개념을 통해 탐구합니다. 흔히 '구현이 그렇게 되어 있으니까'라고 생각할 수 있지만, 저자는 이 현상을 논리적으로 분석합니다. `all` 함수의 구현 방식과, 빈 리스트에 대한 연산 결과가 전체 결과에 미치는 영향을 설명하며, 공집합의 모든 원소가 짝수라는 명제가 참인 이유와 유사한 논리적 근거를 제시합니다. 이를 통해 코드와 수학 간의 연결고리를 발견하고, 마지막으로 ChatGPT가 생성한 유머러스한 이미지를 곁들여 독자에게 즐거움을 선사합니다.

Read more →
5

@curry박준규 all을 다음과 같이 정의하면 문제가 무엇일까요?

all p [] = False
all p [x] = p x
all p (x:xs) = p x && all xs

이 질문에 대한 대답 중 all의 의미에 관한 것이 있을 겁니다. 논리적으로 "모든 ...에 대해"를 어떻게 이해해야 하는냐에 대한 것 말이지요.

공집합을 직접 사용하는 것이 가장 간단한 예시겠지만, 좀 더 논리학에서 자주 사용되는 예시로는 "20세기의 모든 프랑스 왕은 대머리다"가 있겠습니다. 이는 무의미하게 (Vacuously) 참인데요, 왜냐면 19세기를 마지막으로 프랑스에는 더 이상 왕이 없기 때문이지요. 즉, 일반적으로 "모든 ...에 대해"에서 "..." 부분이 (결과적으로) 공집합일 경우 "모든 ..."에 의해 수식된 본문이 어떤 문장인지와는 상관 없이 참이라고 이해한다는 것이지요.

5
1

노트북 개발환경 세팅하다가 어이없이 하루를 다 날리고(데브 컨테이너가 안 켜져서 별 짓을 다해봤는데 Execute In WSL 옵션이 꺼져 있어서 그런 거였다... ... ...) 에러만 모아놓은 블로그라도 만들까 (n번째로) 생각한 일요일... 삽질을 안 하는 날이 없다

1

OpenAI의 gpt-oss 모델에 이어, RAG (검색 증강 생성)에서 매우 중요한 역할을 하는 임베딩 모델을 Google에서 새롭게 오픈 소스로 공개헀습니다.

EmbeddingGemma라는 이름의 임베딩 모델로, 고성능 하드웨어 없이도 RAG를 구현할 수 있으면서, 한국어, 중국어, 일본어를 포함한 수많은 언어를 지원하도록 개발된 모델이어서 의미가 있습니다.

그래서 재빨리 File-based App과 Semantic Kernel용으로 개발된 sqlite-vec 확장 모듈을 붙여서 프로토타입 코드를 만들어봤는데, 잘 작동하는 것 같네요! :-D

https://forum.dotnetdev.kr/t/google-embeddinggemma-ollama-sqlite-vec-rag/13754

1
2

洪 民憙 (Hong Minhee) shared the below article:

공허한 참

박준규 @curry@hackers.pub

하스켈의 `all` 함수에 빈 리스트를 넣었을 때 왜 `True`가 반환되는지에 대한 의문을 "공허한 참(Vacuous truth)"이라는 개념을 통해 탐구합니다. 흔히 '구현이 그렇게 되어 있으니까'라고 생각할 수 있지만, 저자는 이 현상을 논리적으로 분석합니다. `all` 함수의 구현 방식과, 빈 리스트에 대한 연산 결과가 전체 결과에 미치는 영향을 설명하며, 공집합의 모든 원소가 짝수라는 명제가 참인 이유와 유사한 논리적 근거를 제시합니다. 이를 통해 코드와 수학 간의 연결고리를 발견하고, 마지막으로 ChatGPT가 생성한 유머러스한 이미지를 곁들여 독자에게 즐거움을 선사합니다.

Read more →
5
4
2
3
5

여러 분들의 도움으로 대충 리퍼럴 사이드 프로젝트의 모양이 점점 더 갖춰지고 있습니다...

이제 https://referral.akaiaoon.dev/t/malkoG 하면 malkoG 깃허브 핸들에 추천사를 작성하실 수 있고요, https://referral.akaiaoon.dev/u/malkoG 하면 malkoG 깃허브 핸들에 추천하신 분들의 추천사를 작성하실 수 있습니다.

다음에는 /t/ 엔드포인트용 뱃지 이미지를 만들까봐요... buy me a coffee 처럼 말이죠. 예를 들면: "Buy Me A Coffee" 뭐 이런 이미지가 있으면 더 좋지 않을까요.

4
6