What is Hackers' Pub?

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

最近はフォロワーの皆さまが配信に来てくれるから忘れがちだけど、実際雑談配信+季節のイベントって行事が被りやすいから誰も来いという可能性は常に考えておかければいのですよね……​:animuthinku:

誰も来
かったら一人で泣きがらほろ酔い飲んでケーキ食べて今年の振り返りを20分ぐらい一人でしゃべって枠閉じると思います​:yappa_tsureewa:

1

Tiny Mastodon Reminder :mastodon:💡

When discussing a specific topic, using at least one relevant hashtag in your post is a great idea to help your post getting seen and found.

👉 You can add your hashtag(s) at the end to improve accessibility and readability.

👉 You should CapitalizeEachWord of a multi-word hashtag to increase accessibility.

👉 Don't forget that you can also follow hashtags on Mastodon! :awesome:

0
0
0
1
1

그런데 실제로 이를 조건 분기로 구현해보면 상당히 복잡해진다. 더 일반화된 방법이 필요하다. 버전 관계를 다시 정의해보자. 변환기를 기준으로 생각해보면 모든 버전 사이에 순서가 있다고 할 수는 없다. 버전을 poset으로 모델링해보면 어떨까? a ≺ b 관계가 성립하는 경우에는 b의 변환기를 이용해 a를 마이그레이션할 수 있다. 이 관계가 성립하려면 (1) a가 안정 버전이고, (2) b가 알파 버전이 아니고, (3) major(a) < major(b)이어야 한다.

(1.x, 3.x)는 모든 조건을 만족하기 때문에 변환기를 거쳐 마이그레이션할 수 있다. (1.x, 3.x-beta)도 모든 조건을 만족한다. 반면 (3.x-beta, 1.x)는 (1), (3)을 위반하기 때문에 변환기를 사용할 수 없다. (2.x-alpha.1, 3.x-alpha.0)는 (1), (2)를 위반한다. 이렇게 출발 버전부터 시작해 a ≺ b 관계를 만족하고, b가 목적 버전이 아닌 경우 안정 버전이어야 한다는 조건을 적용해 나가면 도착 버전까지의 경로도 얻을 수 있다.

버전 계보를 나타내는 흐름도. 왼쪽에는 변환 가능한 버전이 세로로 배치되어 있으며, 1.x에서 시작해 2.x, 3.x, 4.x를 거쳐 5.x-beta로 순차적으로 업그레이드된다. 3.x에서 3.x-beta로의 분기와 3.x에서 4.x로의 진행이 표시되어 있다. 오른쪽에는 사각형 테두리로 묶인 영역이 있으며, 이 안에는 2.x-alpha.0에서 2.x-alpha.1로 이어지는 알파 버전 체인, 2.x-alpha.k, 그리고 3.x-alpha.0이 포함된다. 점선 화살표는 변환기가 있는 버전(2.x, 3.x)에서 변환기가 없는 알파 버전으로의 파생 관계를 나타낸다. 녹색 노드는 변환기가 있는 버전, 흰색 노드는 변환기가 없는 버전을 의미하도록 색칠되어 있다.
1

오랜만에 복잡한 문제를 단순한 형태로 모델링해서 해결했다. 문제 상황은 대략 라이브러리의 메이저 버전을 위해 자동 마이그레이션을 지원하는 것이다. 각 메이저 버전에는 이전 버전의 코드를 자동으로 변환해주는 변환기가 함께 배포된다. 만약 1.x에서 3.x로 업데이트할 때는 2.x 변환기, 3.x 변환기를 순차적으로 실행해야 한다. 즉, 하위 버전에서 출발해 상위 버전에 도착하는 경로를 구해야 한다.

그런데 베타 버전(x.y-beta)과 알파 버전(x.y-alpha.z)을 고려해야 한다. 베타 버전에는 직전 버전에 대한 변환기가 있고, 알파 버전에는 변환기가 없다. 나이브하게 생각해보면 출발 버전 유형과 도착 버전 유형의 조합에 대해 모든 경우를 분기해서 경로를 구할 수 있을 것처럼 보인다.

