Задать вопрос
  • Как понять докер, если ничего не понятно?

    neuotq
    @neuotq
    Прокрастинация
    С Докером все просто, нужно только немного повернуть устоявшуюся логику в мозгах.
    Основная суть и идея это запуск каждого приложения (php, mysql и тд) в своем контейнере. При этом сам php будет думать что запущен как всегда в обычной полноценной ОС. Поэтому контейнер собирают так, чтобы удовлетворить минимальные требования программы которую он будет содержать.
    Вот так ты и запускаешь кучу контенейров и у тебя выходит сухогруз(у докера там кит) с контейнерами. Зачем это все? Для облегчения администрирования и обновления ПО, а так же для минимизации издержек при глюках/падения какой-либо программы.
    Все контейнеры максимально независимы друг от друга, при этом есть механизм когда контейнер завист от другого. Например контейнер phpmyadmin, нет смысл запускать без контейнера mysql или mariadb, работать он не будет.
    Общение происходит в основном через сеть, поднимается внутренняя сеть. Так же конечно через диск, все предусмотрено.
    Когда все сделано как нужно, с системного администратора снимается гигантский труд по отслеживанию обновлений, совместимости этих обновлений и тд.
    Нужна тебе версия php5.6, запустил коннтейнер с ней, нужна php7.1, запустил его, при этом не нужно никаких приключений с обновлением кучи пакетов, возможных конфликтов с другими нужными программами и тд.
    Так же удобно решаются вопросы масштабирования, появляются мелкие удобные бонусы по дополнительной автоматизации , уменьшаются риски падения ОС в целом, падает если что только контейнер и тд и тп, в результате есть реальная возможность даже небольшим проектам добиться у себя около нулевого даунтайма.
    Вот еще послушай Кирилл Мокевнин из Hexlet пытается понятным языком рассказать что это и зачем. И кстати он делает упор на понимания зачем понадобилось думать и какие проблемы решали когда пришли к Докеру, это ключ к пониманию всего другого.
    PS кстати и сам Hexlet крайне советую, они наверное лучшие в рунете для начинающих программистов
    Ответ написан
    1 комментарий
  • Как решить проблему задвоения аккаунтов при регистрации и входе через соц. сети?

    neuotq
    @neuotq
    Прокрастинация
    Если регистрация с email адресом, то по возможности вытаскивать email из соц сетей и автоматически привязывать у пользователя эту соц сеть. Если соц сеть не дает email, то при первом входе насильно требовать завершения регистрации через указания email, далее проверяется есть ли этот пользователь уже в базе - тогда говорим нужно авторизоваться и после логина привязываем соц сеть, если такого email нет, то регистрируем нового пользователя с записью этого email в качестве основного + привязка соц сети + пароль(уже по желанию).
    Ответ написан
    2 комментария
  • Как в MySQL 8 ограничить значение поля в зависимости от значения другого поля?

    Adamos
    @Adamos
    А на февраль у вас, интересно, какие ограничения?
    Не проще хранить реальную дату, а уже из нее брать MONTH() и DAYOFMONTH()?
    Ответ написан
    6 комментариев
  • С помощью функции array_splice в php добавить элемент в конце массива не реально?

    @StockholmSyndrome
    array_splice($password, count($password), 0, 'e');
    Ответ написан
    Комментировать
  • Есть готовый сайт на HTML, CSS, JS, но только на моем ПК, что делать дальше?

    @xonar
    А смысл?
    У вас как я понял только свёрстанный макет сайта. Вы его конечно же можете загрузить себе на хостинг, но что вам именно нужно? Можете натянуть эту вёрстку на вордпресс, чтобы дальше наполнять свой сайт новостями или ещё чем-нибудь. Если же хотите разместить сайт в сети, как портфолио, то есть github pages. У вас странно поставлен вопрос.
    Ответ написан
    6 комментариев
  • Почему php выводит из базы что то одно?

    erge
    @erge
    Примус починяю
    Подозреваю что на выходе , после цикла
    while($row = mysqli_fetch_array($res))
    Result set - $res становится ПУСТЫМ! поэтому второй while его не отрабывает.
    и либо
    - его необходимо наполнить заново, повторно выполнив запрос
    $res = mysqli_query($dbc, $query);

    либо, что более корректно:

    1) заполнить из result set некий массив, далее по коду уже работать с массивом.

    2) на каждом номере класса выполнять запрос
    SELECT * FROM `pupils` WHERE class = 'НОМЕРКЛАССА' -- я допустил что колонка у вас называется class

    и далее делать вывод анологично.

    3) что еще более правильное:
    получить из базы список классов, например
    SELECT DISTINCT class FROM `pupils` -- я допустил что колонка у вас называется class


    далее цикл по резалтсету
    выводим
    <div class="cl">
          <h3>НОМЕРКЛАССА</h3>


    делаем запрос вида
    SELECT * FROM `pupils` WHERE class = 'НОМЕРКЛАССА' -- я допустил что колонка у вас называется class


    далее цикл по резалтсету
    выводим
    <h4>ФИО</h4>
    конец вложенного цикла

    выводим закрывающий тэг </div>

    конец первого цикла.

    как-то так... ну код сами напишете ;)
    Ответ написан
    4 комментария
  • Стоит ли идти после 9 класса искать работу php веба вместо учёбы в колледже?

    @Kostik_1993
    Web Developer
    Детский лепет. Идите учиться. Я никак не хочу вас оскорбить, но ваш уровень как человека на данный момент очень низок, это не ваша особенность, а особенность всех подростков вашего возраста.
    Таких как вы в мире разработчиков полным полно, а вот разработчиков с мозгами не много. Эти мозги даются не опытом одного лишь программирования, эти мозги годами закладываются в ходе общего развития (школа, колледж, вуз, у кого-то армия). Если вы откажетесь сейчас от дальнейшего развития то потом его уже не вернуть и не так-то просто нагнать. Я учился в вузе на заочном после колледжа при этом работая программистом и получая неплохую запрлату. Были моменты когда были трудности в учебе и я думал что зачем мне оно все нужно если я и так крутой. Но сейчас я понимаю что то время когда я учился было вовсе неплохим, да мое образование мне не пригодилось, но я получил развитие, понял что я и как могу, научился общаться с разными людьми разных чинов. Обо всем этом я не жалею, а даже наоборот я понимаю что многие вещи мне понадобились в жизни
    Ответ написан
    7 комментариев
  • Обработка изображений товаров для сайта, как правильно реализовать?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    Сочетайте все три способа вместе!

    1. На подстраховку задайте в css размеры изображений и чтобы он их обрезал.
    2. Сохраняйте оригинал файла. А уже от этого оригинала генерируйте обрезанные копии для разных частей сайта:

    - Для корзины надо 50х50px
    - Для админки 100х100px
    - Для списка товаров 300х400px
    - Для просмотра товара 1000х1000px и ещё с водяным знаком.

    В таком случае вы папки изображений разделяете на две:
    - original (оригинальные фалы)
    - cache (сгенерированные из оригинала под нужные размеры).

    В дальнейшем можно удалить просто папку cache и сгенерировать новые по нужным размерам из оригиналов папки original без опаски удаление оригинала и опаски потерять оригинал совершив ошибку при обрезке.

    Сохранение оригинала ещё поможет в будущем... Например, если изменится вёрстка и нужно будет пересоздать файлы под другие размеры.

    На Yii для этого есть замечательная библиотека, которая реализует такой подход

    Пример настройки:
    public function behaviors(): array
        {
            return [
                [
                    'class' => ImageUploadBehavior::className(),
                    'attribute' => 'photo',
                    'createThumbsOnRequest' => true, //Создавать при запросе (если файлы из cache удалить, то они снова сгенерируются под новым размерам указаных ниже)
                    'filePath' => '@staticRoot/origin/posts/[[id]].[[extension]]',
                    'fileUrl' => '@static/origin/posts/[[id]].[[extension]]',
                    'thumbPath' => '@staticRoot/cache/posts/[[profile]]_[[id]].[[extension]]',
                    'thumbUrl' => '@static/cache/posts/[[profile]]_[[id]].[[extension]]',
                    'thumbs' => [
                        'admin' => ['width' => 100, 'height' => 70],
                        'thumb' => ['width' => 640, 'height' => 480],
                        'blog_list' => ['width' => 1000, 'height' => 150],
                        'widget_list' => ['width' => 228, 'height' => 228],
                        'origin' => ['processor' => [new WaterMarker(1024, 768, '@frontend/web/image/logo.png'), 'process']],
                    ],
                ],
            ];
        }


    Вы так же можете сделать такой подход со своей написанной библиотекой. Но подход такой достаточно хороший и логичный. На него я бы делал больше упор, чем на остальные пункты.

    3. Лучше не предупреждать что будет обрезано, а в момент загрузке на js показать как будет выглядеть изображение на всех видах верстки. Но можно и просто написать.

    Вообще это идеальный вариант. Вы можете использовать самый простой вариант и работать с простой и удобной библиотекой. Или любой другой популярной написанной на чистом php. Решать вам)
    Ответ написан
    6 комментариев
  • Как быстро развернуть админку и работу с БД на PHP?

    Sanes
    @Sanes
    Напишите на любом php фреймворке. Нет такой админки, которая бы всем угодила.
    Laravel работает на любом хостинге. Нет там ничего тяжелого.
    Ответ написан
    3 комментария
  • Как вывести уведомление после отправки формы?

    ssenj
    @ssenj
    HTML, CSS, PHP, WordPress, Bitrix
    С использованием ajax и jquery это выглядит симпатичнее. Нет перезагрузки страницы и не надо морочиться с куками.
    Ответ написан
    2 комментария
  • Как вывести уведомление после отправки формы?

    @MrFeaf
    PHP-developer
    Например в Symfony для таких задач существуют Flash сообщения, они живут всего один запрос и можно при обновлении страницы (обработки формы) можно выводить любые сообщения во время следующего запроса.

    Есть отдельные библиотеки для создания таких сообщений, например: https://mikeeverhart.net/php-flash-messages/

    Также, можно формы отправлять используя AJAX, тогда вообще не придётся страницу обновлять :)
    Ответ написан
    Комментировать
  • Что за функции вида "???_op@X" в результатах xhprof?

    Если вдруг кому-нибудь будет актуален этот вопрос, xhprof не самым лучшим образом работает с php 5.5. Существует форк uprofiler, в котором этот недочет исправлен.
    Единственное, при использовании переименованного модуля, нужно все вызовы функций xhprof_* заменить на аналогичные uprofiler_*, а константы XHPROF_*, соответственно, на UPROFILER_*
    Ответ написан
    Комментировать
  • Как правильно организовать бандлы в Symfony2?

    alex_dm
    @alex_dm
    Никакой выгоды от разнесения проектов по бандлам вы в данном случае не получите. Поэтому удобней будет положить все три раздела в один бандл, но разнести контроллеры и шаблоны по разным каталогам.

    что-то вроде:

    CompanyName\YourBundle\Controller\Admin\UsersController;
    CompanyName\YourBundle\Controller\Admin\NewsController;

    (для админки)

    CompanyName\YourBundle\Controller\Public\UsersController;
    CompanyName\YourBundle\Controller\Public\NewsController;

    (для публичного раздела)
    Ответ написан
    2 комментария
  • Нормально ли, что чистая Ubuntu Server использует почти 400Мб оперативки?

    Никуда ваша память не делась. Прочитать подробнее о том, что конкретно происходит, можно здесь - linuxatemyram.ru (оригинал)
    dd70bf360bec4fa29393b49bb148b46e.png
    Ответ написан
    Комментировать
  • Как json перевести в массив?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    По виду похоже на дважды закодированный json. То есть
    $out = json_decode(json_decode($var), true);
    Ответ написан
    Комментировать
  • Как убрать все символы между цифрами PHP?

    @ar2rsoft
    PHP-developer
    preg_replace('~(.+\d+)[^\d]+(\d+)~', '$1x$2', $str);
    Ответ написан
    2 комментария
  • Как сделать такой обработчик формы?

    Folour
    @Folour
    Имена у инпутов должны быть уникальными. Здесь два инпута с датой имеют одинаковое имя.
    Ответ написан
    Комментировать
  • Литература по базам данных?

    @ttywizard Автор вопроса
    Благодарю всех за ответы!

    Начну с изучения основных понятий реляционной модели, теории БД говоря обобщая, исходя из рекомендации в другом топике на тостер, по конспекту лекций В. Н Лукина из МАИ https://www.studmed.ru/lukin-vn-bazy-dannyh-konspe... /

    Далее уже буду двигаться в изучение конкретных СуБД и методологий применения БД.
    Ответ написан
    Комментировать
  • Как из одного массива записать в другой массив?

    Immortal_pony
    @Immortal_pony
    function groupBy(array $elements, callable $getUniqueKey) {
        $grouped = [];
        
        foreach ($elements as $element) {
            $uniqueKey = $getUniqueKey($element);
            $grouped[$uniqueKey][] = $element;
        }
        
        return $grouped;
    }
    
    $groupedByDate = groupBy($app, function($event) {
        return date("Y-m-d", strtotime($event['created_at']));
    });


    Пример
    Ответ написан
    1 комментарий
  • Почему зависает сайт при свободной памяти и процессоре?

    @MIXANIX Автор вопроса
    Проблему решил.
    Дело было в Bitrix CMS, а именно нашел функцию SessionTable::lock, которая шлет запросы GET_LOCK("***", 60) в базу.
    Как назло в документации о ней мало что написано. Не понятно, когда она срабатывает, но у меня подозрение что когда число одновременных запросов к MySQL подбирается к лимиту.
    В результате получаем блокировку сайта на 1 минуту и пустые логи.
    Часть запросов к БД которые шли через Битрикс прописал на чистом PHP и зависания прекратились.
    Всем спасибо!
    Ответ написан
    Комментировать