Size: a a a

Django [ru] #STAY HOME

2019 October 06

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
по данной ссылке не очень понятно, почему тебе нужен именно такой результат запроса и почему именно такая структура таблицы, но ок, допустим, так надо...

но тогда то, что я писал выше, вполне логично укладывается в решение твоей задачи...

у тебя есть from и to, это идентификаторы отправителей/получателей, вместе это идентификатор диалога,
set(('a', 'b')) == set(('b', 'a'))
 , то есть тут не важно, в какой они будут последовательности, если поместить их в set(), ведь в set'е нет порядка... то есть сделай dialog_id = set(from, to), сохранив сортировку списка на первом шаге, а потом убери дубликаты по dialog_id (тебе будет нужно или самое первое значение или самое последнее с данным dialog_id в зависимости от сортировки)
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
наверное, в самом простом случае реализации ты мог бы хранить эти dialog_id в базе и использовать distinct по полю dialog_id после сортировки https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.distinct
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
про dialog_id - ты можешь, например, сделать его с типом bigint, потом при заполнении таблицы смотреть, какой ид больше, to или from, меньший умножаешь на 1_000_000_000 и складываешь с большим, to и from при этом обязаны содержать не более 9 цифр (распилили bigint [он может принимать значения от -9223372036854775808 до 9223372036854775807] на две равные части и положили "слева" один ид, справа другой)
источник

A

Aquinary in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
про dialog_id - ты можешь, например, сделать его с типом bigint, потом при заполнении таблицы смотреть, какой ид больше, to или from, меньший умножаешь на 1_000_000_000 и складываешь с большим, to и from при этом обязаны содержать не более 9 цифр (распилили bigint [он может принимать значения от -9223372036854775808 до 9223372036854775807] на две равные части и положили "слева" один ид, справа другой)
На сонную голову не соображу, уже в течении дня попробую чего-нибудь)
А вообще, как бы ты эту систему реализовал бы?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
я не знаю твоих задач)
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
чтобы говорить про правильную реализацию, нужно долго изучать ТЗ и задавать каверзные вопросы тем, кто её намерен применять)
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
конкретно в твоём дизайне мне кажется слабой стороной наличие from, to вместо from, room, как минимум, то есть твоя поделка будет ограничена чатом с двумя участниками
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
вероятно, я бы взял решение на Firebase, посмотрел https://github.com/FirebaseExtended/firechat/blob/master/src/js/firechat.js и сделал бы что-нибудь похожее или, скорее всего, какой-нибудь SaaS (я ленивый, мне проще заплатить 10 баксов за SaaS, чем программировать какие-нибудь там чаты, а если не из своего кармана, то хоть 1000 😊)
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
всё зависит от задач, но, в любом случае, ты в одиночку, делая это как второстепенную задачу, никогда не сделаешь лучше, чем то решение, которое уже готовое и которое является основным (или одним из основных) продуктом для какой-нибудь продуктовой компании, проще купить готовое и интегироваться с ним, чем делать велосипеды, например, есть https://www.freshworks.com/live-chat-software/features/ [не агитирую именно за этот продукт, привёл просто как пример, их десятки таких]
источник

A

Aquinary in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
по данной ссылке не очень понятно, почему тебе нужен именно такой результат запроса и почему именно такая структура таблицы, но ок, допустим, так надо...

но тогда то, что я писал выше, вполне логично укладывается в решение твоей задачи...

у тебя есть from и to, это идентификаторы отправителей/получателей, вместе это идентификатор диалога,
set(('a', 'b')) == set(('b', 'a'))
 , то есть тут не важно, в какой они будут последовательности, если поместить их в set(), ведь в set'е нет порядка... то есть сделай dialog_id = set(from, to), сохранив сортировку списка на первом шаге, а потом убери дубликаты по dialog_id (тебе будет нужно или самое первое значение или самое последнее с данным dialog_id в зависимости от сортировки)
Интересно, надо попробовать
источник

A

Aquinary in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
всё зависит от задач, но, в любом случае, ты в одиночку, делая это как второстепенную задачу, никогда не сделаешь лучше, чем то решение, которое уже готовое и которое является основным (или одним из основных) продуктом для какой-нибудь продуктовой компании, проще купить готовое и интегироваться с ним, чем делать велосипеды, например, есть https://www.freshworks.com/live-chat-software/features/ [не агитирую именно за этот продукт, привёл просто как пример, их десятки таких]
Ну это да, велосипед и т.д.
Но самому тоже хочется реализовать это дело)
Вообще, после расписания всего этого появился некоторый порядок в голове, что в итоге и как нужно получить
источник

