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.

歩きスマホ
╭━━━━━━━╮
┃   ● =   ┃
┃███████┃
┃███████┃
┃███████┃
┃███████┃
┃███████┃
┃███████┃
  |   |/⌒\
 /  __/⌒\⊃
(  /
 \\
  ∪

0
0
0
0
0
0

4주 전에 주간신초의 컬럼에서 자이니치 혐오발언이 실려 논란이 되고 특히 여러 작가들이 공개적으로 비판 성명을 했었는데, 드디어 문제의 컬럼이 폐지되었다고. digital.asahi.com/articles/AST
해당 컬럼은 과거에도 여러 차례 차별 발언이 있었지만 별 문제 없이 연재가 이어져 왔는데, 이번에는 집단 성명으로 공론화가 되어 언론에도 실리게 되어서 그냥 넘어가지 못한 것 같다.

0
0
1
0
1
1

Overlays are often used in Android malware.
They are actually a burden to other domains such as browser extensions. This research, by Marek Toth, shows how click jacking [on hidden overlays] can trick the end-user in sharing his/her entire password manager.

marektoth.com/blog/dom-based-e

If you prefer to read a curated version in French: infosec.exchange/@nono2357/115

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

条例は法律ほど厳しくないという認識なんだけど、それにしても違反は違反なので罪を犯しながら生きているという罪悪感を感じながら生活しなければならないことになる​:tanuki_daradara:

0
0
1
0
0
0
0

I'm so incredibly honoured and proud that Japanese newspaper The Mainichi has published one of my most powerful and loving haiku ever. Especially in this day and age where transpeople do not feel safe any more and are even losing their jobs and/or fleeing their country.

mainichi.jp/english/articles/2

+ 🌈 :lgbt: :rainbow_heart:

@poetrypoetry group

@haikuhaiku group

0

얼마 전, UX/UI 단톡방에
2년차 주니어 개발자 한 분이 들어오셨어.

혼자서 화면 기획부터 기능 구현까지 다 하고 계셨는데,
점점 “어떻게 하면 더 쓰기 편할까?”를 고민하게 되셨대.

책은 조금씩 보고 있지만,
정작 어떻게 시작해야 할지 막막하다고...😓

그래서 단톡방에서 질문을 남기셨는데
신입 디자이너, 현업 디자이너, 기획자, 개발자까지

진짜 다양한 분들이 자기 경험을 바탕으로
조언을 꾹꾹 눌러 담아줬어.

만약 이 개발자분 처럼 UX/UI 고민 중이라면,
한번 참여해서 도움을 얻어봐!

댓글에 링크 남겨둘게!

0

기록적 폭염이 뒤집은 곤충 지도 "벌 습격 늘고 모기는 사라져":
8월 말에 접어들었는데도 연일 이어지는 폭염이 우리 주변 곤충 생태계를 급격히 바꿔놓고 있다. 모기는 자취를 감춘 대신 벌 쏘임 사고가 크게 늘어나는 상반된 현상이 나타나고 있다. 벌 쏘임 환자 매년 증가… 8월에 집중20일 행정안전부 발표에 따르면 2020년부터 2024년까지 벌에 쏘여 치료받은 환자는 총 91,401명에 달했다. 2020년 15,118명, 2021년 17,577명, 2022년 21,117명, 2023년 17,678명, 2024년 19,911명으로, 2023년을 제외하고는 지속적인 증가세에 있다. 작년에만 2020
newspenguin.com/news/articleVi
(2025-08-21 17:38:38)

0
1

오늘의 서커스 내용 세션의 정보를 가져오는데 세션의 앱은 ApplicationGrants를 받아야 하고 세션의 프로필 ID는 ApplicationGrantProfiles으로 프로필별 승인을 받거나 전체 프로필 승인(ApplicationGrantProfiles.profileId == null)을 받야아 가져올 수 있는데 세션의 프로필을 헤더로 오버라이드할 수 있고 오버라이드된 프로필 역시 위 조건을 지키는 경우만 리턴되게 하는 쿼리를 짰어요

const headerProfileId = c.req.header('X-Actor-Profile-Id');
    const session = await db
      .select({
        id: Sessions.id,
        applicationId: Sessions.applicationId,
        accountId: Sessions.accountId,
        scopes: Sessions.scopes,
        languages: Accounts.languages,
        profileId: Profiles.id,
      })
      .from(Sessions)
      .innerJoin(Accounts, eq(Sessions.accountId, Accounts.id))
      .innerJoin(ApplicationGrants, eq(Sessions.applicationId, ApplicationGrants.applicationId))
      .leftJoin(
        ApplicationGrantProfiles,
        eq(ApplicationGrants.id, ApplicationGrantProfiles.applicationGrantId),
      )
      .leftJoin(
        Profiles,
        and(
          eq(Profiles.id, headerProfileId ?? Sessions.profileId),
          eq(Profiles.state, ProfileState.ACTIVE),
          isNotNull(ApplicationGrantProfiles.id),
          or(
            eq(ApplicationGrantProfiles.profileId, Profiles.id),
            isNull(ApplicationGrantProfiles.profileId),
          ),
        ),
      )
      .where(eq(Sessions.token, accessToken))
      .limit(1)
      .then(first);
1

오늘의 서커스 내용 세션의 정보를 가져오는데 세션의 앱은 ApplicationGrants를 받아야 하고 세션의 프로필 ID는 ApplicationGrantProfiles으로 프로필별 승인을 받거나 전체 프로필 승인(ApplicationGrantProfiles.profileId == null)을 받야아 가져올 수 있는데 세션의 프로필을 헤더로 오버라이드할 수 있고 오버라이드된 프로필 역시 위 조건을 지키는 경우만 리턴되게 하는 쿼리를 짰어요

const headerProfileId = c.req.header('X-Actor-Profile-Id');
    const session = await db
      .select({
        id: Sessions.id,
        applicationId: Sessions.applicationId,
        accountId: Sessions.accountId,
        scopes: Sessions.scopes,
        languages: Accounts.languages,
        profileId: Profiles.id,
      })
      .from(Sessions)
      .innerJoin(Accounts, eq(Sessions.accountId, Accounts.id))
      .innerJoin(ApplicationGrants, eq(Sessions.applicationId, ApplicationGrants.applicationId))
      .leftJoin(
        ApplicationGrantProfiles,
        eq(ApplicationGrants.id, ApplicationGrantProfiles.applicationGrantId),
      )
      .leftJoin(
        Profiles,
        and(
          eq(Profiles.id, headerProfileId ?? Sessions.profileId),
          eq(Profiles.state, ProfileState.ACTIVE),
          isNotNull(ApplicationGrantProfiles.id),
          or(
            eq(ApplicationGrantProfiles.profileId, Profiles.id),
            isNull(ApplicationGrantProfiles.profileId),
          ),
        ),
      )
      .where(eq(Sessions.token, accessToken))
      .limit(1)
      .then(first);
3
1
0
0
1
0
0
0
0
0
1
0
0
0
2
1