Задать вопрос
  • Как скомпилировать программу linux?

    hint000
    @hint000
    у админа три руки
    Есть такой код (не мой)

    Что я делаю не так?
    1. вы не даёте ссылку на источник кода, а это могло бы упростить разбор.
    2. вангую, что этому коду лет десять, может быть меньше, может быть больше. Давайте посмотрим, какие версии ядра Linux были поддерживаемыми лет 10 назад; а это были версии 2.6.x и 3.x.x; версия 4.0 впервые появилась в 2015 г., версия 5.0 - в 2019 г. Уже поняли, на что я намекаю? Вы пытаетесь подсунуть компилятору исходники ядра одной из последних версий, на которой этот код, возможно, никто вообще не тестировал. Сколько там изменений было за десяток лет... Короче, пробуйте его скомпилировать вместе с исходниками 3.x. Если ошибок будет хотя бы меньше - уже кое-что.
    Ответ написан
    Комментировать
  • Что эффективней, чтение из файла или массив?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос не глупый а вполне себе хороший.

    Его плавное развитие приводит к концепции баз данных. Самое главное что можно сказать тезисно это
    1) Пока памяти хватает (массив) - используй смело память
    2) Диск - больше и дешевле памяти
    3) С памятью работать легко. С диском - очень неудобно и надо обрабатывать IOExceptions почти всегда.
    Диски внезапно полны сюрпризов. Могут быть сетевыми дисками.
    4) Разные диски имеют скорость на порядки разную.
    5) Диски ведут себя очень плохо на random access. От этого даже метрика IOPS появилась.
    Ее очень любят обсуждать админы баз данных.
    6) Существуют структуры данных которые спецом создавались только для дисков (B+Tree)
    7) Диск - переживает выключение питания.
    8) Самые разумные решения - сочетают в себе и диск и память в тех частях кода где это нужно.
    9) Есть интерфейсы программирования которые виртуализирут диск как память. Этим пользуется
    SQLite например.
    10) Диск может достигать очень высокой последовательной скорости чтения или записи в файл
    при условии отсутствия конкурирующих записей в данный момент. Этим пользуются в БД
    для журналирования событий.

    В принципе если современный программист просто будет использовать только оперативную память
    то никто ему не сможет ударить по рукам или подойти с какой-то метрикой и чего-то там измерив
    сказать что он неправ. Тут уж только падения по OOM и потери информации и performance issues
    могут быть каким-то значимым аргументом.
    Ответ написан
    3 комментария
  • Как сделать поиск который понимает суть запроса?

    REZ1DENT3
    @REZ1DENT3
    web-developer
    Смотри в сторону томита парсера, который умеет извлекать семантику из предложения.
    Исходный код открыт: https://github.com/yandex/tomita-parser
    Пример простой семантики: https://github.com/yandex/tomita-parser/blob/maste...
    Ответ написан
    4 комментария
  • Как настроить формат даты и времени для анализа логов в goaccess?

    ky0
    @ky0 Куратор тега Системное администрирование
    Миллиардер, филантроп, патологический лгун
    date-format
    The date-format variable followed by a space, specifies the log-format date containing any combination of regular characters and special format specifiers. They all begin with a percentage (%) sign. See `man strftime`.

    https://goaccess.io/man#custom-log

    %b
    The abbreviated month name according to the current
    locale. (Calculated from tm_mon.) (The specific names
    used in the current locale can be obtained by calling
    nl_langinfo(3) with ABMON_{1–12} as an argument.)

    https://man7.org/linux/man-pages/man3/strftime.3.html

    Весь мир у вас в руках, а вы на Тостере ответы ищете...
    Ответ написан
    1 комментарий
  • Как работает система безопасности ИТ компаний?

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

    2ord
    @2ord
    1. Есть код, что делает етот код

    Собирает контейнер под заданным тегом и с заданными аргументами. Кстати, символ @ лишний.
    Всё остаётся локально до тех пор, пока не будет выполнена команда push для заливания на hub.docker.com или другие репозитории.

    2. Откдуа ми тянем репозиторий: project_name/php-full:latest ?
    ничего не тянем. Это собирается локально. Необходим файл Dockerfile, который обычно располагают в корне проекта.
    Ответ написан
    2 комментария
  • Как правильно просить повышения зарплаты?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Всё считающие, что пузырь ИТ сдулся, должны работать ещë усерднее без всяких повышений, а то вдруг зарплату наоборот срежут или вообще сократят.
    Ответ написан
    Комментировать
  • Почему сайт медленно грузится?

    Kleindberg
    @Kleindberg
    Full stack
    Помимо выше сказанного, добавлю, что мне очень помог плагин Code Profiler Pro - он делает аудит сайта и показывает, какие плагины на сайте работают медленнее всего и в чём именно ошибки.

    А так советы будут стандартными:
    1. Выбрать хостинг получше. Если сайт заточен под одну страну, то хостинг брать в той же стране. Мы используем псевдо-VPS, а у вас скорее всего обычный shared-хостинг?
    2. Перейти на PHP 8.2 и всегда следить за последними версиями.
    3. Поставить и настроить CloudFlare (хотя если вы из РФ и сайт только для своих, то лучше не надо).
    4. Настроить кэширование на хостинге: Redis Object Cache, WP REST API Cache, WP-Rocket и так далее.
    5. Пересжать все фото (вручную через JPEGMini или TinyPNG либо автоматически с помощью Jetpack или сторонние сервисы CDN).
    Ответ написан
    Комментировать
  • Программирования учат или применяют?

    Griboks
    @Griboks
    Всё неправильно, потому что вы видео смотрели на ютубе. А надо было в тиктоке - тогда бы сразу выучились на джуна после просмотра.
    Ответ написан
    5 комментариев
  • Amazon SES и жалобы от mail.ru. Как не попасть в бан от Амазона?

    @mrwtf Автор вопроса
    >Возможно, не в реальном времени, и вы увидите это на след. день?

    Уже несколько дней прошло,пока изменений не увидели.

    >я бы обратился в их поддержку с примерами писем и жалоб
    Так и попробуем сделать.

    >возможно стоит вместо Mautic попробовать какой-то российский сервис

    Не очень хотелось бы..но на крайний случай порекомендуем рассмотреть этот вариант.
    Спасибо!
    Ответ написан
    Комментировать
  • Каким образом узнать ImageId Ubuntu 20.04?

    @mureevms
    aws ec2 describe-images \
        --filters \
           "Name=owner-id,Values=099720109477" \
           "Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-*-20.04-*-server-*"  \
           "Name=architecture,Values=x86_64" \
           "Name=creation-date,Values=2023-*" \
        --query 'Images[*].[CreationDate, ImageId]' \
        --region us-east-1 \
        --output table \
        | sort

    Последняя строка в выводе - искомый AMI
    Обратите внимание на параметр region. В разных регионах будет разный image-id.
    owner-id = 099720109477 это Canonical

    Вспомнил о сервисе поиска AMI на сайте ubuntu, там можно отфильтровать по параметрам, в качестве результата выводится последний созданный образ https://cloud-images.ubuntu.com/locator/ec2/
    Ответ написан
    Комментировать
  • Как лучше хранить журнал в долгосрочной перспективе?

    Stalker_RED
    @Stalker_RED
    По сути три больших направления с кучей мелких ответвлений
    1. хранить текстовый лог в отдельном файле/сервисе/логохранилище
    2. хранить лог действий юзеров в отдельной таблице (встречал один проект, где лог действий был в десятки раз больше, чем сами данные, ага).
    3. хранить в той-же таблице предыдущие записи. То есть при редактировании INSERT, а не UPDATE, при этом автоматически проставляется время и автор, а при выборке просто берете последнюю по времени версию.

    Это самый удобный путь, и самый простой для внедрения - очень простой откат, удобное сравнение изменений. Из минусов - раздуваете таблицу с данными, но это не проблема если записей не много или изменения редки.

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

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

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

    Техническая часть. Очевидно что нужна еще одна таблица. С датой аудита. С реквизитами пользователя который делал бизнес-операцию. И две версии данных. "До" и "после" изменения. Данные можно хранить в денормализованном формате (XML или Json) для простоты схемы.
    Ответ написан
    4 комментария
  • Что особенного в IP адресе 8.8.8.8?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Многие провайдеры при истощении баланса перенаправляют все клиентские http-запросы на свою страничку с уведомлением о необходимости оплаты и каким-нибудь эквайрингом. Очевидно, что для их работы нужен работающий DNS, а зачастую ещё и доступ к CDN. Провайдеры поумнее оставляют доступ к своему DNS и запросы к CDN тоже через себя проксируют, но некоторые не заморачиваются и просто оставляют часть доступа в дикий интернет.
    Ответ написан
    3 комментария
  • Как сделать аутентификацию исключительно через SSH ключ?

    Нет.
    А в чём собственно безопасность? Токен можно выпустить только если залогиниться в твой аккаунт на сайте.
    Если злоумышленник в него залогинился - он легко может добавить свой SSH ключ или вообще коммитить через UI.
    Ответ написан
  • Какую key-value БД использовать с данными в 10 млрд строк записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.

    1) У меня устойчивое дежа-вю. Периодически в топик заходят люди с именно этим вопросом. Разница только в количестве. Кому 1 млрд. Кому 10. Можно также поискать и слинковать эти вопросы в один большой вопрос.

    2) MySQL который указан в тегах - нормально справляется с этой задачей. Он и не такое число строк
    умеет хранить. И если взять MariaDb - там есть куча новых engines которые можно крутить для тюнинга
    именно скорости чтения. Разумеется жертвуя чем-то другим. Транзакциями и записью например.

    3) Непонятно что такое минимальное время? Если использовать дисковую БД типа MySQL то деградация времени
    поиска будет примерно зависеть от логарифма количества строк. Тоесть деградация будет но очень медленно.
    Для 10 млрд индекс по key будет содержать порядка 4-5 уровней BTree дерева. Тоесть дисковой системе
    нужно будет сделать до 5 или до 6 рандомных чтений (если нужные данные лежат в таблице). Это достаточно
    быстро для того чтобы моргнуть глазом за это время. Рандомное чтение любого блока из магнитного диска
    класса SATA-3 занимает порядка 20 милисекунд. Тоесть для 5 уровней - это 100 милисекунд. Для дисков
    класса SSD и это время можно уже считать меньше милисекунды. Точно я не знаю надо мерять.

    Испортить это время может сетевой лаг который в данной задаче мы просто не учитываем. Считаем что сеть идеальна.

    4) Непонятно зачем здесь указан Redis. Его задача не хранить 10 млрд а хранить только горячие
    ключи по котороым идет очень частый доступ. Если автор хочет In-memory хранение - то время можно
    еще сильнее улучшить. Его можно свести практически до нуля (я вангую несколько микро-секунд)
    но придется прикупить планок памяти побольше и посчитать сколько памяти
    надо для 10 млрд key/values неизвестной длины. Вообще крутить регулятор в направлении
    микро-секунд нет особого смысла т.к. другие звенья вашего стека (приложение и сеть) могут
    быть на порядки медленнее а это вообще нивелирует всю пользу от такой оптимизации.
    Ответ написан
    41 комментарий
  • Как узнать, для какого процессора предназначен файл?

    bingo347
    @bingo347
    Crazy on performance...
    readelf -h /home/usr/qt-android/mylib.so
    Ответ написан
    Комментировать
  • Как защитить админку?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Любая авторизация должна выполнятся на строне сервера, всё что на стороне клиета обходится на раз!
    Как именно - дело Вашею Есть десятки систем авторизациию Имя + пароль - самая распостраненная
    Ответ написан
    1 комментарий
  • Как проложить путь в devops?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    У Девопс инженеров в основном работа удаленная и должна быть, так как в отличие от чистых сисадминов, девопс инженеры не всегда работают напрямую с железом. Но зависит от проекта.

    Девопс инженер - обычно опытный админ, поэтому конечно, было бы лучше сперва поадминить. Но опять таки, зависит от проекта. Где-то может быть куча "джуниорской" работы, которую нужно разгребать. В этих случая я бы посоветовал искать крупные компании, где девопс это целый отдел, а не 1-2 человека, тогда больше вероятность увидеть там джуниор-девопс вакансии.

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

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В Linux есть замечательная утилита rename. Ну, точнее, их две: одна входит в пакет util-linux, другая - скрипт на базе perl-модуля File::Rename. В deb-дистрибутивах нужный нам скрипт устанавливается в составе пакета rename и также имеет имя второе file-rename (а версия из util-linux имеет имя rename.ul). В других дистрибутивах может быть иначе, поэтому смотрим внимательнее параметры запуска (можно запустить rename без параметров и убедиться, что это нужный вариант).

    Синтаксис предельно простой: rename регулярное_выражение_замены_perl имена_файлов

    Синтаксис rename.ul для сравнения: rename что_заменить на_что_заменить имена_файлов

    Вот что можно сделать для решения задачи (в предположении, что других точек, кроме как перед расширением, в имени файла нет):

    rename 's/-\w+\././' *

    Этот скрипт намного удобнее многоэтажных однострочников, да и пригодится в жизни ещё не раз.
    Ответ написан
    7 комментариев