• Из за чего ошибка при использовании примера из документации vue?

    @GrayHorse
    Копирую его в проект и при вызове метода на кнопку получаю в консоли:


    Что? Какого метода? Кнопку?

    Нашел пример в документации. Копирую его в проект


    Куда его можно скопировать (неправильно), если это уже по факту полноценное рабочее приложение на Vue.js:

    <!DOCTYPE html>
    <html>
    <head>
        <script src="https://unpkg.com/vue@next"></script>
    </head>
    <body>
    <div id="mount-point"></div>
    <script>
        const Profile = {
            template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
            data() {
                return {
                    firstName: 'Walter',
                    lastName: 'White',
                    alias: 'Heisenberg'
                }
            }
        }
        Vue.createApp(Profile).mount('#mount-point')
    </script>
    </body>
    </html>


    Что это и почему?

    Это исключение.
    Vue.js не был подключен.
    Ответ написан
    Комментировать
  • Как исправить ошибку "Class not found"?

    @FernandoErrNando
    Попробуйте быть чуток внимательней, я дам подсказку: вы пытаетесь в сидере вызвать фабрику класса (MyuserFactory), которой у вас нет, но есть TestFactory. Значит, надо поменять ...
    Ответ написан
    Комментировать
  • Как настроить автоматические отступы от скобок при автоимпорте в phpStorm?

    Preferences/Settings | Editor | Code Style | JavaScript | Spaces | Within | ES6 import/export braces.
    Ответ написан
    Комментировать
  • Как выполнить еще одну команду в docker?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Это считается не docker-way (правильнее в отдельном контейнере запустить отдельный обработчик очереди), но можно так:

    одна команда & другая команда

    Можно также сделать скрипт, который всё как надо запустит, и использовать его в качестве cmd. Можно также внедрить в контейнер микросистему управления сервисами типа runit.

    Почему считается, что плохо так делать? Если php-fpm упадёт, то весь контейнер упадёт и может перезапуститься автоматом. А если упадёт второй сервис, то контейнер будет работать как ни в чём не бывало.
    Ответ написан
    Комментировать
  • Размытие фона на js?

    profesor08
    @profesor08 Куратор тега CSS
    Используй backdrop-filter. Где не поддерживается, ничего страшного не случится.
    Ответ написан
    1 комментарий
  • Пользовательское соглашение для ПО. Что писать?

    hint000
    @hint000
    у админа три руки
    Хорошая статья, из которой процитирую несколько фраз:
    https://habr.com/ru/company/itsoft/blog/525054/
    ...Дублирование того, что уже и так прописано в законе.
    ...Ничтожные пункты, которые противоречат законам.

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

    ...Каждый пункт нужно формулировать простым понятным языком, если слово можно выкинуть без потери смысла, то нужно выкинуть. Если из пункта непонятно зачем он нужен, то нужно либо переписывать либо удалять. За каждым пунктом должно стоять конкретное осмысленное действие, условие, требование.
    Ответ написан
    1 комментарий
  • Приложение масштаба предприятия на Symfony?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    По моему имху такого плана приложение писать стоит на ларавеле, фронт vue, react, angular. Если же конечно не перейти на другой язык на бэке
    Ответ написан
    7 комментариев
  • Приложение масштаба предприятия на Symfony?

    @caballero
    Программист
    гемор создания ERP это сложность реализации самой ERP
    какой там язык вопрос десятый

    использование такого сложного фреймворка как synfony только осложняет дело

    использование javascript фреймворков нафиг не нужных а в таких приложениях это дополнительных гемор

    ну написал некто на хабре что он так сделал и что? мало ли кто как делает
    Ответ написан
    8 комментариев
  • Как лучше структурировать элементы массива?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Вместо кучи компонентов с if, используй один <component :is="conponent" v-bind="allprops"/>.
    Ответ написан
    5 комментариев
  • Npm, Webpack, NodeJs с чего начать?

    @deliro
    Фронт развился в какую-то неправильную сторону, это правда
    Вкатиться на фронт очень сложно, это тоже правда. Причём, необоснованно сложно.

    Я бы выделил два пути, как можно въехать во всё это:
    1. Создать приложение на Vue или React по туториалам, затем разобраться, как и зачем оно всё
    2. Разобраться как и зачем оно всё (aka Vanilla JS), потом заняться реактами

    Имхо, вариант №2 предпочтителен и более прост, потому что на варианте №1 есть огромный шанс застрять, никогда не разобравшись, как оно работает а при любых нешаблонных ошибках поднимать лапки.

    Что здесь нужно понимать:
    1. Есть разные версии ES (ecmascript), они все обратносовместимые. Программист может писать на любой версии, какая ему нравится. Обычно берут последнюю стабильную

    2. Для проекта обычно есть две версии ES: та, на которой пишут программисты и та, которая исполняется в браузере или в ноде (об этом позже). Например, программист пишет на ES8, а код транслируется на ES5. Это позволяет использовать последние предсмертные хрипы писки моды JS при этом запуская всё на древнейшем говне вроде IE11. Перегонкой кода из JS/TS одной версии в JS другой версии занимается транспилятор: babel / esbuild / swc

    3. Новые версии JS содержат расширения стандартной библиотеки, которых нет в старых браузерах (например Array.from, Object.entries и т.п.). Эти дырки затыкают полифиллы, они же shims. Самая популярная дырозатыкательная машинка — corejs

    4. Весь код очевидно не пишется в одном файле и может быть написан на TypeScript (он же TS), JSX/TSX (реактовый синтаксис). Всё это нужно собрать в один или несколько файлов, то есть скомпоновать. Этим занимается bundler: часть webpack / esbuild / spark / etc.

    5. Этот же парень отвечает за то, чтобы та тысяча библиотек, что лежит в node_modules, попала в итоговый условный main.js, но не целиком, а только то, что используется. Последнее называется tree shaking (типа навозную кучу node_modules потрясли как дерево, что упало — то не нужно)

    6. (то самое "позже) Код может исполняться не только в браузере пользователя, но и на сервере без браузера вообще. Это нужно для SSR aka Server Side Rendering. SSR — это такой глобальный вонючий костыль для SEO. Дело в том, что стандартные SPA приложения содержат один DOM элемент, куда цепляется всё остальное приложение вроде реакта или вью, которое уже содержит всю вёрстку прямо в JS. Но не все поисковики согласны с таким подходом и некоторые (не будем показывать пальцем на яндекс) не умеют выполнять JS и индексируют только тот самый единственный DOM элемент, который существует на этапе отдачи страницы в браузер. Это уже потом к нему JS движком дорисовывается весь остальной сайт. Соответственно, сайт индексируется от слова "никак", а некоторым это важно. Например, когда SPA — это не админка. Для этого есть два выхода: страницы, важные для SEO, рендерить чем-то не-реактовым или сделать SSR — делать за яндекс работу на сервере (на ноде), представляя в уме, что у нас есть DOM и браузер (на самом деле нет), на выходе получать начальное состояние HTML, отдавать его клиенту (браузеру или поисковому роботу), а JS'ом её т.н. "гидрировать", иными словами — оживлять.

    7. webpack отвечает за всё вот это сверху в том или ином виде. Это такой кухонный комбайн, в который вкидываешь кучу хлама в одном виде, а получаешь другую кучу хлама в другом виде.

    Начать советую с parceljs, который сильно проще в освоении, чем webpack. И на написании кода максимально без библиотек.
    Ответ написан
    1 комментарий
  • Два домена для локальной разработки?

    akelsey
    @akelsey
    nginx будет работать с headers приходящими от браузера, и без разницы где он, в докере, на хосте. Варианта три:
    1. купить mylocasite.com и настроить dns
    2. настроить локальный днс сервер (например тоже в докере) и там прописать эту доменную зону
    3. добавить адреса в hosts машинки на которой будет запускаться браузер для отладки и локальной разработки.
    Ответ написан
    4 комментария
  • Как исправить ошибку Target class [...] does not exist?

    @kandrash
    Кратко о себе
    Сейчас принято писать
    Route::get('/show', [TestController::class, 'show']);

    И самая зачуханая IDE подскажет, что такого класса нет, пиши неймспейс полностью
    Ответ написан
    Комментировать
  • Как правильно передавать заказчику код?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Я несмотря что делаю все под ключ, обычно создаю readme.txt install.txt все это в папке проекта.
    Дополнительно в сложных проектах добавляется install.docx userguide.docx
    И да бэкапьте переписку и мессенджеры, там много моментов есть те которые упускаются.
    Только одно замечание обговаривайте документацию и ее качество, и дальнейшую поддержку, это важно
    Ответ написан
    Комментировать
  • Как в Laravel вызвать метод модели?

    @jazzus
    Удалить Initial. Удалить InitialResource. Ибо это не ресурс. Передавать данные через json response. Внутри которого CategoryResource. Для правильного запроса квери билдер метод where. Если хочется вызывать методом из модели делай scope. Без get в модели. Передавать, как написано в документации
    CategoryResource::collection($categories);
    Ответ написан
    7 комментариев
  • Как в Laravel вызвать метод модели?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Ну если вы все запрашиваете Category::all(), то вам все и выплевываются.
    Запрашивайте только активные

    'mainMenu'   => CategoryResource::collection(Category::where('enabled', true)->get()),


    https://laravel.com/docs/8.x/eloquent#building-queries
    Ответ написан
    2 комментария
  • Как правильно написать свой обработчик ошибок php?

    Vamp
    @Vamp
    Как правило, обычные ошибки не обрабатывают в таком обработчике, а конвертируют в ErrorException.

    function error_handler(
        $error_code,
        $error_message,
        $error_file_name,
        $error_line
        // $error_context - не объявляйте error_context,
        // он объявлен deprecated в PHP 7.2, а в 8.0 уже удалён
      ){
    
        throw new ErrorException($error_message, 0, $error_code, $error_file_name, $error_line);
    
      }
    
      set_error_handler('error_handler', -1);

    Ну а дальше ловите исключения как обычно.

    // some code...
    
    $host_db = '127.0.0.1';
    $login_db = 'root';
    $password_db = '';
    $database_db = 'some_db';
    
    $DB = new PDO('mysql:host=' . $host_db . ';dbname=' . $database_db, $login_db, $password_db);
    $DB -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    try {
        $DB -> beginTransaction();
    
        // some code...
    
        $DB -> commit();
    } catch (\Throwable $e) {
        $DB->rollback();
    }
    // some code...
    Ответ написан
    6 комментариев
  • Как правильно написать свой обработчик ошибок php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перед тем как писать обработчик, надо сначала понять, а зачем он нужен.
    Потому что вот эта вот функция - она совершенно бессмысленная.
    Вся "обработка", которой она занимается - это добавляет бессмысленные фразы типа "Error_message" к тому что РНР выведет и так.

    Обработчик ошибок не должен заниматься удалением файлов. Обработчик вступает в дело, когда ничего исправить уже нельзя, и всё что остаётся - это показать пользователю страницу с извинениями и корректным НТТР кодом. Пример можно взять здесь: https://phpdelusions.net/articles/error_reporting

    А вот обрабатывать ошибки надо с помощью оператора try catch
    Если надо откатить транзакцию, то всю её целиком надо поместить внутрь try catch, в котором ловить ВСЕ ошибки, то есть \Throwable и после этого скорее всего добавить throw с тем же исключением, поскольку вряд ли при ошибке БД имеет смысл продолжать работу скрипта. Но зависит от обстоятельств.

    Если надо удалить файлы, то опять же, заключить в try catch загрузку файлов, то тут просто заключить в try catch, всё почистить и написать какое-нибудь сообщение пользователю.
    Ответ написан
    2 комментария
  • Какие еще проекты сделать junior на php помимо дефолтных?

    nefone
    @nefone
    Junior PHP разработчик
    Junior разработчиком после выполнения пары проектов в отвратительном качестве не стать.

    в моей голове junior - это тот, кто пишет круды и что-то там допиливает в проектах

    Этот тот которому дают простое задание и говорят, как делать и он делает, так как ему сказали.


    Я могу сделать какой-нибудь обычный crud с sql, но, видимо этого не достаточно.

    У Вас не обычный CRUD, а тот который никогда делать не надо. Следует узнать о шаблозаторах Twig и Smarty. Попробовать сделать свою простую шаблонизацию на PHP, что бы отделять верстку о логики.

    Также у меня есть пару книг популярных по этому языку и там тоже нечего взять полезного.

    Я думаю, если бы Вы прочитали PHP 7 Котерова, может быть не задавали бы такого вопроса. Можете начать с PHP 7, и обязательно выполнять задания, которые там даны в конце каждой главы. Если хочется быстрее понять PHP можете пройти интенсив. (бонус, что будет опытный наставник и работа с системой контроля версий).

    После того, как будет понимание о языке PHP и его возможностях, следует посмотреть на работу с SQL, создать несколько баз данных руками, попробовать JOIN из нескольких таблиц, написать простой CRUD каталог по архитектуре MVС, что бы понять, как реализуется роутинг.

    Поиграться с каким нибудь API, делать получение и отправку запросов.

    Изучать тему Linux и как работать в консоли, настройка LAMP и LEMP окружения.

    Желательно посмотреть на Docker и Vagrant, запустить их у себя на машине и установить внутри какой нибудь обычный WordPress.

    Попробовать работу с PHP фреймворками, сделать несколько простых проектов.

    Изучать лучшие практики работы PHP правильный путь

    P.S. и постоянно учиться чему то новому...
    Ответ написан
  • Как ускорить скорость загрузки сайта, метрика и движовосайт тянут вниз?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Отложить загрузку на 5 секунд - выход, но грубоватый (имхо конечно). Я делаю по-другому - оборачиваю код в скролл-ивент + задержка в 1 секунду. То есть, сайт загрузился быстро, и как только пользователь начал скроллить хоть чуть-чуть - секундный таймаут и загрузка дополнительных ресурсов. Гугл доволен, пользователи вообще не замечают задержки:

    var fired = false;
    
    window.addEventListener('scroll', () => {
        if (fired === false) {
            fired = true;
            
            setTimeout(() => {
                // Здесь все эти тормознутые трекеры, чаты и прочая ересь,
                // без которой жить не может отдел маркетинга, и которые
                // дико бесят разработчиков, когда тот же маркетинг приходит
                // с вопросом "почему сайт медленно грузится, нам гугл сказал"
            }, 1000)
        }
    });
    Ответ написан
    29 комментариев
  • ООП: Правильно ли архитектурно так делать?

    profesor08
    @profesor08 Куратор тега PHP
    Вот это order_fields поле должно быть объектом. В целом, если хочется удобства, целостности данных и надежности, то неплохо бы вместо ассоциативных массивов использовать обычные объекты, самые простые с обозначенными типами для полей, да хоть с паблик полями, или сделать их readonly.
    Ответ написан
    5 комментариев