
da horsie
20.06.2017
18:22:01
у меня всего 40 минут. я попрошу набросать интерфейсы тех объектов, которые человек будет использовать для имплементации

Sergey
20.06.2017
18:22:18

da horsie
20.06.2017
18:22:57
потом буду добавлять новые требования и смотреть, как человек выделяет часто меняющееся поведение (SRP/OCP)
и потом спрошу как будет это тестировать (если сразу не скажет)

Google

da horsie
20.06.2017
18:24:13
словами тоже норм

Sergey
20.06.2017
18:24:56

da horsie
20.06.2017
18:26:07
ну и если будет валюту во float считать, то сразу выстрелю в голову

Sergey
20.06.2017
18:26:13
)))
ну то есть "делаем класс Money")

da horsie
20.06.2017
18:26:35
ну я что-то такое ожидаю, да
надо добавить туда проверку на равенство, наверно

Андрэ
20.06.2017
18:37:04

Sergey
20.06.2017
18:37:31
в целом именно твой вариант как бы и норм))

Андрэ
20.06.2017
18:38:53
Для меня прост очень больная тема) ищу работу программистом с отсутствием ИТ резюме за спиной. вот и интересно про все задачи и т/д/. А то мое "торговое" резюме не катит же)

Google

da horsie
20.06.2017
18:40:50

Андрэ
20.06.2017
18:41:03
В этом чате его точно нет?

da horsie
20.06.2017
18:41:26

Андрэ
20.06.2017
18:41:48
аа, ясно

Sergey
20.06.2017
18:44:40
и вот тебе и резюме
просто без рекомендаций с предыдущих места
еще github аккаунт заведи и запили пару примеров
что бы можно было глянуть код

Андрэ
20.06.2017
18:45:20
Да как-то и делаю. Но без бэкграунда за спиной не сильно работает. И гитхаб тож есть небольшой

Евгений
20.06.2017
19:02:59
ибо ничего в голову не приходит кроме получения каунта с момента последнего захода

Sergey
20.06.2017
19:14:53
все от задачи зависит
вот тебе задача - надо вывести количество чатов (не сообщений) в которых есть непрочитанные меседжи (именно непрочитанные, а не с последнего захода), как ты будешь делать это все
что бы по каждому меседжу можно было бы посмотреть кто прочитал а кто нет

Евгений
20.06.2017
21:16:57
прочитанное - это как мы отловим? максимум полученное можем отследить. дальше, в какой момент сообщение считается полученным - когда хотя бы один юзер чата его получил (помимо отправителя), или когда все юзеры его получили? а если кто-то оффлайн?

Sergey
20.06.2017
21:18:25
у тебя сообщения как помечаются прочитаны они или нет? whats up -ом пользовался?

Евгений
20.06.2017
21:19:12
нет, не пользовался
я же не знаю точного механизма, когда две галочки ставится

Google

Sergey
20.06.2017
21:20:36
ну а как бы ты делал?)

Евгений
20.06.2017
21:21:10
я не про реализацию, а про тз

Sergey
20.06.2017
21:21:22
что за дикие люди, какое ТЗ

Евгений
20.06.2017
21:21:23
в каком случае надо ставить 2 галки?

Sergey
20.06.2017
21:21:47
нет у тебя двух галок, забей на них. Есть статус сообщения для тебя любимого - прочитано оно или нет
и есть возможность посмотреть детали сообщения - кто прочитал а кто еще нет
а теперь ты мне предложи что считать прочитанным
с точки зрения "полезности"
и с предположением что ты когда открываешь чат с непрочитанными сообщениями, тебя все же на первом непрочитанном сообщении оставляют а не в низ кидают

Евгений
20.06.2017
21:29:17
значит, есть таблица с флагами. users_messages_rel, есть запись в этой таблице - получено, нет записи - не получено. из таблицы чатов отбираем такие чаты, у которых есть сообщения, у которых нет записей в этой таблице для меня.

Sergey
20.06.2017
21:36:23

Евгений
20.06.2017
21:37:51
критерии прочитанного сообщения?

