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

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

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

Date: 2016-05-13 06:02 am (UTC)
From: [identity profile] bowhill.livejournal.com
А из чего следует, что hash уникальный?

Date: 2016-05-13 06:04 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Да ни из чего не следует. Карго-культ.

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 05:06 pm (UTC) - Expand

Date: 2016-05-13 06:30 am (UTC)
From: [identity profile] salas.livejournal.com
Отлично, кстати. Может ведь и пролежать незаметно, пока не набегут 100500 живых пользователей и не начнут весело репостить чужую переписку.

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-13 02:07 pm (UTC) - Expand

Date: 2016-05-13 01:54 pm (UTC)
From: [identity profile] yatur.livejournal.com
Он не уникальный. Но, якобы, плюс-минус равномерно размазывает входные значения по выходным. Так что, если в хеше 512 бит, то юзерам придется очень долго бить по клавишам (больше возраста Вселенной), чтобы получить два одинаковых хеша с заметно отличной от нуля вероятностью. Т.е., "повезти", конечно может и сразу, но вероятность этого где-то в районе того, что направления движения всех атомов тела юзера совпадут и он вдруг полетит. Теоретически возможно, но практически этого не бывает.

ггг

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 05:15 pm (UTC) - Expand

Re: ггг

From: [identity profile] yatur.livejournal.com - Date: 2016-05-13 05:38 pm (UTC) - Expand

(no subject)

From: [identity profile] bowhill.livejournal.com - Date: 2016-05-14 07:01 am (UTC) - Expand

(no subject)

From: [identity profile] yatur.livejournal.com - Date: 2016-05-14 02:30 pm (UTC) - Expand

(no subject)

From: [identity profile] bowhill.livejournal.com - Date: 2016-05-15 06:42 am (UTC) - Expand

Date: 2016-05-13 06:40 am (UTC)
From: [identity profile] blackyblack.livejournal.com
hash(Set) выглядит хорошим решением. Set скорее всего так же внутри сортирует значения, а хэш для удобства хранения и использования.

Date: 2016-05-13 08:26 pm (UTC)
From: [identity profile] slonopotamus.livejournal.com
Set скорее всего так же внутри сортирует значения


