• Как делать максимально безотказные бэкапы корня сайта и mysql в динамике?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Делают read-only реплику и бэкапят её обычным способом.
    Ответ написан
    Комментировать
  • Актуален ли Yii2 Фреймворк в 2020?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    Тут много нюансов и ответить однозначно сложно. Как уже написал Иван Шумов фреймворк - это инструмент. Каждый инструмент подбирается под конкретную задачу:

    • СMS - система управления сайтом (Wordpress, Joomla и т.д.). Создан для простого и удобного управления сайтом (контентом). Как правило, доступен для работы простому пользователю, без знания языков программирования. Подойдёт для: простых сайтов, блогов, там где не требуется нагрузка и безопасность.
    • RAD framework (Yii2) - фреймворк для быстрой разработки. RAD Фреймворк имеет, монолитную и связанную архитектуру. Он является антипаттенрном и позволяет вам делать всё что угодно, лишь бы вы быстро собрали свой проект. (Используется паттерн Table First - спроектировали базу и по схеме сгенерировали модели данных). При этом Вам никто не говорит, что он не может использоваться для серьёзных проектов. Например, DNS..
    • Компонентные фреймворки (Symfony, Laravel). Это фреймворки, которые разделены на независимые компоненты, которые вы можете подключать к своему проекту при необходимости. В самом фреймворке заложен только необходимый минимум, а всё остальное вынесено в компоненты. Эти компоненты могут использоваться (или не использоваться). Могут использоваться для другого фреймворка (сам Yii2 использует компоненты симфони). Doctirine, которая позволяет вам забыть о базе данных и сосредоточиться на коде. Фреймворк задаёт вам некий стиль, некую структуру и типизацию и требует более хорошего и обдуманного кодинга. Например, при использовании twig вы не сможете сделать запрос в view. Чего нельзя сказать про Yii. Вы там можете построить хорошую бизнес логику, что и встречается...
    • Микрофреймворки (Slim). В таких фреймворках заложен самый минимум, а всё остальное программист должен искать или писать самостоятельно, выстраивать свою архитектуру приложения. Он легкий и простой. Кто-то и Symfony относит к микрофреймворкам. Тут меня многие могут упрекнуть. Подойдет для очень простых, гибких, легких приложений, например, микросервисов. Фреймворк не задает вам никаких правил и архитектуры. Вы должны сами продумать все детали приложения. Где-то используете twig, где то Data Mapper, где-то ActiveRecord. Для работы с таким фреймворком требуется много знаний и опыта. Так как вам всё придется делать самому. Здесь за вас никто не подумал.

    Что же для чего выбрать?
    Решать вам исходя из конкретной задачи. Здесь нет понятия хуже/лучше. Чтобы что-то выбрать нужно на каждом попробовать собрать пару проектов. Тогда и будет понимание когда и что выбирать. Это как автомобиль. Какой лучше BMW или LADA? Оба автомобиля, но каждый для своей аудитории, по своим потребностям, для своих задач.

    Почему другие говорят что Yii2 плохой?
    • 2 версия морально устарела. Это не значит что ВЕСЬ фреймворк плохой, просто им давно никто не занимался. Сейчас идет разработка Yii3, которая многократно лучше 2 версии, но 3 версия доступна только в демо. Поэтому, если хочется писать НОВЫЙ проект на Yii, то я бы не стал выбирать 2 версию. Можете подождать Yii3, но никто не знает когда будет релиз. Можете начать писать используя Yii3-demo, но там может всё поменяться к моменту релиза.
    • Он монолитный. Если вам требуется сделать проект используя много приложений с разными компонентами, то пойдёте по пути Advanced шаблона, где каждое приложение будет папкой: backend, forntend, console. Однако при большой нагрузке вам потребуется разносить приложения. Тогда ваш core будет дублироваться во всех приложениях. Там будет то, что вам даже не требуется. Потому что Yii2 монолит.
    • В Yii2 используется Actvie Record. AR - это не плохо. Его многие любят, многие ценят и хвалят. Но для больших проектов он предоставляет неудобства. Например, при изменении поля в базе данных - приходится менять все свойства и надеяться что везде поменяли, так как в GrigView используется магия, при получение значений из модели 'value' => 'profile.last_name'. Так же нельзя сделать свойства модели (сущности), приватными. Из-за чего состояние модели можно изменить где угодно и вы никак не проконтролируете это.
    • Много абстракции, которую не распознает редактор. Например, вы можете вызвать в контроллере Yii::$app->user->id. Вам приходится делать докблок, что User это common/auth/Identity, а не yii/web/User


    Ну и так далее. С каждым из этих пунктов можно бороться, при правильном подходе. Как уже сказали в плохих руках любой код может пахнуть. Но это основное. Надеюсь, меня не раскритикуют другие за спорные моменты. В таких вопросах всегда есть разногласия) Думаю, что смог донести в сжатом виде отличия.
    Ответ написан
    4 комментария
  • Почему SSH продолжает слушать на 22 порту, хотя я его поменял?

    @pfg21
    ex-турист
    файл конфига изменен, но чтобы работающий в памяти sshd его перечитал необходимо ему намекнуть.
    sudo systemctl reload ssh.service
    потом глянуть статус
    sudo systemctl status ssh.service
    в нем должно быть.
    фев 22 22:43:11 srv16 systemd[1]: Reloading OpenBSD Secure Shell server...
    фев 22 22:43:11 srv16 systemd[1]: Reloaded OpenBSD Secure Shell server.
    фев 22 22:43:11 srv16 sshd[462]: Server listening on 0.0.0.0 port 4453.
    фев 22 22:43:11 srv16 sshd[462]: Server listening on :: port 4453.

    чисто от себя: менять номер порта ssh для скрытия доступа бессмысленно. посоветую использовать хороший длинный ключ
    Ответ написан
    8 комментариев
  • Timetracker для PHPStorm по веткам?

    Wakatime
    Автоматически считает время кодинга без твоего участия
    Есть статистика времени по проектам, по веткам и по каждому файлу. Вообще там много всяких дашбордов и интеграций
    Ответ написан
    Комментировать
  • Как реализовать бэкап сайта/бд посредством PHP?

    Stalker_RED
    @Stalker_RED
    Возможно, хотя непонятно зачем это делать на PHP.

    Достаточно одной команды архиватору - вот эту папку заархивируй, добавь в название дату, и помести вон в ту папку. Или отправь по почте, например.
    Ну и в планировщик задач это добавить.

    А вообще для бекапа есть специаллизированный софт, который не только позволит бекапить, но и разворачивать из бекапа обратно с минимальными усилиями.

    Еще лучше, если у вас будет запасной сайт, на который можно переключиться за секунды. Но это уже история следующего уровня.
    Ответ написан
    Комментировать
  • Как развернуть nginx для nodejs и react?

    fzfx
    @fzfx
    18,5 дм
    Уберите концевой слеш в proxy_pass.
    Ответ написан
    Комментировать
  • Как следить за статусом контейнеров?

    @vitaly_il1
    DevOps Consulting
    https://www.site24x7.com/ умеет и мониторить URLs, есть и агент, которым можно мониторить процессы и контейнеры.
    Ответ написан
    Комментировать
  • Как следить за статусом контейнеров?

    @mureevms
    Написать скрипт, который чекает в цикле время работы каждого контейнера и если он меньше 5 минут, слать письмо/веб хук/что -то еще, скрипт поместить в крон на выполнение каждые 4 минуты
    Ответ написан
    Комментировать
  • Как следить за статусом контейнеров?

    Если без внешних инструментов с бесплатным триалом и деньжищами за использование,
    можно через Docker API получать живой стрим событий. Отфильтровать в нём только интересующие, например, container=<string> когда имя интересующего контейнера известно и постоянно.

    Но вообще присмотритесь подробнее к опции restart – пусть контейнер перезапускается автоматом после падения. И может, при запуске как-то куда-то отправляет «Доброе утро, админ!»
    Ответ написан
    Комментировать
  • Удаление в массиве по значению другого массива?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Устественно для фильтрации массива использовать array_filter:
    $res = array_filter(
    	$arr,
    	fn($el)=>!in_array($el["uniq_id"], $filter)
    );
    Ответ написан
    1 комментарий
  • Как сделать дамп большой базы данных?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Добавьте ключ --single-transaction

    mysqldump -u root -p basename --single-transaction > path/to/file.sql
    Ответ написан
    1 комментарий
  • Вывод ошибки размера изображения через php, если размер картинки больше 5 мегабайт, как проверить?

    @grek_cheburek
    Программист самоучка
    Никогда не доверяйте тому, что пользователь вам присылает. Знаю, что $_FILES можно подменить.
    Есть такая функция, в php, filesize()
    Используйте её для проверки, что-то подобное.

    <?php
    $max_size  = 1024*1024*5; // Один килобайт имеет 1024 байт. Их умножаем и получаем мегабайт. Далее умножаем на пять.
    $tmp_size = filesize($_FILES['file_img']['tmp_name'][0]);
    if ($tmp_size>$max_size) {
     echo "Ошибка, ваш файл привышает 5 мб"; exit();
    }
    ?>


    Как-то так. И еще один момент. Если вы позволяете другим пользователям загружать картинки на сайт, то это не последняя проверка с размером файла. Еще нужно проверять, не вредна ли картинка.
    Ответ написан
    Комментировать
  • Какой видеокурс по основам WordPress действительно стоит изучить?

    @andd281
    Главное не искать курсы, где после первых двух-трех уроков просят бабло, это классика развода инфоцыган. Я предпочел Wordpress. Сначала на Яндекс Услугах проверил, что чаще всего заказывают - и на WP больше всего заказов. В youtube нашел кучу инфы, и курсов. Вот этот нормально объяснил, по пальцам https://www.youtube.com/channel/UCstXkCZE40n-aocGh...
    Ответ написан
    Комментировать
  • Какой видеокурс по основам WordPress действительно стоит изучить?

    Dit81
    @Dit81
    Security researcher, pentester, internet-marketer
    Лучше прочитать книги и строго на английском! Там все, вплоть от Архитектуры и до написания плагинов и модулей...
    Ответ написан
    2 комментария
  • Какой видеокурс по основам WordPress действительно стоит изучить?

    ernesto77
    @ernesto77
    php, rb, py, js, webdev
    главное не смотреть, то что в первых строчках гугла и яндекса. Я думаю лучше всего на рутрекере скачать видео за последний год по запросу "wordpress"
    Ответ написан
    4 комментария
  • Какой видеокурс по основам WordPress действительно стоит изучить?

    Evanre
    @Evanre
    Front-end developer
    Одни из лучших комплексных курсов у Teamtreehouse.com. Русскоязычные "курсы" не советую. Парни вроде webformyself занимаются продажей курсов для домохозяек типа "сайт за 20 часов", а не обучением. То же самое и на Youtube. Единственные 2 русскоязычных канала о wp которые смотрю Быть програмистом и wp-plus.
    Первый ориентируется на создание тем для Envato, правда фреймворк у него самописный и давольно старый\кривой.
    А вот wp-plus, он же CampusBoy (активный польpователь и контрибьютор ресурса wp-kama, тоже кстати советую) делает отличные видео. Не из разряда, "установите очередной плагин под мелкую фигню" (по типу WPRuse), а именно как правильно писать на WP. У него есть несколько отличных серий уроков (ContactForm7, CarbonFields и т.д.),. Канал молодой и очень маленький, но автор просто молодчина :)
    Ответ написан
    Комментировать
  • Какой видеокурс по основам WordPress действительно стоит изучить?

    maksym1991
    @maksym1991
    WordPress adept
    Этот хорош, автор пишет все без плагинов, дает понимание как все работает -
    https://www.youtube.com/watch?v=ViZLtFIcSfo&list=P...
    Ответ написан
    4 комментария
  • Как составить POST запрос с массивом данных?

    edward_freedom
    @edward_freedom
    $url = $file_name;
    
    //The data you want to send via POST
    $fields = [
        '__VIEWSTATE '      => $state,
        '__EVENTVALIDATION' => $valid,
        'btnSubmit'         => 'Submit'
    ];
    
    //url-ify the data for the POST
    $fields_string = http_build_query($fields);
    
    //open connection
    $ch = curl_init();
    
    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
    
    //So that curl_exec returns the contents of the cURL; rather than echoing it
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
    
    //execute post
    $result = curl_exec($ch);
    echo $result;
    Ответ написан
    Комментировать
  • Как реализована функция app()->setLocale()?

    @NubasLol
    Onatskyi, первый способ использует фасады, которые работают на магии php

    https://www.php.net/manual/ru/language.oop5.magic.php

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

    App() дает доступ к контейнеру ларавел

    Читай про внедрение зависимостей и сервис контейнер. Это паттерны которые в ларе реализованы

    И ты попытался сделать синголтон, но в ларе уже все есть для этого, в сервис контейнер можешь сам нужные инстансы засунуть.
    Ответ написан
    Комментировать