Задать вопрос
  • Как проверить есть ли str1 в str2?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    в баш можно заюзать регулярку в [[ ]]
    if [[ "$str1" =~ .*$str2.* ]]; then
      echo "ok"
    else
      str2="$str1$str2"
    fi
    Ответ написан
    1 комментарий
  • Как сгруппировать каталоги и подсчитать их размер?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    примерно так
    $ du -sb * |awk '{cmd="stat -c %z "$2" |cut -d\" \" -f1";cmd |getline z;close(cmd);print z" "$1}' |awk '{sum[$1]+=$2}END{for(i in sum)print i,sum[i]}' |sort |numfmt --to=iec --field 2 --padding=10
    2022-01-21        13M
    2022-11-02        17G
    2022-12-13       4,7G
    2023-01-15       388M
    2023-03-06       1,6G
    2023-04-01       1,6G
    2023-04-03       2,2G
    2023-04-04        13G
    2023-04-11       7,6G
    Ответ написан
    1 комментарий
  • Есть ли смысл делать анимацию без JS?

    neuotq
    @neuotq
    Прокрастинация
    Анимация = анимации рознь.

    Конкретный ответ со списком вы тут не увидите, это будет большая статья, со множественными "а вот тут", "но здесь" просто потому что многое зависит от контекста, задач, планирование.
    Главные рекомендации это не делать на js то, что отлично реализуется с помощью css. Этим к сожалению часто болеют многие фронтендеры, особенно из тех кто принципиально не любит вёрстку. Банальные примеры некоторые виды трансформаций объектов при булевых сменах какого параметра(условно навел/убрал наведения, вкл-выкл и тп).

    Но нужно иметь ввиду, что там где у вас выходит сложная логика, разные усложнённые сценарии, динамические параметры запуска и тп и тд. Без js естественно никуда.

    Поэтому просто зная возможности css, имея здравый смысл, вы будете видеть и знать где что использовать.
    К счастью css тоже в последнее время активно развивается давай нам всё больше возможностей.
    Поэтому - простая штука, что-то типа одноразовых анимации, простого повторения, туда сюда - подумать про css.
    Если к этому добавляются всякие реакции на сложные тайминги, старт-пауза перемотать остановить на промежутке и тп - js.
    Ну и безусловно разные сложные, многоходовки с завязкой друг на друга - однозначно js.

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

    SagePtr
    @SagePtr
    Еда - это святое
    Да, браузеры смогут оптимизировать анимацию средствами CSS и решать, с какой частотой её воспроизводить, в целях экономии ресурсов и батареи.

    При декларативном подходе (CSS) мы говорим браузеру, что именно сделать, а он уже сам решит, как именно сделать это оптимально для себя и для устройства, на котором он работает. При императивном подходе (JS) мы контролируем каждый шаг и не даём свободы, браузер вынужден делать то, что автор скрипта скажет, даже если ту же самую задачу он может решить лучше и оптимальнее него.
    Ответ написан
    Комментировать
  • Как реализовать запуск приложения через консольную команду?

    GavriKos
    @GavriKos
    Для первого - и в винде, и в линуксе для этого достаточно прописать путь к папке с исполняемым файлом в PATH - все терминалы (наверное все) именно там ищут "команды" (а точнее команда это и есть бинарь).
    Ответ написан
    1 комментарий
  • Запуститься ли сервер?

    yakovlev_13
    @yakovlev_13
    Шаманство, экзорцизм и некромантия.
    я профан в части серверов

    Вот тут надо задуматься об услугах профессионала. Вы как никак пол ляма хотите на это потратить.
    Ответ написан
    Комментировать
  • Как не переформатируя файл .docx заменить в документе строку при помощи bash из терминала в linux?

    karabanov
    @karabanov
    Системный администратор
    #!/bin/bash -e
    
    template="blanc.docx"
    student_list="ФИО.txt"
    output_dir="certificate"
    tmp_d="tmp_word"
    
    mkdir -p "$tmp_d" "$output_dir"
    
    unzip "$template" -d "$tmp_d"
    cp "$tmp_d/word/document.xml" .
    
    while read -r student_name; do
      echo -e "\n\033[0;32m${student_name}\033[0m"
      cp document.xml "$tmp_d/word/document.xml"
      sed -i "s/????/$student_name/g" "$tmp_d/word/document.xml"
      cd "$tmp_d"
      zip -r "../$output_dir/$student_name.docx" *
      cd ..
    done < "$student_list"
    
    rm -rf document.xml "$tmp_d"
    Ответ написан
    Комментировать
  • Почему в LIKE возвращает пустой результат?

    i229194964
    @i229194964
    Веб разработчик
    Данная проблема чаще всего возникает различия строк сравнения между PostgreSQL. Версия 15 может использовать другие настройки по умолчанию.
    В PostgreSQL сравнение строк зависит от настройки collation.
    Попробуйте изменить настройки collation для PostgreSQL 14, чтобы они соответствовали настройкам версии 15.
    return User::where("name", "LIKE", "%{$query}%")->collate('utf8mb4_general_ci')->get();
    Ответ написан
    2 комментария
  • Копирование одного диска на несколько, как ускорить?

    Melkij
    @Melkij
    PostgreSQL DBA
    попробуйте для начала dd if=/dev/sda | tee /dev/sdb /dev/sdc /dev/sdd > /dev/sdc
    сходу проверить негде, но не вижу причин почему бы это не работало.

    можно так
    dd if=/dev/sda | tee >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) > /dev/null

    чтобы был доступ к привычным опциям dd
    Ответ написан
    4 комментария
  • Как сделать так, чтобы при выполнении программа не закрывалась, а просила вводить значения дальше?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    #!/bin/bash
    select choice in "Текущий пользователь" "Данные о каталоге" "Запущенные процессы" "Выход"
    do
      echo "$choice"
      case "$REPLY" in
        1) echo $(users);;
        2) ls;;
        3) ps;;
        4) break;;
      esac
    done
    Ответ написан
    Комментировать
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Нет, оно того не стоит. Любая работа должна быть оплачена. Ибо сейчас напишешь за свой счет, а потом начальника скажет "о, отлично, молодец, можем теперь сэкономить на программистах и поддержке, у меня как раз знакомый ищет, ща его поставлю, а ты можешь быть свободен, заодно выпишу себе премию, во какой я молодец". Этот код решает задачи бизнеса. Если бизнес готов тратить на его поддержку и сопровождение деньги - то это проблемы этого бизнеса. Почему это наемный работник должен решать проблемы бизнеса за свой счет? Правильно сделать так: оформить все в виде какого-то документа с конкретными аргументами, цифрами, графиками и т.п. и выдать его начальству. Типа сейчас поддержка проекта стоит столько-то, приносит такие-то проблемы, переписать будет стоить столько-то, сопровождение нового будет столько-то, оно решает такие-то проблемы. И выдаете данный документ начальству. Можно даже в бумажном виде в нескольких экземплярах. А далее пусть у начальства голова болит.
    Ответ написан
    3 комментария
  • Как создать такой вывод в bash script?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    С чего начинать разбираться?

    man 7 inode -- обзор того, какие атрибуты есть у файлов
    man 1 mkdir -- создавать каталоги и назначать им разрешения
    man 1 touch -- создавать файлы и менять даты файлам и каталогам
    man 1 chmod -- менять разрешения файлам и каталогам
    man 1 ln -- создавать символьные ссылки
    Ответ написан
    7 комментариев
  • Как поставить пароль на архив tar/gzip?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Tar и gzip это очень старые утилиты. Им по 30-40 лет. И создавались они в те времена когда симметричное шифрование еще не было так развито.

    Но архивчик можно после упаковки зашифровать другими утилитами например openssl.
    openssl enc -in file.txt -out encypted_file.txt -e -aes256

    Я так делал когда шифровал бекапы oracle dbms.

    Если переписать чуть лучше скрипт - то можно объединить операции tar->gzip->openssl в один пайплайн
    без воздания промежуточных файлов.
    Ответ написан
    3 комментария
  • Как поставить пароль на архив tar/gzip?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB > $BACKUP_DIR/mysql.sql
    + tar -czvf $ARCHIVE $BACKUP_DIR


    Странное применение targzip в данном случае. совершенно бессмысленное.
    Юзай просто zip, у него есть -e (encrypt) опция, но там слабенькая защита. уж проще openssl, как указали в другом ответе.

    Чтоже касается tar. Весь смысл тар и gzip в том, что они умеют работать с потоком, а не файлом. Поэтому то, что вы сперва сохраняете в файл, а потом отдельно еще в tar/gz - бессмысленная работа, которая ничего не дает. Вдобавок и сам тар там не нужен, у вас же один файл.
    Поэтому можно сделать так:
    mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB | gzip > $BACKUP_DIR/mysql.gz


    и потом шифровать файл чем угодно.
    Или сразу:
    mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB | gzip | openssl enc -aes-256-cbc -out encrypted $BACKUP_DIR/mysql.gz.encrypted

    Пароль или руками или перенаправить
    mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB | gzip | openssl enc -aes-256-cbc -out encrypted $BACKUP_DIR/mysql.gz.encrypted<<<"mysecretpassword"
    Ответ написан
    Комментировать
  • Как объединить виртуальный бридж Docker и QEMU?

    hint000
    @hint000
    у админа три руки
    По идее так должно работать:
    $ echo allow docker0 > /etc/qemu/bridge.conf
    Так qemu узнаёт, в какой бридж добавлять виртуальные интерфейсы.
    Ответ написан
    1 комментарий
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос одновременно дебильный и нормальный.
    Автор просто не может нормально словами написать, чего хочет.
    Для современного поколения, воспитанного ютубой, это нормально.
    Если бы вопрос можно было задать с помощью слов "гы-гы", "круто, чувак" и смайликов, то у него бы все получилось.
    А пока приходится использовать интеллект на принимающей стороне, чтобы понять, что он там мычит.

    А мычит он не про сам шелл, а про используемый в нем скриптовый язык.
    И ответ получается очень простой - для некоторых задач Bash scripting language тупо подходит лучше. Не говоря уже про интеграцию скриптового языка баш в командную оболочку баш, какой никогда не добиться с помощью "обёрток".

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

    Так что да - или легаси, или тупо адекватность задаче.

    Апд. В ходе этой дискуссии я сообразил одну очень важную вещь. Язык программирования по определению является вторичным по отношению к командной оболочке. Главное в баше - это все-таки возможность запускать команды и позволять им взаимодействовать друг с другом. А язык уже построен вокруг этой основной задачи. Если вы попытаетесь вкрячить этот функционал в какой-то из языков программирования общего назначения, вы испортите и оболочку, и язык.
    Ответ написан
    21 комментарий
  • Какую современную систему стейт-менеджмента лучше выбрать для React-проекта с "нуля"?

    Все сильно зависит от специфики вашего проекта, но по своему опыту могу сказать, что ФП хранилища в проекте с бизнес-логикой - зачастую хуже, чем ООП варианты.
    В своих проектах обычно использую стек из Mobx + tsyringe(DI). С недавних пор добавил в эту схему React-Query. Иногда бывает полезно использовать MST, если ваша бизнес логика требует каких-то сложных моделей данных с собственной логикой, а так же сложной связи между ними. В частности, MST дает немного больше возможностей для проектирования моделей данных, нежели обычные классы с Mobx.
    Поясню за ответственности:
    1. Mobx - отвечает именно за бизнес-логику frontend приложения. Не надо туда пихать геттеры данных с бэкенда, которые нужно просто визуализировать, для это есть React-Query. Поскольку Mobx базируется в первую очередь на классах, для работы с ним мы можем применять ООП и соответствующие паттерны, выстраивая интересно логику из хранилищ и сервисов прямо на frontend. Для лучшего понимания как это правильно варить, рекомендую глянуть на backend.
    2. React-Query - у них на сайте прекрасно описано, зачем они нужны, и этот инструмент в любом случае призван дополнять типичные хранилища состояний, будь то хоть Mobx, хоть Redux, хоть еще что-либо, рекомендую почитать. Отличный инструмент для работы с состоянием приложение в случае тех данных, которые просто нужно взять с бэка и отобразить.
    3. Tsyringe - для меня проверенный и неплохой инструмент для работы с DI на фронте. Это гораздо лучше, чем пробрасывать хранилища внутрь других хранилищ через конструкторы или через глобальные переменные. Аналогично с подключением в эту схему сервисов. Сразу скажу, что есть риск запутаться в конфигурациях сборщика, если используете CRA, ибо и Mobx, и Tsyringe используют в своей основе декораторы, а babel их переваривает с переменным успехом, но если разобраться, настроить можно)

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

    Вот такие мысли, надеюсь поможет)
    Ответ написан
    Комментировать
  • Как с помощью bash скрипта запустить несколько сессий tmux?

    kotomyava
    @kotomyava
    Системный администратор
    Зачем вообще запускать ботов в tmux?
    Надо запускать их с помощью системы инициализации своего дистрибутива. Вероятнее всего, у вас systemd, вот им и надо пользоваться. Создать для каждого бота unit файл и добавить в автозапуск.
    Ответ написан
    2 комментария
  • Какие заклинания надо знать, что бы запустить VirtualBox Guest Additions, в данном случае, на Ubuntu Server?

    @pfg21
    ex-турист
    а зачем он ??
    в репозитории лежат готовые утилиты под виртуалбокс virtualbox-guest-utils virtualbox-guest-x11
    драйвера уже вкомпилены в ядро.
    если есть желание компилить драйвера с утилитами то virtualbox-guest-dkms

    п.с.: кстати да, убунту-сервер не имеет графической подсистемы.
    а консоль не работает в произвольном по размеру окне, это кажись особенность реализации текстового видеорежима. вообще, но могу ошибаться.
    если нужно консоль произвольного размера, то подключайся через ssh, а сессию виртуалбокса запускай через фоновый режим.
    Ответ написан
    4 комментария