Korat
기능

내 게시물과 스토리, 그리고 사진 앨범

Korat의 게시물은 하나의 객체입니다. 전체 공개일 수도 친구 공개일 수도 있고, 나로도 비즈니스 페이지로도 올릴 수 있으며, 그룹 안에 있을 수도 있고, 누가 공유했는지 아무것도 드러내지 않는 링크로 퍼져 나갈 수도 있습니다.

피드는 Korat의 게시물이라는 객체가 가장 잘 보이는 곳입니다. 그룹, 비즈니스 페이지, 스토리, 공유 — Korat이 하는 일의 대부분은 네 개의 병렬 시스템이 아니라 하나의 게시물 행 위에 지어졌습니다. 그룹 글은 그룹 id를 단 평범한 게시물이고, 비즈니스 페이지 글은 비즈니스 id를 단 평범한 게시물입니다. 반응과 댓글, @멘션, 알림이 어디서나 똑같이 동작하고 한 곳의 수정이 전부에 적용되는 이유가 이 결정입니다.

게시물을 쓰는 네 가지 방법

게시물은 일반 텍스트일 수도, 회색 문단으로는 초라해 보이는 짧은 한 줄을 위한 컬러 배경 텍스트일 수도, 첨부한 장수에 맞춰 배치가 달라지는 X 스타일 그리드의 이미지 네 장일 수도 있습니다. 나로 올릴 수도, 내가 관리하는 비즈니스 페이지로 올릴 수도 있으며, 메인 피드 대신 그룹에 올릴 수도 있습니다.

게시물마다 전체 공개친구 공개 중 하나를 갖고, 이 설정은 올린 뒤에도 바꿀 수 있습니다. 사람들은 청중을 자주 잘못 잡습니다. 친구에게 쓴 글이 모두에게 보여줄 만한 것으로 드러나기도 하고, 한 시간 뒤에 그 반대가 분명해지기도 합니다. 예외는 비즈니스 페이지 게시물로, 언제나 전체 공개입니다. 일부 손님에게만 보이는 가게 공지는 결국 문의로 돌아옵니다.

모든 게시물과 댓글과 스토리는 정해진 목록에서 사유를 골라 신고할 수 있습니다. 신고는 서버가 아니라 *내* 권한으로 도는 함수를 통과하므로, 볼 수 없는 게시물과 존재하지 않는 게시물은 완전히 같은 답을 돌려줍니다 — 신고 버튼이 「볼 권한이 없는 내용이 존재하는가」를 캐묻는 도구가 되는 일은 없습니다. 횟수 제한은 앱이 아니라 데이터베이스에서 강제됩니다. 자신의 게시물은 올린 뒤 수정하거나 삭제할 수 있습니다. 댓글은 실제 계정으로 연결되는 @멘션을 지원하므로, 멘션은 골뱅이로 시작하는 문자열이 아니라 사람으로 가는 링크이며 멘션된 사람에게 알림이 갑니다.

여섯 가지 반응, 한 사람당 하나

반응은 여섯 개(👍 ❤️ 😄 😮 😢 😡)이고, 한 게시물에 한 사람은 정확히 하나만 남깁니다. 같은 것을 다시 누르면 취소되고, 다른 것을 누르면 옮겨 갑니다. 반복 탭으로 부풀릴 수 있는 숫자도 없고, 좋아요와 반응을 따로 맞춰야 하는 장부도 없습니다.

하나가 아니라 여섯인 이유는, 나쁜 소식 앞에서 좋아요 하나는 뜻이 모호하기 때문입니다. 서른 개가 아닌 이유는 거의 쓰이지 않는 반응의 긴 꼬리가 숫자를 읽을 수 없게 만들기 때문입니다. 동의와 위로와 분노를 구분하는 데는 여섯이면 충분합니다.

피드는 정렬되며, 그 정렬은 문서로 남습니다

메인 피드는 엄격한 최신순이 아닙니다. 앱 소스의 한 파일 data/Ranking.kt에 있는 랭킹 함수가 순서를 정하고, 그 안의 모든 가중치는 친구 추천·데이팅·검색의 가중치와 함께 프로젝트의 핵심 알고리즘 문서에 적혀 있습니다. 가중치가 바뀌면 문서도 함께 바뀝니다.

이것을 굳이 밝히는 이유는, 「알고리즘」이 보통 소셜 제품에서 아무도 설명하지 않는 부분이기 때문입니다. 랭킹은 누군가 고른 숫자의 집합이고, 그 숫자를 한곳에 적어두는 것이 반박 가능한 랭킹과 블랙박스의 차이입니다. 그룹 글은 이 파이프라인의 정확히 한 지점에서 메인 피드에서 제외됩니다.

앨범, 그리고 사진이 실제로 놓이는 곳

사진은 앨범으로 정리되고, 앨범은 사진을 쓴 게시물과는 별개의 공개 범위(전체·친구·비공개)를 갖습니다. 각 앨범에는 대표 사진이 있고 이름을 바꾸거나 삭제할 수 있으며, 프로필 사진·커버 사진·게시물 사진 세 개의 기본 앨범이 처음부터 존재합니다. 게시물에 사진을 올린다고 해서 보이지 않는 곳에 사진첩 사본이 하나 더 생기지는 않습니다.