Sergey
20.06.2017
21:37:56
ну ладно, критерий "прочитанности" - ты его прочитал. Ну то есть ты его увидел. Допустим упростим задачу - UI-ка смотрит какие сообщения были во вьюпорте и шлет тебе HTTP запрос который говорит "вот это сообщение прочитано"
ладно, надо бежать. Подробный ответ:
1. Прочитанное сообщение - это сообщение которое пользователь "увидел".
2. Когда ты открываешь чат, тебя должно заскролить на первое непрочитанные сообщение. Соответственно скроля вниз ты их все прочитаешь.
3. Исходя из выше сказанного, нас интересует только какое сообщение ты прочитал последним.
потому для каждого чата у нас будет пачка курсоров - для каждого пользователя - на чем каждый остановился
итоговое количество записей в базе - 500K
с этим можно жить, это как никак на 4 порядка меньше


da horsie
21.06.2017
01:46:59
Требуется помощь зала!
Вот в симфони есть пример использования валидаторов http://symfony.com/doc/current/validation.html#getters
Там предполагается, что есть некий класс вот с таким методом
class Author {
...
public function isPasswordLegal() {
return $this->firstName !== $this->password;
}
Публичный(!) метод вводится для того, чтобы можно было отвалидировать этот объект валидатором. Так вот я утверждаю, что такая практика противоречит принципам объектного дизайна. Вместо того, чтобы позволять объекту перейти в невалидное состояние, такая ситуация должна быть отловлена на этапе установления/cмены пароля. Например, метод Author::changePasswordTo($password) должен кидать исключение. Дополнительно можно ввести что-то типа Author::isValidPassword($password). Объясните, где я неправ?

Google

Sergei
21.06.2017
03:47:10

Admin
ERROR: S client not available

da horsie
21.06.2017
03:49:48
Он проверяет, не совпадает ли пароль с именем. Вся информация для этого уже есть внутри объекта

Sergei
21.06.2017
03:52:19
Хм. Тогда второй вариант, когда имеющееся поведение имеет смысл - Author не может сам верно отреагировать на невалидный пароль в момент установки оного.
Хотя это очень надуманно звучит.

Сергей
21.06.2017
10:01:07
Switching from C++ to Rust
http://psychopath.io/switching-from-c-to-rust/

Alexey
21.06.2017
22:34:49
Я бы поменял статус на прочитано в случае если хотя бы один человек его прочитал. Далее добавил его в список прочитавших и всех последующих челиков вносил в него же.
Если ты состоишь в чате и он закрыт все приходящие сообщения заносятся в список непрочитанных. Как возвращаешься в чат, то список очищается по какому либо алгоритму. Типо скроллишь вниз и каждое сообщение появляющееся снизу удаляется или списка непрочитанных. Либо просто возвращаешься в чат тебе показывается с какого места начинаются непрочитанные и ты очищаешь весь список разом.

sss3 ?
22.06.2017
03:21:42

Андрэ
22.06.2017
06:45:00
Как тут на спам реагировать?

da horsie
22.06.2017
06:46:17
Игнорировать

Андрэ
22.06.2017
06:47:16
Тоже вариант

Евгений
22.06.2017
06:47:43

da horsie
22.06.2017
06:48:12

Massimo
22.06.2017
13:15:04
Вопрос на миллион на чем написана Фрегат? Frigat.ru

sss3 ?
22.06.2017
13:15:44
на ЯП
угадал?

Massimo
22.06.2017
13:17:01
Дыа
Но нужна конкретика

Google

?
22.06.2017
13:17:45
Это автоматический бизнес с 1995 года
Язык программирования
PHP
Веб-сервер
Nginx

sss3 ?
22.06.2017
13:22:07
да?

Massimo
22.06.2017
13:26:57

Сергей
22.06.2017
13:27:40

Massimo
22.06.2017
13:58:17
Только одного понять не могу зачем писать на пхп такую прогу, можно было с такой же эффективностью написать и на рубине

Sergei
22.06.2017
15:41:28
Что то никто ничего умного не пишет

Aleh
22.06.2017
15:54:43
не понимаю зачем это тут обсуждать)

Евгений
22.06.2017
15:54:59
ну да