Profile img

robin

@robin@hackers.pub · 34 following · 46 followers

Github
@robin-maki

오늘의 서커스 내용 세션의 정보를 가져오는데 세션의 앱은 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
2

@robin_makirobin 정확히 말하자면... 해커스펍의 3개 글은 AP에서 conversation을 노출하지 않았음에도 마스토돈 DB상에서 똑같은 conversation id를 부여받았지만 마스토돈에서 쓴 답글은 DB상에서도 새로운 conversation이 되었다!!

지금까지 내린 결론은... conversation은 아무래도 ostatus 시절 표준이기도 했고 딱히 필수는 아닌 것 같다... 가 결론 그치만 (DB상에) 있으면 답글 트리 가져오기 최적화에는 좋을 것 같다

0

@robin_makirobin 정확히 말하자면... 해커스펍의 3개 글은 AP에서 conversation을 노출하지 않았음에도 마스토돈 DB상에서 똑같은 conversation id를 부여받았지만 마스토돈에서 쓴 답글은 DB상에서도 새로운 conversation이 되었다!!

0
2

(연합 테스트용) 해커스펍은 ActivityPub Note에 별도의 ostatus conversation도 context도 없다 이걸 마스토돈에서 보면 임의의 conversation id를 만들어준다

2

어차피 이모지 데이터 다 tag에 딸려 들어오는데 서버-이모지 관계를 분리해서 처리하고 싶은데 그럼 연합되는 쪽에서 다 박살나겠지...

2

지금 생각해보면? 커맨드키를 누른다고 다운되지 않는 노트북이 굿북이다 나쁜북못된북흉악한북!! 그치만 코드를 날려먹진 않았으니 용서해주지

2
4
2
3
5

오늘의 디버그 일기 자꾸 액펍아카데미랑 플래닛에서 요청을 보내도 씹었다 근데 액티비티 워크샵에서 수동요청 만드니까 잘 받아줬다 알고보니 액터 디스패쳐에서 inbox를 http로 던져줘서 그런 거였다...

"inbox": "http://~
1
7
3
0

평소에 GraphQL 설계를 할 때 권한에 따라서 같은 리소스의 타입을 다르게 (예를 들어 프로필 타입을 MyProfilePublicProfile로 나눈 후 PublicProfile에만 email 등의 필드를 구현한다던가) 하는 설계를 많이 했었는데 Relay에 호환되게 짜려고 하니 node(id) 구조랑 충돌하는 거 같아서 고민이다... id만으로는 그게 Public인지 My인지 알 수도 없고...

2

Minecraft server on-demand: 필요할때만 켜지는 마인크래프트 서버 구축하기

robin @robin@hackers.pub

이 글은 마인크래프트 모드 서버를 운영하며 겪은 시행착오와 해결 과정을 담고 있습니다. 서버를 항상 켜두는 대신 필요할 때만 자동으로 켜지도록 구성하여 비용을 절감하고자 했습니다. 이를 위해 Pulumi를 사용하여 AWS 인프라를 구축하고, RCON 프로토콜 대신 `netstat`을 활용하여 접속자 수를 정확하게 파악하는 방법을 소개합니다. 또한, IMDSv2 설정 문제와 ASG 환경에서 볼륨 마운트 실패 문제를 해결하는 과정도 공유합니다. 마지막으로, 서버 파일 EFS 이전 및 도커라이징을 통한 ECS 배포라는 향후 개선 방향을 제시합니다. 이 글은 마인크래프트 서버 운영 비용을 절감하고 자동화된 인프라를 구축하려는 사람들에게 유용한 인사이트를 제공합니다.

Read more →
6
3
9