@oop_ru

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

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

и потом спрошу как будет это тестировать (если сразу не скажет)

Google
da horsie
20.06.2017
18:24:13
ну я даже не прошу код накидывать) просто словами)
ну там whitboarding, особо не разбежишься

словами тоже норм

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
типа "вот надо запилить у чатиков счетчик непрочитанных сообщений, как будешь делать?"
А какой лучший способ будет? ну кроме чего-то вроде select count(id) from messages where created_at > user_last_login_date? Или речь именно про онлайн, где много чатов (типа мессенджера)?

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

Набросал вот такой план https://gist.github.com/f3ath/d9a7692189c3e986c2f6824a5e2fb903
Я так понимаю, пункты ты не сразу все выдавать будешь соискателю, верно?

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
прочитанное - это как мы отловим? максимум полученное можем отследить. дальше, в какой момент сообщение считается полученным - когда хотя бы один юзер чата его получил (помимо отправителя), или когда все юзеры его получили? а если кто-то оффлайн?

Евгений
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, есть запись в этой таблице - получено, нет записи - не получено. из таблицы чатов отбираем такие чаты, у которых есть сообщения, у которых нет записей в этой таблице для меня.

Евгений
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
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
Я бы поменял статус на прочитано в случае если хотя бы один человек его прочитал. Далее добавил его в список прочитавших и всех последующих челиков вносил в него же.

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

Андрэ
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
Язык программирования PHP Веб-сервер Nginx
как много может рассказать вакансия разработчика

да?

Сергей
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
ну да

Страница 251 из 785