• Правильно ли выбрасывать исключения в бизнес логике?

    Я считаю это хорошей практикой. Исключительная ситуация - это та, при которой программа выполняется не так, как ожидалось. Но, позвольте, я ожидаю, что заказ пройдет валидацию. Я ожидаю, что заказ завершится успехом. Поэтому OrderValidationException, OrderException - исключительные ситуации. Исключительной ситуацией не является, например, отмена пользователем заказа - глупо выбрасывать исключение по клику на Cancel.

    Исключения гораздо глубже, чем просто "исключительная ситуация". Они помогают развести обработку ошибок по разным уровням абстракции, а использование разных типов исключений позволяет обрабатывать конкретные ошибки там, где их нужно обработать (на нужном слое). Исключения очень помогают в локализации ошибки в дальнейшем, они позволяют избавиться от простыни If .. else, проверок на null, false и прочей ереси. Они, чаще всего, делают код чище.

    Но пользоваться ими стоит аккуратно, все-таки стоит разделять исключительную ситуацию и вполне нормальную, штатную ветку исполнения. Так, если заказов нет - это НЕ исключение, тут можно вернуть null - допустимо (хотя некоторые и тут выбрасывают исключение, потому что очень соблазнительно привязать код исключения к HTTP кодам). А если у вас аплоад документов, и юзер пытается загрузить файл слишком большой, то это уже исключение.
    Ответ написан
    1 комментарий
  • Как создаются современные сайты?

    @Astrawelt
    Антон
    Сейчас многие современные верстальщики страдают какой-то небывалой дичью, засовывая тонны JS куда только можно и не можно.
    Пожалуй, мы ушли от простого: база данных, php и htm/css обвязка. Более того, тот же Гугл просит сайтостроителей делать простые и легкие сайты. А то порой дизайнеры такую ерунду в фотошопе нарисуют, что это никак не сверстать. И сайт получается очень тяжелый, что еле еле загружается даже при скорости 100мбит.
    Ответ написан
    13 комментариев
  • Что делать с модулями NPM для Сайта?

    GreyCrew
    @GreyCrew
    Full-stack developer
    Это потому, что require() не существует в JavaScript на стороне браузера / клиента.
    Как решить проблему:
    1) requirejs
    2) Импортируйте, используя <script> тег
    3) Собирайте проект сборщиком, типа webpack
    Ответ написан
    Комментировать
  • Создание SPA на wordpress?

    z808z
    @z808z
    Fullstack web-разработчик c уклоном во фронт
    Не используйте готовые темы для wp сделанные на vue - в 99% случаев это плохой путь.
    Вам скорее всего нужен SSR, а не SPA, чтобы не было проблем с индексацией сайта.

    Разделяйте бэк и фронт, в этом случае используете так:
    - WP только как админка, всё отдаёте через апи.
    - на фронте Nuxt.js, в режиме SSR.

    В гугле есть достаточно много примеров, например, https://github.com/bovas85/nuxt-headless
    Ищите по запросу Wordpress api + nuxt.js
    Ответ написан
    2 комментария
  • Создание SPA на wordpress?

    Sanes
    @Sanes
    Ответ написан
    Комментировать
  • Сложный и интересный проект для новичка?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    ## Анонимный чат с темами для обсуждения деликатных офисных проблем
    Иногда хочется обсудить что-то с коллегами в офисе, но не хочется смущать их или показывать лишнюю инициативу.
    Например кто-то не смывает в туалете или слишком громко орёт и сам того не замечает. Может быть кто-то слишком интенсивно пользуется парфюмом.
    - Анонимность
    - Постоянная ссылка на чат, тему или дерево чатов
    - ссылки в виде QR-кодов
    - голосовалка
    - закрепленные посты

    ## Сайт checklist
    Веб-сервис и мобильное приложение для краудсорсинга чеклистов для всего: зарегать ИП, получить визу, что делать при ДТП, как влезть в ипотеку, как вылезть из неё, чем заняться с ребенком на выходных (N-ле

    - Коллекция чек-листов снабженных тегами, доступная для краудсорсинга.
    - Краудфандинг составления и поддержки нового листа.
    - Фильтрация чек-листов.
    - Фильтрация пунктов.
    - Тегирование пунктов.
    - Графовые алгоритм обхода чек-листа.
    - Мастер обхода чек-листа.
    - Отчет по чек-листу.
    - Вложенные чеклисты, гиперссылки между разными листами.
    - Параметризация.
    - Экспертная система, логические связи (расширенный режим).

    Примеры:
    - Что делать при ДТП
    - Открыть ИП
    - Осмотр авто при покупке (подветки для разных конкретных моделей)
    - Первая помощь при...
    - Диагностика инсульта
    - Зомби-акопалипсис: как приготовиться
    - Атомный взрыв неподалёку - что делать
    - Планетарная катастрофа - как выживать
    - Поход выходного дня - что взять
    - Подготовка авто к поездке
    - Путешествие: Алжир (виза, прививки, документы, отели, транспорт)
    - Как влезть в ипотеку
    - Как вылезть из ипотеки
    - Как быстро заработать (во все тяжкие)
    - Покупка квартиры (на что обратить внимание)
    - Самостоятельное строительство дома (общий план)
    - Чем заняться с ребёнком N-лет
    - Как отметить новый год
    - Что интересного в районе <пос. Майский>
    - Номера телефонов и документы в автомобиле

    ## Эротический краудфандинг
    Интернет ресурс, где девушки могут делать крауд-фандинговые кампании

    - Крауд-фандинговая кампания по сбору средств на проект
    - оформление проекта (доказательство личности в виде фото с сигном, некое обещание, порог недовольных результатом, целевая сумма)
    - посетители анонимно финансируют проект в биткоинах
    - если кол-во лайков среди профинансировавших (в соответствии с весами) > порогового, учредитель получает сумму за вычетом комиссии
    - если кол-во лайков не превысило порог, сумма возвращается обратно инвесторам

    ## Простой открытый сервис для обмена сообщениями
    - HTTP API, Web-sockets
    - p2p rtsp
    - опциональное end-to-end шифрование
    - хранение истории на клиентах
    - возможность использования нескольких серверов
    - возможность использования альтруистичных клиентов для проксирования трафика p2p
    - поиск узлов на основе блокчейн технологий и DHT таблиц

    ## Онлайн-журнал путешествия
    - публикация трека в реальном времени
    - комментарии путешественника и фолловеров
    - стримы (аудио, видео, фото)
    - отложенная загрузка
    - журнал(расходы, чек-поинты, расписания, цены, погода)
    - FAQ
    - голосовалка

    ## Поэтический онлайн редактор
    - выбор стопа, стиля и жанра
    - шаблон с плейсхолдерами, разбивающий текст на слоги
    - облако рифм
    - подражающий автогенератор
    - многосегментный словарный банк (дифференциально-слоистая древовидная структура, своя специфика в верхнем слое, поэлементное ранжирование сегментов)
    - тезаурус
    - словарь сочаетаемости
    - N-граммы поэзии по авторам и стилям
    - корпус поэзии
    Ответ написан
    13 комментариев
  • Как детектить low-end устройство на js?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    window.requestAnimationFrame - берём зазор времени в микросекундах между соседними кадрами.
    Например, берём среднее значение рендеринга за 10-20 кадров.
    Разумеется, это в скрытом канвасе.
    Ответ написан
    2 комментария
  • Взламывают, как защитить сайт?

    У вас в коде возможна sql инъекция.
    'SELECT * FROM `users` WHERE `id` = "'.$user_id.'"
    Инструкция как их избежать:
    habr
    php.net
    Ответ написан
    Комментировать
  • Почему на продакшене из базы возвращается строка а не число?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Чтобы получить число, нужно чтобы были соблюдены несколько условий

    - установлен драйвер mysqlnd
    - отключена эмуляция подготовленных выражений в PDO
    - используется подготовленный запрос.
    Ответ написан
    Комментировать
  • Что нужно знать для backend разработки?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Выучите PHP.
    99% открытого бэка - написано на нём.
    Ответ написан
    Комментировать
  • Хочу выйти на фрилас c WordPress, что учить?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Хочу выйти на фриланс создавая сайты на WordPress что посоветуете изучать.

    Посоветую устроится в офис, так как на фрилансе нет никаких шансов у того, кто не дорос хотя бы до мидла в офисе.

    Либо крутые курсы и так далее.

    Учебники. Только учебники.

    Дайте пожалуйста план новичку.

    Котеров - PHP7 в подлиннике

    Ну и сколько по времени учится WordPress

    У кого-то обучение занимает месяц, у кого-то год, кто-то вообще не способен стать программистом. Вы к каким относитесь?
    Ответ написан
    Комментировать
  • Стоит ли включать HTTP/2?

    1.стоит
    2. http2 обратно совместим с http1.1
    3. подводные камни есть, но вас они врядли затронут
    Ответ написан
    Комментировать
  • Что такое extra в Composer json?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Это дополнительные данные для команд (хуков) в секции scripts, в данном случае некий класс

    Чтобы понять эту тему — изучить нужно этот раздел: Composer Scripts
    Там будет про Event Handler и сами Events, через который и получают в своих обработчиках эти данные из extra через метод:
    $extra = $event->getComposer()->getPackage()->getExtra();

    В данном случае передается класс, может быть скаляр или json-объект, да что угодно в рамках синтаксиса и языка
    Ответ написан
    1 комментарий
  • В чём моя ошибка при использовании gitignore?

    Tomio
    @Tomio
    backend developer (python, php)
    Удалите файл из кеша гита:
    git rm --cached config/db.php
    Ответ написан
    Комментировать
  • Бросать исключение или возвращать коды ошибок/успеха? Является ли исключением то, что метод не может выполнить свою задачу?

    Adamos
    @Adamos
    Пока вы вызываете одну функцию и решаете, что делать с ее ответом, вы не поймете исключений.
    Вот когда вам надо будет вызвать функцию, которая вызывает методы класса, которые вызывают методы других классов - вы либо изрисуете себе все стены теми вариантами ошибок, которые каждый из этих методов может вернуть, либо поймете, как это прекрасно - просто поймать исключение, если что-то пошло не так, и не париться с тем, что и где именно.
    Ответ написан
    3 комментария
  • MVC php на пальцах?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ох...

    Model View Controller. Да ну его, ему уже 45 лет (придумали в 79-ом году). Давайте лучше про Model View Adapter погокорим. это то что все используют в популярных фреймворках последние лет так 10 так точно.

    mvc-mvp-mvvm-6-638.jpg?cb=1375170002

    Вообще в этом всем важно не только то, что каждая буква обозначает, а как они друг с дружкой связаны.

    View - это не только HTML, но и вообще представление в целом, а так же логика его формирования. Шаблонизаторы, фильтры, различные функции/объекты помогаютщие нам сформировать view (например форматирование дат, сериализаторы и т.д.) В подавляющем большинстве случаев "представление" наших данных - это HTTP запросы и HTTP ответы. HTML - э то лишь часть HTTP ответа.

    Model - Это целый слой, который может быть представлен в виде кучи отдельных объектиков, структур и т.д. Его задача - делать дела и хранить/менять состояние системы. Тут легко запутаться потому что термин "модель" много чего значит. Воспринимайте его как "слой логики" а не конкретные объекты. И да - база данных и прочая чушь - это детали реализации этого слоя. "не важные штуки" словом. Туда же и ActiveRecord, ORM-ки всякие. Это деталь реализации и все остальные чуваки (view и controller) о них знать ничего не должны (хотя иногда могут в целях упрощения).

    Controller или адаптер. Это опять же не обязательно один объект. это может быть цепочка адаптеров (еще называют фронт-контроллером, middlewares и т.д.). Его задача весьма простая. Получаем представление данных на входе (HTTP запрос), определяем что надо делать, и просим модель что-то сделать (ни в коем случае не меняем ничего самостоятельно в контроллере, он только просит). Потом мы можем попросить модель вернуть нужный нам кусок состояния, и попросить View сформировать представление (HTTP ответ).

    Как-то так. В целом же это я сейчас описал "идеальный мир". Вся суть этого подхода - разделение логики презентационной и логики приложения. Зачем это надо? что бы было проще жить! Обычно UI приложения или способы взаимодействия с ним меняются почаще логики или как минимум в разные моменты времени. Адаптеры в этом случае служат промежуточным слоем, они ничего сами не делают, это "переводчики". Они просто переводят то, что сказано в запросе в язык понятный приложению и обратно.

    Но на начальной стадии можно слегка нарушать эти правила, делать толстые контроллеры и т.д. В этом случае бизнес логика будет потихоньку "вытекать" из модели. Это не хорошо, и на хоть сколько нибудь больших проектах может привести к проблемам. Потому важно находить баланс.
    Ответ написан
    Комментировать
  • WordPress: почему the_title() и прочие функции (get_posts() ) выводят данные текущей страницы, а не постов, прописанных в аргументах get_post?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Попробуйте так:
    function testimonial_letters_function ()
    {
     global $post;
      $args = array('post_type' => 'post', 'category' => 7 );
      $myposts = get_posts( $args );
      foreach( $myposts as $post ){ 
        setup_postdata($post);
        echo ('<h2>'.the_title().'</h2>');
        echo ('<h2>'.the_permalink().'</h2>');
      }
    wp_reset_postdata();
    }


    А еще лучше, используйте WP_Query:
    function testimonial_letters_function ()
    {
        $args = array('post_type' => 'post', 'cat' => 7 );
        $myposts = new WP_Query( $args );
        while( $myposts->have_posts() ) {
            $myposts->the_post();
            echo ('<h2>'.the_title().'</h2>');
            echo ('<h2>'.the_permalink().'</h2>');
        }
        wp_reset_postdata();
    }
    Ответ написан
    3 комментария
  • Как сейчас дела у frontend разработчика на Upwork?

    @VegasChickiChicki
    У меня дед 50 лет назад работал кучером, заказов было - тьма, а сейчас печально как то все... Почему то кучеры не особо нужны( Везде одни водители автомобилей(((

    UPD
    А если серьезно. По моему, вы не понимаете как работает текущий рынок. Встаньте на место заказчика, кому сейчас нужна верстка? Ответ - почти не кому. Разве что студиям, которые делают какой нибудь проект и их верстальщик не справляется\не успевает, то да, вас возьмут на пару страниц. Сейчас всем нужны полноценные фронтэнд разработчики, которые и в JS могу и с беком связаться.

    Сейчас уже далеко не 2010 год, когда сайт состоял и одной верстки и отправки письма с заявкой на почту. Сейчас тонна всего что нужно знать.
    Ответ написан
    1 комментарий
  • Какой WEB git GUI скрипт посоветуете?

    glaphire
    @glaphire
    PHP developer
    Похоже вы неправильно понимаете потенциал git и его применение) Под веб интерфейс можно подогнать понятия таких сервисов, как github, gitlab и bitbucket, но это больше, чем "веб решение". Есть декстопные клиенты вроде sourcetree и gitkraken, но "нормальное" использование гита всегда проходит через терминал, а остальное лишь обертки.
    Ответ написан
    3 комментария
  • Как отключить AirPlay?

    @askhat
    Иконка видна если в сети есть клиенты AirPlay. Таким образом вы точно знаете когда вещаете свой дисплей — иконка подсвечивается синим цветом, а когда нет — она белая.

    Ответ написан
    2 комментария