• Как из ларавел выкидывать логи например на почту, телеграмм?

    в config/logging.php
    'channels' => [
            'stack' => [
                'driver' => 'stack',
                'channels' => ['single', 'telegram'],
                'ignore_exceptions' => false,
            ],
    
            'telegram' => [
                'driver' => 'monolog',
                'handler' => Monolog\Handler\TelegramBotHandler::class,
                'with' => [
                    'apiKey' => env('TELEGRAM_BOT_TOKEN'),
                    'channel' => env('TELEGRAM_BOT_CHAT_ID'),
                ],
            ],
      ],
    Ответ написан
    Комментировать
  • Что за функция compact в Laravel?

    @assets
    Back-end developer
    Это функция php
    Особой разницы нету, Но выглядит по компактнее.

    Разница в том что вы пишите.
    ['posts'=>$posts]

    Когда таких не сколько ,все это выглядит громоздко.

    Можно просто
    compact("posts")

    https://www.php.net/manual/ru/function.compact.php
    Ответ написан
    1 комментарий
  • Какие книги посоветуете для будущего Team Lead'a?

    @Kirill-Gorelov
    С ума с IT
    Прикреплю скриншотами, лень печатать(((
    И еще посоветую книгу Дж. Рейнвотер: Как пасти котов
    Может что-то немного устарело, но в целом отличный материал.
    spoiler

    5cff50592e347804067839.png
    5cff506086eb5906138483.png
    5cff506887411407637707.png
    5cff506cec673723489011.png
    5cff5071c2002654406289.png
    Ответ написан
    Комментировать
  • Как использовать faker в laravel?

    @Barney_Gubmle
    Можно вверху подключить use Faker\Factory as Faker;
    а в самом коде уже
    $faker = Faker::create();
    $email = $faker->freeEmail;
    Ответ написан
    Комментировать
  • Хранение номеров телефонов?

    Noospheratu
    @Noospheratu
    ИБ-аудитор, консультант
    Можно использовать следующую схему:
    1) хранить в открытом виде до подтверждения через SMS.
    2) После подтверждения задача борьбы с фейковыми аккаунтами выполнена и открытый номер телефона уже не нужен. Теперь вычисляете хэш стойкой на текущий момент функцией и храните только её.
    3) А если нужно будет восстановить пароль от аккаунта, прислав его на SMS, то для это предлагаете ввести номер телефона, вычисляете его хэш, сравниваете с хранимым и, если совпадает — отсылаете информацию для восстановления пароля в SMS на введённый номер.
    4) По завершении восстановления пароля — введённый открытый номер уже не нужен и его можно удалить (хэш продолжаем хранить).
    Ответ написан
    Комментировать
  • Чем отличаются JSON от JSONB?

    @curator
    JSONB — двоичная разновидность формата JSON, у которой пробелы удаляются, сортировка объектов не сохраняется, вместо этого они хранятся наиболее оптимальным образом, и сохраняется только последнее значение для ключей-дубликатов. JSONB обычно является предпочтительным форматом, поскольку требует меньше места для объектов, может быть проиндексирован и обрабатывается быстрее, так как не требует повторного синтаксического анализа.

    Источник: https://habrahabr.ru/post/282764/
    Ответ написан
    1 комментарий
  • Не будет ли утечки памяти?

    @Coder321
    Если уж сильно боитесь, то создаейте один екземпляр и в методы передавайте токен.
    На крайняк может занулить экземпляр когда метод отработает.
    Но как сказал Vit утечек не будет, так как когда метод отработает свое екземпляр апи будет удален зборщиком.
    Ответ написан
    2 комментария
  • Не будет ли утечки памяти?

    fornit1917
    @fornit1917
    Во-первых, утечек памяти не будет, обо всём позаболится сборщик мусора.
    Но, во-вторых, у вас в целом код очень странный.
    Вы получаете один запрос на /forward_to_api, внутри делаете два параллельных запроса. Как только один из них отрабатывает - вы шлёте клиенту ответ и закрываете с ним соединение. Вы понимаете, что когда отработает второй запрос, ему уже некуда будет отправить свой status 204? В чём смысл такого кода?
    Ответ написан
    2 комментария
  • Как работать с push уведомлениями laravel?

    ArtamonovDenis
    @ArtamonovDenis
    Full-stack developer
    использовать библиотеки необязательно
    отправка осуществляется обычным post-ом

    // Server URL Google Firebase Cloud Messages
                    $SERVER_URL = '';
    
                    // Server key FCM/GCM
                    $API_ACCESS_KEY = '';
                    
                    // Массив токенов
                    $arTokens = [];
    
    
                    // Отправляем
                    
                    $headers = [
                        'Authorization: key=' . $API_ACCESS_KEY,
                        'Content-Type: application/json'
                    ];                
                    
                    $ch = curl_init();
    
                    curl_setopt( $ch,CURLOPT_URL, $SERVER_URL);
                    curl_setopt( $ch,CURLOPT_POST, true );
                    curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
                    curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
                    curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
    
                    $fields = [
                        'registration_ids' => $arTokens,
                        'data' => [
                            'message' => $message
                        ]
                    ];
    
                    curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
    
                    $result = curl_exec($ch);
    
                    curl_close( $ch );
    Ответ написан
    Комментировать
  • Как настроить автоматическое копирование бэкапов на сторонний FTP?

    Inlore
    @Inlore
    Как раз недавно искал подобное решение и остановился на backupninja
    Умеет по расписанию бэкапить БД и файлы и отправлять их на сторонний сервер разными способами, включая rsync, rdiff, duplicity

    В /etc/backup.d/ создаёте конфиги вида 10-db.mysql , 50-ftp.dup
    Числа в начале файла описывают очерёдность выполнения в случае одновременного запуска (сначала сдампить базу, а затем заливать из папки с архивом на ftp).
    Расширение файла указывает на тип задачи (.mysql - бэкап mysql, .dup - используем duplicity)

    Время выполнение бэкапов по-умолчанию задаётся в /etc/backupninja.conf
    ...
    when = everyday at 01:00
    ...

    Его можно переопределить для каждого отдельного бэкапа в начале его конфига
    when = sundays at 02:00
    when = 30th at 22
    when = 30 at 22:00
    when = everyday at 01            <-- the default
    when = Tuesday at 05:00
    when = hourly

    Подробнее о конфигах backupninja здесь

    Сам duplicity, которым я, например, делаю бэкапы, поддерживает кучу протоколов, в том числе и передачу по ftp. Также поддерживает ротацию бэкапов

    Конфиг для duplicity выглядит примерно так:
    ## Переопределяем время выполнения
    when = sundays at 02:00
    ## Параметры, передаваемые напрямую duplicity при запуске бэкапа
    ## --no-encryption позволяет отключить шифрование архивов с бэкапом и получить обычный .tar.gz
    #options = --no-encryption
    
    testconnect = no
    tmpdir = /tmp
    
    [source]
    include = /var/backups/mysql
    include = /home/user/projects/site1
    exclude = /home/user/projects/.git
    
    [gpg]
    ## Ключ для симметричного шифрования. Duplicity шифрует бэкапы с помощью gpg. Должен быть указан, даже если стоит --no-encryption, хоть и не будет использоваться
    password = 123
    
    [dest]
    ## perform incremental backups
    incremental = yes
    
    ## days of incremental backups before doing full backup again
    increments = 7
    
    ## how many days of data to keep
    keep = 14
    
    ## for how many full backups do we keep their later increments
    keepincroffulls = all
    
    desturl = ftp://backup_user@your_backup_server/
    ftp_password = backup_user_password


    В бэкапах получаются на первый взгляд не очень понятные файлы, типа
    duplicity-full-signatures.20130510T160711Z.sigtar.gpg
    duplicity-full.20130510T160711Z.manifest.gpg
    duplicity-full.20130510T160711Z.vol1.difftar.gpg

    Тут можно чуть поподробнее прочитать про них

    С бэкапами лучше работать самой утилитой duplicity, но можно и вручную их вытащить. Вручную минус в том, что инкрементальные бэкапы придётся вручную накатывать на полные, когда duplicity сделает это автоматом при указании даты восстановления.
    duplicity collection-status src выдаст что-то типа этого
    Total number of contained volumes: 3
    Type of backup set:                        Time:                        Num volumes:
    Full                            Mon Apr 17 00:24:46 2017                 1
    Incremental                     Mon Apr 17 01:00:03 2017                 1
    Incremental                     Mon Apr 17 09:53:38 2017                 1

    после чего можно прочитать содержимое архива на определённую дату
    duplicity list-current-files --time 2017-04-17T05:00:00 src (покажет бэкап Mon Apr 17 01:00:03 2017, т.е. ближайший ДО указанного времени)
    и восстановить
    duplicity restore --time 2017-04-17T05:00:00 src dst

    src - это то, где ваши бэкапы хранятся.
    Это может быть и локальная директория file:///var/backups//
    И ftp ftp://user:password@backup_server//var/backups

    Сами файлы хранятся в vol#.difftar.[tar.gz|gpg], если надо вручную вытащить
    Если шифровали, то сначала расшифровать .gpg, чтобы получить .tar.gz
    Ответ написан
    2 комментария
  • Как сайт может узнать id пользователя в соц. сети?

    @djerom
    Обновил, может кому пригодится
    <html>
    <head>
    	<script src="//vk.com/js/api/openapi.js" type="text/javascript"></script>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <script>
    window.onload = (function() {
        VK.init({
              apiId: 4983778 //ВАШ_IP_ID
            });
        function authInfo(response) 
        {
          if (response.session)
          {
            document.getElementById('id').innerHTML = "Your ID: " + response.session.mid;
          } 
          else 
          {
            document.getElementById('id').innerHTML = 'Вы не авторизованы вконтакте.';
          }
        }
        VK.Auth.getLoginStatus(authInfo);
    });
    </script>
    <div id='id'></div>
    
    </body>
    </html>
    Ответ написан
    5 комментариев
  • Для чего нужны магические методы get и set в PHP?

    class foo
    {
        protected $bar = 'qwerty';
        
        public function __get($name)
        {
            if ('bar' === $name) return $this->bar;
            return 'not found';
        }
    
        public function __set($property, $value)
        {
            if ('bar' === $property) $this->bar = $value;
        }
    }
    
    $f = new foo();
    echo $f->bar; // qwerty
    echo $f->asd; // not found
    $f->bar = 'zxc';
    echo $f->bar; // zxc
    Ответ написан
    Комментировать
  • Много ли людей пользуется виджетами авторизации на сайтах?

    Немало. Многим тупо лень лишний раз забивать все данные в форму регистрации, а тут нажал одну кнопочку - и авторизовался. У меня около 70% авторизуются через соц.сети.
    Ответ написан
    Комментировать
  • Nginx redirect from http to https?

    @metajiji
    Согласно официальной документации рекомендуют использовать такую конструкцию:
    server {
            listen 80;
            server_name example.com;
            return 301 https://$server_name$request_uri;  # enforce https
    #        rewrite ^(.*) https://www.example.com$uri permanent;
    }
    Ответ написан
    6 комментариев
  • Как запустить сервер после вырубания эл-ва в ДЦ?

    RicoX
    @RicoX
    Ушел на http://ru.stackoverflow.com/
    Такая ошибка бывает, если /boot раздел или корень не примаунтились корректно, запускаться LiveCD делать fsck -y для всех разделов - должно помочь.
    Ответ написан
    4 комментария
  • Как распарсить уведомления на почту?

    Именно для mail.ru стоит воспользоваться их сервисом Postmaster.mail.ru для трекинга рассылок с вашего домена. Там можно подтвердить влаедние доменом, с которого идут рассылки, и настроить FBL (feedback loop).

    А с GMail мы парсили отбивки php скриптом, который забирал почту только с определёнными тегами, которые присваивались фильтрами GMail, обработанные письма скрипт стирал.
    Ответ написан
    3 комментария
  • HTTPS для всего сайта или только для входа на сайт?

    @edogs
    Если на сайте можно вставлять картинки хотлинком с чужих ресурсов или йотуб тот же, если крутятся чужие баннеры, находится какой-нибудь гугл аналитикс и так далее, то для https место только на странице логина.
    Во-первых, за безопасность контента Вы уже тогда не можете ручаться.
    Во-вторых, пользователи начинают параноить от предупреждений браузера.
    Ответ написан
    Комментировать
  • Как объяснить девочке-обладательнице iMac, как передать мне файлы?

    IIIa66uMEM6eP
    @IIIa66uMEM6eP
    Может быть если пользовалась торрентами, попросить создать раздачу.
    Ответ написан
    Комментировать