Задать вопрос
  • Скомпилировать Bash программу в exe?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    Какая цель такой "компиляции", поскольку баш изначально не предназначался для компиляции, это скриптовый язык, и штатных средств для такого нет.
    Кроме того, баш собственно хорошо заточен на вызов внешних утилит, поэтому их все "вкомпилировать" в баш врядли возможно
    Ответ написан
    3 комментария
  • Все окна открываемые через Wine малюсенькие, нет возможности увеличить окна Wine?

    @wannaluv Автор вопроса
    В wincfg на странице graphics можно увеличить размер окна по умолчанию. Но возможность увеличивать окна растяжением это не добавляет.

    65bbfe967123c939648971.png
    Ответ написан
    Комментировать
  • Как проверить наличие параметра при загруженного ядра?

    @asmelnik
    cat /proc/cmdline
    Строка загрузки работающего ядра
    Ответ написан
    Комментировать
  • Как вырезать слова из вывода?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    у меня так сработало
    sshd -T | grep -oiP '[a-z0-9-.]*etm@[a-z0-9-.]*'
    Ответ написан
    Комментировать
  • Dockerfile как задать ограничение памяти?

    В Dockerfile — никак.

    Либо в параметрах запуска контейнера Runtime options with Memory, CPUs, and GPUs

    Либо в docker-compose файле см. секцию deploy Например:
    services:
      frontend:
        image: example/webapp
        deploy:
          resources:
            limits:
              cpus: '0.50'
              memory: 50M
              pids: 1
            reservations:
              cpus: '0.25'
              memory: 20M
    Ответ написан
    Комментировать
  • Как выйти из двух пользователей в Linux, и при этом выполнить команду один раз?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    И не будет, ведь такая команда будет исполняться в одном shell, а не в двух разных. После первого exit дальше уже всё, остаток будет проигнорирован.

    Способы есть:

    1. Из суперпользователя убить shell пользователя. Некрасиво и неудобно, но закроет оба шелла.

    2. Переключение в суперпользователя оформить сразу с выходом, тогда выход из внутреннего сделает выход и из внешнего, например:

    sudo -i; exit

    Недостаток - если не удастся правильно ввести пароль - сразу же и выкинет. Ну, можно поразбираться с кодами возврата, чтобы не делать exit.

    3. Вместо предыдущего можно сделать exec, тогда запускаемая команда заместит текущий shell, а не будет запущена как дочерний процесс:

    exec sudo -i

    Недостаток тот же - если не ввести правильно пароль, то выкинет.

    Но в целом я не вижу во всём этом смысла. Выход можно делать комбинацией Ctrl-D. Нажать дважды Ctrl-D ничто не мешает, это даже удобнее.
    Ответ написан
    2 комментария
  • На сколько уровней работает wildcard SSL?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Нет не будет. Wild card только для *.Domain.Com
    Ответ написан
    1 комментарий
  • Корректно ли создавать юзеров с подобными именами?

    Гарантии, что такие имена не вызовут проблем, вам никто не даст.
    Хотите - делайте, но это пустая трата времени. Для защиты сервера есть нормальные проверенные инструменты, их и нужно изучать и использовать. А выдумывая какие-то спецсимволы в именах, перенося ssh на другой порт и скрывая, что у вас используется Nginx, вы создаёте для себя иллюзию безопасности, ничего значительного не добавляя к безопасности реальной.
    Ответ написан
    6 комментариев
  • Корректно ли создавать юзеров с подобными именами?

    ophil
    @ophil
    https://ophilon.github.io
    проблемы возникнут гарантировано. Имя не может начинаться с цифры, должно включать только ограниченный набор символов:

    adduser: Please enter a username matching the regular expression configured
    via the NAME_REGEX configuration variable.  Use the `--force-badname'
    option to relax this check or reconfigure NAME_REGEX.
    
    default NAME_REGEX="^[a-z][-a-z0-9]*\$"


    Неприятно смотреть даже на вполне обычные имена длинее 8 символов, например, last их режет, или имя в верхнем регистре, или зачем-то на русском. Впечатление, что люди не знают о GECOS
    Ответ написан
    Комментировать
  • Как подставить в echo переменную?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как я могу данные из них подставить в echo, сохранив при этом функционал запроса?

    eval "echo {$A1}.{$A2}.{$A3}"
    Потому что расширение таких конструкций со скобками -- функция shell, поэтому они должны буквально в таком виде попасть в shell. eval применяет функциональность shell к произвольной строке.
    Ответ написан
    3 комментария
  • Как правильно прокинуть порт в docker?

    Вероятно проблема в том, что вы биндите порт к локалхосту. Попробуйте либо убрать его, либо указать там все интерфейсы 0.0.0.0:8089:8089
    Ответ написан
    3 комментария
  • На чем пишутся современные десктопные приложения?

    Deita
    @Deita
    Всё зависит от конкретной задачи, если писать мессенджер то на JS (Electron)
    Если писать игру, то на С++
    Там где не надо GUI я бы вообще писал на чистом С или Питоне
    Переключатель раскладки клавиатуры на C#
    Какая задача? Обычно пишут на чём могут, в десктопе нет такого понятия как "обычно" и "на чём обычно пишут", зависит от задачи. Под решение каждой задачи нужно подобрать язык программирования, универсального языка программирования не существует. Старайтесь выбрать такой, в котором большое комьюнити, если вы не будете работать в команде, то комьюнити которое сможет помочь на SO, GitHub; и тот язык который максимально подходит под вашу задачу. Если вы идёте писать десктопное приложение в команду, то на каком языке вам команда скажет, на том языке вы и будете писать. Если вы не знаете что учить, что бы найти работу, то идите в объявления, и смотрите требования. Предугадать станет ли Linux популярным на Десктопах или не станет легко, нет не станет. Не при каких обстоятельствах, доказать это достаточно легко, но это уже отдельный вопрос.

    Задача первична. Конкретизируйте ваш вопрос, какую задачу следует решать в будущем. Иначе вы тут получите в ответах полную кашу, так как на десктопах люди пишут на всём, чём могут. И они вам сейчас перечислят все существующие языки, включая F# или Haskell с Питоном исходя из тех задач которые они решают.

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

    ValdikSS
    @ValdikSS
    Назначьте пользователю ваш скрипт/программу в качестве shell'а, с помощью chsh.
    Ответ написан
    1 комментарий
  • Почему файл не выполняется под пользователем user1?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    suid работает к тем командам, которые собственно создают процесс.
    В случае скриптов, процесс создает не /path/to/script.sh, а /usr/bin/bash, поэтому и suid следует ставить на /usr/bin/bash

    И так со ВСЕМИ скриптами.
    Используйте sudo, su или runuser
    Ответ написан
    1 комментарий
  • Не могу установить АБСОЛЮТНО никакую другую ОС, что делать?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    1. НЕ использовать unetbootin - он давно устарел и гонит. Юзать rufus или balenaEtcher.
    2. Если ноут новый - только GPT в качестве таблицы разделов и EFI в качестве загрузчика. Экран загрузчика винды говорит о том, что флэшка не опознана загрузочной.
    3. Как проверить - опознана ли загрузочной флэшка? Войти в BIOS или вызвать boot manager - он отобразит весь список обнаруженных загрузочных устройств.
    Ответ написан
    Комментировать
  • Хорошая ли стратегия разбивать монолит джанго на микросервисы джанго?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смотри. Уже прошло время когда все пилили монолиты на микросервисы. Щас пошло переосмысление.
    Объективно есть 2 причины пилить. Первое - организационная. Команда по какой-то причине не хочет
    или не может поддерживать приложение. Или там что-то с бизнесом. Слияние. Поглощение. Передача
    проекта другой команде в поддержку. Тогда берут и ставят задачу раздела отвественностей.
    Конвей про это писал еще.

    И второе - это баланс нагрузки и децентрализация. Про failover тут еще даже речи нет. Это
    тяжелая тема и распилить монолит так чтобы его части были отказоустойчивы очень трудно. Более
    того в случае синхронных взаимодействий между частями микросервисов может быть даже падение
    перформанса
    . Да. Теоретики которые там пишут восторженные отзывы - совершенно игнорируют
    накладные на RPC. И не упоминают что в монолите цена RPC была равна нулю. Иногда RPC заменяют
    на MQ - но это новая архитектура и это надо полностью переделывать бизнес.

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

    Тоесть если у вас нет таких кричащих ситуаций что оргазниация требует или нужно баланс
    нагрузки как-то разнести - то тебе вообще-вообще нет смысла ходить ни в какие микросервисы.

    Но имеет смысл сделать модуляризацию монолита. Например что там...
    application
    - sales
    - hiring
    - userprofiles

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

    Самый лёгкий из deb-подобных собственно Debian.
    Ответ написан
    1 комментарий
  • Как работает htmlspecialchars()?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну уж для такой-то простой функции должно быть достаточно написанного на странице документации.
    И, в частности, про ENT_QUOTES ;)

    Эта функция заменяет спецсимволы, которые являются управляющими в контексте HTML, на безобидные HTML-сущности. Вот и всё.
    Чисто визуально управляющие символы будут выглядеть так же, как и должны, но в коде не будут представлять ни малейшей опасности.

    Для XSS важно, будут ли экранироваться одинарные кавычки или нет, если одинарные кавычки используются для ограничения атрибута.
    Пример

    <?php $name = "' onclick='alert(\"pwned!\")"; ?>
    <input value="<?=htmlspecialchars($name) ?>"> Не важно. Весь текст так и заключен в двойные кавычки
    <input value='<?=htmlspecialchars($name) ?>'> Важно. Закрыли одинарную, вписываем, что хотим

    Во втором случае этот код отрендерится, как
    <input value='' onclick='alert(&quot;pwned!&quot;)'>
    (но при этом &quot; отрендерятся в двойные кавычки, и в onclick будет уже валидный яваскрипт
    alert("pwned!")

    А с взведенным флагом ENT_QUOTES мы получим
    <input value='&#039; onclick=&#039;alert(&quot;pwned!&quot;)'>

    И хотя значение внутри атрибута отрендерится, как ' onclick='alert("pwned!"), но оно все целиком будет внутри атрибута value.

    Разумеется, лучше всего сделать применение функции универсальным, чтобы не проверять кавычки каждый раз, и не обливаться холодным потом, если кавычки вдруг поменяются. И использовать ENT_QUOTES всегда.

    К счастью, РНР уже позаботился о вас и ваших друзьях. Начиная с версии 8.1, флаг ENT_QUOTES ставится по умолчанию. И приведенный выше пример будет работать только на устаревших версиях. Так что ручное добавление уже уходит в область легаси-практик.

    Чтобы не ломать пальцы, каждый раз набирая всё это htmlspecialchars ENT_QUOTES, толковые джуны всегда пишут пользовательскую функцию-макрос, типа
    function esc($var) {
        return htmlspecialchars($var, ENT_QUOTES);
    }

    Правда, надолго с этой функцией не задерживаются, потому что она годится только при обучении. А любой проект сложнее, чем домашняя страничка про любимого котика, в обязательном порядке уже должен для вывода использовать специальный шаблонизатор, например Twig. Где весь вывод идет с помощью специального оператора, который уже по умолчанию экранирует HTML
    <input value="{{$name}}"> Не важно. Все уже проэкранировано до нас

    Важно помнить, что это экранирование работает только в контексте HTML.
    Если выводим данные внутри кода яваскрипт, то htmlspecialchars поможет как мертвому припарки. И в этом случае надо использовать json_encode.

    Ну и разумеется, надо не забывать комбинировать все варианты экранирования.
    Например, код яваскрипт, который пишется в атрибут HTML тега, надо весь целиком экранировать c с помощью htmlspecialchars. А данные для этого кода - c с помощью json_encode:
    <button onclick="<?= htmlspecialchars("window.open(".json_encode($name).")", ENT_QUOTES) ?>">
    Ответ написан
    3 комментария
  • Почему тормозит PostgreSQL?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Почему вы план смотрите не для того запроса, который тормозит? Из очевидного - отсутствие индекса на поле, используемое для сортировки.
    Ответ написан
    3 комментария