А вы кто по профессии?

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2016-05-13 08:37 pm (UTC) - Expand

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2016-05-13 10:14 pm (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-14 06:02 am (UTC) - Expand

(no subject)

From: [identity profile] slonopotamus.livejournal.com - Date: 2016-05-14 09:37 am (UTC) - Expand

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2016-05-14 10:57 am (UTC) - Expand

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2016-05-14 02:10 pm (UTC) - Expand

(no subject)

From: [identity profile] slonopotamus.livejournal.com - Date: 2016-05-14 05:38 pm (UTC) - Expand

Date: 2016-05-13 06:50 am (UTC)
From: [identity profile] sassa-nf.livejournal.com
что значит - "правильно"? единственно правильно, что ли?

Хеш хорошо для поиска, но не для идентификации.

Date: 2016-05-13 07:36 am (UTC)
From: [identity profile] ban-dana.livejournal.com
Я сейчас идиотский вопрос задам, можно? А "ключ для чатов" - это в каком смысле вообще?

Date: 2016-05-13 02:09 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Это в смысле что вот есть два юзера, у них (как водится) численные идентификаторы; надо в базе найти их чат (последовательность мессагов). Для этого нужно а) чтобы у каждого чата был уникальный ключ, б) уметь вычислять этот ключ, имея идентификаторы двух юзеров.

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-13 02:27 pm (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-13 06:28 pm (UTC) - Expand

(no subject)

From: [identity profile] slonopotamus.livejournal.com - Date: 2016-05-13 08:37 pm (UTC) - Expand

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-14 08:41 pm (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-15 12:26 am (UTC) - Expand

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-16 05:09 am (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-16 05:19 am (UTC) - Expand

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-16 06:16 am (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-16 08:22 am (UTC) - Expand

(no subject)

From: [identity profile] slonopotamus.livejournal.com - Date: 2016-05-15 08:55 am (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-15 03:22 pm (UTC) - Expand

(no subject)

From: [identity profile] slonopotamus.livejournal.com - Date: 2016-05-15 05:05 pm (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-15 05:11 pm (UTC) - Expand

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-16 05:19 am (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-16 08:19 am (UTC) - Expand

Date: 2016-05-13 08:15 am (UTC)
dennisgorelik: 2020-06-13 in my home office (Default)
From: [personal profile] dennisgorelik
> облом в смысле контактов

Какого рода контактов? Для поиска работы?

Date: 2016-05-13 02:09 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
В смысле людей, с которыми я думал, что поддерживаю хорошие отношения.

Date: 2016-05-13 08:16 am (UTC)
From: [identity profile] perdakot.livejournal.com
userid1 xor userid2

Подойдет?
Edited Date: 2016-05-13 08:16 am (UTC)

Date: 2016-05-13 09:33 am (UTC)
lxe: (Default)
From: [personal profile] lxe
Это же реверсинженерится в полминуты.

Date: 2016-05-13 09:35 am (UTC)
lxe: (Default)
From: [personal profile] lxe
А если это ключ для идентификации, а не для аутентификации, то он будет совпадать для пар johnDoe,janeDoe и johnPoe,janePoe.
Зная первую пару, регистрируем вторую и привет, коллизия.

Если userid - это primary-ключ, попыток будет больше, но и только.
Edited Date: 2016-05-13 09:37 am (UTC)

Ключ для чата

Date: 2016-05-13 08:17 am (UTC)
dennisgorelik: 2020-06-13 in my home office (Default)
From: [personal profile] dennisgorelik
Зачем вообще ключ для чата нужен?

RE: Ключ для чата

Date: 2016-05-13 08:48 am (UTC)
From: [identity profile] justy-tylor.livejournal.com
Кстати, да. Для диалогов не нужен, а для полноценных групчатов любой уникальный (т.к. состав участников может меняться).

Re: Ключ для чата

Date: 2016-05-13 02:11 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Ну находить как-то надо.
Но внизу тут правильно написали, состав может меняться.
Мы заранее договорились с Дэвидом, что чат только между двумя участниками.

Date: 2016-05-13 09:31 am (UTC)
lxe: (Default)
From: [personal profile] lxe
hash(Set(userid1, userid2))

А посолить?

Date: 2016-05-13 02:11 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
А смысл? Да впрочем, здесь ничего не имеет смысла.

(no subject)

From: [identity profile] cema.livejournal.com - Date: 2016-05-13 04:43 pm (UTC) - Expand

Date: 2016-05-13 11:42 am (UTC)
From: [identity profile] snowps.livejournal.com
Если имплементируется любой мессенджер, то перед обсуждением надо сначала определиться с секьюрити на сервере - проходит ли траффик через него в шифрованном виде (как через гейт) или в открытом (что даёт возможность проводить MITM атаку). Без этого думать о секьюрити даже начинать рано. :)

Date: 2016-05-13 02:11 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Мы о секьюрити не рассуждали.

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-13 02:31 pm (UTC) - Expand

(no subject)

From: [identity profile] cema.livejournal.com - Date: 2016-05-13 04:44 pm (UTC) - Expand

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-13 05:41 pm (UTC) - Expand

(no subject)

From: [identity profile] covaxi.livejournal.com - Date: 2016-05-13 06:57 pm (UTC) - Expand

Date: 2016-05-13 01:50 pm (UTC)
From: [identity profile] yatur.livejournal.com
"Ключ" - в смысле уникальный идентификатор или в смысле пароль? Если идентификатор, почему он должен зависеть от юзеров? Большинство мессенджеров позволяют добавлять и убирать участников из чата.

Date: 2016-05-13 02:13 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Да конечно.

На самом деле, речь шла скорее о том, чтобы, имея айди одного, найти указатели на все чаты этого персонажа.
Короче, все эти решения дебильны. Айди чата может быть просто взят из последовательности.

(no subject)

From: [personal profile] dennisgorelik - Date: 2016-05-13 02:23 pm (UTC) - Expand

Date: 2016-05-13 02:58 pm (UTC)
From: [identity profile] punk-floyd.livejournal.com
а в Python в самом простом варианте на разных машинах будет разный hash, если не ошибаюсь, там просто адрес памяти переменной берется
http://stackoverflow.com/questions/793761/built-in-python-hash-function

Date: 2016-05-13 03:08 pm (UTC)
From: [identity profile] anonim-legion.livejournal.com
А на питоне вообще писать не надо.

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 05:20 pm (UTC) - Expand

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 05:22 pm (UTC) - Expand

(no subject)

From: [identity profile] punk-floyd.livejournal.com - Date: 2016-05-13 05:51 pm (UTC) - Expand

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 05:54 pm (UTC) - Expand

(no subject)

From: [identity profile] salas.livejournal.com - Date: 2016-05-13 06:14 pm (UTC) - Expand

Date: 2016-05-13 03:12 pm (UTC)
From: [identity profile] exceeder.livejournal.com
У меня именно так имплементировано, с двумя ключами, отсортированными по userId. Много лет в продакшине, защищенный мессенжер для врачей с обменом контекстом пациента и интеграцией в разные вьюеры для кардио-, патол- (микроскоп огромные слайды) и радиологии.

Date: 2016-05-13 04:41 pm (UTC)
From: [identity profile] cema.livejournal.com
чуть не каждого первого попавшегося считаю за доброжелательного приятеля - а блин, присмотришься

+1

Date: 2016-05-13 04:50 pm (UTC)
From: [identity profile] bvlb.livejournal.com
"смысл-то понятен, но глупость же."

А мне непонятен :( Зачему нужен хэш? Укоротить строку? Для секьюрити?.. Перевести все в какой-то единый формат, независимый от формата id?..

Date: 2016-05-13 05:30 pm (UTC)
From: [identity profile] yussouf.livejournal.com
ну, типа, раз "пейсбук" - значит овер стопиццот юзеров, нужна балансированая структура с быстрым доступом, следовательно, хэштейбл

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-13 05:44 pm (UTC) - Expand

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 07:19 pm (UTC) - Expand

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 07:53 pm (UTC) - Expand

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-13 07:55 pm (UTC) - Expand

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2016-05-14 01:45 pm (UTC) - Expand

(no subject)

From: [identity profile] jamhed.livejournal.com - Date: 2016-05-14 01:54 pm (UTC) - Expand

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 07:12 pm (UTC) - Expand

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-13 07:23 pm (UTC) - Expand

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 07:25 pm (UTC) - Expand

(no subject)

From: [identity profile] snowps.livejournal.com - Date: 2016-05-13 07:30 pm (UTC) - Expand

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-16 07:00 pm (UTC) - Expand

(no subject)

From: [identity profile] juan-gandhi.livejournal.com - Date: 2016-05-13 06:30 pm (UTC) - Expand

(no subject)

From: [identity profile] yussouf.livejournal.com - Date: 2016-05-13 07:21 pm (UTC) - Expand

Date: 2016-05-13 10:13 pm (UTC)
From: [identity profile] http://users.livejournal.com/_xacid_/
простая отсортированная пара ключей - самое правильное решение имхо
а вот хеш от пары можно для шардинга/индексации/поиска

а интервью всякие это лотерея всегда как правило :(
Edited Date: 2016-05-13 10:21 pm (UTC)

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 03:32 pm
Powered by Dreamwidth Studios