Задать вопрос
  • Как сделать сделать поиск по строке php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    stripos и strpos работают правильно

    А если вам вдруг кажется, что они работают неправильно, то надо привести пример.
    И тогда вам сразу объяснят, что вы делаете неправильно
    Ответ написан
    4 комментария
  • Почему PHP контейнер в docker-compose начинает очень медленно работать после некоторого времени бездействия?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    С учётом предоставленных данных — потому что почему угодно.

    Что значит "медленно работать"? Какие метрики и чем измерялись? Где код docker-compose.yml? Какие образы используются? Кто и зачем отключает интернет?
    Ответ написан
    Комментировать
  • Будет ли справляться кулер "Thermalright Silver Arrow T8" (заявленная рассеиваемая мощность 320 Вт) с процом i9-13900K?

    nidalee
    @nidalee
    А я возражу, ради разнообразия.
    Не будет справляться.
    Цифры TDP от производителя кулера и производителя процессора считаются по разному и не могут сравниваться напрямую. В любом случае, 320ВТ для башни - нонсенс. Таких цифр даже Noctua не обещает.
    Бог с ней, с Noctua. Даже Wraith Ripper, сделанный специально для печи-Threadripper 2990WX, обещает всего 250. Как Thermalright собирается наколдовать 320 - вопрос открытый, и уже должен ставить под сомнение покупку такого кулера.

    Что касается реальной эффективности кулера, то
    Даже 11700К уже почти перегревается при загрузке на все ядра, если верить сторонним тестам.
    rezultaty-testirovaniya-kulera-thermalright-silver-arrow-t8-96719.png
    А это те же самые расчетные "125W" (200 реальных).

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

    Вы пытаетесь решить несуществующую проблему.
    1. Нет никакой проблемы в том что два разных приложения (клиент и сервер) имеют разную нумерацию.
    2. semver нужен только если у тебя есть какой-то контракт, который тебе нужно соблюдать. Если контракта нет - можно использовать просто номера релизов.
    Ответ написан
    3 комментария
  • Как восстановить файлы после reset --hard?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Восстановить очень легко, так как гит ничего не удаляет из репозитория, по крайней мере сразу.
    Команда reset лишь переместила указатель ветки. Полностью удалить что-то крайне сложно.
    Вы можете посмотреть через git reflog где был указатель до этого и вернуть его туда обратно.
    git reset --hard HEAD@{1}
    Данная команда вернёт ветку на состояние, помеченное на вашем скрине как HEAD@{1}
    Либо можно скопировать непосредственно sha-хэш места, куда хотите вернуться.

    Затем повторить отмену последнего коммита, но уже правильно:
    git reset HEAD~1
    Такая команда не будет изменять рабочий каталог, а значит ничего из него не удалит.
    Ответ написан
    1 комментарий
  • С чего начать изучение Linux?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Ответ написан
    Комментировать
  • Как написать регулярное выражение для обработки разметки из ckeditor?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    1. Никогда не используйте регулярки для парсинга HTML
    2. Никогда не задавайте вопрос про свой вариант решения проблемы. Всегда задавайте вопрос про саму проблему.
    3. Htmlpurifier, HtmlSanitizer
    Ответ написан
    Комментировать
  • Для чего нужны Plugin Events понятным языком?

    Сейчас вопрос звучит примерно как
    У меня есть машина, и производитель этой машины напихал в салон кучу каких-то кнопок. Но мне не понятна суть дела. Зачем это всё? В каких случаях оно может понадобится и под какие типы задач (с конкретным примером, если можно)?


    Почему бы не спросить у этого разработчика?
    Почему бы не почитать документацию к этому плагину?
    Почему бы не почитать те самые объяснения, которые написаны в этих файлах?

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

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Это делается через приватный репозиторий, в который вы кладёте набор файлов, достаточный для работы и, например, дамп базы с тестовыми данными. А настоящего сайта фрилансер вообще касаться не должен.
    Ответ написан
    Комментировать
  • Как организовать поиск в БД с 1000 таблиц?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Даю совет: базу данных, в которой "есть очень много таблиц (>10.000), в каждой от 1 до 50 строк" нужно удалять, а того, кто её проектировал, увольнять с позором.
    Ответ написан
    4 комментария
  • Почему Windows 10 установленный через rufus - бесплатен?

    Mi11er
    @Mi11er
    A human...
    Перед тем, как такой вопрос закидывать, узнайте, чем отличается активированная Windows , от не активированной =)
    Потом все поймете.
    Ответ написан
    6 комментариев
  • Почему Windows 10 установленный через rufus - бесплатен?

    Stalker_RED
    @Stalker_RED
    Rufus - программа для создания загрузочных флешек. Ничего с ключами она не делает.

    У вас либо неактивировпнная винда, либо ключ подтягивается из биоса, либо сборка не оригинальная.
    Ответ написан
    1 комментарий
  • Почему Windows 10 установленный через rufus - бесплатен?

    @nApoBo3
    Не путайте технические ограничения и лицензирование. То, что программа не препятствует пиратству не делает ее лицензионной или бесплатной.
    Ответ написан
    2 комментария
  • Как грамотно сделать обработку ислючений в php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Структура проекта какая-то странная, в нем, судя по всему, контроллером называется роутер, но на этом я останавливаться не буду, обработка исключений от этого не зависит.

    Основных правил при обработке исключений три:
    1. Не использовать исключения там, где они не нужны. Например, при проверке пользовательских данных.
    Собственно, эмпирическое правило звучит так: функция должна бросать исключение, если она не может выполнить ту работу, для которой она предназначена.

    Отсюда сразу становится понятно, что для функции, которая должна проверять введенные данные, наличие ошибок в них не является исключительной ситуацией. А совершенно штатной. И обеспечивается штатными же средствами. По результатам проверки пользователю просто отправляется ответ, что данные неверны, безо всяких исключений. В нормальной структуре проекта этим занимается контроллер.

    Ситуации, когда введено меньше букв, или пользователь не найден, или пароль не подходит - не являются исключительными.

    2. Системные ошибки обрабатывает глобальный обработчик исключений, логируя саму ошибку, а на клиент отправляя статус 500 и какое-нибудь абстрактное сообщение о проблеме на сервере. Это самое важное в системных исключениях - текст ошибки никогда, не при каких обстоятельствах не уходит наружу.

    Пример такого исключения - когда запрос в БД порождает ошибку.

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

    Для информирования можно действительно ловить исключение через try..catch и писать какое-то свое сообщение.
    Но можно и автоматизировать этот процесс, вот две статьи, которые показывают примеры, как это можно сделать:
    https://angelovdejan.me/2022/11/24/centralized-exc...
    https://habr.com/ru/articles/688202/
    Ответ написан
    Комментировать
  • Как отображать mp4 видео без ос?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Работа без ОС с железом заключается в том что вы делаете свою "ОС на минималках" и компилируете
    ее в ваш софт. Поэтому мне кажется что тут более важный вопрос - а что вам нужно от ОС ?
    Загрузчик? Файловая система? Драйвера для экрана? Для звука? Это все очень сложные
    инжереные вопросы и чтобы их решать - нужно сначала уметь их решать вместе с ОС и уже
    потом как-то придумать как избавиться от ОС.

    Иначе выглядит что вы просто хотите странного.
    Ответ написан
    Комментировать
  • Как правильно распределять ответственность между классами?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Сервис - это часть модели. Класс, который реализует некую бизнес-логику, не связанную напрямую с хранилищем.
    Репозиторий - часть модели, класс, который содержит методы для работы с хранилищем.
    Стор - это какая-то местечковая приблуда. Из битрикса небось? Либо какие-то академические измышления, вот как в соседнем ответе. Вроде человек что-то пишет, но яснее ничего не становится.
    Маппер имеет много значений. Если речь про Data Mapper, то это разделение самих данных и их отображения в БД.

    Читать стандартно - Дядюшка Боб Мартин и Мартин Фаулер. Конкретно по РНР - Зандстра.
    Ответ написан
    2 комментария
  • Почему может создаваться большое количество файлов сессий на сервере Ubuntu?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Сессии сами не создаются, их создает РНР при обращении к сайту.
    Сколько обращений - столько сессий.

    Соответственно, смотреть надо по двум направлениям
    1. проверить, не долбит ли кто-то запросами, и заблокировать или ограничить, например использовать Rate Limit у NGINX
    2. файловая система - самое убогое хранилище для сессий, и используется по умолчанию только потому, что для всех других нужно указывать параметры подключения. Соответственно, вместо файлов использовать базу данных.

    Плюс надо смотреть по коду. Если сайт создает сессию на откровенно мусорный запрос, то, возможно, этого не стоит делать. Ну и нельзя сбрасывать со счетов гениальных скриптописателей, которые сами себе создают нагрузку на сайт. Не раз и не два я видел любителей инклюдить локальные файлы по HTTP.
    Ответ написан
    Комментировать
  • Фреймворки, действительно ли важно?

    Jacen11
    @Jacen11
    потому что с вами никто не сможет работать, если вы фрилансер, нет проблем. Вы говорите буквально "я придумал клингонский, почему меня за это не любят и не дают миллионы денег?". Ну потому что это никому не нужно.

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    У вас каша в голове. И вы все делаете неправильно.
    Заменять теги на сущности надо не перед записью в БД, а перед выводом в HTML. Желательно - средствами этого "табулятора", если он это умеет.

    Никакой HTML в БД хранить нельзя.
    Любое HTML оформление надо добавлять средствами этого "табулятора".
    В самом крайнем случае - в ноде, перед выводом

    name: '<p>' + entities.encode(result.name) + '<p>'
    Хотя это конечно говнокод и кровь из глаз.
    Ответ написан
    2 комментария
  • Как объединить 3 массива из файлов после цикла foreach?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Вопрос изначально был хреново описан, слава яйцам ТС догадался что мы не знаем что хранится в его массивах и что надо получить в итоге... Первое правило решения задачи - хорошо описать исходные данные и требуемый результат.
    2)
    В переменной $config массив:
    Массив состоит из 1 элемента, было бы странно ожидать что итераций foreach будет больше одной. Возможно имеет смысл проверять переменные чаще, если результат не соответствует ожиданиям, var_dump/dd($lang) внутри foreach был бы очень кстати...
    3) У вас есть список языков, который соответствует названиям файлов, зачем дергать каждый раз весть список файлов, когда можно просто открыть файл __DIR__/$lang.php? Ну, разве что нужна проверка на file_exists()...
    4) Вам дважды указали на ошибку с отсутствием второго аргумента в array_merge, которую вы проигнорировали...
    Ответ написан
    Комментировать