Задать вопрос
  • Какие у битрикса требования к серверу?

    Дисковое место: сам Битрикс в редакции Бизнес жрёт меньше 1.5 Гб . Остальное зависит от того, сколько у вас картинок и какого они размера.
    Памяти как-то мало. Полгига надо отдать под мемкеш или редис, потому что файловый кэш проблемный. Битрикс хочет 384 Мб оперативки на процесс PHP - считайте сами, сколько получится запустить параллельно.
    Ещё MySQL отожрёт гига два.
    По ядрам:
    одно - под MySQL,
    одно - под nginx ( ладно, системные процессы сюда же),
    и ... ничего не осталось..

    10к уников - для простоты можно считать, что они ходят только в рабочее время, то есть 10 часов. То есть 1к уников в час, 1 уник в 3.5 секунды. У Битрикса "эталон" задан как генерация страницы за 0.3 сек - в реальности, конечно больше ( если кто-то станет Вам говорить про автокеширование - плюньте ему в лицо), но вроде вписываетесь.
    Сейчас ещё надо учитывать паразитный трафик от нейросетей и всяких парсеров, он может быть очень значительным, но можно его зафильтровать.

    Если заказчик просто хочет быстро запуститься - Битрикс пойдёт, пока пилите магазин на чём-то другом (тот же опенкарт, если у Вас достаточно опыта на нём). Преимущества, которые у платформы были, за минувшие годы превратились в пыль.
    Ответ написан
    6 комментариев
  • Как вернуть коммиты после rebase?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Почему «пропали» коммиты?

    Главная ошибка — использование --amend во время rebase.
    Команда git commit --amend не создает новый коммит, а перезаписывает предыдущий.

    Когда вы время интерактивного rebase на каждом шаге делаете --amend, вы по сути всё время заменяете один и тот же коммит. Остальные коммиты, которые Git должен был «применить» в процессе ребейза, просто исчезают, потому что их заменили.

    Как делать правильно?

    Во время rebase -i вместо amend нужно:

    git add <файлы> #  главное проиндексировать правки файлов
    git rebase --continue # тут гит уже сам сделает git commit --no-edit
    Вручную делать git commit перед continue имеет смысл только если вы хотите поменять ещё и сообщение коммита.

    Как восстановить утерянные коммиты

    Git не удаляет коммиты сразу. Они остаются в репозитории и доступны в reflog — журнале ссылок.

    Их можно найти так: git reflog

    Затем восстановить ветку: git reset --hard <хеш_из_reflog>

    Вывод

    Это не баг Git, а ожидаемое поведение. Просто rebase + amend — взрывоопасная смесь, особенно если не до конца понимать, что происходит.
    Ответ написан
    Комментировать
  • Бесплатный способ отправить уведомление на телефон админа через web API?

    @alexalexes
    В телефоне можно какой-то апп под андроид, который получает уведомление и орёт.

    Изучите стек push notification. Там не нужно приложение, нужна простая страница подписки и бек скрипт, чтобы сделать рукопожатие с сервером гугла при подписке, и для отправки уведомления гуглу, гугл уже отправит подписавшемуся все что вы хотите - это уведомление высветится в интерфейсе андроида.
    Ответ написан
    Комментировать
  • На Q&A пробираются рекламные боты?

    TosterModerator
    @TosterModerator Куратор тега Хабр Q&A
    Модератор Хабр Q&A
    Возможно криминал, по коням!

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это же основы.
    . - текущий каталог.
    .. - родительский каталог.
    Трёх точек в файловой системе не используют. Для доступа выше по дереву берут родительский каталог родительского каталога.
    ../..
    Ответ написан
    4 комментария
  • Какую платформу выбрать для создания MVP?

    Adamos
    @Adamos
    Битрикс - это не платформа, а решение. Делать на нем что-то свое - это больше борьба с тем, что накостыляли кодеры Битрикса. А когда он надоест, все наработки можно будет спустить в унитаз, потому что больше они ни к чему не подойдут.
    Озвученная Ларавель - хороший фреймворк, но готовые писать на голом фреймворке не задают таких вопросов. Вам, полагаю, стоит посмотреть CMS на базе Ларавели.
    Самому мне нравится OctoberCMS, точнее, сейчас - ее бесплатный форк WinterCMS. Каталог готовых плагинов, среди которых немало бесплатных, тут: https://octobercms.com/plugins
    Ответ написан
    4 комментария
  • Какой дистрибутив линукс лучше подойдет для Битрикс в 2025 году?

    @konsealex
    Debian 12, под него и рекомендации битрикса есть https://dev.1c-bitrix.ru/learning/course/?COURSE_I...
    Ответ написан
    Комментировать
  • Определение значений передаваемой в функцию переменной типа массив?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это один из тех вопросов новичков, на который нельзя давать прямой ответ. Он превратится в пустое умствование и говнокод. Соглашусь с комментарием Дмитрий: тут просто не нужен массив. И тем более не нужно городить огород из абстракций. Тут явно нужен банальный VO/DTO, а автору надо перестать пытаться заворачивать привычные массивы в солидно выглядящие объекты, и начать использовать сами объекты.

    Если нам нужна конкретная структура, то и описываем её в конкретном классе, безо всяких интерфейсов:

    final readonly class Parameters
    {
        public function __construct(
            public string $key1,
            public int $key2,
            public DateTimeImmutable $key3,
        ) {}
    }
    public function execute(Parameters $parameters):


    В итоге у "стороннего разработчика" есть готовая документация - простое и понятное определение класса, экземпляр которого он должен передать в ваш метод. И уже на этапе создания этого объекта РНР надаёт разработчику по рукам, если хоть какое-то свойство не будет задано, или будет не того типа. При желании можно в конструктор добавить дополнительную валидацию, если просто типа недостаточно.

    При этом если внутри execute() вдруг зачем-то понадобится обратиться к свойствам именно как к массиву, то использовать волшебную функцию get_object_vars().

    Если же речь про валидацию входящих данных, то это вообще совсем другой вопрос.

    Для этого есть либо стандартные валидаторы, когда на вход подаётся массив и набор правил, вот например как в ларавле, симфони или в десятке отдельно стоящих библиотек, а на выходе - или гарантированно валидная структура данных, или ошибка.

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

    В этом случае документацией для обоих вариантов является сваггер, а фидбеком - ошибки валидатора.
    Ответ написан
    Комментировать
  • Как настроить локальный Bitrix и почтовый сервер на одном IP с помощью Nginx (на Windows)?

    @Drno
    Первая ошибка - ставить софт предназначенный для сети или веб сервера на винду…

    Поднимите виртуалку на убунте, настройте там nginx. Дальше пусть он разруливает что и куда
    Ответ написан
    Комментировать
  • Не будет ли конфликтов между виндой и линуксом, если линукс поставить второй системой?

    VoidVolker
    @VoidVolker Куратор тега Windows
    Dark side eye. А у нас печеньки! А у вас?
    Если вам для учебных целей или просто пощупать - то ставьте VirtualBox, в него устанавливайте линукс и будет у вас прекрасная игровая площадка, которую не жалко сломать и от которой не зависит ваша основная система. А вот ставить линукс второй системой имеет смысл только если вам в линуксе нужен 3D и графика. А ещё лучше ставить только в случае, если вы знаете или хотите изучить механизмы работы загрузки нескольких разных ОС и их взаимодействие на собственном опыте. Или есть хороший знакомый, который это всё знает и умеет чинить. Проблема двух ОС в том, что у разных разработчиков разных ОС и разных дистрибутивов свои понятия о том, как должны взаимодействовать несколько ОС, плюс разные конфигурации оборудования - всё вместе это даёт такой дикий коктейль возможностей, что никогда не угадаешь, что может пойти не так. При установке ОС установщик может: проигнорировать существующий загрузчик и добавить его запись в свой загрузчик, добавить запись о новой ОС в существующий загрузчик, заменить его своим и добавить запись о старой ОС в свой список (или не добавить), не ставить вообще никакой загрузчик для целевой ОС, может просто удалить его, может полностью удалить существующую ОС и т.п. Плюс существует еще куча всяких конфигураций железа и ПО: BIOS, UEFI, MBR, GPT, SATA, NVME, разные виды разделов, установка ОС на один диск или на несколько, может быть больше двух разных ОС и т.п. и т.д. А ещё современные ОС периодически при обновлении лезут в загрузчики свои и как результат, при любом обновлении любой ОС всё может поломаться (увы, реальный факт из практики - что винда, что линукс уже не раз так делали).

    В целом рекомендация будет следующая:
    1. Отключить в винде быструю загрузку (FastBoot)
    2. Физически отключить диск с виндой от ПК
    3. Выбрать в БИОС загрузку с диска, куда будете ставить линукс
    4. Установить линукс
    5. Подключить диск с виндой обратно
    6. В загрузчик линукс добавить запись загрузчика винды
    7. Загрузиться в винду
    8. Добавить в загрузчик винды запись линукса
    9. В BIOS выбрать загрузочный диск основной ОС

    Т.о. у каждой ОС будет свой независимый загрузчик на своём диске и когда одна из ОС или диск сломается - у вас будет вторая независимая ОС, которая всё ещё будет работать.

    Альтернативный вариант - использовать как основной загрузчик что-то типа Clover. Но там тоже есть свои нюансы.
    Ответ написан
    4 комментария
  • Есть ли реальные проблемы с безопасностью windows 7 для домашнего использования?

    Проблемы, естественно, есть, поскольку есть уязвимости.
    Столкнётесь ли лично вы с ними никто не знает.
    Ответ написан
    Комментировать
  • Не могу перевести число в десятичную систему без чисел после запятой используя Math.round()?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    А чего ради где-то на странице должно округляться? Метод changeToUAH ничего не возвращает даже, но зачем-то вызывается. Вы понимаете вообще что вы там накодили и что происходит?
    Ответ написан
    7 комментариев
  • Как лучше обновлять счётчик записей?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Лучше всего вообще ничего не обновлять.
    При наличии очевидного индекса на article_id, хоть какие-то проблемы подсчёт на лету начнёт создавать на объёмах уровня фейсбука.
    Так что я бы сначала не со счётными палочками колупался, а проверил наличие индекса.
    Ответ написан
    Комментировать
  • Ошибка в запросе, в чём причина?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Такое ощущение, что код пропустили через какой-то markdown-редактор, который посчитал, что запись вида u.id это адрес сайта и автоматически заменил на соответствующий markdown-синтаксис ссылок. Такое может быть, например, при пересылке кода как обычного текста в мессенджерах.
    67bc7a1565357335276039.png
    Ну а малограмотный кодер вставил этот markdown-код не задумываясь.
    Так что причина - копипаста без знания синтаксиса конкретного диалекта SQL.
    Ответ написан
    1 комментарий
  • Ошибка в запросе, в чём причина?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    SELECT [u.id](u.id)

    а где вы такой синтаксис нашли? Совершенно очевидно непонимание от сервера, что вы этим пытаетесь сказать, я тоже не понимаю, что этот синтаксис должен значить.
    https://dev.mysql.com/doc/refman/8.4/en/identifier...
    Ответ написан
    2 комментария
  • Как сбросить состояние ветки develop к master непосредственно в репозитории (origin)?

    miraage
    @miraage
    Старый прогер
    Когда сбрасываю локально git reset --hard master то не могу запушить в репозиторий, только сделать pull


    После такого надо форс пуш делать.
    Ответ написан
    Комментировать
  • Как сбросить состояние ветки develop к master непосредственно в репозитории (origin)?

    @karminski
    Senior React.JS Developer
    Удалить origin/develop и создать новый от origin/master
    Ответ написан
    Комментировать
  • Как начать background-image с определенного места?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Ответ написан
    Комментировать
  • Может ли удаленный репозиторий быть сразу и рабочей директорией проекта?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вы некорректно поставили вопрос. Никакой репозиторий не может быть рабочим каталогом. Рабочий каталог репозитория и сам репозиторий это разные сущности и лежат в разных местах. Обычно репозиторий лежит в подкаталоге .git основного рабочего каталога проекта.

    Вы наверное хотели спросить — может ли во внешнем общем репозитории тоже быть свой рабочий каталог?

    Да, может, но с некоторыми ограничениями. Например нельзя пушить в ветку вышестоящего репозитория, если она в данный момент там активна и распакована в рабочий каталог. Если в общем репо HEAD стоит на ветке main, то вы легко сможете другие ветки отправить, но main не сможете и получите ошибку. И это логично.

    Забирать коммиты вы сможете из любой ветки, даже из активной.

    И у вас изначально ошибка вот тут:
    Создаю на сервере репозиторий git init. Создаю у себя репозиторий
    Для чего? Вы создали две отдельные истории. Даже если в обоих случаях получилась ветка с названием main, это всё равно будут разные ветки без общей истории. Не нужно так делать. Репозиторий следует создавать в одном месте, а затем уже клонировать в другие.

    Очень многие наступают на эти же грабли, когда инициализируют репозиторий локально, а затем создают НЕ ПУСТОЙ репозиторий на гитхабе. Потом удивляются, почему не получается их связать. ))

    Ни пуш ни пулл не работают.

    Причина неработоспособности первого заключается в том, что ветка активна. Второй не функционирует из-за отсутствия коммитов в вышестоящем репозитории, поэтому нечего скачивать.

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

    @programmer403
    php -f /{path}/console.php

    console.php не для того чтобы его напрямую запускать с php. А для регистрации консольных команд:
    Artisan::command('inspire2'
    которые потом вы запускаете командой
    php artisan inspire2

    Дальше уже смотрите в сторону Schedule
    Ответ написан
    Комментировать