juan_gandhi: (VP)
[personal profile] juan_gandhi
Вот вы, скажем, имплементируете фесбук месенджер. Как вы ключ зададите для чатов? Я предложил (на интервью было) просто пару ключей юзеров. Ну там штука, что симметрично ж должно быть. Интервьюер сказал, что правильно будет брать hash(Set(userid1, userid2)). Меня это как-то удивило; смысл-то понятен, но глупость же.

На самом деле, для симметрии надо просто брать пару ключей да сортировать, например. List(userid1,useri2).sort. И вообще этого мало, нужно еще хранить priority queue из собеседников.

Впрочем, фигня. Обидно другое - это за неделю уже второй облом в смысле контактов. Я, как иной mentally challenged, чуть не каждого первого попавшегося считаю за доброжелательного приятеля - а блин, присмотришься - он тебя ненавидит за каким-то хреном. Как они между собой-то вообще? Не понимаю.

Date: 2016-05-15 08:55 am (UTC)
From: [identity profile] slonopotamus.livejournal.com
Эффективности хотите вы?

int64 userid1, userid2 = ...;
List<int64> ids = [userid1, userid2];
ids.sort();
int128 chatId = (ids[0] << 64) | ids[1];

Date: 2016-05-15 03:22 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
math.max(id1,ud2) << 64 | math.min(id1,id2)

Date: 2016-05-15 05:05 pm (UTC)
From: [identity profile] slonopotamus.livejournal.com
Ага. И не надо никаких 512-битных хешей.

Date: 2016-05-15 05:11 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Иному представителю это все не впаришь совершенно. Они ж лучше знают.

Date: 2016-05-16 05:19 am (UTC)
From: [identity profile] snowps.livejournal.com
Я вообще не вижу никакого смысла делать дополнительный чат ID в привязки к юзерам, поскольку в мессенджерах количество собеседников в подавляющем числе случаев равно двум, временами доходит до пяти-десяти и почти никогда не бывает больше, так что намного проще хранить их явные ID без всяких лишних операций. Поиск в этом случае никакой проблемы не представляет, поскольку список чатов конкретного юзера и их контент являются его личными данными и не шарятся с другими юзерами (иначе их избирательная чистка будет невозможна), а в этом случае у него есть свой, микроскопический в масштабах системы набор таблиц, где даже фуллскан может оказаться быстрее, чем поиск с индексами в глобальных таблицах.

Date: 2016-05-16 08:19 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Да; идея держать пару айди в качестве ключа была ошибкой. Потому хотя бы, что для поиска нужно знать обоих участников. Лучше все эти пойнтеры на чат хранить прямо у участника.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

May 2025

S M T W T F S
    1 2 3
456 7 8 9 10
11 121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 13th, 2025 07:19 pm
Powered by Dreamwidth Studios