• Попинайте. Работодатель сказал, что у меня код PHP устаревший. В чем именно проблемы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В общем да, на первый взгляд этот код производит ужасное впечатление
    Тут даже не 2010-е, тут скорее 1990-е

    По пунктам
    - конструктор, совпадающий с именем класса, уже отсутствует в языке
    - в конструктор передается бессмысленная переменная дб, которая нигде не используется
    - функции вида formField() - это явно какой-то адок и инъекции
    - про mysql_query уже сказали
    - про собаку уже сказали. причём она здесь не нужна, mysql_query практически не выдаёт ошибок
    - die ( mysql_error () ); - это вообще зашквар. Я кстати однажды наблюдал результат похожего кода на тостере много лет назад, хе-хе. На боевом сайте системные сообщения об ошибках никогда не должны выводиться в браузер. Вообще, это родовая ошибка похапешников, сохранившаяся до наших дней - у них все ошибки в обязательном порядке обрабатываются здесь и сейчас. В то время как код приложения должен только выбросить ошибку, а обрабатываться все ошибки должны централизованно, в другом месте.

    Однако есть и хорошее.
    Сам по себе класс неплохой, и довольно грамотный ООП в целом.
    пожалуй, надо только подправить синтаксис, и задействовать какой-нибудь осмысленный объект $db, чтобы запрос выполнялся как-то так

    function addPlace($place) {
        $query = "INSERT INTO place
            (name,english, countryID, globalRatingID, typeID, worldPartID, datecreated,
            datelastmodified,datepublished,permissionLevel,tansliterated)
            VALUES (
            (:name,:english, :countryID, :globalRatingID, :typeID, :worldPartID, now(),now(),
            now(),:permissionLevel,:tansliterated)";
        $this->db->query($query, [
            'name' => $place->getName(),
            'english' =>$place->getEnglish(),
            // и так далее, всё массивом
        ]);
        return true;
    }
    Ответ написан
    2 комментария
  • Как выстроить коммуникацию между редьюсерами, и стоит ли?

    @Che603000
    c 2011 javascript
    я могу вызывать один редьюсер из другого

    Не надо).
    action поступает на каждый reducer в store. .
    Каждый reducer по своему реагирует на один и тот же action и анализирую
    payload устанавливает свой state

    Ток что один редюсер выбирает из полезной нагрузки данные, другой фильтр, итп.
    Ответ написан
    Комментировать
  • Интерфейс при наследовании метода: как правильно сделать?

    Adamos
    @Adamos
    Есть базовый класс User, от которого наследуются другие классы, например Admin.

    Зря. Админ - это не разновидность пользователя, это вполне определенная роль на сайте, связанная с конкретным пользователем. Наследование здесь не имеет смысла, логика администрирования сайта и пользователя сайта не пересекаются.
    Ответ написан
    9 комментариев
  • Laravel структура контроллеров?

    glaphire
    @glaphire
    PHP developer
    Фронтенд, личный кабинет и админка - разные по логике модули, для независимого развития кода больше всего подходит пункт 1. Общую логику всегда можно вынести в сервисы/хелперы и через DI передавать контроллерам
    Ответ написан
    8 комментариев
  • Php 7+ умеет без библиотек открывать excel и гугл таблицы?

    Stalker_RED
    @Stalker_RED
    Нет конечно.
    у гуглотаблиц есть api, а для экселя есть PHPOffce

    Если не нужны навороты вроде формул и графиков, то и то и другое сохраняется как CSV, а для него уже есть встроенная функция fgetcsv().
    Ответ написан
    6 комментариев
  • Стоит ли в 2к20 брать мак на High Sierra?

    @antonwx
    Макбуки - это боль. Это реальная боль. Это перегрев и троттлинг и работа процессора на износ, убогая клавиатура (хотя вроде в новых моделях от неё избавились), отсутствие возможности любого апгрейда, сама ось тоже довольно специфическая и во многом ограниченная.
    Ответ написан
    32 комментария
  • Как стать топовым WEB разработчиком?

    origami1024
    @origami1024
    went out for a night walk
    Знаю HTML, CSS, Bootstrap 3,4, верстал на них, сейчас освоил FlexBox, знаю как адаптивно верстать.
    Чуток знаю основы WEB дизайна, есть макеты на Behance

    Да ты и так уже топовый веб разработчик, можно закрывать вопрос
    Ответ написан
    1 комментарий
  • Как стать топовым WEB разработчиком?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    стать топовым WEB разработчиком на фрилансе/удаленке?

    Сразу возникает вопрос, где та оценка качества по которой вы хотите стать топ разработчиком. Вы берете одну из самых низкопороговых ниш, и пытаетесь стать "царем горы".
    Знаю HTML, CSS, Bootstrap 3,4, верстал на них, сейчас освоил FlexBox, знаю как адаптивно верстать.

    С таким даже на работу не берут, без знания хотя бы js\php - всё сложно, будете перебиваться мелкими заказами и демпинговать.
    Желание делать сайты под ключ, дизайны сайтов, приложений и разработка.

    Готовьтесь к огромной конкуреции среди таких же "топовых разработчиков"

    Как думаете все вместе реально круто освоить и стать хорошим разработчиком сайтов от дизайна до верстки и запуска сайта, так скажем?

    Вы опоздали лет на 10, когда люди с Вашими навыками делали достаточно неплохие деньги.

    Сейчас неплохие деньги будет делать тот, кто 10 лет нарабатывал своё портфолио, обзавелся клиентами, и чем ваши навыки в виде "знаю чуток, верстал на них, сейчас освоил flexbox" - рынку Вы с такими темпами пригодитесь лет через 5, когда освоите пару фреймворков, либо 4-5 cms + php.
    Ответ написан
    47 комментариев
  • Оцените качество кода?

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    А какой ответ хотите? Второе решение это функция которая на вход получает объекты. С точки зрения ООП - все ок, какой по вашему принцип нарушается? То что у вас функция внутри объекта это не значит что это ооп, и также наоборот отсутствия логики внутри объекта не говорит о том что это НЕ ооп.

    В вашем коде метод attack ведет себя как раз не совсем адекватно, т.к. либо возвращает имя, либо рекурсивно отправляется атаковать оппонента (то есть нарушается принцип единой ответственности: по хорошему он должен возвращать HP, а declareWinner уже вызывать методы attack или возвращать имя в зависимости от размера HP)
    Ответ написан
    2 комментария
  • Разработчик недисциплинированно трекает время. Что делать?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    А зачем вообще трекать время? Уложился в дедлайн - молодец. Не уложился - разбор полётов. Хронически не укладывается - понижение грейда или увольнение.
    Ответ написан
    21 комментарий
  • Что может линукс, чего не может Mac?

    SilenceOfWinter
    @SilenceOfWinter
    та еще зажигалка...
    на каждой os есть свой специфический софт, но в большинстве случаев всегда есть их аналоги на твоей ос.
    Ответ написан
    Комментировать
  • Что может линукс, чего не может Mac?

    @MSAFT
    Как-то одно время мучился с этим вопросом.

    Решил проверенным способом, взял «погонять» макбук эйр и попробовал поработать на нем недели полторы.

    Итог, вернулся к родному убунту и теперь даже мысли такой нет.
    Ответ написан
    Комментировать
  • Какой электронный кошелек использовать для удалённой работы?

    Zoominger
    @Zoominger
    System Integrator
    там будет браться 6% для налогового вычета, вроде. Но это же много!

    Лол. Когда налоговая возьмёт за ass (даже за фрилансные копейки), заберут гораздо больше.
    Берите ЯД и не вибрируйте.
    Ответ написан
    Комментировать
  • Стоит ли ввести тег Психология?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Отношение программистов к психологии в общем случае – сильно отрицательное. Это хорошо видно по комментариям под соответствующими статьями на Хабре. Отдельные личности темой интересуются, но в основном люди ее или просто игнорируют, или поливают грязью все, что с ней связано. Но когда люди не занимаются психообразованием себя и окружающих в условиях постоянных стрессов, дедлайнов, переговоров, переработок, отсутствия у менеджеров навыков управления коллективом – начинаются вот эти все истории об истощениях, выгораниях, конфликтах и.т.д.

    Проблема в том, что вопрос по теме, заданный в вакууме, да еще и на всеобщее обозрение, не показывает всю картину происходящего с человеком. Иногда нужно кучу времени потратить, чтобы человека просто один на один разговорить и он рассказал, а что на самом деле у него происходит. Что-то ему будет тяжело принять, что-то он бы не хотел распространять о себе или других людях (это кстати одна из причин, зачем нужна конфиденциальность в этом деле). Поэтому 99% советов, которые дадут в ответ на такой вопрос в сети не соответствуют контексту, в котором автор формулировал вопрос, и хорошо, если они не сделают ему хуже. А учитывая, что психологией программисты не занимаются – советы часто будут не только вне контекста, так еще и вредными по определению (как, например, популярный совет - взять на себя большую нагрузку, когда ты и так истощен до предела). Поэтому формат вопросов-ответов в том виде, в котором он есть на Хабр Q&A тут не годится.

    Так что заводить такой тег именно здесь не имеет смысла. Он мало того, что будет непрофильным, так еще и пользы не принесет. Гораздо лучше задаться вопросом массового образования программистов – чтобы люди не только мыли руки после туалета, но и про психогигиену не забывали, чтобы проблемы не становились очевидными, когда уже все плохо и без врача и серьезных перемен в жизни не обойтись. Но задачка эта не из простых, конечно.
    Ответ написан
    Комментировать
  • Почему так странно gmail открывает письмо?

    Советую еще сюда заглянуть.
    Ответ написан
    Комментировать
  • Бот, понимающий смысл?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно начать с построения семантической сети по тексту.
    После того как сеть будет построена. Задача бота сводится по поиску вершин и рёбер в этой сети.
    Вершины и ребра будут по сути ответом на поставленный вопрос.

    С ботами я никогда не имел дела. Но разбирался как работает RDF/Semantic web/GraphQl.

    Но это всё из области четкой логики. Из того что умерло в 80х вместе с языком Пролог и Лисп.

    Возможно современные боты строятся как-то по другому. На базе нечетких (аналоговых или вещественных
    понятий). Например если Саша любит Машу - то с точки зрения нечеткой логики это не факт
    а просто величина чуть меньше единицы. Предположение. И если по тексту будет много фактов
    проявления любовей от Саши то в этом случае эта нечеткая связь будет расти и крепнуть
    по некой функции с насыщением но никогда не достигнет единички а просто так и останется
    предположением. Сюда-же до кучи механику нейроных сетей.

    Хотя КМК НС плохо подходят для текстовых задач. У них есть большой лимит по памяти. Сеть хорошо
    обобщает факты. Но плохо помнит частные случаи.
    Ответ написан
    53 комментария
  • Только только начал изучать веб-программирование, как у меня успехи?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Я повар уже более 11 лет

    У меня для Вас плохие новости, если вы за 11 лет не выросли из просто повара, до шеф повара с заплатой которая позволяет комфортно жить, и у вас влажные мечты по поводу веба из реклам в интернете, где 17 летний парень отдыхает на мальдивах с большегрудой красоткой и кодит - не ведитесь, вас обманули. Работайте дальше поваром, у вас больше шансов на успех в той сфере, где вы хоть минимально можете дать фору.
    Ответ написан
    24 комментария
  • Есть ли способ во Vue неявно расширить какие-то данные вниз по дереву?

    Kozack
    @Kozack Куратор тега Vue.js
    Thinking about a11y
    Как-то плохо гуглили.
    https://ru.vuejs.org/v2/api/#provide-inject
    Ответ написан
    Комментировать