
Vadim
11.11.2016
08:30:04
двухсотый

dypa
11.11.2016
08:34:40
@confguru !!!

Grigori
11.11.2016
08:50:07
@miksir следует разделять понятия "виноват" и "соответствие требованиям". Если проблема несоответствия архитектуры текущим требованиям вызывает чувство вины - могу предложить лишь обратиться к психоаналитику.
Для меня это вопрос ответственности. Готова ли система к росту до 100 тысяч пользователей? Готова ли система к тому, что пользователей будет только 3 тысячи, и никогда не будет 100 тысяч? Ответы на эти вопросы отражаются в дизайне системы. В этом отличие продуманного дизайна от "херак-херак, и в продакшн" и overengineering.

Google

Grigori
11.11.2016
08:57:58
В крупных проектах собираются специальные собрания архитекторов, у нас это называется Team A meeting. На них все задают ответственному за проект каверзные вопросы "а что если". И вопросы, должен сказать, очень непростые.
спасают годы дискуссий в клубе :)

Kirill
11.11.2016
09:02:29
Интересно. А этот самый Team A meeting не превращается случайно в действо с целью потопить этого самого архитектора?
Т.к. "а что если" можно придумать очень много разных, в т.ч. очень маловероятных.

Pavel
11.11.2016
09:04:01
Если человек с тобой работает плечом к плечу, то зачем его топить. Гораздо приятнее же когда атмосфера дружеская, чем пинание друг друга с целью показать кто больше параметров в функциях помнит.

Kirill
11.11.2016
09:06:43
Все очень сильно зависит от людей.

dypa
11.11.2016
09:19:54
всех вопросов не задаш же. рано или поздно выйдет архитектура не подходящая для проекта. что тогда?

Pavel
11.11.2016
09:22:11
"не подходящая" в каком смысле? Проект откажется запускаться?
> что тогда?
тогда надо переходить на postgres ?

Alexandr
11.11.2016
09:59:35
avp скучно - у нас 200-й?

Madiyar
11.11.2016
10:00:08

Alexandr
11.11.2016
10:01:47
Там же демоны на всех портах ?

Google

Madiyar
11.11.2016
10:04:40
благо не на само железо.

Pavel
11.11.2016
10:19:25

Salavat
11.11.2016
10:20:16

Pavel
11.11.2016
10:20:43
нет
данные всегда пробрасываются в параметры запроса как есть
"эранирование" убирается после того как сервер скомпилировал запрос.
это способ защищиться на этапе синтаксического разбора так сказать

Denis
11.11.2016
10:24:23
не понял. я думал что сперва идет экранивароние, потом шняга вставляется в строку и отдается субд. сама субд принимает уже нормальный запрос с экранированными данными, разве не так?

Pavel
11.11.2016
10:25:52
Если бы это было так, PDO не смог бы закешировать план запроса с плейсхолдерами
Ему туда параметры приходят отдельно
А так ты можешь длиннющий запрос прогнать миллион раз на разных данных, а скомпилирован и разобран он будето только 1 раз. Все последующие разы туда просто приходят новые параметры :p1 :p2 и так далее

dypa
11.11.2016
10:26:58
запрос приходит на сервер отдельно, данные для запроса приходят на сервер отдельно

Pavel
11.11.2016
10:27:54
У меня был тоже такой класс, который принимал массив параметров, экранировал их и через str_replace вставлял в запрос)

Denis
11.11.2016
10:29:53
короче надо разобратся как этот пдо работает и быть аккуратным
ведь тогда получается до того как биндить данные, их надо предворительно экранировать

Pavel
11.11.2016
10:30:41
нееет

Denis
11.11.2016
10:30:47
или я не догоняю

Pavel
11.11.2016
10:30:50
да он сам экранирует

Google

Pavel
11.11.2016
10:31:12
Точнее.. Он даже не экранирует, нету смысла это делать

Salavat
11.11.2016
10:31:12
Но на триггеры придет неэкранированный?

Pavel
11.11.2016
10:31:19

Dmitry
11.11.2016
10:32:39

Pavel
11.11.2016
10:33:06
или я не догоняю
Короче забей, там все сделано просто и инкапсулировано. Подставляешь в биндинг голые значения и ни о чем не паришься.

Denis
11.11.2016
10:34:31
не могу я не парится если в триггеры попадут не экранированные данные

