Еще в статье вы пишете, что ваша разработка «не замещает функциональность «родного» mysqli адаптера, а просто дополняет его», а на самом деле вы вырубаете функциональность подготовленных выражений родного адаптера, и заменяете её своей, причем с потерей производительности. Хоть с этим то вы согласны?
Ну, тем, что "?i" придумано вами, а "?" используется везде. И в mysqli, кcтати, тоже (не понял, что вы имели в виду, говоря о pdo). Грубо говоря, вы модифицировали синтаксис сиквела, и без вашей библиотеки ваши запросы жить не смогут.
Попробую кратко сформулировать пару основных (на мой взгляд) недостатков вашего решения.
1) Вы не только делайте обёртку над mysqli, но еще и (как верно отметил вышеMetaDone ) — модифицируйте синтаксис самого языка запросов. Решение кмк тупиковое со всех точек зрения.
2) Как следствие — подготовленные запросы, которые эмулирует ваша библиотека (см. комментарийChaak — на него стоит обратить внимание). Вы пишите
Этот эскейпинг занимает доли секунд. Не то место для оптимизации.
и это ошибка. Зависит от задачи и объема обрабатываемых данных. Например, у меня некоторые статистические отчеты готовятся десятки минут с использованием множества промежуточных временных таблиц. Эффект применения подготовленных выражений на таких больших задачах весьма ощутим.
нынче люди обычно используют фреймворки и orm/query builder'ы. Вам тоже можно начать
Не сдержусь все-таки.
В вашей фразе слова «нынче», «обычно» и «можно начать» вообще неуместны в контексте данной статьи (в общем-то — действительно сильно спорной) и дискуссии.
Вообще, ваша фраза сейчас — модная, плюсуемая, но на самом деле говорит лишь о том, что c SQL вы работали на уровне «select id, title from articles»
Я закончил Бауманку в 88-м. Основное, чему там научили — умение самостоятельно получать знания. И я безмерно благодарен за это той старой системе образования. В начале 90-х весь наш выпуск поголовно был вытеснен из отрасли, и почти все себя нашли в других или смежных областях.
Сейчас мой сын учится на моем факе на моей кафедре. 20-30% его преподов вели еще у меня! Мой научный руководитель (он был уже д.т.н и профессором, когда я учился) сейчас ведет у него курсовик. С одной стороны — радуюсь, что остались еще «рыцари науки» по теминологии автора статьи, с другой тревожно… уйдут… и что? Пластиковое одностороннее узкое образование как то не радует.
Тема regexp и email — вообще отдельная. Примеры в разных источниках пишутся скорее для ознакомления, и при этом они практически все неправильные. И ваш вариант, и на плакате и в букварях…
Может у кого-нибудь есть реализация алгоритма на других языках программирования? С радостью расширю статью, естественно указав автора реализации
А каков смысл?
Деформируемый многогранник Нелдера-Мида — метод старый, реализаций немеряно. У меня со студенчества (это середина 80-х) остались реализации на Алголе для БЭСМ-6 и Фортране для ЕС и СМ-4. Не думаю, что расширение ими статьи будет кому-то полезно:)
не вижу в приведенном вами коде никаких проблем. вы оговорили, что в решении нужно уделять внимание безопасности? сомневаюсь.
Естественно, что не оговаривал. Просто человек, претендующий на место старшего программиста, не должен в своем коде допускать SQL инъекции. По умолчанию. IMHO.
В веб-программировании проверка получаемых данных — это одна из основ. Если соискатель вообще не заморачивается на эту тему — он мне не подходит. Все просто.
Вообще, тема «а это заранее не оговаривалось» — как правило — надуманная. Мне интересно, как человек думает, что пишет, ход мысли, способы реализации. На то и тест.
btw, «тестовое задание» в вашем примере таковым не является. Не знаю уж, кто это придумал и для чего.
Не понял, к чему эти фантазии? У соискателя в коде простейшей тестовой задачи на одну страничку распечатки была обычная SQL инъекция без всяких ваших теоретических предположений.
И еще, мне не совсем понятно, как к вам «приходит Junior с претензией на вакансию Senior» Такие кандидатуры отсеиваются на этапе резюме, вы же читаете их перед тем как приглашать на собеседование?
Да, конечно, обычно такие вакансии отсеиваются раньше, но всякое случалось. Как показывает опыт, если составлять мнение о кандидате только по резюме — оно получается несколько завышенным. Ну к примеру, по резюме соискатель имеет большой опыт работы, в известной компании, владеет нужным стеком технологий и т.д. И это действительно так.
Но в тестовой задаче на php внезапно он пишет что-то типа:
$result = mysql_query("select * from users where id = " . $_POST['id']);
По моему мнению, соискатель, претендующий на должность старшего программиста не может написать такой такой код, а для новичка такой код в принципе допустим, потому что на то он и новичок, чтобы учиться дальше. Но ищем то мы старшего…
В реалиях во всем мире компаний, в которых HR специально натасканы на техническое собеседование — очень мало. Как правило, это очень крупные компании в которые стоит очередь из соискателей, причем опять же в большинстве случаев, эти соискатели сами приходят в эту очередь, никто их не ищет. В таких условиях предварительный отсев проводит сотрудник кадровой службы по вполне понятным причинам. И тут гораздо больше шансов нарваться на неадекват, чем в абсолютном большинстве случаев. Вы ходите на собеседования в такие компании? Что-то мне подсказывает, что нет.
Теперь о реалиях на своем примере.
Появляется у меня вакансия старшего программиста. Порядок действий:
— Я формирую требования к вакансии и отправляю в службу HR
— Дальше для меня — черный ящик, что там HR делает с моим запросом, на каких сайтах он ищет людей — мне неведомо.
— HR присылает мне резюме кандидатов
— Технический фильтр.
Из всего списка мне надо найти хотя бы одну кандидатуру. Именно мне, техническому специалисту, а не HR, потому что на этом этапе соискателю разговаривать с HR просто не о чем.
И вот тут ко мне приходит Junior с претензией на вакансию Senior. Просто для того, чтобы «потренироваться» да еще и поглумиться над якобы HR. А у меня, к слову, своей работы полно. Нет, я, конечно, рад, что помог человеку самоудовлетворить свое эго. Да тут еще на Хабре натыкаюсь на такую «полезную» статью, полную вредных советов. Ну да ладно…
— Далее я сдаю подходящих мне кадидатов HR-у. Что он с ними делает — о жизни беседует или по базам каким пробивает — мне опять таки неведомо.
Как вы сами признались, в тайм-менеджменте вы не сильны, поэтому могу дать совет — лучше это время тратить на самообразование. Уверенность на собеседовании должна приходить от собственных знаний, а не от псевдо-прокачки на отсутствие страха.
Кроме того, весь тот ваш опыт окажется ненужным, когда дело дойдет до реального собеседования, от которого будет зависеть ваша дальшейшая работа. Шутер на компьютере (когда точно знаешь, что тебя не убьют и тебе пофиг) немного отличается от реалий.
Где вы этого начитались? Истории о том, как люди устраивались в Dropbox/Google… и проходили собеседование по скайпу с попкой-дураком, которому вопросы с ответами написали на бумажке?
Забудьте. В реалиях программист-соискатель в абсолютном большинстве случаев еще до HR беседует с техническим специалистом, именно перед ним он ваньку валяет и его время отнимает. HR-то как раз может спать спокойно, такой соискатель после технического собеседования пойдет не к нему, а совсем в другом направлении.
Многим не нравится, что им сначала дают тестовые задания, а потом разговаривают. Или то, не воспринимают их решения старых ТЗ с гитхаба.
А вы подумайте, может это благодаря таким вот яйцезвонам, у которых работа с кучей свободного времени ходить на собеседования несколько раз в месяц и которые совершенно не ценят время чужое?
Я уже как то писал, что давать простые тестовые задания до собеседования — это нормально. Причин достаточно много и описанная в статье, кстати, одна из них (не самая главная).
Другое дело, что и к соискателям отношение тоже должно быть уважительное со всеми вытекающими.
Я сейчас провожу технические собеседования с кандидатами-разработчиками, поэтому у меня «вид сбоку» на эту тему.
Откликайтесь на джуниора и тимлида будучи мидлом. Откликайтесь на ведущего разработчика будучи вчерашним стажером.
Коллеги, не делайте так никогда.
Возможно автору приятно слышать «звон своих стальных яиц в коридоре» (цитата), но человек, к которому он идет на собеседование — глухой. Поверьте. Он смотрит на такого соискателя, как на самовлюбленного мчудака, которому плевать на чужое время.
Ну… стоит ли обижаться на таких людей? Да мне кажется у любого ЯП есть свои хейтеры и свои евангелисты, php тут не является каким-то исключением. Мне лично внушает оптимизм процесс развития языка в последние годы, во всяком случае он уже сильно отличается от того, на чем был написан WP :)
Да, все так. Но после того, как экосистема WP обросла кучей плагинов от разных разработчиков идея переписать ее с нуля потеряла всякий смысл. Без нарушения обратной совместимости там уже практически невозможно что-то сделать — только костыли писать.
Просто надо понимать, что WP — это очень старая система с тяжелым наследством. Кмк WP находится в состоянии затянувшейся агонии уже лет 8-10 и держится в основном за счет того, что сильно выстрелил при рождении. Такой своеобразный жизненный цикл проекта.
Но рыдать, глядеть на исходники, и стыдится за язык программирования? Это, конечно, очень трогательно, но как то картинно. На прошлой неделе я проводил собеседование с соискателем должности программиста php, так он мне тоже сказал, что глядя на некоторые исходники ему стыдно за язык программирования. Фраза для меня была настолько необычной, что запомнилась. И вот снова…
С вами сложно дискутировать, потому что несмотря на то, что вы утверждаете, что в этой теме нет построителя запросов, на самом деле вы написали свой query builder. Но этого не понимаете.
Еще в статье вы пишете, что ваша разработка «не замещает функциональность «родного» mysqli адаптера, а просто дополняет его», а на самом деле вы вырубаете функциональность подготовленных выражений родного адаптера, и заменяете её своей, причем с потерей производительности. Хоть с этим то вы согласны?
1) Вы не только делайте обёртку над mysqli, но еще и (как верно отметил выше MetaDone ) — модифицируйте синтаксис самого языка запросов. Решение кмк тупиковое со всех точек зрения.
2) Как следствие — подготовленные запросы, которые эмулирует ваша библиотека (см. комментарий Chaak — на него стоит обратить внимание). Вы пишите и это ошибка. Зависит от задачи и объема обрабатываемых данных. Например, у меня некоторые статистические отчеты готовятся десятки минут с использованием множества промежуточных временных таблиц. Эффект применения подготовленных выражений на таких больших задачах весьма ощутим.
В вашей фразе слова «нынче», «обычно» и «можно начать» вообще неуместны в контексте данной статьи (в общем-то — действительно сильно спорной) и дискуссии.
Вообще, ваша фраза сейчас — модная, плюсуемая, но на самом деле говорит лишь о том, что c SQL вы работали на уровне «select id, title from articles»
1) О чём эта статья?
2) Для кого написана эта статья?
Сейчас мой сын учится на моем факе на моей кафедре. 20-30% его преподов вели еще у меня! Мой научный руководитель (он был уже д.т.н и профессором, когда я учился) сейчас ведет у него курсовик. С одной стороны — радуюсь, что остались еще «рыцари науки» по теминологии автора статьи, с другой тревожно… уйдут… и что? Пластиковое одностороннее узкое образование как то не радует.
whitespace — это не только пробел.
6. Руководство считает, что все эти agile и «эффективные scrum-манагеры» — профанация и развод.
А каков смысл?
Деформируемый многогранник Нелдера-Мида — метод старый, реализаций немеряно. У меня со студенчества (это середина 80-х) остались реализации на Алголе для БЭСМ-6 и Фортране для ЕС и СМ-4. Не думаю, что расширение ими статьи будет кому-то полезно:)
Естественно, что не оговаривал. Просто человек, претендующий на место старшего программиста, не должен в своем коде допускать SQL инъекции. По умолчанию. IMHO.
В веб-программировании проверка получаемых данных — это одна из основ. Если соискатель вообще не заморачивается на эту тему — он мне не подходит. Все просто.
Вообще, тема «а это заранее не оговаривалось» — как правило — надуманная. Мне интересно, как человек думает, что пишет, ход мысли, способы реализации. На то и тест.
btw, «тестовое задание» в вашем примере таковым не является. Не знаю уж, кто это придумал и для чего.
Да, конечно, обычно такие вакансии отсеиваются раньше, но всякое случалось. Как показывает опыт, если составлять мнение о кандидате только по резюме — оно получается несколько завышенным. Ну к примеру, по резюме соискатель имеет большой опыт работы, в известной компании, владеет нужным стеком технологий и т.д. И это действительно так.
Но в тестовой задаче на php внезапно он пишет что-то типа:
По моему мнению, соискатель, претендующий на должность старшего программиста не может написать такой такой код, а для новичка такой код в принципе допустим, потому что на то он и новичок, чтобы учиться дальше. Но ищем то мы старшего…
В реалиях во всем мире компаний, в которых HR специально натасканы на техническое собеседование — очень мало. Как правило, это очень крупные компании в которые стоит очередь из соискателей, причем опять же в большинстве случаев, эти соискатели сами приходят в эту очередь, никто их не ищет. В таких условиях предварительный отсев проводит сотрудник кадровой службы по вполне понятным причинам. И тут гораздо больше шансов нарваться на неадекват, чем в абсолютном большинстве случаев. Вы ходите на собеседования в такие компании? Что-то мне подсказывает, что нет.
Теперь о реалиях на своем примере.
Появляется у меня вакансия старшего программиста. Порядок действий:
— Я формирую требования к вакансии и отправляю в службу HR
— Дальше для меня — черный ящик, что там HR делает с моим запросом, на каких сайтах он ищет людей — мне неведомо.
— HR присылает мне резюме кандидатов
— Технический фильтр.
Из всего списка мне надо найти хотя бы одну кандидатуру. Именно мне, техническому специалисту, а не HR, потому что на этом этапе соискателю разговаривать с HR просто не о чем.
И вот тут ко мне приходит Junior с претензией на вакансию Senior. Просто для того, чтобы «потренироваться» да еще и поглумиться над якобы HR. А у меня, к слову, своей работы полно. Нет, я, конечно, рад, что помог человеку самоудовлетворить свое эго. Да тут еще на Хабре натыкаюсь на такую «полезную» статью, полную вредных советов. Ну да ладно…
— Далее я сдаю подходящих мне кадидатов HR-у. Что он с ними делает — о жизни беседует или по базам каким пробивает — мне опять таки неведомо.
Как вы сами признались, в тайм-менеджменте вы не сильны, поэтому могу дать совет — лучше это время тратить на самообразование. Уверенность на собеседовании должна приходить от собственных знаний, а не от псевдо-прокачки на отсутствие страха.
Кроме того, весь тот ваш опыт окажется ненужным, когда дело дойдет до реального собеседования, от которого будет зависеть ваша дальшейшая работа. Шутер на компьютере (когда точно знаешь, что тебя не убьют и тебе пофиг) немного отличается от реалий.
Забудьте. В реалиях программист-соискатель в абсолютном большинстве случаев еще до HR беседует с техническим специалистом, именно перед ним он ваньку валяет и его время отнимает. HR-то как раз может спать спокойно, такой соискатель после технического собеседования пойдет не к нему, а совсем в другом направлении.
Многим не нравится, что им сначала дают тестовые задания, а потом разговаривают. Или то, не воспринимают их решения старых ТЗ с гитхаба.
А вы подумайте, может это благодаря таким вот яйцезвонам, у которых работа с кучей свободного времени ходить на собеседования несколько раз в месяц и которые совершенно не ценят время чужое?
Я уже как то писал, что давать простые тестовые задания до собеседования — это нормально. Причин достаточно много и описанная в статье, кстати, одна из них (не самая главная).
Другое дело, что и к соискателям отношение тоже должно быть уважительное со всеми вытекающими.
Коллеги, не делайте так никогда.
Возможно автору приятно слышать «звон своих стальных яиц в коридоре» (цитата), но человек, к которому он идет на собеседование — глухой. Поверьте. Он смотрит на такого соискателя, как на самовлюбленного
мчудака, которому плевать на чужое время.Просто надо понимать, что WP — это очень старая система с тяжелым наследством. Кмк WP находится в состоянии затянувшейся агонии уже лет 8-10 и держится в основном за счет того, что сильно выстрелил при рождении. Такой своеобразный жизненный цикл проекта.
Но рыдать, глядеть на исходники, и стыдится за язык программирования? Это, конечно, очень трогательно, но как то картинно. На прошлой неделе я проводил собеседование с соискателем должности программиста php, так он мне тоже сказал, что глядя на некоторые исходники ему стыдно за язык программирования. Фраза для меня была настолько необычной, что запомнилась. И вот снова…