비공개 앨범은 Korat의 화면이 다른 사람에게 보여주지 않는다는 의미에서 비공개입니다. 암호학적 의미에서는 아니며, 그래서 솔직히 적어야 할 부분이 남습니다.

업로드된 미디어는 URL만 있으면 누구나 읽을 수 있습니다. Korat은 서명된 URL도, 비공개 스토리지 버킷도 쓰지 않습니다. 이미지의 직접 파일 URL을 가진 사람은 그 파일이 속한 게시물이나 앨범의 공개 범위와 무관하게 열 수 있습니다. 공개 범위는 *앱 안에서* 누가 보는지를 정하는 것이지, 파일을 누가 가져갈 수 있는지를 정하지 않습니다.

Korat의 어떤 것도 종단간 암호화되지 않으며 애플리케이션 수준의 저장 암호화도 없습니다. 올린 사진은 주소를 아는 사람이라면 닿을 수 있는 것으로 여기시고, 그런 결과가 심각해질 만한 것은 올리지 마십시오.

공유, 그리고 아무것도 말하지 않는 링크

공유 가능한 것은 채팅에 카드로, 내 피드로, 스토리로, 또는 안드로이드 공유 시트를 통해 기기의 다른 앱으로 보낼 수 있습니다. koratland.com의 공유 링크로 만들 수도 있습니다. koratland.com/s/<token> 형태이며 토큰은 무작위 14자입니다. 게시물, 프로필, 비즈니스, 스토리를 이렇게 공유할 수 있습니다.

토큰이 불투명한 것은 의도입니다. 누군가 링크를 열면 서버의 함수가 딱 두 가지만 돌려줍니다. 어떤 종류의 객체인지, 그리고 어떤 객체인지. 누가 공유했는지도, 몇 번 눌렸는지도 반환하지 않습니다. 클릭 집계는 반대 방향으로 동작합니다. 별도의 함수가 클릭을 기록하고, 그 테이블에는 누구에게도 삽입 권한이 없습니다. 그래서 방문자는 다른 것을 쓸 수 없으면서 숫자만 올릴 수 있습니다.

사라지는 스토리, 사라지지 않는 열람자 목록

스토리는 사진이거나 컬러 위의 텍스트이며, 내장 글꼴을 고르고 텍스트를 캔버스 어디에나 놓고 색을 정할 수 있습니다. 공개 범위는 게시물과 같은 전체·친구 두 가지이고, 시간이 지나면 스스로 사라집니다. 그전에 직접 삭제할 수도 있습니다.

스토리 주인은 숫자가 아니라 열람자 목록을 받습니다. 실제로 연 사람들의 목록입니다. 숫자는 누가 봤는지 알려주지 않고, 목록은 알려줍니다. 동시에 보는 일이 익명이 아니라는 사실을 모두에게 분명히 합니다. 헬스 모듈의 활동도 원하는 배경 위에 문구를 얹어 스토리로 공유할 수 있습니다. 같은 스토리 객체에 다른 내용을 부은 것입니다.

달린 기록과 자전거 기록은 같은 팀 순위표에 함께 올라갑니다. 그쪽이 스포츠 클럽이고, 글을 한 사람에게만 보내면 채팅 안의 카드가 됩니다.

이름 옆 배지가 무엇을 근거로 붙는지, 그리고 왜 끝까지 ‘인증됨’이라고 쓰지 않는지는 신뢰와 안전에 있습니다. 가게 계정으로 쓰고 답하는 쪽은 비즈니스 콘솔입니다.

자주 묻는 질문

올린 뒤에 전체 공개를 친구 공개로 바꿀 수 있나요?

가능합니다. 게시물별 공개 범위는 올린 순간에 고정되지 않고 나중에도 수정할 수 있습니다.

예외는 비즈니스 페이지로 올린 게시물이며, 이것은 항상 전체 공개입니다.

비공개 앨범의 사진은 실제로 비공개인가요?

앱 안에서는 다른 사람에게 보이지 않지만, 업로드된 미디어는 직접 URL로 누구나 읽을 수 있습니다. 서명된 URL도 비공개 버킷도 없습니다.

파일 주소를 얻은 사람은 열 수 있습니다. 앨범 공개 범위는 화면을 통제하지 파일을 통제하지 않습니다.

Korat 피드는 시간순인가요?

아닙니다. 앱 소스의 함수가 순위를 매기며, 사용되는 모든 가중치는 프로젝트의 핵심 알고리즘 문서에 적혀 있습니다.

그룹에 올린 글은 메인 피드에서 제외되고 해당 그룹에만 나타납니다.

koratland.com/s/ 링크는 저에 대해 무엇을 드러내나요?

객체 자체 외에는 아무것도 드러내지 않습니다. 공유 토큰을 푸는 함수는 객체의 종류와 id만 돌려주며, 누가 공유했는지도 클릭 수도 반환하지 않습니다.

토큰은 무작위 14자라서 숫자를 하나씩 올리는 식으로는 추측할 수 없습니다.

내 스토리를 누가 봤는지 알 수 있나요?

알 수 있습니다. 스토리 주인은 숫자가 아니라 연 사람들의 목록을 받습니다. 스토리 열람은 익명이 아닙니다.

스토리는 시간이 지나면 스스로 사라지고, 그전에 직접 지울 수도 있습니다.

무언가를 올려보세요

무료이며 안드로이드와 브라우저에서 씁니다. 첫 글은 친구 공개로 올리고 나중에 바꿔도 됩니다.