• Можно ли с локального сервера отправить письмо под любым именем?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Можно.
    Но все нормальные почтовые сервера отправят его в помойку не глядя.
    Ответ написан
    4 комментария
  • Как передать в цикл for два аргумента из строки bash?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    while read addr; do
     telent $addr;
    done<имя_файла
    Ответ написан
    4 комментария
  • Как передать в цикл for два аргумента из строки bash?

    @mezhuev
    Системный администратор
    Установите необходимый разделитель через переменную $IFS.
    IFS=$'\n'
    for addr in $(cat filename); do
        IFS=' '
        telnet $addr
    done

    man bash

    Word Splitting
    The shell scans the results of parameter expansion, command substitution, and arithmetic expansion that did not occur within double quotes for word splitting.

    The shell treats each character of IFS as a delimiter, and splits the results of the other expansions into words using these characters as field terminators. If IFS is unset, or its value is exactly , the default, then sequences of , , and at the beginning and end of the results of the previous expansions are ignored, and any sequence of IFS characters not at the beginning or end serves to delimit words. If IFS has a value other than the default, then sequences of the whitespace characters space, tab, and newline are ignored at the beginning and end of the word, as long as the whitespace character is in the value of IFS (an IFS whitespace character). Any character in IFS that is not IFS whitespace, along with any adjacent IFS whitespace characters, delimits a field. A sequence of IFS whitespace characters is also treated as a delimiter. If the value of IFS is null, no word splitting occurs.

    Explicit null arguments ("" or '') are retained and passed to commands as empty strings. Unquoted implicit null arguments, resulting from the expansion of parameters that have no values, are removed. If a parameter with no value is expanded within double quotes, a null argument results and is retained and passed to a command as an empty string. When a quoted null argument appears as part of a word whose expansion is non-null, the null argument is removed. That is, the word -d'' becomes -d after word splitting and null argument removal.

    Note that if no expansion occurs, no splitting is performed.
    Ответ написан
    3 комментария
  • Инфраструктура открытых ключей SSH?

    @pfg21
    ex-турист
    вторая строчка поиска ssh удостоверяющий центр
    https://www.8host.com/blog/sozdanie-centra-sertifi...
    оно ??
    Ответ написан
    4 комментария
  • Как скомпилировать программу 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?

    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 ключ?

    vabka
    @vabka
    Токсичный шарпист
    Нет.
    А в чём собственно безопасность? Токен можно выпустить только если залогиниться в твой аккаунт на сайте.
    Если злоумышленник в него залогинился - он легко может добавить свой 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 комментарий