Dmitry
11.11.2016
10:35:25

Pavel
11.11.2016
10:36:44

Salavat
11.11.2016
10:37:25

Denis
11.11.2016
10:37:42

Dmitry
11.11.2016
10:37:57
проверка - это действие дающиее ответ - да/нет ;)

Pavel
11.11.2016
10:38:13

Dmitry
11.11.2016
10:38:19
эскейп - это подготовка данных к применению

dypa
11.11.2016
10:38:28

Salavat
11.11.2016
10:38:35

Pavel
11.11.2016
10:38:52
Правда некоторые например прогоняют входящий html через purifier и уже то что получилось кладут в базу

Dmitry
11.11.2016
10:39:28

Salavat
11.11.2016
10:40:19

Denis
11.11.2016
10:40:31
ну ок) значит в целом я правильно постуаю)

Google

Pavel
11.11.2016
10:40:42
Может нам сервис организовать, митап платных собеседований? ;)

Denis
11.11.2016
10:40:49
нахуй
?

Pavel
11.11.2016
10:40:58
Платишь денюжку, тебя собеседуют пять синьоров/архитекторов

Dmitry
11.11.2016
10:41:04
А еще есть click hijacking который часто с csrf путают

dypa
11.11.2016
10:41:21
@chebotarevp @miksir есть вопрос на посложнее, по субд mysql. только в гугл не следует подглядывать
есть таблица с 2мя полями foo и bar, по одному (foo) построен индекс, по другому (bar) уникальный индекс
есть 2 запроса INSERT INTO table (foo, bar) VALUES (NULL, NULL); INSERT INTO table (foo, bar) VALUES (NULL, NULL);
что произойдет при выполнении второго запроса?

Salavat
11.11.2016
10:42:33

Dmitry
11.11.2016
10:42:39
налы вроде в уникальности не учитываются

Denis
11.11.2016
10:42:57
null = nul is false)

Dmitry
11.11.2016
10:43:14

Salavat
11.11.2016
10:43:39

Dmitry
11.11.2016
10:44:04
Это кто так делает? ;) В куках ID сессии или шифрованная кука.

dypa
11.11.2016
10:46:07

Salavat
11.11.2016
10:46:14

Dmitry
11.11.2016
10:48:28

dypa
11.11.2016
10:49:41
вообще интересно было бы услышать сложные вопросы которые поставили вас в тупик на собеседовании

Denis
11.11.2016
10:50:25
ну тут учитывать кого поставил в тупик)

Dmitry
11.11.2016
10:50:32
М.... почему все используют btree и редкто используют hash индекс, и когда его стоит использовать ;)

Google

Salavat
11.11.2016
10:50:42

Denis
11.11.2016
10:50:57
меня один нубский вопрос поставил) но это не значит что вопрос был сложным

Dmitry
11.11.2016
10:51:07
Собеседование было по скайпу, пришлось погуглить ;) Просто как-то не использовал hash индекс никогда...

Denis
11.11.2016
10:51:11

Pavel
11.11.2016
10:51:44

Dmitry
11.11.2016
10:52:17
Ну да, не работает на сравнениях и если индекс составной - все поля должны участвовать в запросе

dypa
11.11.2016
10:53:11

Dmitry
11.11.2016
10:54:00
При работе с событиями полезно
Ну и вообще... зачем нам поднимать и инициализировать какой-то сервис, который при иницализации куда-то с коннектами лезет и т.п., если в текущем контексте запроса этот сервис вызван не будет

Pavel
11.11.2016
10:56:28
А в чем заключается вопрос, я не понял?
Зачем нужен lazy loading ?

dypa
11.11.2016
10:57:03
как сделать lazy loading сервиса в symfony
примерно так звучал вопрос

Dmitry
11.11.2016
10:57:19
почитать документацию ;)

Salavat
11.11.2016
11:00:46
Не в тему общения. Но хотел вот что спросить.
Насколько достоверно по нескольам файлам кода - определить какому фреймворку принадлежит код или CMS?
Именно по исходникам

Dmitry
11.11.2016
11:01:27
зависит от фреймворка

Salavat
11.11.2016
11:01:36
Ну вот у Yii есть такие элементы?

Dmitry
11.11.2016
11:01:43
Та, сервис локатор