세로로 정렬된 버전 업그레이드 흐름도. 가장 아래에 1.x가 있고, 위쪽으로 2.x, 3.x, 4.x가 순차적으로 배치되어 있다. 각 버전은 위를 향한 실선 화살표로 연결되어 있으며, 하위 메이저 버전에서 상위 메이저 버전으로의 직선적인 변환 경로를 나타낸다. 모든 노드는 연한 녹색 배경의 둥근 사각형으로 표시되어 있다.버전 계보를 나타내는 흐름도로, 변환히가 있는 안정 버전과 베타 버전, 알파 버전이 공간적으로 분리되어 배치되어 있다. 오른쪽에는 버전 흐름이 세로로 정렬되어 있으며, 1.x에서 2.x, 3.x, 4.x를 거쳐 5.x-beta로 업그레이드된다. 2.x에서 3.x-beta로, 3.x에서 3.x-alpha.0으로의 분기 경로가 명확히 표시된다. 왼쪽에는 알파 버전들이 독립적으로 배치되어 있으며, 2.x-alpha.0에서 2.x-alpha.1로 이어지는 체인과 2.x-alpha.k, 3.x-alpha.0이 포함된다. 실선과 곡선 화살표는 2.x 또는 3.x에서 각 알파 및 베타 버전으로의 파생 관계를 나타낸다. 녹색 노드는 변환기가 있는 버전, 흰색 노드는 변환기가 없는 버전을 의미한다.

그런데 실제로 이를 조건 분기로 구현해보면 상당히 복잡해진다. 더 일반화된 방법이 필요하다. 버전 관계를 다시 정의해보자. 변환기를 기준으로 생각해보면 모든 버전 사이에 순서가 있다고 할 수는 없다. 버전을 poset으로 모델링해보면 어떨까? a ≺ b 관계가 성립하는 경우에는 b의 변환기를 이용해 a를 마이그레이션할 수 있다. 이 관계가 성립하려면 (1) a가 안정 버전이고, (2) b가 알파 버전이 아니고, (3) major(a) < major(b)이어야 한다.

1

오랜만에 복잡한 문제를 단순한 형태로 모델링해서 해결했다. 문제 상황은 대략 라이브러리의 메이저 버전을 위해 자동 마이그레이션을 지원하는 것이다. 각 메이저 버전에는 이전 버전의 코드를 자동으로 변환해주는 변환기가 함께 배포된다. 만약 1.x에서 3.x로 업데이트할 때는 2.x 변환기, 3.x 변환기를 순차적으로 실행해야 한다. 즉, 하위 버전에서 출발해 상위 버전에 도착하는 경로를 구해야 한다.

그런데 베타 버전(x.y-beta)과 알파 버전(x.y-alpha.z)을 고려해야 한다. 베타 버전에는 직전 버전에 대한 변환기가 있고, 알파 버전에는 변환기가 없다. 나이브하게 생각해보면 출발 버전 유형과 도착 버전 유형의 조합에 대해 모든 경우를 분기해서 경로를 구할 수 있을 것처럼 보인다.

세로로 정렬된 버전 업그레이드 흐름도. 가장 아래에 1.x가 있고, 위쪽으로 2.x, 3.x, 4.x가 순차적으로 배치되어 있다. 각 버전은 위를 향한 실선 화살표로 연결되어 있으며, 하위 메이저 버전에서 상위 메이저 버전으로의 직선적인 변환 경로를 나타낸다. 모든 노드는 연한 녹색 배경의 둥근 사각형으로 표시되어 있다.버전 계보를 나타내는 흐름도로, 변환히가 있는 안정 버전과 베타 버전, 알파 버전이 공간적으로 분리되어 배치되어 있다. 오른쪽에는 버전 흐름이 세로로 정렬되어 있으며, 1.x에서 2.x, 3.x, 4.x를 거쳐 5.x-beta로 업그레이드된다. 2.x에서 3.x-beta로, 3.x에서 3.x-alpha.0으로의 분기 경로가 명확히 표시된다. 왼쪽에는 알파 버전들이 독립적으로 배치되어 있으며, 2.x-alpha.0에서 2.x-alpha.1로 이어지는 체인과 2.x-alpha.k, 3.x-alpha.0이 포함된다. 실선과 곡선 화살표는 2.x 또는 3.x에서 각 알파 및 베타 버전으로의 파생 관계를 나타낸다. 녹색 노드는 변환기가 있는 버전, 흰색 노드는 변환기가 없는 버전을 의미한다.
1

