거1지같은 JSON-LD

7
post-thumbnail

아 님들 들어보셈 JSON-LD 라고

그게 뭔데 십덕아

구글에서 이거 하면 SEO에도 좋아요 하는 내용이 있는데
구조화된 데이터 라고 소개하고 있지만,
JSON-LD 페이지 가보면 **JSON for Linking Data** 라고 설명하는데,

JSON-LD를 쓰면 웹을 만나게 되실 겁니다 여러분!
개소리 집어쳐!

근데 이걸 뭐하다 발견했냐면
ActivityPub을 직접 구현해볼까 하면서 보니까
얘네가 JSON-LD를 쓰고있는 바람에 알게 됐습니다.

근데 왜 거지같다는건데?

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Person",
  "id": "acct:juunini@snippet.cloudmt.co.kr",
  "name": "지상 최강의 개발자 쥬니니"
}

이거랑

{
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "@type": "Person",
  "@id": "acct:juunini@snippet.cloudmt.co.kr",
  "name": "지상 최강의 개발자 쥬니니"
}

이거랑

{
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "as:type": "Person",
  "@id": "acct:juunini@snippet.cloudmt.co.kr",
  "as:name": "지상 최강의 개발자 쥬니니"
}

이게 다 같은겁니다.

저는 이걸 처음 접하고
이 무슨 거1지같은 프로토콜이 다 있냐 하고
매우 감탄중이었습니다.

이야… 이거… 나는 jsonld.type 으로 받을거라 생각했는데
누구는 jsonld["@type"] 으로 보내오고
누구는 jsonld[”as:type”] 으로 보내오고
누구는 value를 문자열로 보내고 누구는 배열로 보내오고 하면
이딴 식이면 이걸 얶덖계 써먹냐 하면서 말이죠

그래서 jsonld.tlqkf.wtf 를 만들까 하는 생각이

그런걸 어찌 쓰냐

근데 그와중에 희망이 보였던게
저렇게 예쁘게 포장되서 온걸
포장 뜯고 바닥에 쏟으면

[
  {
    "@id": "acct:juunini@snippet.cloudmt.co.kr",
    "@type": [
      "https://www.w3.org/ns/activitystreams#Person"
    ],
    "https://www.w3.org/ns/activitystreams#name": [
      {
        "@value": "지상 최강의 개발자 쥬니니"
      }
    ]
  }
]

예쁘게 말았든 그1지같이 싸서 보냈든
프로토콜에만 맞으면 바닥에 쏟았을 때
공평하게 똑같이 나온다 이말입니다!

아, 근데 좀 더 거1지같은 면이 하나 더 있긴 한데

[
  {
    "https://www.w3.org/ns/activitystreams#id": [
      {
        "@value": "acct:juunini@snippet.cloudmt.co.kr"
      }
    ],
    "https://www.w3.org/ns/activitystreams#name": [
      {
        "@value": "지상 최강의 개발자 쥬니니"
      }
    ],
    "https://www.w3.org/ns/activitystreams#type": [
      {
        "@value": "Person"
      }
    ]
  }
]

어떻게 보내면 @id 로 오고, 어떻게 보내면 https://www.w3.org/ns/activitystreams#id 로 오는 케이스도 있고 해서
이런 예외 케이스도 처리해줘야 하는 부분이 있긴 하지만 어쨌든

아! 이렇게 바닥에 널부러놓고
핥아먹으면 되는거구나! 하다가

jsonld[0]["https://www.w3.org/ns/activitystreams#name"][0]["@value"]
이딴식으로 핥아먹으면 되는데
하… 이렇게 한 두어번 핥으면 턱이랑 혀가 너무 아플거같애서

포장 뜯어서 바닥에 쏟은 다음에
입에 집에넣어주는 도구를 만들었습니다.

그래서 여러분께 지금부터

굉장한건 아니지만 엄청난걸 보여드리겠습니다
바로, @cloudmatelabs/jsonld-helper 입니다!

이 도구는,
룸메이트가 자기 간식 마음대로 빼먹지 말라고
아주 먹기 힘들도록 예쁘게 포장해둔 JSON-LD를
순식간에 바닥에 쏟은 뒤,
떨어진지 3초 안에 주워먹을 수 있게 해주는
아주 혁신적인 도구입니다!

???: “이걸 쓰고 나서 바닥이 깨끗해졌어요”
???: “이렇게 편리하게 주워먹는걸 보여줬더니 남자친구가 생겼지 뭐에요”
???: “덕분에 3초 안에 다 주워먹어서 건강해졌어요.”

{
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "as:type": "Person",
  "@id": "acct:juunini@snippet.cloudmt.co.kr",
  "as:name": "지상 최강의 개발자 쥬니니"
}

이렇게 예쁘고 먹기 어렵게 포장된 JSON-LD를
@cloudmatelabs/jsonld-helper 에 넣고 바닥에 쏟은 뒤,
평소에 먹던 것 처럼 먹으면 됩니다!

import { JsonLDReader } from '[@cloudmatelabs/jsonld-helper](https://www.npmjs.com/package/@cloudmatelabs/jsonld-helper)'

const jsonld = await JsonLDReader.parse({
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "as:type": "Person",
  "@id": "acct:juunini@snippet.cloudmt.co.kr",
  "as:name": "지상 최강의 개발자 쥬니니"
})

console.log(jsonld.read('id').get())
// acct:juunini@snippet.cloudmt.co.kr

console.log(jsonld.read('type').get())
// Person

console.log(jsonld.read('name').get())
// 지상 최강의 개발자 쥬니니

지금 구매하시면 jsonld 의존성이 하나 더 추가됩니다!
그리고 가격은 무료입니다!
아, 위에 1999는 신경쓰지 마세요.
제가 이걸 만든다고 1999초를 고민했거든요.

지금 바로 주문하세요!

profile
지상 최강의 개발자 쥬니니

2개의 댓글

comment-user-thumbnail
2024년 6월 14일

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

1개의 답글