Hackers' PubにLLMを活用した記事の自動翻訳機能が追加されました。これにより、Hackers' Pubに投稿された英語や韓国語の記事を日本語で閲覧できるだけでなく、日本語で書いた記事を海外の読者に紹介する事も可能に成りました。
なお、Hackers' Pubは招待制で運営されています。ご興味のある方は、DMでメールアドレスを教えていただければ、招待いたします。
@hongminhee@hackers.pub · 657 following · 428 followers
Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub!
Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다.
Hackers' PubにLLMを活用した記事の自動翻訳機能が追加されました。これにより、Hackers' Pubに投稿された英語や韓国語の記事を日本語で閲覧できるだけでなく、日本語で書いた記事を海外の読者に紹介する事も可能に成りました。
なお、Hackers' Pubは招待制で運営されています。ご興味のある方は、DMでメールアドレスを教えていただければ、招待いたします。
오늘도 해커스펍 GraphQL API 깎기 해야지
Hello, Hackers' Pub!
This new FediDB v2 webapp can be self-hosted btw!
Working on adding a few new pages/features to FediDB, including:
- translation support (i18n)
- a federated wiki (👀)
- apps + clients
- popular accounts
- viral topics
- trends
- quarterly reports
- stats overview w/ geomaps + advanced filtering
And much more ✨
> git clone https://github.com/fedidb/fedidb-nuxt
부끄럽지만 typst로 깎은 이력서와 포트폴리오를 공개합니다: https://github.com/gidongkwon/resume
게임 클라이언트에서 웹 프론트엔드로 커리어 전환을 하는 단계에 있습니다.
혹 피드백주실 것이 있다면 언제든지 좋아요...!
직링크는 아래:
이력서 - https://gidongkwon.github.io/resume/resume-gidongkwon.pdf
포트폴리오 - https://gidongkwon.github.io/resume/portfolio-gidongkwon.pdf
Relay로 offline db sync를 하고 있었을땐, Relay가 Node의 Id나 Edge의 Cursor가 Opaque란 가정을 하고있는게 걸림돌이라고 느껴졌다. SQLite에 저장하려면 어차피 id로 부터 composite key를 구해야하고, 거기엔 또 order도 존재하는데 Relay는 이런데 전혀 무관심하다. 하지만 일반적인 웹사이트 렌더링에는 저런 가정이 전혀 무리가 없다.
Signal같은건데 incremental update도 되고 GC도 가능한 무언가를 만들려고 했더니 이런 정의가 나왔다. 혹시 비슷한거 알고 계신분 있나요?
type Dynamic<Value, Delta> = {
read(): Value;
disconnect(): void;
updated: Observable<Delta>;
fork(): Dynamic<Value, Delta>;
};
2개 이상의 기기를 동시 컨트롤 할 때 (주로 윈도와 맥을 오갈 때) synergy 라는 프로그램으로 마우스, 키보드 공유해서 사용해 왔는데, 오늘 처음 (MacOS 내장기능의) 맥미니와 맥북에어간의 마우스 키보드 공유를 해보고 놀라움을 금치 못했다. 끊김도 없고 거의 네티이브 유사한 느낌으로 자연스럽다. 물론 제대로 완성도를 느끼려면 더 써봐야겠지만.
그동안 Relay를 offline db sync 용도로 쓰고있었는데(첨부터 그러려고 했던건 아니고, API 두벌 만드는걸 피하다보니 그 역할도 떠맡음), 그래서 Relay가 킹론상 좋다는건 아는데 실질적으로 장점을 못누리고 살았었다. 근데 지금 추가하는 기능에서는 Relay를 본래 용도에 맞게 쓰고있는데, 설계 고민도 줄여주면서 코드가 쭉쭉 나온다.
Deno 2.3 is here:
🌱 deno compile with FFI & Node native add-ons
📦 Local npm packages
⭐ deno fmt CSS/HTML/SQL in tagged templates
🔭 OTel event recording & tracing in distributed services
and more —
Rust로 작성한 JPEG XL 디코더, jxl-oxide의 버전 0.12.0을 릴리스했습니다. https://github.com/tirr-c/jxl-oxide/releases/tag/0.12.0
CMYK 프로파일 등 복잡한 ICC 프로파일을 지원하기 위해 기존에 사용하던 Little CMS 2 (lcms2) 에 더해, Rust로 작성된 색 관리 시스템인 moxcms 지원을 추가한 것이 주요 변경사항입니다. CLI 툴의 기본 CMS는 아직 lcms2이지만 --cms moxcms
옵션으로 moxcms를 사용할 수 있습니다.
jxl-oxide WebAssembly 데모도 있습니다. https://jxl-oxide.tirr.dev/demo/index.html
와 드디어 오늘도 카피닌자 닉값했다
이 사이트가 아직도 살아있구나. http://www.soen.kr/ (구 winapi dot co dot kr)
알고리즘 공부하시는 분과 이야기 나누다가 생각나서 오랜만에 들어가봤는데 여전한 모습이었다. 정올 공부할 때나 윈도 프로그램 개발할 때 자주 들락거리던 사이트인데 반가운 마음...
많은 프로그래머가 아이디어를 시각화하기 위해 화이트보드나 종이에 손으로 필기를 한다. 기존에도 AI가 사용자의 필기를 기반으로 코드를 작성해주는 연구는 있었지만, 필기와 코드가 분리되어 있다는 한계를 벗어나지 못했다. Code Shaping은 단순히 스케치를 코드로 변환하는 툴이 아니라, 필기와 코드 편집이라는 두 워크플로우를 통합하는 툴. 사용자가 코드 위에 자유롭게 필기함으로써 코드를 편집할 수 있다. 코드를 한줄씩 작성하는 것이 아니라, 2차원 평면을 탐색하며 코드를 편집하기 때문에 피험자들이 선형적으로 인식했던 코드 작성을 공간적으로 감각하게 되었다고. https://programs.sigchi.org/chi/2025/program/content/189580
해커스펍은 나에게 있어서 훌륭한 교과서..... (열심히 코드 뜯어보면서 뭔가를 만들고 있다는 뜻ㅎ)
이건 좀 억울할 게 부사장도 열심히 해명을 하지만 디스크 레벨(at rest) 암호화 얘기도 아니고 통신 레벨(in transit) 암호화 얘기도 아니고 DB ID랑 암호로 쿼리했을 때 돌아오는 데이터가 암호화되지 않았다고 잘못이라고 하는 것이다. "이중 암호화" 하라는 건데, 일반적인 공격 모델에서 해커는 보통 서버 코드와 변수를 볼 수 있으므로 의미없는 행위다*. 청문회 중 이준석은 어느 순간부터 자신있게 해시를 암호화라고 말하기 시작해서 더욱 혼란스럽게 만드는데, 조금이라도 프로토콜이나 암호학 지식이 있다면 이런 말 못한다.
RE: https://bsky.app/profile/did:plc:wxbkg2wk54g6s2nmb7jd5p74/post/3lnzo7xk7ec2y
洪 民憙 (Hong Minhee) shared the below article:
lionhairdino @lionhairdino@hackers.pub
함수형에선, 스트림 [1,2,3]
에
(+1)
을 map
해서 [2,3,4]
를 만들고,
(+2)
를 map
해서 [3,4,5]
를 만드는 작업을,
(+2) ∘ (+1)
를 [1,2,3]
에 map
하는 걸로 표현할 수 있어야 한다.
(+1)
, (+2)
, ((+2) ∘ (+1))
함수들은 모두 Int -> Int
함수를 원하는 곳에 넣어 줄 수 있는 함수들이다.
위와 같이, 완벽하게 정보를 유지하진 않지만, 같은 "류"의 작업을 두 번 하는 것을, 한 번 작업하는 것으로 표현할 수 있는 경우도 있다. 예를 들어,
첫 번째 작업으로, "hello"
를 로그로 남기고,
두 번째 작업으로, " world"
를 로그로 남기는데,
이를 한 번의 작업으로, "hello world"
를 로그로 남기는 작업으로 표현할 수 있다.
여기는 로그를 남기는 횟수 정보는 필요 없고, 최종 로그만 필요하다는 인위적 정보 선택이 들어가 있다. 이 인위적 선택(여기선 로그 문자열을 합치는 것)을 수긍해야만 가능하다.
로그를 남기는 작업을 m
이라 부를 때, m a
를 받는 곳에 m (m a)
를 넘길 방법이 생긴다는 뜻이다. 달리 말하면, m (m a)
로 표현되는 작업을 인위적인 절차를 거쳐 m a
로 만들어도, 내가 필요한 정보는 사라지지 않는다는 뜻이다.
무언가가 하나인데, 유심히 보면 하나가 아닌 경우, 이게 바로 모노이드다. mono
는 하나를 뜻하고, ~oid
는 "척"하는 걸 말한다. (예. 인간인 척 하는 휴머노이드) 하나인척 하는 게 모노이드다. 수학 책 앞 부분에서 이항 연산, 결합 법칙, 항등원이 있으면 모노이드라는 설명을 하는데, 그래서 모노이드가 뭐에 쓰는 물건인지는 한참 공부해야 알 게 된다.
(아래는 혼자만의 생각입니다.)
모노이드를 바라 보는 눈 중 하나로, "모든 대상을 이항 연산으로 표현"을 들 수 있다.
0
을 포함한 자연수들 0,1,2,3,...
들은, +
이항 연산과, 이 연산의 항등원 0
이 있으면, 모두 ○ + ○
한 가지 모양으로 표현할 수 있게 된다.
0
-> 0+0
1
-> 0+1
2
-> 0+(1+1) = 1+1
...
모노이드 구조이기에, 어딘가에서 ○ + ○
모양을 원한다면, 0,1,2,3,...
을 모두 넣어 줄 수 있다.
"어딘가에서 m a
를 원한다면, m a, m (m a), m (m (m a)), ...
를 모두 넣어 줄 수 있다."를 위와 비교하며 보자.
위에서 얘기한 인위적 선택 작업을 join
으로 표현하면,
m (m a)
--join--> m a
m (m (m a))
--join--> m (m a)
--join--> m a
...
m
반복 작업을 모두 ○ --join--> ○
모양으로 표현할 수 있을 것만 같다. 그런데, 딱 하나는 표현하지 못한다. join
은 m
이 두 개 있는 걸, 하나로 만드는 작업이라, m
하나를 ○ --join--> ○
로 표현하지 못한다. m
을 join
이 들어간 모양으로 표현하려면, 자연수, +
에서 처럼 0
에 대응하는 것이 필요하다. m
하나를, m
두 개로 만들되, 최종 결과에 영향을 미치지 않는 pure
라는 작업을 만든다. 위 로그 작업을 예로 들면, 로그로 빈문자 ""
을 추가하는 작업을 pure
로 만든다. 그러면 이제야 비로소, 모든 반복된 m 을 join으로 표현할 수 있게 된다
m a
--pure--> m (m a)
--join--> m a
m (m a)
--join--> m a
m (m (m a))
--join--> m (m a)
--join--> m a
...
이제, join
절차가 항상 있는 m a
를 원하는 곳에 m a
도 m (m (m a))
도 넣어 줄 수 있게 되었다.
"hello"와 " world"를 남기던 두 개의 작업 합쳐, "hello world"를 남기는 하나의 작업으로 표현할 수 있게 되었다.
※ 지금 눈에 명확히 보이진 않지만, m 둘을 합성하는 연산을 .
이라 하면, .
만으론 모노이드 이항 연산 역할을 못하지만, join
의 도움을 받고, id 만으론 항등원 역할을 못하지만, pure
의 도움을 받아 모노이드 구조를 이룬다.
당연히 모든 내용이 담겨 있진 않고, 모나드를 무엇의 모노이드로 보는 내용을 비수학적으로 풀어 봤다. 모노이드는 모두를 하나의 모양으로 표현 할 수 있다는 걸, 보증해주는 거대한 개념이지만, 업자인 나에겐 "그렇게 해도 된다"는 정도의 느낌만 있다. (결합 법칙이 빠졌는데, 나중에 코드를 모듈화 하는 것과 연관지어 보면, 명확한 대응을 알 수 있다.)
모나드는, 조금 다르게 생긴 것을, 당장 필요한 요소만 잘 관리한다면 "같은 걸로 치자"를 멋지게(,어렵게) 형식화한 이론이다.
사족.
저와 대화를 나눠본 분들은 아시겠지만, 제가 비전공자라 용어 선택이나 개념 정의가 매우 인포멀해서 인상을 찌푸리는 경우도 자주 만듭니다. PL 전공자분들처럼 깊숙히 이론을 파고 싶은 게 아니라, 현실에 적용할 수 있을 만큼의 눈만 가지고 싶습니다. 현실을 모델링할 때, "인위적 정보 선택"을 해서 필요한 정보를 남길 수 있는 경우를 알아채는 눈을 길러야 되는데, bind
또는 flatmap
, return
또는 pure
가 있는 구조가 모나드라고만 배우면, 이런 눈을 가지는데 매우 오래 걸리는 것 같습니다.
비전공 업자분이 보셨다면, 얻어 가시는 아이디어가 있었으면 좋겠고, 전공자분이 보셨다면, 인포멀한 부분에 너무 인상 찌푸리지 마시고, 틀린 개념이 있다면, 부드럽게 조언을 해주시면 좋겠습니다.
※ 모나드 용어는 mono
와 triad
에 온 게 아닐까 의심한다는 설이 있습니다.(검색해 보면 근거는 미약해 보입니다.) 모나드는 join
, return
그리고 위에서 명시적 언급은 안했지만, 펑터의 fmap
, 이렇게 세 개 triad의 도움을 받아 모노이드로 만들 수 있는 구조입니다.
※ "정교한" 내용이 아님을 강조하고 선입견이 생기지 않기 위해, 일부러 제목을 달지 않고, 반말(혼잣말)투로 썼습니다.
제목은
순서 입니다.
웹 앱들이 카메라, 위치 등 권한을 어떤 방식으로 요청하고 있는지, 사용자가 이에 어떻게 반응하는지에 관한 연구. 많은 웹 사이트가 사용자에게 아무런 맥락없이 권한을 요청한다. 기본적으로 사용자에게 권한이 왜 필요한지 설명하면 허용률이 높아졌고, 긍정적인 톤으로 권한을 요청하면 허용률이 18% 증가한다. 텍스트만 보여주기 보다는 UI 요소가 있을 때 허용률이 더 높았는데, 오버레이(+41%) 또는 전체화면(+33%)으로 권한을 요청하면 허용률이 늘지만 사용자의 불만족도 높아졌다. https://programs.sigchi.org/chi/2025/program/content/188217
@kodingwarriorJaeyeol Lee
@hongminhee洪 民憙 (Hong Minhee) @ysh염산하 전자책으로는 구매할 수 있는 것 같아요 (인사이트, 알라딘). 그리고 인사이트 전자책(PDF)은 DRM-FREE (인사이트 블로그) 라서 개인적으로 좀 마음 편히 구매합니다
K오픈소스라… TS에서 map이나 groupBy 같은 함수들을 체이닝해주는 라이브러리가 있는데 맛도리라서 놀랐고 한국 기업에서 만든 라이브러리라서 더 놀랐던
Drizzle ORM이 어서 Temporal.Instant
를 지원했으면 좋겠다. 그 전에 드라이버가 먼저 지원해야 하려나? PostgreSQL의 timestamp with time zone
타입이 나노초 정밀도인데 Date
는 밀리초 정밀도라 값이 손실되고 있다.
@hongminhee洪 民憙 (Hong Minhee) 안 그래도 깎아보던 중입니다 😂
We're pleased to announce that #Fedify has been included in the Nivenly Fediverse Security Fund program!
The @nivenlyThe Nivenly Foundation Foundation has launched a security bounty fund to support contributors who identify and help fix #security vulnerabilities in popular #fediverse software. Both Fedify and
@holloHollo
are among the selected projects that meet their responsible security disclosure requirements.
This program will run from April–September 2025, with bounties of $250–$500 USD for high and critical security vulnerabilities.
We're honored to be recognized alongside other established fediverse projects like Mastodon, Misskey, and Lemmy. This further encourages our commitment to maintaining strong security practices.
If you're interested in contributing to Fedify's security, please follow our responsible disclosure process outlined in our SECURITY.md file.
Learn more about the program:
https://nivenly.org/blog/2025/04/01/nivenly-fediverse-security-fund/
洪 民憙 (Hong Minhee) shared the below article:
Evan Prodromou @evanprodromou@socialwebfoundation.org
I'm making an initial version of places.pub available today. places.pub is a collection of Place objects suitable for use in geosocial applications on the ActivityPub network. Part of my work in the Social Web Community Group at the W3C has been participation in the GeoSocial Task Force. This is a sub-group of the SocialCG that focuses on implementing user stories in ActivityPub related to the intersection of geographical systems and social networking, for example, tagging an image with […]
Read more →Programming languages should have a tree traversal primitive https://lobste.rs/s/ctopbt #programming
https://blog.tylerglaiel.com/p/programming-languages-should-have
어디 RFC 문서 의존 관계 정리된 거 없나요?
@curry박준규 혹시 말씀하신 의존 관계라는 것이 참조라는 것과는 좀 다른 걸까요? 같은거라면 요런 기능도 있는 것 같아요
어디 RFC 문서 의존 관계 정리된 거 없나요?
UI 개발을 어렵게 만드는 가장 큰 요인은 테스트 아닐까... 비즈니스 로직이나 상태에 대한 유닛 테스트는 UI 차원에서 커버리지가 너무 낮다. E2E 테스트는 사이클이 너무 크고, 스냅샷 테스트는 시각적인 차이까지 캐치하지는 못한다.
10만년 만에 오픈소스 기여해봄. 러스트로 UI 개발해본건 처음인데 언어보단 UI가 더 까다로웠다 https://github.com/faiface/par-lang/pull/42
왼쪽 나 오릉쪽 홍
각자 조용히 할 일 중인데
거기서 거기임
웃겨
뒤늦은 서울숲하스켈 조교 후기: 왠지 모르겠는데, 다들 운동을 열심히 하시는지 몸이 굉장히 좋으셨다. 건강한 신체에 건강한 정신이 깃든다를 실천하고 계신 분들이었다.
...는 농담이고(근데 사실입니다), 커리큘럼이 내가 상상하던 방향이랑은 꽤 달라서 흥미로웠다.
마지막 회차에 하스켈로 웹서버를 띄우는 것을 목표로 진행중이었는데, 이를 위해 Monad Transformer(Monad는 진즉에 해치우고), Tagless Final, Lens를 모두 소개한 상태였다. 근데 저 개념들이 '왜 하스켈에선 이거 안 돼요? 왤케 불편해요?' 같은 질문을 회피하지 않으려면 꼭 가르쳐야 하는 부분들이긴 하다. 가령, 'Monad만 배우면 이제 하스켈에서 명령형 코딩 할수 있다'라는 이야기가 이론상은 맞는데, Monad Transformer나 Algebraic Effect 같은거 안쓰면 웹사이트등 실제로 쓸모있는 프로그램을 사실상 짤수가 없다. 그래서 가르치긴 해야한다.
문제는 저걸 다 가르치려면 상당히 빡셀테니, 나는 만약에 내가 하스켈 부트캠프를 한다면 일단은 저런걸 회피하고 하스켈의 멋진 부분에 집중하는 커리큘럼을 짜야겠다고 그동안 생각했었다. 근데 또 이건 어찌보면 기만이기도 하다. 그런데 서울숲하스켈에서는 어찌저찌 다들 따라오도록 구성을 잘하신것 같다 하스켈을 이질적인(긍정적으로든 부정적으로든) 프로그래밍 언어로 소개하는게 아니라, 언젠가 본인의 작업에 활용할 언어의 후보로 올리게끔 하려면 저런 내용들을 다 다뤘어야 할것이다.
암튼 그동안 수고많으셨습니다. @eunmin은민
#ActivityPub "The Good, the Bad and the Ugly" is a good article by @dominikDominik Chrástecký - Blog
https://chrastecky.dev/technology/activity-pub-the-good-the-bad-and-the-ugly
The two mentioned examples in "The Bad" are long-time issues that were also discussed at #SocialHub. I just responded to one of them on the forum..
The #Mastodon Update(Note) quirk. https://socialhub.activitypub.rocks/t/update-note-quirk/4545/14
The other one is around Direct Messages which are a hack (a Note with special sauce). #LitePub specifies ChatMessage object type here, which is the intended way to extend the protocol. #FEP
이번 변경으로 홈 화면에 추가
로 해커즈펍을 설치하면 android, iOS 양쪽 모두, 단독 앱인 것 같은 느낌으로 쓸 수 있게됩니다. 다만, 이메일의 로그인 링크가 설치 된 쪽으로는 안열리는 문제가 있으니 미리 로그인 된 상태에서 설치를 하셔야 곤란하지 않습니다.
저도 비슷한 생각인데, Haskell이나 Rust는 코너 케이스를 다루지 않고는 컴파일도 못 하게 금지하는 경우들이 꽤 많고 (그래서 좋은 언어지요), 빠르게 해피 패스만을 검증하고 싶을 때는 Python 같은 널널한 언어(복잡하고 규모가 큰 소프트웨어를 만들 때는 나쁜 언어가 되지요)가 쉽게 느껴질 수 있다고 생각합니다. 즉, Haskell이나 Rust가 어렵다고 말할 때의 어려움은 개념적 이해의 난도라기 보다는 시행착오의 커브의 경사를 얘기하는 것 같아요.
비슷한 측면에서 저는 Python의 들여쓰기를 강제하는 문법이 프로그래밍 초심자에게 좋은 습관을 처음부터 정착시키는 데에는 일조할 수 있겠지만, 결코 쉽지는 않다고 생각합니다.
RE: https://hackers.pub/@bgl/01967f97-67ab-7a98-a6e5-16cb3ef31856
@hongminhee洪 民憙 (Hong Minhee) 약간 딴 얘긴데, 저는 들여쓰기가 그냥 안좋은 문법요소 같습니다. 코드의 복붙을 unreliable하게 만들어버려서요. 반대로 space sensitive한 문법은 괜찮다고 생각합니다. 복붙시 문제가 생겨도 스페이스 한번 치면 해결되니까요. 들여쓰기 대신에 {} 쌍을 쓰게 만들되, 에디터에서 보여줄때 어떻게 알아서 예쁘게 보여주는게 낫다고 생각해요.
러스트가 어렵다는 이야기가 숙고없이 재생산 되는거 같긴 합니다. 제가 러스트를 별로 안써봐서 실제로 얼마나 어려운진 모르겠습니다.
그런데 말씀하신 모나드, 트레잇, 오너십 등의 개념들과 클래스는 좀 차이가 있다고 생각합니다. 그러니까 자바에서 클래스 때문에 어떤 코드를 못짜게 되진 않잖아요? 자바를 하면서 클래스를 제대로 쓰지않고도 뭔가 만들순 있습니다. 반면 전자의 개념들은 잘못된 코드를 짜는걸 막고, 초보자 입장에서 뭔가 하고싶은게 있는데 그게 금지되는 상황에서 어렵다는 느낌을 (필요이상으로 크게) 받을수 있다고 생각합니다.
에디터 뭐 쓰세요...?
Vi...
vim 이요??
...sual Studio Code
#뻘글로타임라인메우기협회
fresh에서 아직 플러그인이 정적파일을 추가를 못한다고 확인을 했고, 이것에 대한 PR이 올라와 있으니, 머지되고 퍼블리시 되고나면 직접 컴파일러를 실행해서라도 Service worker, PWA 플러그인을 만들 수 있을 것 같다.
https://moreal.dev/blog/review-learning-zig/
Zig 공부 회고 |
moreal.dev
Link author: Lee Dogeon@moreal@hackers.pub
New blog post! Let's categorize our deps better with @pnpm.io catalogs!
antfu.me/posts/catego...
Categorize Your Dependencies
서울 하스켈숲 워크숍 완주했습니다...! @eunmin 님의 친절한 설명과 세심한 준비에 감사합니다 🙇
Huge respect 🫡
Deno Temporal이랑 Temporal 폴리필들 간에 타입 호환은 잘 되는구만
Rust로 작성한 JPEG XL 디코더, jxl-oxide의 버전 0.12.0을 릴리스했습니다. https://github.com/tirr-c/jxl-oxide/releases/tag/0.12.0
CMYK 프로파일 등 복잡한 ICC 프로파일을 지원하기 위해 기존에 사용하던 Little CMS 2 (lcms2) 에 더해, Rust로 작성된 색 관리 시스템인 moxcms 지원을 추가한 것이 주요 변경사항입니다. CLI 툴의 기본 CMS는 아직 lcms2이지만 --cms moxcms
옵션으로 moxcms를 사용할 수 있습니다.
jxl-oxide 스스로도 간단한 ICC 프로파일 해석과 합성을 할 수는 있는데요, 아무래도 ICC 프로파일 파서를 관리하는 게 번거롭다 보니(...) 앞으로 이쪽 부분도 moxcms로 교체할까 하는 생각을 하고 있긴 합니다.
Rust로 작성한 JPEG XL 디코더, jxl-oxide의 버전 0.12.0을 릴리스했습니다. https://github.com/tirr-c/jxl-oxide/releases/tag/0.12.0
CMYK 프로파일 등 복잡한 ICC 프로파일을 지원하기 위해 기존에 사용하던 Little CMS 2 (lcms2) 에 더해, Rust로 작성된 색 관리 시스템인 moxcms 지원을 추가한 것이 주요 변경사항입니다. CLI 툴의 기본 CMS는 아직 lcms2이지만 --cms moxcms
옵션으로 moxcms를 사용할 수 있습니다.
근데 백엔드 구현하기 GraphQL이 REST보다 쉽지 않나?? (강성GQL교도)
Protected Route에 대해 좀 생각을 더 해봤는데, 난 처음엔 React Native Navigation에서만 쓰는 해괴한 방식인줄 알았다. 근데 좀더 생각해봐도 별로긴하다. 라우터란게 결국 전체 상태중에 path만 별도로 관리해주는 건데,
app :: State -> View
--- router 도입
app :: (Path, State) -> View
--- Protected Route
app :: State -> Path -> View
여기서 대충 말해서 Path -> View
가 라우터라 할수 있겠다. Protected Route는 State로부터 라우팅 룰을 동적으로 바꿔버리는 방식이다.
근데 애초에, 라우팅 룰을 정적인 정보로 만들고(즉 ->
가 아님) 활용할게 아니라면 라우터를 쓸 이유가 뭘까? 그냥 Path
를 일반적인 다른 상태와 똑같이 취급해도 상관없을 것이다. 근데 react-router도 그렇고 애초에 라우팅 룰을 정적인 정보로 알수있는 설계로 되어있지가 않다. Tanstack Router는 예외다.
근데 이러면 그냥 XState 쓰면 되지 않나? 상태/전이에 대한 정적인 정보를 가지고 있고, 또 React Native에서의 라우팅에는 화면 전환이 단순한 Path 변경이 아닌 어떻게 화면을 전환 시킬지(애니메이션 등)도 기술해야하는데, 이 역시 XState 이벤트로 넣으면 된다.
논리와 저수준(Low-level) 자료 표현(Data representation)에 대한 글 2 편 중 첫째 편입니다. "논리적이 되는 두 가지 방법"이라는 부제로 논리적 증명을 하는 두 방법론에 대해서 다뤄보았습니다. 이 중 하나의 방법론이 둘째 편의 핵심이 될 예정입니다.
洪 民憙 (Hong Minhee) shared the below article:
Ailrun (UTC-5/-4) @ailrun@hackers.pub
이 글은 어떤 문장이 "논리적"이라고 할 수 있는지에 대한 심도 있는 탐구를 시작합니다. 일상적인 오용을 지적하며, 진정으로 논리적인 주장은 증명 가능성과 체계의 무모순성이라는 두 가지 핵심 조건을 충족해야 한다고 주장합니다. 특히, "좋은 가정 아래" 논리성을 증명하는 두 가지 방법, 즉 함수형 언어와 유사한 구조를 가진 자연 연역과, 약간의 "부정행위"를 통해 무모순성을 쉽게 보일 수 있는 논건 대수를 소개합니다. 글에서는 명제와 판단의 개념을 명확히 정의하고, 자연 연역을 통해 논리적 증명을 구축하는 방법을 상세히 설명합니다. 특히, 자연 연역과 함수형 언어 간의 놀라운 유사성, 즉 커리-하워드 대응을 통해 논리적 사고와 프로그래밍 언어 이해 사이의 연결고리를 제시합니다. 또한, 자연 연역의 한계를 극복하고 무모순성을 보다 쉽게 증명할 수 있는 논건 대수를 소개하며, 자연 연역과의 구조적 차이점을 강조합니다. 이 글은 논리적 사고의 깊이를 더하고, 프로그래밍 언어와 논리 간의 관계에 대한 흥미로운 통찰을 제공합니다. 특히, 커리-하워드 대응을 통해 논리와 프로그래밍이 어떻게 연결되는지 이해하고 싶은 독자에게 유익할 것입니다.
Read more →