그게 뭔데 십덕아
구글에서 이거 하면 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초를 고민했거든요.
지금 바로 주문하세요!
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