Found this helpful resource by Ben Boyter (@boyter): a collection of sequence diagrams explaining how / works in practice—covering post creation, follows, boosts, deletions, and user migration.

If you're trying to implement ActivityPub, the spec can be frustratingly vague, and different servers do things differently. This aims to be a “clean room” reference for getting federation right.

https://github.com/boyter/activitypub

0

Found this helpful resource by Ben Boyter (@boyter): a collection of sequence diagrams explaining how / works in practice—covering post creation, follows, boosts, deletions, and user migration.

If you're trying to implement ActivityPub, the spec can be frustratingly vague, and different servers do things differently. This aims to be a “clean room” reference for getting federation right.

https://github.com/boyter/activitypub

2
1
0
1

As a community, we often ask ourselves how to attract more users to . Yet the real tragedy is that people would rather build something entirely new (loosely based on email or ) than consider XMPP. Need end-to-end encryption by default? If compatibility with existing XMPP clients is a secondary concern, you can implement it in your own solution while still benefiting from our two decades of experience in instant messaging.

0
0
0

RT @TheHackersNews
⚠️ ALERT — A critical RCE flaw (CVSS 9.9) was found in the n8n workflow automation platform.

CVE-2025-68613 lets authenticated users execute arbitrary code, enabling full instance takeover, data access, and system-level actions.

More than 103k exposed instances are observed globally.

🔗 Details → thehackernews.com/2025/12/crit

0
0

Like your body reacts to the food you feed it,
Your brain reacts to the content you feed it.

Be mindful about what you feed your brain. Don't let the algorithms dictate what you eat and how you feel.

Pay attention to how a platform influences your mood and the way you think.

Are you getting addicted to downvoting in rage? 👎

Are you missing the doomscrolling adrenaline and increasingly looking to pick fights online, and offline? 🤬

These all affect your brain's chemistry,
and eventually your brain's structure even 🧠

Be careful what you feed your brain,
and who serves you this food.

0
0
0
5
0
0
0

相変わらず新参カワアナゴが巣穴から出てきてガラス面に顔くっつけて餌くれアピールしてきとる​:meow0_0:
今日はもうおしまいよ
:ablobcatnodmeltcry:

1
0

I don’t get why people are excited at those “year in review” things that Spotify and their ilk do. It’s like

Corp: hey, in case you forgot, we literally retain details about everything you do; here’s proof for the past year

People: very cool and normal, welcome even

0

계엄선언하고 군대 몰아서 국회 에워싸놓고 총들고 쳐들어간게 티비에 라이브로 쏘였는데 내란인지 아닌지를 따지고 자빠지는게 사법부의 역할이라니 무슨 식팔... 늘어놓으면 다 진지한 소리가 되나? 아닐 것 같은데. 정치적 사건의 자명한 맥락을 니네가 왜 규정하는데요? 너넨 정치하라고 있는 기구가 아님. 여전히 이걸 기존 체제의 연장선에서 ‘사법적 해결(=기소처벌)’ 하는게 매듭이라고 보는 거에 제법 염증난다. 재판을 통해 말할 건 끽해야 ‘뭘로 조질까요?’ 뿐이지 무슨 일이었는지나 조질까 말까에 대해선 할 말이 있을 수 없지 않나.

0

“Basic income is not a utopian dream. It is a practical solution whose time has arrived—we need to ensure it becomes a reality.”

The article references the Mincome trial fifty years ago in Dauphin, Manitoba, where a basic income pilot showed positive results. I was a teenager living there at the time. I’m as not hopeful as the author of this article that basic income will become policy in what’s left of my lifetime.

rabble.ca/columnists/basic-inc

0
1
1
1
0

Found this helpful resource by Ben Boyter (@boyter): a collection of sequence diagrams explaining how / works in practice—covering post creation, follows, boosts, deletions, and user migration.

If you're trying to implement ActivityPub, the spec can be frustratingly vague, and different servers do things differently. This aims to be a “clean room” reference for getting federation right.

https://github.com/boyter/activitypub

2
1
0
0
0
0
0

RT @TheHackersNews
⚠️ ALERT — A critical RCE flaw (CVSS 9.9) was found in the n8n workflow automation platform.

CVE-2025-68613 lets authenticated users execute arbitrary code, enabling full instance takeover, data access, and system-level actions.

More than 103k exposed instances are observed globally.

🔗 Details → thehackernews.com/2025/12/crit

0
1
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0