Задать вопрос
  • Как использовать Laravel Eloquent Relationships со сложными запросами?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    В чем вопрос-то? Для этого есть Builder запросов, в котором можно делать что угодно, отношения к нему никак не относятся и существуют параллельно.
    Ответ написан
    Комментировать
  • Какие есть способы для сокрытия статических файлов в Laravel, желательно в рамках локального хранилища без сторонних API?

    glaphire
    @glaphire
    PHP developer
    Без привязки к фреймворку - просто хранить файлы в директории, к которой нет прямого доступа на уровне сервера (т.е. по-сути любая, кроме public), создать эндпоинт (экшен контроллера), который будет брать из этой папки файл и возвращать, ну и добавить внутри эндпоинта проверку на права доступа к файлу, т.е. никакие сторонние апи тут не нужны
    Ответ написан
    4 комментария
  • (windows. forms) Почему не правильно вычисляет?

    @majstar_Zubr
    C++, C#, gamedev
    получается 3, потом от 3,6 отнимается 3, должно получатся 0,6


    В общем случае - нет, не должно.

    А вот если округлять правильно
    Math.Round(double_num,2); , то с указанной точностью всё гарантируется.
    Ответ написан
    6 комментариев
  • (windows. forms) Почему не правильно вычисляет?

    GavriKos
    @GavriKos
    Welcome to float.
    Потому что нет целых вычислений. 4/2 == 1.9999. Или 2.00001. Почитайте про представление чисел с плавающей точкой в памяти
    Ответ написан
    1 комментарий
  • Вывод print_r($request) Laravel 6.0?

    romka123
    @romka123
    Переучиваюсь из PHP в Java разраба
    1. Всё дело в рекруссивном вызове методов. При вызове переменной $request - дёргается куча методов которые вызывают себя же и вам не хватает памяти. Для того, чтобы посмотреть содержимое переменной, можно использовать функцию toArray(), например так: dd($request->toArray());
    2. Заглянуть в папку vendor, естественно. Можно ещё подебажить с помощью X-debug. Но как правило оно вам нужно почти никогда. Читайте документацию, задавайте вопросы как сделать что то конкретное, если что то не понятно и вам подскажут как правильно. Фреймворк для того и предусмотрел кучу уровней абстракции, чтобы лишний раз не лазали внутрь. Хотя на определённом этапе это может быть полезно, чтобы понять, что хотел сказать автор библиотеки.
    Ответ написан
    1 комментарий
  • Как работать в symfony env в продакшне?

    glaphire
    @glaphire
    PHP developer
    В самой документации написано, что нет преимущества проброса env через сервер по сравнению с .env файликом на проде

    Most Symfony applications read their configuration from environment variables. While developing locally, you'll usually store these in .env and .env.local (for local overrides). On production, you have two options:

    Create "real" environment variables. How you set environment variables, depends on your setup: they can be set at the command line, in your Nginx configuration, or via other methods provided by your hosting service.
    Or, create a .env.local file just like your local development (see note below)
    There is no significant advantage to either of the two options: use whatever is most natural in your hosting environment.

    https://symfony.com/doc/current/deployment.html#b-...
    Ответ написан
  • Могут локальный комп взломать если публиковать в гит пароли от локальной базы и прочее?

    Ага, все хакеры мира сразу кинутся ломать твой комп.
    Ответ написан
    Комментировать
  • Как связать Java (Spring Boot) и Vue Js?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Настроить Nginx как единую точку входа.
    Ответ написан
    4 комментария
  • Как подгрузить разные формы в Blade Laravel?

    neuotq
    @neuotq
    Прокрастинация
    Blade в любом случае это рендринг на стороне сервера.
    Любые динамические действия это JavaScript(за редким исключением).
    Значит далее вы уже решаете каким путём идёте.
    Можно идти популярным ныне путём создания компонентов и постройки интерфейса на реактивных фронтэнед фреймворках. При это не значит что нужно переписывать весь код, весь сайт делать SPA и тд. И react и vue, да и angular (и тд) вполне можно использовать и в более меньших масштабах, для небольших интерактивных компонентов. Laravel умеет со многими дружить практически из коробоки, в сети полно инструкций на этот счёт. И этот путь я вам советую.
    Второй вариант, более классический. Это решение на jquery (хотя можно и чистым js). Здесь вы можете делать например Ajax запросы к серверу, и там генерировать, в том же blade, часть select, а потом динамически подгружать.
    Кстати в Blade сейчас тоже появились компоненты (Laravel 7) советую почитать, возможно будет полезно.
    PS кстати на счёт первого подхода, вместе с Laravel 7, недавно вышел Livewire , специально разработанный под Laravel фулстек фреймворк для создание динамических сайтов, советую глянуть. Позволит быстро строить разные штуки, и порог входа ниже и проще React и Vue. В нём больше ориентация на AlpineJS. И в любом случае, после изучения, будет легче потом и Vue и React и изучать если что.
    Ответ написан
    Комментировать
  • Почему так много удаленки на Bitrix?

    Adamos
    @Adamos
    "Почему так много работы аниматором на утренниках и так мало ролей Гамлета? Я, идя в театральный, по-другому себе это представлял..."
    Вот примерно поэтому.

    Профессиональные клоуны вам, конечно, расскажут, что утренники - это стабильный доход, а Станиславского оставьте дома. Им важно уговорить себя, что деньги не пахнут и рвотные позывы от результатов собственной работы - это нормально... не будем им мешать.
    Ответ написан
    1 комментарий
  • Как добавить свою валидацию при регистрации в Laravel?

    @ynblpb_spb
    дятел php
    $validator = Validator::make($data, [
          'name' => 'required|string|max:255',
          'email' => 'required|string|email|max:255|unique:users',
          'password' => 'required|string|min:6|confirmed',
       ]);
    $validator->after(function ($validator) {
       // проводим проверку на соответствие с БД
       if (....) {
          $validator->errors()->add('key', 'Неправильный ключ');
       }
    }
    Ответ написан
    2 комментария
  • С какой книги начать изучение проектирования по?

    @nexus478
    Проектирование приложений можно условно разбить на 2 уровня:
    1. Уровень проекта.
    Сюда входит понимание того, как приложение должно выглядеть в целом и из каких компонентов состоять, а также по каким принципам оно собирается взаимодействовать с внешним миром (если есть такая необходимость). Компоненты зависят от выбранной архитектуры - в случае монолитного приложения вам требуется понимать, как разбивать его на слои и в чем ответственность каждого слоя; в случае микросервисов вы также должны понимать, как очерчивать зоны ответственности и определять протоколы взаимодействия между ними.
    Книги о том, как проектировать приложения на общем уровне:
    1. Роберт Мартин. Чистая архитектура - очень короткая и простая книга, рекомендую начать с неё.
    2. Эрик Эванс. Предметно-ориентированное проектирование (принципы + стратегические шаблоны).
    3. Мартин Фаулер. Архитектура корпоративных приложений (часть 1).

    Уровень 2. Уровень модулей (классов).
    Когда вы спроектировали компоненты, из которых состоит ваше приложение, теперь надо спроектировать их внутренности - то есть разбить на более мелкие и конкретные модули. Тут вам пригодятся принципы объектно-ориентированное проектирования, принципы SOLID, паттерны.
    Книги по уровню 2.
    1. Банда четырех. Приёмы объектно-ориентированного проектирования. Паттерны проектирования. Тут важно не только сами паттерны, но принципы, по которым они строятся. Концентрируйтесь на принципах.
    2. Роберт Мартин. Принципы, паттерны и методики гибкой разработки на языке C#. Тут более подробно рассматривается объектно-ориентированный дизайн и принципы SOLID в сравнении с его "Чистой архитектурой".
    3. Эрик Эванс. Предметно-ориентированное проектирование (тактические шаблоны).
    4. Мартин Фаулер. Архитектура корпоративных приложений (часть 2).
    5. Стивен Макконел. Совершенный код (сконцентрируйтесь на понимании Главного Технического Императива!).

    Этих книг вам будет достаточно, чтобы ориентироваться в проектировании приложений, всё остальное решает практика. Рисуйте схемы, концентрируйтесь на ответственности компонентов и их интерфейсах, учитесь отбрасывать ненужные детали реализации.
    Ответ написан
    Комментировать
  • С какой книги начать изучение проектирования по?

    qonand
    @qonand
    Software Engineer
    Не стоит путать паттерны и проектирование. Да паттерны используются в проектировании систем, но они сами по себе не есть проектирование. Очень часто люди прочитают пару книжек по паттернам и начинают их использовать где нужно и где не нужно и считают что все их система имеет хорошую архитектуру - но в результате от такой "архитектура" возникает больше проблем чем пользы. Поэтому мой Вам совет отложите паттерны на потом: почитайте что-нибудь именно о проектировании, и его принципах. Хотя бы того же Роберта Мартина. Бесспорно обе книги стоит прочитать, но как по мне их нужно читать имея уже определенные навыки
    Ответ написан
    2 комментария
  • С какой книги начать изучение проектирования по?

    Привет! Обе книги из топика отличные и хорошо переведены. Что касается паттернов - их проблема в том, что многие примеры высосаны из пальца (а иначе никак). Изучая паттерны, у новичков возникает обычно две проблемы: 1) о, я понял как это работает, надо запихнуть этот паттерн тут, здесь, там 2) я не понимаю где вообще это можно использовать. Обе проблемы возникают из-за нехватки реального опыта. Лично я эту книгу изучал раза три с промежутками в год. И с каждым разом вышеописанных проблем становилось меньше и меньше. По поводу Крэга Лармана: я считаю эту книгу надо читать если Вы решили шагнуть на следующий уровень, уже имея как минимум 3+ года опыта. На Вашем месте я бы в фоне конечно изучал всякие абстрактные приёмы, паттерны, но основной упор сделал бы на изучение лучших практик именно в вашей области разработки, ведь именно они в будущем и будут рассеивать непонимание тех же самых паттернов.
    Ответ написан
    Комментировать
  • Как отобразить иерархию должностей в виде дерева для Swing JTree?

    @MaxLich
    java developer
    Можете глянуть мою прогу на гитхабе: ссылка
    Собственно код с функцией добавления узлов в модель:
    код
    public class MainModel extends Model {
        private String extensionOfFiles;
        private String textToFind;
        private boolean matchCase;
    
        @Override
        public void loadFileTree(Path sourceDir, String extensionFiles, String textToFind, boolean matсhCase) {
    
            this.extensionOfFiles = extensionFiles;
            this.textToFind = textToFind;
            this.matchCase = matсhCase;
    
            DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(sourceDir,true);
    
            addChildrenNodes(rootNode,sourceDir);
            deleteAllEmptyBranches(rootNode);
    
            TreeModel treeModel = new DefaultTreeModel(rootNode,true);
    
            setChanged();
            notifyObservers(treeModel);
        }
    
        //ищет и добавляет "детей" узлам дерева
        private void addChildrenNodes(DefaultMutableTreeNode rootNode, Path sourceDir) {
            try (DirectoryStream<Path> stream = Files.newDirectoryStream(sourceDir)) {
                for (Path path: stream) {
                    if (Files.isRegularFile(path)) {
                        String fileName = path.getFileName().toString().toLowerCase(); //имя файла в нижнем регистре
                        if (fileName.endsWith("."+extensionOfFiles) && isFileContainsText(path)) //если файл имеет нужное расширение и содержит искомый текст
                            rootNode.add(new DefaultMutableTreeNode(new PathContainer(path),false)); //то добавляет его в дерево
                    } else if (Files.isDirectory(path)) {
                        File[] listFiles = path.toFile().listFiles();
                        if (listFiles == null || listFiles.length == 0) continue;
                        DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(new PathContainer(path), true);
                        rootNode.add(newChild); //добавляем папку в дерево
                        addChildrenNodes(newChild,path); //рекурсивный вызов метода с данной папкой и данным узлом в качестве параметров
                    }
                }
            } catch (IOException | DirectoryIteratorException x) {
                System.err.println(x);
            }
        }
    
        //метод проверяет, содержит ли файл  искомый текст
        private boolean isFileContainsText(Path file) throws IOException {
            try {
                List<String> fileContent = Files.readAllLines(file);
                if (matchCase) {
                    for (String str : fileContent) {
                        if (str.contains(textToFind)) {
                            return true;
                        }
                    }
                } else {
                    for (String str : fileContent) {
                        if (str.toLowerCase().contains(textToFind.toLowerCase())) {
                            return true;
                        }
                    }
                }
            } catch (MalformedInputException e) {}
    
            return false;
        }
    
        //метод очищает дерево от пустых веток (содержащих одни пустые каталоги)
        private void deleteAllEmptyBranches(DefaultMutableTreeNode currNode) {
            if (currNode == null) return;
            Enumeration<DefaultMutableTreeNode> children = currNode.children();
            if (children == null || !children.hasMoreElements()) return;
    
            Queue<DefaultMutableTreeNode> queue = new LinkedList<>();
    
            while (children.hasMoreElements()) {
                DefaultMutableTreeNode child = children.nextElement();
                if (child.getAllowsChildren())    //если это каталог, то добавляем его в очередь
                    queue.add(child);
            }
    
            while (!queue.isEmpty()) {
                DefaultMutableTreeNode node = queue.poll();
                if (node == null)  continue;
                if (node.getAllowsChildren()) {
                    if (node.isLeaf()) {
                        DefaultMutableTreeNode parent = (DefaultMutableTreeNode) node.getParent();
                        node.removeFromParent();
                        if (queue.contains(parent) || parent == null) continue; // если родитель этого узла уже есть в очереди
                                                                                // или он равен нулл, то ничего не делаем
                        queue.offer(parent); //иначе добавляем его в очередь
                    } else {
                        children = node.children();
                        while (children.hasMoreElements()) {
                            DefaultMutableTreeNode child = children.nextElement();
                            if (child.getAllowsChildren() && !queue.contains(child))    // если это каталог и его ещё нет в очереди, то...
                                queue.add(child);                         // добавляем его в очередь
                        }
                    }
                }
            }
    
    
        }
    }
    Ответ написан
    Комментировать
  • Как сверстать данный элемент?

    @senselessV7
    .dots {
    width: Npx;
    height: Npx;
    border-radius: 50%;
    border: Xpx solid color;
    }
    Ответ написан
    Комментировать
  • Как сверстать данный элемент?

    kreotech
    @kreotech
    Абстрактно-ориентированный программист
    Можно просто вставить картинку, можно сделать и так
    Ответ написан
    Комментировать
  • Как добавить SVG иконки на страницу?

    Subb98
    @Subb98
    Backend разработчик
    Точно также, как обычное изображение.
    Пример: https://github.com/Subb98/Hello-webpack/blob/maste...

    П.с.: насчёт редактирования, это как xml файл.
    Ответ написан
    Комментировать
  • Как добавить SVG иконки на страницу?

    aloky
    @aloky
    js
    Ответ написан
    Комментировать
  • Как анимировать исчезновение элементов с помощью css?

    axaxa_man
    @axaxa_man
    web developer
    .card-title{
    	height: 30px;
      transition: height 0.5s linear;
    }
    .card-body:hover .card-title{
    	height: 0px;
      overflow: hidden;
    }
    Ответ написан
    1 комментарий