A

Aquinary in Django [ru] #STAY HOME
Покажи шаблоны
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
Aquinary
Ну это да, велосипед и т.д.
Но самому тоже хочется реализовать это дело)
Вообще, после расписания всего этого появился некоторый порядок в голове, что в итоге и как нужно получить
если задача типовая, то есть готовые решения, если есть готовые решения - они будут лучше твоего велосипеда... самому нужно или писать нестандартные вещи или интегрировать между собой готовые стандартные решения...

кроме того, конкретно на Django хороший чат всё равно не сделать (потому что WSGI), тут или channels (спорное решение потому что его будущее неизвестно на данный момент) или другой фреймворк (типа Starlette) или SaaS...
источник

A

Aquinary in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
если задача типовая, то есть готовые решения, если есть готовые решения - они будут лучше твоего велосипеда... самому нужно или писать нестандартные вещи или интегрировать между собой готовые стандартные решения...

кроме того, конкретно на Django хороший чат всё равно не сделать (потому что WSGI), тут или channels (спорное решение потому что его будущее неизвестно на данный момент) или другой фреймворк (типа Starlette) или SaaS...
А если смотреть на это ещё со стороны развития навыков, опыта в самом яп, и в Джанго отдельно? Я то понимаю, что сейчас практически на всё можно найти готовые решения, вплоть до того, что
поднять сайт на вордпресс и не сильно париться. Но это как-то...
Чтобы писать нестандартные вещи, нужно же научиться писать стандартные, нет?
Не совсем понимаю, как работает всё это на уровне выше, чем петпроекты
У меня имеется цели в виде получения навыков уровня веб фуллстак с упором на питон/джанго и около технологий, чтобы реализовывать некоторые петпроекты во что-то прибыль приносящее
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
окей, лучше идти от целей) ты написал "чтобы реализовывать некоторые петпроекты во что-то прибыль приносящее", то есть тебе наплевать на программирование, конечная цель - постартапить? тогда твоя проблема - продажи, если ты сделаешь pet-проект (ну, допустим, тот же чатик), который будет типовым и по всем критериям хуже других типовых - зачем он нужен, кто его купит? если этот условный чат не суть твоего pet-проекта, а просто какой-то модуль где-то сбоку, то зачем ты планируешь тратить время на его реализацию и понимание механизмов его работы, если это вторично для твоего проекта? делегируй...
источник

l

len in Django [ru] #STAY HOME
чорт, установила mysql, но джанго ругается на меня: MySQLdb._exceptions.OperationalError: (2059, <NULL>). что-то в настройках не так?
DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'HOST': 'localhost',
       'PORT': '3306',
       'NAME': 'django-test',
       'USER': 'root',
       'PASSWORD': '1111',
   }
}
источник

M

MIKS in Django [ru] #STAY HOME
len
чорт, установила mysql, но джанго ругается на меня: MySQLdb._exceptions.OperationalError: (2059, <NULL>). что-то в настройках не так?
DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'HOST': 'localhost',
       'PORT': '3306',
       'NAME': 'django-test',
       'USER': 'root',
       'PASSWORD': '1111',
   }
}
А базу данных с именем django-test создали? Пользователя user? Доступ пользователя к базе данных предоставили?
источник

l

len in Django [ru] #STAY HOME
угу. проблема в аутентификации?
источник

A

Aquinary in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
окей, лучше идти от целей) ты написал "чтобы реализовывать некоторые петпроекты во что-то прибыль приносящее", то есть тебе наплевать на программирование, конечная цель - постартапить? тогда твоя проблема - продажи, если ты сделаешь pet-проект (ну, допустим, тот же чатик), который будет типовым и по всем критериям хуже других типовых - зачем он нужен, кто его купит? если этот условный чат не суть твоего pet-проекта, а просто какой-то модуль где-то сбоку, то зачем ты планируешь тратить время на его реализацию и понимание механизмов его работы, если это вторично для твоего проекта? делегируй...
Тут всё сложно. Желание писать идиоматический поддерживаемый код с минимальным количеством костылей, с тестами и т.д. и получать с этого копейку, реализуя проекты, которые интересны мне (но могут быть ещё пригодны для использования другими)
То  есть всё имеет равную меру: программирование как самореализация и как способ обеспечить себя
источник

M

MIKS in Django [ru] #STAY HOME
len
угу. проблема в аутентификации?
Гугл говорит change the way of encryption of the new version mysql,because django cant support the new encryption
источник