• Как запустить php и nginx в одном контейнере?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    PHP и Nginx незачем запускать в одном контейнере. Что бы контейнеры были связаны друг с другом, нужно их объединять в docker-compose.yml.
    Ответ написан
    2 комментария
  • В postgresql параметр max_wal_size - размер всех сегментов или одного?

    Melkij
    @Melkij
    PostgreSQL DBA
    Ни то ни другое.

    max_wal_size - пороговое значение, при срабатывании которого начинаем checkpoint. Ближайший родственник checkpoint_timeout, только checkpoint_timeout вызывает checkpoint по прошествии указанного времени с прошлого чекпойнта, а max_wal_size - после записи такого объёма WAL. Работают оба, чекпойнт начинается смотря что произойдёт раньше.
    Ответ написан
    7 комментариев
  • Какой вариант организации домашней виртуализации выбрать?

    @rPman
    Зачем? очень важный вопрос, зачем платить ресурсами (память, процессор, накладные расходы дает даже паравиртуализация lxc) да еще и устраивать многоуровневые системы для хранения данных?

    Все активно забывают, что доступ к файлам по сети в домашних конфигурациях (это 1гбит) - медленно, больше сотни мегабайт в секунду не получится, плюс заметный оверхед на протоколы (самба дает заметный, особенно это видно когда с мелкими файлами работаешь), плюс нагрузка на процессор NAS (например iscsi выше нагружает чем простой nbd).

    Вторая неприятность, большие системы виртуализации типа xen могут вообще не давать удобного (т.е. штатного интерфейса) механизмы работы с локальными образами или с образами nbd (т.е. работать можно но только как ручные настройки, т.е. возвращает в ковыряние в конфигах вместо того чтобы в интерфейсе выбрать что либо).

    Как это ни странно, самая удобная система виртуализации для домашнего пользователя (нет кластера и его фишек) - это VirtualBox

    Так же штатный libvirt имеет свой интерфейс и он так же рекомендуется как основной инструмент виртуализации (к нему доустанавливаются поддержка lxc а так же сетевых накопителей и становится совсем неплохо), так же для домашнего использования без кластера и его фишек
    Ответ написан
    Комментировать
  • Как подключить PostgreSQL к react-app вебсайту?

    vabka
    @vabka
    Токсичный шарпист
    Суть вопроса, как мне делать INSERT и SELECT запросы в вебсайте?

    Никак. Эти запросы должен делать бэкенд.
    А сайт должен делать http запросы к нему, например, при помощи функции fetch
    Ответ написан
    Комментировать
  • Почему возникает утечка памяти в php-fmp?

    @Vitsliputsli
    Утечка - это когда процесс не пользуется памятью, но и не высвобождает. По вашему описанию, php-fpm прекрасно использует память для других скриптов, а также высвобождает при необходимости. Т.е. это не утечка.

    Чтобы утечка проявила себя более явно установил memory_limit = 1G

    Выделение памяти операционкой это медленный процесс, поэтому при возможности выгоднее запросить побольше, вы выставили лимит в 1G, почему бы не зарезервировать сразу 18%.

    В общем, если без перезапуска php-fpm рано или поздно получите ошибку недостатка памяти, тогда можно будет говорить об утечке.
    Ответ написан
    6 комментариев
  • Чем различаются версии Postgres 13, 14, 15?

    vabka
    @vabka
    Токсичный шарпист
    В документации же русским по белому написано:
    PostgreSQL 15 содержит много новых возможностей и улучшений, в том числе:
    • Поддержка SQL-команды MERGE.
    • Выборочная публикация содержимого таблицы в рамках логической репликации с возможностью указывать списки столбцов и фильтры строк.
    • Больше возможностей для использования сжатия и поддержка сжатия Zstandard (zstd). В том числе реализована возможность сжатия на стороне сервера при создании копии с помощью pg_basebackup.
    • Поддержка структурированного вывода журнала сервера в формате JSON.
    • Улучшения производительности, в частности, оптимизация операций сортировки в памяти и на диске.

    https://postgrespro.ru/docs/postgresql/15/release-...


    PostgreSQL 14 содержит много новых возможностей и улучшений, в том числе:

    • Хранимые процедуры теперь могут возвращать данные через параметры OUT.
    • Реализованы описанные в стандарте SQL параметры SEARCH и CYCLE для общих табличных выражений.
    • Операцию обращения по индексу теперь можно применять не только к массивам, но и к любому типу данных, для которого она имеет смысл. В этом выпуске такие операторы добавлены для типов jsonb и hstore.
    • Диапазонные типы были дополнены мультидиапазонными, позволяющими представлять несплошные диапазоны данных.
    • Проведена большая работа по улучшению производительности параллельных запросов, обработки многопоточной нагрузки, секционированных таблиц, логической репликации и процедуры очистки.
    • Изменения в индексах-B-деревьях теперь обрабатываются более эффективным методом, уменьшающим замусоривание индексов.
    • Процедура VACUUM автоматически становится агрессивнее и пропускает несущественные операции очистки в случае приближения базы данных к моменту зацикливания идентификаторов транзакций.
    • Расширенную статистику теперь можно собирать по выражениям, что позволяет получить лучшие планы для сложных запросов.
    • Библиотека libpq теперь поддерживает конвейерную передачу нескольких запросов, что позволяет ускорить получение результатов через сетевые соединения, которым свойственны большие задержки.


    https://postgrespro.ru/docs/postgresql/14/release-14
    Ответ написан
    Комментировать
  • Какой диск 2-4 ТБ взять для хранения файлов с гарантией 5 лет?

    @Drno
    гарантии чего?
    любой выбирайте у которого есть такая гарантия - например WD black. у них гарантия 5 лет. в случае выхода из строя Вы можете вернуть диск и Вам его обменяют.

    Если Вы про гарантию сохранности файлов - её никто никогда не дает, делайте бэкапы
    Ответ написан
    Комментировать
  • Как сделать сертификаты для поддоменов?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Если портятся сертификаты - лечить нужно причину порчи сертификатов, а не вот это вот все!
    Ответ написан
    Комментировать
  • Что означает ошибка "Error: relocation ... cannot be used with -shared"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что означает ошибка «Error: relocation ... cannot be used with -shared»

    Эта ошибка значает, что такой объектник содержит код, работа которого зависит от адреса по которому он будет размещён. Так называемый position-dependent code. Альтернатива -- position-independent code, такой, который выполняется одинаково, независимо от адреса, а все данные и константы, которые зависят от адреса, если таковые есть, вынесены из кода в отдельный изменяемый сегмент. Такой код генерируется компилятором если его вызывать с правильным флагом (например gcc -fpic). Из-за того что динамические библиотеки могут быть загружены в процесс по любому адресу существует требование, что код в них должен быть position-independent. Поэтому объектники скомпилированные как position-dependent обычно не могут быть слинкованы в динамическую библиотеку.

    В данном случае запись о релокации с типом R_AARCH64_TLSLE_ADD_TPREL_HI12 говорит (частью TLSLE, где LE означает Local Executable) о том, что код объектника в котором она находится был намеренно собран с рассчётом на то, что объектник будет частью исполняемого файла, а не динамической библиотеки. Здесь можно почитать об отличиях моделей адресации TLS, в частности о модели Local Exec в разделе 4.4.
    Ответ написан
    Комментировать
  • Как шифровать текст в python?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    способ расшифровки должен быть непопулярным.

    А вот это уже смешно. Чем тебя не устраивают популярные способы типа RSA?
    Ты, видимо, не слышал о термине Security through obscurity , на котором обожглись многие и ты хочешь повторить их путь
    Ответ написан
    10 комментариев
  • Как шифровать текст в python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Был такой вредный стрик Керхгофс. И он как-то придумал сет законов касающихся инфо-безопасности. На основе их сегодня работает почти вся криптография. Вкратце основной момент - замена алгорима(ключа) шифрования в любой системе должна быть очень быстрой и легкой. И второй момент - злоумышленник обычно знает систему изнутри. Он знает исходный код. Возможно он - бывший сотрудник.

    Вот исходя из этих принципов и проектируются надежные и безопасные системы. А если автор надеется на то что непопулярный алгоритм шифрования его спасёт - то он сильно ошибается. На этом погорели многие самоуверенные архитекторы. Они тоже надеялись что на незнании можно делать секрет. В принципе вся военная секретная переписка до 20 го века базировалась на предположении что противник не знает. А современная - уже считает что это не главное. А главное - как быстро мы сможем заменить скомпрометированный ключ на новый. И эта замена как раз и есть замена алгоритма. Потому что ключ в крипторгафии и это и есть секретность. А сами алгоритмы вообще ни разу ни секретных. Это кстати - требование. Под сертификацию идут обычно публично известные алгоритмы и их обсуждают. Их анализируют. Их брутфорсят. И только благодаря этому процессу они и являются надежными.
    Ответ написан
    Комментировать
  • Как можно обойти проблему и решить проблему?

    @Wexter
    1. Восстановить из бекапа
    2. Переустановить
    Ответ написан
    Комментировать
  • Что происходит в момент добавления нового столбца в БД?

    Melkij
    @Melkij
    PostgreSQL DBA
    https://ru.stackoverflow.com/q/721985/203622

    Вот есть таблица с 1000 записей. В ней 9 колонок. На 3 из них есть индексы.

    На такой мелочи без разницы. Перезапись такой крохи штука быстрая.

    1. Возможно ли дозапись новой колонки в существующую структуру? Или под капотом происходит полное копирование всех данных в новую таблицу (табличное пространство?)

    В зависимости от конкретного alter table add column.
    Если вы добавляете add column score float default random() - то будем переписывать всю таблицу и перестраивать все существующие индексы.
    Если default с константой и у вас pg11 или новее - то обновим в системном каталоге описание таблицы, а саму таблицу трогать не будем.
    Если нет default (т.е. null) - то без оглядки на версию базы просто обновим описание таблицы и сами файлы таблицы трогать не будем.

    2. Происходит ли пересоздание индексов?

    да, если выполняется table rewrite

    3. Происходят ли какие-то еще важные для понимания сути работы в БД процессы?

    классическая история частых даунтаймов, что для операции нужна эксклюзивная блокировка. То есть для взятие блокировки не должно быть совсем никого, кто эту таблицу трогал в транзакции, начавшейся до alter table. Если у вас в это время работает какая-то аналитика на 10 минут или pg_dump - будут приключения, нужен statement_timeout
    Ответ написан
    2 комментария
  • Как удалить ненужные и добавить нужные кодировки MySQL8?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Во-первых, всё указанное - ни разу не кодировки. Это COLLATION - набор правил сравнения строковых значений.

    Во-вторых, убирать/удалять ничего не нужно. То, что не используется, ресурсов не потребляет.

    В третьих, добавление нужных кодировок и правил сравнения подробно описывается в документации:

    Adding a Character Set
    Adding a Collation to a Character Set

    Ну и вообще желательно изучить весь раздел Character Sets, Collations, Unicode.
    Ответ написан
    6 комментариев
  • Какую роль играют float и double в скобках?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Такая запись имени типа в скобках в выражении - это явное приведение типа. Тут вы указываете компилятору, что выражение надо преобразовать вот к такому вот типу (флоат, в данном случае).

    float нужен вам в начале, потому что вещественные константы имеют тип double. Поэтому у eps/2.0 и 1.0 в первом цикле имеют тип double, все вычесляется в double. Преобразовав одно из выражений в float вы получаете то, что вам надо. Без этого все вычисления идут в double и ответ находится не тот. На самом деле там float при сравнении все-равно расширяется до double но на результат сравнения это не влияет в данном случае.

    Еще, вместо явного приведения типов, можно поставить f после вещественных констант, чтобы указать компилятору, что это float:
    while (1 + eps/2.0f != 1.0f){

    Тогда вычисления будут во float и ответ будет правильный.

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

    Hivemaster
    @Hivemaster
    Админ, который хочет программировать
    В любой непонятной ситуации используй PostgreSQL.
    Ответ написан
    Комментировать
  • Порекомендуйте варианты построения и оборудования для ЛВС в строящемся административно-складском здании 1500м2?

    @Akina
    Сетевой и системный админ, SQL-программист.
    • Выделение отдельного помещения для размещения внешнего ввода (Интернет и телефонные линии), кросса, серверов и активного оборудования. Металлическая дверь, кодовый замок.
    • Три линии питания - две для питания оборудования, причём запитанные от разных лучей, или хотя бы от разных фаз, плюс одна для питания кондиционера (минимум 7 кВт), плюс дежурное освещение.
    • Система пожаротушения - газовая, углекислота или фреон. Порошок - нафиг, случись что, всё оборудование можно выбрасывать и закупать новое. Воды быть не должно в принципе - даже просто проходящих через помещение труб.
    • Обязательно стойка (или стойки). Лотки, органайзеры, включая органайзеры электропитания.
    • Обязательно бесперебойники - причём время удержания должно быть минимум часа полтора, причём с учётом рабочей деградации батарей.
    • СКС разводится от розеток возле рабочих мест и до патч-панелей стойки витой парой 5 или 5е категории, чистой одножильной медью, многожилка или омеднённый алюминий ни в коем случае. Какие-то промежуточные и местные коммутаторы - забудь как страшный сон. Прокладка - по запотолочным металлическим лоткам, последний метр в коробе, монтаж на встраиваемые в короб розетки (для рабочих мест в центре комнаты - напольные короба и встраиваемые в пол розеточные блоки). Прокладка до внешних камер соответственно проводом для внешней прокладки, розетки во влагозащищённых распаечных коробках (по опыту - минимум 100х150). С розетками внутри не жадничать - на одно рабочее место минимум 2 розетки (локальная сеть, телефон), плюс дополнительные для сетевых принтеров и для точек доступа, ну и учесть, что сотрудники любят переставлять мебель самым идиотским образом. Судя по чертежам и описанию - будет штук 200 розеток.
    • Коммутаторы - управляемые как минимум L2+, PoE для подключения точек доступа, видеокамер и IP-телефонов, обычные для подключения компов и сетевых принтеров. Модель не сильно важна, но лучше сразу иметь дохрена резервных портов, чем потом докупать. Клиентские порты гигабит однозначно. Но я бы рекомендовал брать с хотя бы парой 10-гигабитных портов. Вендор по вкусу (лично я бы ставил D-Link).
    • Маршрутизатор - согласен с предыдущими товарищами насчёт Микротика вменяемой старшей модели.
    • Точки доступа - лучше сразу брать комплект для бесшовного покрытия всего здания. Насчёт количества, размещения и необходимости внешних антенн вместо встроенных ничего не скажу - это только по месту решается.


    Ну по минимуму где-то так.
    Ответ написан
    6 комментариев
  • Potsgres 13 - как реализовать систему Master-Master?

    Melkij
    @Melkij
    PostgreSQL DBA
    Никак.

    Если очень хотите головной боли и новых аварий по ночам вместо того чтобы спокойно спать - возьмите какой-нибудь autofailover типа patroni и прочих.

    Критичная проблема фундаментальна - CAP теорема в целом и последствия split brain в частности.
    Ответ написан
    2 комментария
  • Как настроить nginx под 800 запросов в секунду?

    @maxtm
    Make money, not job
    сейчас в какой то момент при серверном рендеринге некоторые запросы провисают и nginx рвет соединение в итоге часть запросов к сайту падает.


    Даже голый инстанс nginx тяжело убить всего-лишь 800 рпс. Пусть это даже будет одноядерное гамно.
    Мне кажется, думать о тюнинге самого nginx пока рано, по опыту - 4-5к рпс на 1 ноду nginx не создает никаких проблем для обычного 2х ядерного DO'шного сервака за 15$.

    Проблема не веб-сервера, проблема бэкенда, который стоит за ним.

    Соединение рвется с кем? То что с клиентом - понятно, какой ответ отдает nginx, наверное 504?
    Рвет соединение с клиентом он скорее всего потому-что бэкенд отвалился. Кто отваливается из бэка?
    Если с пыхой - ковырять пыху.
    Если с нодой - ноду.

    Обрывать соединения nginx может по ряду причин:
    - connection timeout при общении с бэкендом
    - обрыв соединения с бэкендом
    - некорректный (ошибочный) ответ бэкенда
    - туева хуча ошибок при общении с клиентом (это опускаем)

    Обо всем этом nginx успешно пишет в свои логи, посмотрите что там происходит.
    Также, сам пых и ноду можно настроить логи на отладку.
    У пыхи есть трейсинг слоу-логов, логирование каждого запроса и прочее.

    Маны и бубень в руки. Удачи!
    Ответ написан
    2 комментария