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

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

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

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос сформулирован по-дурацки, из серии преждевременной оптимизации. "У меня ещё ни базы, ни запросов, ни нагрузки и никогда не будет, но желаю чтобы всё летало!"

    Но тем не менее, ответ на него существует. И он гораздо проще, чем все извращения, которые тут наперебой предлагают всякие доброхоты.

    Во-первых, увеличить innodb_buffer_pool_size до 80% от доступной памяти на сервере. Mysql совсем не дура, и прекрасно сама подтянет используемые таблицы в оперативку. И вселенская проблема нашего фантазёра будет решена.
    Отдельно здесь следует упомянуть случай, когда этому буферу не просто задан недостаточный размер, а жалкие 128 мегабайт, поскольку никто не догадался поменять значение, стоявшее в конфиге по умолчанию.

    Во-вторых, добавить нужные индексы. Поскольку даже в оперативке искать по миллиону записей перебором будет гораздо дольше чем в 5-10 хопов по заранее упорядоченному индексу.
    Ответ написан
    5 комментариев
  • Возможно ли задать подсказку в phpstorme для возвращаемого типа?

    @Vitsliputsli
    Это не просто подсказки, это контроль типов. То, что зная какой тип возвращается Шторм может подсказать варианты это побочное удобство. Основное же должно быть то, что конкретная переменная имеет определенный тип, а значит не нужны дополнительные проверки и методы будут лаконичны и конкретны. У вас пока, то ли объект, то ли массив, то есть каждый раз нужно проверять что это. Лучше бы сделать объект-коллекцию.
    Чтобы указать Шторму, что в конкретной переменной лежит только этот тип используется хинт, типа такого:
    /** @var User $user */
    но разумеется, он должен быть только в том коде где в $user лежит обязательно объект класса User и ни что иное.
    Ответ написан
    1 комментарий
  • Имеет ли значение порядок связывания таблиц левым соединением?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Будет ли разница в результате между двумя вариантами

    Да. См. fiddle
    CREATE TABLE a SELECT 'a' x UNION SELECT 'b';
    CREATE TABLE b SELECT 'a' x UNION SELECT 'c';
    CREATE TABLE c SELECT 'b' x UNION SELECT 'c';

    select a.*, b.*, c.*
    from a left join b using (x) left join c using (x)

    x	x	x
    a	a	null
    b	null	b

    select a.*, b.*, c.*
    from a left join (b left join c using (x))  using (x)

    x	x	x
    a	a	null
    b	null	null


    Есть ли какое-то правило, которое определяет порядок связывания таблиц?

    Да. Порядок связывания определяется требуемой логикой.

    PS. В качестве самостоятельного задания - найди истинную причину разницы.

    PPS. При абсолютной эквивалентности обеих форм - разницы нет.
    Ответ написан
    2 комментария
  • Как сменить дистрибутив Linux через SSH без доступа к веб-панели?

    @pfg21
    ex-турист
    не получится.
    сделать теоритически можно (убунту основана на дебиане и множество пакетов идентично), но потребуется хорошие познания в линуксе и много ковыряний.
    Ответ написан
    3 комментария
  • Изучение php с нуля для верстальщика?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Тут проблема скорее не в том, что 4-5 лет, а в том, что за редчайшими исключениями, любые видеокурсы - это отборный говнокод. Конкретно про Дмитрия Лаврика не скажу, но простая статистика говорит о том, что учить РНР по видеокурсам не стоит.

    Лучше потратьтесь на книжку, Джон Дакетт, PHP&MySQL. Там очень толково, на примерах даётся не только язык, но и все важные аспекты программирования - обработка ошибок, отладка, рефакторинг, структура приложения, SQL, обработка изображений, и куча всего остального. В последних главах весь материал даётся на примере создания простой но рабочей социальной сети.
    Ответ написан
    1 комментарий
  • Можно ли как то внедрить Laravel постепенно, например установить как основной каркас и в него уже встроить CMS?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    разработчики все время советуют перейти на новые технологии а если точнее на Laravel и с MySQL на PostgreSQL чтоб сайт не только стал современным но и работал шустрее.
    Переход с самописа на лару - хороший шаг, переход на постгрес нужен только если нужны конкретные задачи, решаемые постгресом лучше чем мускулем. Например, если у вас есть большой массив json данных, хранимых в соответствующих полях и требующий каких-либо выборок на основании этих полей, то есть по сути - если у вас база хранит ненормализованные сортируемые данные. В остальном выгода от перехода с мускуля на постгрес будет не видна без микроскопа.

    Если база нормально спроектирована, то модели лары могут практически налету подхватить таблички, останется только написать зависимости в моделях, пошаманить контроллеры и перевести хтмл в блэйды. Задача не смотрится как "работы на год", однако сложно сказать за сколько справятся ваши прогеры, тут сильно зависит от исходных данных, типа насколько правильно спроектирована бд, что есть сложного в функционале такого, что долго переносить в ооп/мкв, насколько хорошо разбираются ваши спецы в том что было написано в легаси проекте, насколько они хорошо знают лару...

    Обычно заявы по типу "мускуль гуано, надо менять на постгрес" без конкретных аргументов признак поклонников карго культа, а не профи. Так что я бы послушал аргументы для начала, а то потом окажется что там индексы только первичные на таблицах, про explain никто никогда не слышал, а выборки идут по тысяче в циклах, но виновата, конечно же, тормознутая бд.
    Ответ написан
    3 комментария
  • А return 0(1) * _getch(), есть ли смысл от такой конструкции?

    @Furax
    Похоже на неуклюжую попытку игнорировать результат вызова функции _getch() и не словить предупреждений.

    Синтаксис "0(1)" специфичен для Visual Studio. Clang 18.1.3 и GCC 13.3.0 его не понимают. Писать на C++ так, чтобы при переносе на другую платформу приходилось править синтаксис, - довольно плохая практика (обычно находится и так достаточно проблем, чтобы их ещё руками плодить). С другой стороны, функция _getch() объявлена в conio.h, которого на том же линуксе нет, поэтому, возможно, переносимость и не была целью.

    Кстати, за более чем 15 лет на C++ вижу такой синтаксис впервые. Повод задуматься о том, насколько он будет понятен следующему разработчику.
    Ответ написан
    1 комментарий
  • Можете посоветовать какой-нибудь задачник по патернам проектирования?

    @Mercury13
    Программист на «си с крестами» и не только
    Задачник невозможен, потому что…
    1. Паттерны проявляют себя в крупных программах. Даже 2000 строк можно написать по наитию.
    2. Нет единого ответа. И как вы будете сверяться, верно вы сделали или нет?
    3. Сильно зависит от языка: например, идиома pimpl — это чистый Си++.
    4. Даже зависит от того, библиотека встроенная или внешняя: внешние библиотеки в низкоуровневый код всегда стараются вносить очень осторожно.

    Пример: нам надо включать-выключать лог в консольной программе, простейший вопрос. Варианты…
    1. Просто переменная isLoggingOn, которая включает этот самый лог.
    2. Одиночка-стратегия-null object.

    И тут появляется вопрос: а что делать, если у нас тут ещё и форматирование на манер printf? Где находится утилита форматирования: в «волшебном круге» интерфейса Logger или нет? А если нет — то можно придумать модуль-утилиту за пределами этого «волшебного круга»? А если пишем на Си#, может, этот модуль-утилита — это метод-расширение? А если пишем на Си++, может, вообще можно не заморачиваться из-за того, что связанные с std::format функции шаблонные и если ни одна не расшаблонилась — с нас и взятки гладки?
    Ответ написан
    Комментировать
  • Вендинг: как создать ПО для собственного аппарата?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Есть разные варианты реализации - зависит от требований к аппарату и финансовых возможностей. Самый простой вариант: обычный х86 ПК на mini-ITX плате с виндой или линуксом внутри. Дополнительные девайсы подключаются по USB/Ethernet и работают через стандартные драйверы. Вариант чуть более сложный - на базе малинки/апельсинки с линуксом. Экран - любой встравиваемый с тачем и HDMI. Возможные проблемы - надо подбирать дополнительные девайсы, которые хорошо и адекватно работают под линуксом и для которых есть драйверы. Для удалённого управления используется стандартный сотовый модем. Управление - SSH + VNC для просмотра и контроля изображения. Девайс туннелируется в отдельную приватную сетку. ПО обычно в виде стандартной ХТМЛ страницы, отображаемой в браузере. Если приложение может работать без интернета - то через локальный веб-сервер. Либо хромиум/фаерфокс в киоск режиме либо NWJS со всем уже встроенным. Самый замороченный вариант - планшет на андроиде в качестве основы экрана/монитора/тача, там может не всякий девайс получиться заставить работать. Дополнительных портов тоже не очень. Я делал ПО для всех этих трёх вариантов. Везде использовал NWJS. В т.ч. на планшете - он был с виндой и х86 вроде даже (ну вот так захотелось клиенту). А для малинки делал даже готовую сборку дистрибутива линукса и упаковку в готовый образ со всеми настройками и ПО - его только залить на флешку, подключить и девайс готов к работе.
    Еще один важный момент, который следует учитывать - условия и место работы киоска. В пыльном месте - воздушные фильтры в корпус с минимальным количество отверстий и везде пассивное охлаждение. На улице - требуется промышленное исполнение оборудование, иначе слишком дорого будет ездить ремонтировать его из постоянных сбоев и поломок. В какой-нибудь деревне или промышленном районе - встроенный ИБП, несколько модемов или мультисим для связи. И т.д. и т.п.
    Ответ написан
    3 комментария
  • Вендинг: как создать ПО для собственного аппарата?

    @SunTechnik
    Ответ написан
    Комментировать
  • ИИ на стадии обучения программированию. Стоит ли?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Обучение - это формирование связей в тканях мозга, поэтому оно больше похоже на накачивание мышц, а не на загрузку файлов на флешку. И происходит это, как и с накачиванием мышц, только под нагрузкой. Нельзя нарастить бицуху, если гантели будет тягать робот. Нельзя научиться программированию, если задачи решает ИИ.
    Ответ написан
    Комментировать
  • Можете помочь с установкой Wubuntu?

    NVidia не пускает вас скачать свои драйверы.
    Используйте VPN

    Но смысла особого в использовании именно в "Wubuntu" нет, используйте обычные версии: Ubuntu/Kubutu/Xubuntu.
    Ответ написан
    Комментировать
  • Как в ubuntu смотреть, какой пользователь что делал?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    zver - наш воображаемый пользователь-зверь.

    1. Какой пользователь в какое время заходил?

    - last - история входов.
    - last zver - история входов зверя.
    - lastb zver - история неудачных входов зверя.
    - last zver | grep "Jan 21" - история входов зверя за 21 января сего года.
    - last -s -7days zver - история входов зверя за последние 7 дней.
    - last -s 2025-01-15 -t 2025-01-21 zver - история входов зверя за 15-21 января 2025 года.

    2. Действия того или иного пользователя?

    - cat /home/zver/.bash_history - история команд зверя.
    - who -u - показывает активных пользователей (терминалы и время входа).
    - ps -u zver - показывает список активных процессов зверя.
    - sudo iotop -u zver - мониторинг ввода вывода пользователя зверя (в режиме реального времени).
    - sudo iftop -f "src user zver" - показывает сетевой трафик зверя.
    - sudo tail -f /var/log/syslog | grep zver - просмотр действий зверя в реальном времени.
    - sudo journalctl -f | grep zver - отслеживание действий зверя в реальном времени (если используется systemd).
    - sudo lsof -u zver - какие файлы открыты у зверя.
    - find /home/zver -type f -mmin -60 - какие файлы изменил зверь за последний час.
    - stat /home/zver/nomera-devchonok.txt - показывает подробности что делал зверь с файлом стратегического назначения.

    3. Если пользователь пользовался sudo -i, sudo -s, sudo su, как посмотреть, что он делал под этими оболочками?

    - sudo grep zver /var/log/auth.log - история команд (втч. под sudo) зверя.
    - sudo zgrep zver /var/log/auth.log* - просмотр истории команд зверя из текущих и архивных логгов.
    - sudo aureport -x --summary - показывает сводку команд (втч. под sudo).

    Расширенный мониторинг зверей - auditd и еще.
    Ответ написан
    2 комментария
  • Какой использовать стек для написания онлайн сервиса управления производством?

    @rPman
    Я знаю, очень часто у компании нет нескольких миллионов рублей, что бы заплатить сторонней компании на атусорсе, что бы реализовать свои хотелки, к тому же, выбрав компанию разработчика, вы подсядете на его вендорлок (искусственно созданные усложнения, затрудняющие поддержку другими разработчиками) и сменить уже почти не получится, а зная это, компания будет требовать даже за простую работу высокую стоимость и дальше.

    Правильный подход, любой компании, где работает от порядка 100 человек, выращивать внутри свой отдел по разработке и поддержке своего внутреннего ПО. К сожалению очень сложно убедить руководство компании нанимать для этого готовых специалистов, которые, временами (по нескольку месяцев), не будут иметь работы в принципе и в лучшем случае будет нанят один или несколько человек, совмещающие должности, да еще и без значительного опыта. Именно поэтому я сказал выращивать - выбирать желающих среди своих сотрудников с малым опытом но не совсем новичков конечно, пусть совмещают.

    Готовое решение никогда не будет полностью готовым! Всегда в нем будет требоваться что то доработать под нужды организации. Именно на этом (и не только) зарабатывают 1С разработчики, коробочная версия продукта, с хорошей поддержкой законодательства и возможностью доработки... только уж дорого получается.

    p.s. задачу нужно начинать с проведения анализа, составления ТЗ (даже если кажется что это простенькая задача),.. и где то в самом низу можно подумать о выборе технологих и фреймворков, уже после того как уже есть люди, которые будут готовы это решать и в них разбираются

    Если все же хотите ответ на вопрос - выбирайте веб технологии. Работа на клиентских устройствах в браузере решит проблемы совместимости с железом. Если выберите устаревшую но не потерявшую актуальность технологию генерации html на бакэнде, то требования к клиентскому железу будут еще и самые низкие (на самом деле можно писать на javascript интерфейсы для браузера правильно, эффективно и не сильно сложно, но выросло огромное количество специалистов, замусоривших рынок катастрофическим оверинженерингом, и мне кажется уже и не помнят что можно просто делать все).

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

    @Drno
    Потому что правильно использовать режим киоска на линукс)
    Ответ написан
    Комментировать
  • Как настроить ассоциацию типа файлов к программе в Astra Linux?

    @SamDurak Автор вопроса
    Adamos Спасибо!
    полное решение чуть иное.
    в Astra Linux 1.8.1.12 игнорируется пользовательская база типов файлов, поэтому нужно добавить новый тип в общесистемную....
    В файл (имя на ваше усмотрение) /usr/share/mime/packages/drawio.xml закидываем содержимое, чтобы определить новый тип mime на основании расширения файла
    -> после, обновляем базу данных "update-mime-database /usr/share/mime"
    -> закидываем в секцию [Default Applications] файла ~/.config/mimeapps.list сведения ассоциации (или общесистемный "/etc/xdg/mimeapps.list" я использовал пользовательский т.к. оно работает, и мне так показалось правильней)
    text/drawio - это мой из головы придуманный не присутствующий в БД mime тип

    sudo -s
    cat << EOF > /usr/share/mime/packages/drawio.xml
    <?xml version="1.0" encoding="utf-8"?>
    <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
        <mime-type type="text/drawio">
            <comment>File drawio</comment>
            <comment xml:lang="ru">файл drawio</comment>
            <glob pattern="*.drawio"/>
        </mime-type>
    </mime-info>
    EOF
    update-mime-database /usr/share/mime
    exit
    nano ~/.config/mimeapps.list


    в mimeapps.list добавляем в формате
    [Default Applications]
    .....
    <наш mime тип>=<название файла desktop для запуска приложения который хранится к примеру тут ~.local/share/applications/fly/> получилось так:
    text/drawio=drawio-x86_64-25.0.2.AppImage.desktop

    Поддержке астры о решении чур не рассказывать =))) а то они не знают как у них это работает....
    Ответ написан
    1 комментарий
  • Направления создание клона Minecraft?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Освоить базовый синтаксис русского языка.
    Ответ написан
    1 комментарий
  • Существуют ли эталонно красиво написанные программы?

    @Everything_is_bad
    Беда в том, что довольно трудно найти хорошо написанный код, который можно было обозреть целиком.
    бесполезное занятие, больше похоже на прокрастинацию, короче пока сам не начнешь понимать какой код "красивый", какой нет (а это только когда сам напишешь кучу кода), толку от рассматривания не будет.
    Ответ написан
    Комментировать
  • В чем различие между phpMyAdmin, MySQL workbench и Microsoft SQL Server?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это поговорка "В огороде бузина, а в Киеве дядька" по-айтишному.

    • Microsoft SQL Server - это сервер. То есть программа, которая постоянно висит в памяти и принимает запросы от клиентов. Условно говоря - то, что и называется базой данных. Ну или точнее - СУБД, системой управления базами данных
    • MySQL workbench и phpMyAdmin - это клиенты, то есть программы, которые могут посылать запросы на сервер. Но на Microsoft SQL Server они посылать запросы не могут, потому что работают с другим сервером - MySQL.
    • при этом отличия между MySQL workbench и phpMyAdmin минимальные - обе являются графическими клиентами для СУБД MySQL, позволяя администрировать базу данных, редактировать таблицы в визуальном редакторе и выполнять SQL запросы. Только первое это десктопная программа, а второе - убогий веб-интерфейс, которому для работы нужен веб-сервер. И вместо которого всегда надо использовать нормальный клиент, например DataGrip, ну или хотя бы тот же Workbench.
    Ответ написан
    5 комментариев