• Как не отправлять Notification в телеграм, если у пользователя не установлен chat_id?

    0example
    @0example Автор вопроса
    Возможно кому-нибудь, когда-нибудь пригодится. Решил проблему так:

    В созданном Notification, в методе, в котором описывается способы доставки письма, прописал следующее:

    /**
         * Get the notification's delivery channels.
         *
         * @param  mixed  $notifiable
         * @return array
         */
        public function via($notifiable)
        {
            return $notifiable->notify_settings->telegram_enabled ? ['database',TelegramChannel::class] : ['database'];
        }
    Ответ написан
    Комментировать
  • Книги по построению БД?

    @vitvakatu
    Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
    Ответ написан
    Комментировать
  • Как из одной ветки перенести определённые файлы в другую ветку?

    @aol-nnov
    git checkout otherBranch -- path/to/file

    но это только содержимое файла с края otherBranch, никакой истории изменений.
    Ответ написан
    Комментировать
  • Type definitions в TypeScript, как это работает?

    Type definition всего лишь добавляет типизацию для существующей реализации на JavaScript.
    Ответ написан
    Комментировать
  • Type definitions в TypeScript, как это работает?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    На момент написания вопроса не смог найти полной информации про данную тему , которая бы ответила на данный вопрос.

    https://www.typescriptlang.org/docs/handbook/decla...
    Ответ написан
    Комментировать
  • На чем лучше и быстрее написать парсер (PHP)?

    boonya
    @boonya
    Backend developer (Python/PHP)
    Первый вопрос, парсер чего?
    И если я правильно понял задачу этого парсера, то зачем вы изобретаете велосипеды?

    * cURL для получения контента - php.net/manual/ru/book.curl.php
    Или вот еще нашел объектно ориентированную обертку https://github.com/php-curl-class/php-curl-class
    * И, собственно, SimpleXML для разбора документа.

    Оба компонента "из коробки" поставляются с PHP. Унифицированные, задокументированные и всем известные интерфейсы.

    Или вот еще, компонент Symfony2 symfony.com/doc/current/components/dom_crawler.html
    Ответ написан
    Комментировать
  • С чего начинать проектировать приложение?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Предположим, что с будущей функциональностью Вы определились. Тогда Вы точно знаете, кто или что будет поставлять данные, и кто/что будет их потреблять.

    Теперь выясните, кто будет обращаться к вашей системе, чтобы передать или забрать данные, а к чему будет обращаться Ваша программа. Те системы или пользователи, которые обращаются к программе сами, нарисуйте схематически на листе бумаги вверху. Те, к которым будет обращаться программа (включая БД), - снизу.

    Теперь нарисуйте под каждым нарисованным сверху субъектом прямоугольник с названием UI или API - это интерфейсы, к которым будет обращаться пользователь или внешняя управляющая система. Иногда UI тоже может обращаться к API. Объедините все прямоугольники с UI одним контуром и обзовите слоем UI. Объедините все прямоугольники с API и обзовите слоем сервисов.

    Для систем, нарисованных снизу, укажите компоненты, которые будут отвечать за доступ к этим системам. Объедините все эти компоненты одним контуром и обзовите слоем доступа к данным.

    Между слоем сервисов и слоем доступа к данным нарисуйте большой контур и назовите его слоем бизнес-логики. В маленьких прямоугольниках внутри этого контура перечислите основные бизнес-задачи. Один компонент Вашей системы будет решать одну бизнес-задачу.

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

    Получите логическую архитектуру. Разбросайте слои по серверам - получите физическую архитектуру.

    А дальше - детально прорабатывайте каждый маленький квадратик. Всё.
    Ответ написан
    2 комментария
  • Как улучшить процесс разработки/тестирования/деплоя?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    "Хочется поменять процесс и на базе TeamCity добавить авто-тесты и некоторую автоматизацию чтобы было так (feature-ветки думал не использовать, так как у нас много небольших правок, а ветки добавляют оверхед):"

    В том-то и дело, что авто-тесты без фича веток не очень хорошо будут работать.

    Подробнее:
    Автотесты обычно должны триггериться на коммит. Но это также означает, что разработчик не тестирует у себя локально приложение, а просто коммитит и ждет ответа от автотеста.
    А если он будет коммитить в мастер - то один разработчик может сломать билд для всех.

    Если использовать отдельную ветку для автотеста, опять же в нее может закоммитить несколько разработчиков и будет неясно кто кому что сломал.
    Поэтому и используется фичабренчи - каждый разработчик создал себе фичабренч типа feature/lalala, и автотест реагирует на коммит в любой бренч по маске feature/*

    Если тест успешен - тогда можно мержить в мастер - обычно для этого используется какой-то промежуточный инструмент перед гитом - gitlab, gerrit, bitbucket, где удобно настроить создание pull request-ов так, чтобы они не позволяли мержить, пока нет 1 ревью и 1 успешного билда.
    Ответ написан
    2 комментария
  • Как сделать генератор рифм?

    hOtRush
    @hOtRush
    https://www.tensorflow.org/ дальше сам разберешься, там все просто
    Ответ написан
    Комментировать
  • Команды из ~/.bashrc не срабатывают при логине?

    alekciy
    @alekciy
    Вёбных дел мастер
    Это фича и о ней описано в мане linux.die.net/man/1/bash

    Смысл в том, что ~/.bash_profile читается при login, а ~/.bashrc при интерактивном старте оболочки. Проверить очень просто. Пишем в ~/.bash_profile строку echo 'bash_profile', а в ~/.bashrc echo 'bashrc'. Теперь логинимся и запускаем еще одну копить оболочки (т.е. запуск bash без login-а):
    bash_profile
    [user@server ~]$ bash
    bashrc
    [user@server ~]$ exit
    [user@server ~]$
    Ответ написан
    Комментировать
  • Команды из ~/.bashrc не срабатывают при логине?

    Вообще, обычно принято ставить PATH=$PATH:<ваши_пути>.
    И, есть небольшое мнение, что такие вещи лучше хранить в отдельном файле, аля ~/.profile, и считывать его, а не напрямую прописывать в bash_*. Зачем — чтобы в других шеллах (ну вдруг они вам понадобятся) считывать ~/.profile, а не копипастить env-переменные в их .rc-фалйы :)
    Ответ написан
    Комментировать
  • Как проверить какой конфиг использует запущеный nginx процесс?

    @s1dney
    # ps ax | grep nginx
     4755 ?        Ss     0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
    Ответ написан
    Комментировать
  • Как использовать smtp.yandex.ru в laravel?

    Та же проблема была. Привожу полный конфиг в .env файле для почты:
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.yandex.ru
    MAIL_PORT=587
    MAIL_USERNAME=noreply@vacanc.ru
    MAIL_PASSWORD=ПАРОЛЬ
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=noreply@vacanc.ru
    MAIL_FROM_NAME=Vacanc

    Затем в консоли команду
    php artisan config:cache
    И на всякий случай перезагрузил сервер... Хотя скорее всего не надо было.
    Ответ написан
    Комментировать
  • Какие правильные права на файлы и директории web-проекта?

    @kfuntov
    Самой правильной(броневой) практикой вроде как считается - создание двух пользователей для проекта: для деплоя и для работы сервера. Помещение их в одну группу.
    Выставление прав на большинство (по возможности все) фалы проекта - 644.
    Выставление прав на большинство (вот тут скорее всего не все) директории проекта - 755.
    Для тех фалов/директорий, куда должен мочь писать сервер (логи, кеш и т.п.) - 664 и 775 соответственно.
    Owner у всего, что не создал сервер: пользователь_для_деплоя:общая_группа .
    Ответ написан
    Комментировать
  • От какого пользователя должен работать php-fpm в связке с nginx?

    romy4
    @romy4
    Exception handler
    от пользователя, которому принадлежит сайт. не php-fpm и не nginx. Если сайт находится в /var/www/username/site.com то php-fpm должен быть настроен на /var/www/username с правами username, сервер nginx с правами www-data
    это нужно чтобы запереть пользователя только в его директории и не иметь возможность лезть в чужие папки.
    /var/www/username устанавливается с пользователем/группой username:www-data и правами 0760. так пхп от пользователя не может ходить в чужие папки, а www-data не управляем кодом пользователя и не может причинить вред, но ходить должен.
    Ответ написан
    21 комментарий