Задать вопрос
  • Чем делать резервную копию Windows?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    northon ghost имхо сильно устарел, он рулил во времена win9x, но потом что-то уже не то.
    Acronis - странно, один из лидеров, и вроде хорошо умеет в разные файловые системы
    Veeam - сам агент жрал много места или бэкапы? вроде как прям тоже лидер.
  • Хочу в геймдев, с чего начать?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    Boobtschebeznika,
    Ты был на курсах вождения? Точно изучил внутреннее строение автомобиля, и можешь рассказать без гугления чем карбюратор отличается от инжектора? И может ли быть нечетное количество цилиндров в двигателе?
    Или ты это себе придумал, основываясь на рассказах советских водителей, потому что 50 лет назад в каком-нить колхозе машины были такие, что не умея их чинить, ты бы просто никуда не доехал бы?
  • Будут ли проблемы с трудоустройством в IT если косить по психушке?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    В некоторых компаниях просто есть background чек, и независимо от того, насколько там хорошо работать, это бывает требование заказчика или аудита. Компании обязаны подчиняться требованиям регулятора.
  • Как проиндексировать dns сервер в глобальной сети?

    saboteur_kiev
    @saboteur_kiev
    ниндзя оп оп, Возможно и меньше - у промежуточных DNS серверов может быть насильно установлен меньший ТТЛ, но чтобы вы гарантировано сказали что весь мир видит новые - неделю.

    P.S. вроде по умолчанию стоит сутки?
  • Как объединять сервера?

    saboteur_kiev
    @saboteur_kiev
    Packetik, Простите, но программы это не волшебство и не магия.
    Это четкие алгоритмы.
    Вот надо тебе сложить 1 + 3 и получить три.
    И как ты это разложишь на два компьютера? Одному кинешь 1, второму 3, а как считать?

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

    НЕТУ. ВСЕ.
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    Alex Wells,

    новые патч версии наоборот более стабильны. Возможно выше назвал их "минорными" - если так, то имел в виду именно патч. В них только багфиксы, они априори не могут быть менее стабильными)

    Никогда не говорите никогда ;)

    А ваши апгрейды базы не требуют доп. зависимостей? Вот прям никаких? На голом alpine все запустится? Не смешите.

    Обычно апгрейды самой базы не требуют никаких дополнительных зависимостей. Все зависимости которые нужны - они нужны для работы самой базы и уже установлены. А вот ставить дополнения и зависимости для "скрипта, который запустит обновлялку" - imho перебор.

    чем тонна непонятных бинарников на уровне системы непонятных версий и, как сказали выше, с непредсказуемым IO.

    Все нужные для работы баша бинарники - в основном часть gnu linux и они есть в системе уже из коробки, даже ставить не надо. Если надо что-то дополнительно, то это надо смотреть зачем вы такое решили ставить.

    Одно, конечно же. Либо один микросервис, либо одна общая библиотека.

    То есть фронт и бек у вас всегда один микросервис? И написан на одном фреймворке?

    Это патч версии. Если сильно боитесь, можно поднимать снепшот, апгрейдить базу, запускать тесты и потом уже апгрейдится. И это спокойно можно делать на CI, автоматически по смене версии базы в каком-нибудь docker-compose.yml.

    Да не будет никаких проблем, поднимая патч версию. А остальное - о чем я и говорю. Поднимать версию руками так точно никто не станет чаще раза в год. Если оно обновляется по указанной где-то там версии само, одновременно на всех енвайронментах и у всех девов - та хоть раз в месяц.

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

    Я не говорил про уязвимости) Я говорил про очевидные баги базы, вызывающие проблемы у конечных юзеров проекта.

    Если существуют очевидные баги базы, которые вызвают проблему аж у конечных юзеров, зачем вы юзаете такую плохую базу...
    Переходите на постгрес ;)

    Да, если в фреймворке есть таковые и оно решено в новых версиях - мы поднимаем версию, конечно.

    Зачастую смена версии фреймворка может потребовать неслабых изменений в коде.

    И обновляем мы его меняя циферки версии в одном файле, diff на одну строчку :)

    У вас очень, очень, очень простой проект.
    Вдобавок вероятно нет аудита и возможность ставить что хочется из инета напрямую.
  • Как объединять сервера?

    saboteur_kiev
    @saboteur_kiev
    Packetik, нет.
    Или программа изначально была задумана и приспособлена на многопоточность и параллельные вычисления или нет.
  • Работа с памятью и гибернация в linux как в windows?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    Армянское Радио, а отключить - даст прирост производительности, если у меня SSD, например?
  • Как с помощью Notepad ++ преобразовать текст?

    saboteur_kiev
    @saboteur_kiev
    volt111, Удалить можно, но ты же говоришь что тебе сперва надо по ним посортировать?

    Ты можешь вообще подумать логически и нормально сформулировать задачу, а не говорить вещи, которые противоречат самим себе?
  • Как с помощью Notepad ++ преобразовать текст?

    saboteur_kiev
    @saboteur_kiev
    volt111, В вопросе этого не было.
    несложно самостоятельно модицифировать мой пример
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    Примитивный - это не попытка обидеть вашу любимую игрушку, это констатация факта. Если в python вы положите команду в переменную, она не начнет выполнятся при выводе на экран.

    А с чего вы считаете, что в баш вывод переменной на экран будет выполняться???
    $ A="echo B"
    $ echo $A
    echo B

    То есть ваша константация факта - это заблуждение.

    Верно. И у bash нет нормальных тест-фреймворков.


    Конечно, да. Но тут либо CI/CD решает 100% задач, либо приходится допиливать что-то. И, опять же, редко когда удается допилить требя строчками bash скрипта.

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

    Ну вот помимо существующих CI/CD, с радостью попробую kotlin script.

    Который требует компиляции и джава машины для запуска? Ладно еще для автотестов с метриками и так далее, но для базовых простых задач? или того же апгрейда базы данных? ... печально

    А в чем проблема, если каждый инструмент будет лезть в github своим методом?

    В том, что этот метод нужно поддерживать в двух местах, вместо одного? Насобирать три-четыре таких места и никто не захочет это трогать.

    А если у вас 5 микросервисов, у вас будет 5 мест или одно?
    Непонятно что такое за разные места и в чем заключается сложность. Я редко встречал проекты, написанные один в один - как минимум бэк и фронт зачастую разные фреймворки, а то и разные языки программирования, вот уже два места вместо одного. И в чем собственно проблема?

    И как это решает то, что люди (девопсы) за*бутся апгрейдить ее постоянно ручками? Да никак, проекты тупо забивают и скедьюлят "апгрейд архитектуры" раз в миллион лет - ну потому что не будут же они обновлятся раз в месяц. А фиксы, нужные фиксы базы, релизятся раз в месяц, если не чаще.

    Фиксы для базы, которые могут вызвать несовместимость данных - выводить автоматом не рекомендуется в принципе. При этом автоматизировать апгрейд на том же баше - да нет никаких проблем. В этой штуке автоматизация сложна в первую очередь на организационном уровне, а именно - когда делать апгрейд, сколько времени он займет (потребуется ли конвертация самих данных), будет ли даунтайм приложения, если все пойдет не так, сколько времени займет откат назад, и соответственно согласование этих этапов.
    В первую очередь в апгрейде версии таких вещей как джава, версия ОС, базы данных и других third party вещей - это организационный момент, а не технический. Техническое обновление автоматизируется чем угодно, включая баш, ансибл, докер.. неважно.
    Вот вы пишете на фреймворке, а к нему выходят те же обновления уязвимости. Как вы его обновляете каждый месяц? Или фреймворк вы так часто не обновляете, и почему-то считаете что уязвимости в базе важны, а в фреймворке нет?

    Если вам в жизни удастся поуправлять самолетом, вы не станете пилотом.

    Управлял, но почему я не могу стать пилотом - непонятно.

    А вы пишите, что вполне нормально копировать все страницы памяти, для простейших операций.

    Где я это пишу???

    Но писать про это предлагая взамен полное копирование всех страниц памяти интерпретатора (fork) даже при элементарных операциях - это показывать полное непонимание на чем можно экономить

    Хм. вы понимаете как работает форк и что именно копируется? Это же не к башу вопрос, это в принципе к архитектуре ОС. При форк страницы памяти не копируются.

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

    Универсальность - обозначает то, что язык можно использовать для разных вещей, а не узкоспециализированных (как lua/scala). Баш достаточно универсален, другое дело, что он не такой мощный.

    Большинство приведенных примеров нерелевантны, и относятся не к использованию языков программирования, а к архитектуре конкретного приложения и организации работы, и зачастую требуют согласования именно на уровне организации и используемых инструментов, а не решение проблемы технически выбором языка.
    Я думаю стоит прекратить дискуссию.
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    Alex Wells,
    Но давайте поговорим не о копировании файла, а, например, о билде и деплое проекта.

    Простите, но какое отношение дефолтная оболочка имеет к билду и деплою?
    Докер это вообще не для этого. Любой язык программирования - тоже не для этого
    Для этого нужен не контейнер и не баш и не язык программирования в принципе, а любой CI инструмент - Дженкинс, тектон, тимсити, gitlab-ci и все другое - там и время записывается и пайплайны и все остальное. А вот уже под капотом может быть и баш и груви и докер и все что угодно. Но вы IMHO путаете цели и инструменты.

    Я про автоматические тесты.

    Автоматические тесты не имеют отношения к конкретному языку программирования.
    Каждый уважающий себя язык программирования имеет свои библиотеки и инструменты для юнит тестов и автотестов, поэтому тут не должно быть некоего универсального языка. Это должно решаться средствами того языка, на котором пишется проект. Ну простые примеры - юнит тесты для js и java запускаются собственно их сборщиками - maven и npm. А если это более сложные тесты, то они могут запускаться на виртуалках или в докере CI инструментом.

    Мне вот интересно:
    Из банального:
    - погрупировать таски
    - записывать время выполнения каждой мелкой таски
    - проверять что она не завалилась
    - репортить все это в какой-нить слэк в конце
    - делать ролбек в случае неудачи
    - подчищать за собой остатки

    Все это делается очень легко с помощью нормального языка. С bash это адская боль.

    Вот каким именно нормальным ЯЗЫКОМ вы это решаете, как девопс?
    Я это решаю в первую очередь CI/CD инструментом, в котором может использоваться и простые bash скрипты и сложные технические решения вроде GRP в оракле или kubernetes.

    То есть ваш пример вообще нерелевантен.

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

    А в чем проблема, если каждый инструмент будет лезть в github своим методом? Главное авторизацию настроить. дженкинс будет лезть своим git плагином, джава своей библиотекой, bash - консольной утилитой. В чем собственно проблема? Вы же не хотите тянуть еще один какой-то универсальный мощный современный язык в каждый проект?

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

    Эм, не очень понятно что такое обновлять базу на продакшене и зачем это делать раз в месяц.
    База принадлежит рабочему приложению, она обновляется каждую секунду. Что вы подразумеваете под обновлением?
    Апгрейд версии? База в кластере, апгрейдим по очереди ноды, соблюдая инструкции совместимости и все. Контейнеры для баз данных подходят, если базы размером с цыпленка. А базы, которые физически требуют несколько часов на копирование - контейнеры это лишняя головная боль.

    Да нет, не использую. Над таким "облачным решением" обычно ноль контроля - оно падает когда захочет, обновляется только руками в дешборде, отстает по версиям от self-hosted.

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

    Затем что обновлять его нужно одновременно у девов, QA, на тестовых, на стейдже, на продакшене. На каждом хосте ручками ставить нужную версию? А она же еще совпадать должна!

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

    Ваша проблема, что вы кидаетесь словами подразумевая какой-то свой локализированный случай, но при этом пытаетесь сказать что ваш опыт в конкретном проекте с конкретной инфраструктурой обязательно должен подойти всем.
    А это совершенно не так.

    баш - отличный язык программирования для универсальных скриптов в линукс, и решает свою задачу быть отличным языком для того, чтобы быть оболочкой и скриптом для автоматизации рутины, а так же клеем между различными инструментами. И альтернатив у баш именно в этом плане - ksh и zsh
  • Как настроить CI/CD на виртуальный хостинг?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    Иван Кулаков, А в чем проблема с дампами?

    Тут прикол в том, что никто не знает вашу архитектуру и что в вашей базе можно делать.
    Если вам для локальной машины достаточно просто лазить в продакшен базу, то можно сразу в нее лазить. Если нужно быстрее, можно настроить репликацию прода в локалку напрямую.
    Если нужно работать с отдельным экземпляром базы, но чтобы он был максимально прод-лайк - ничего кроме регулярных дампов не остается.
    Дампы тоже можно автоматизировать - практически каждая уважающая себя база имеет инструменты командной строки для дампа и рековера или базы целиком, или возможно даже отдельных таблиц.
  • Как с помощью Notepad ++ преобразовать текст?

    saboteur_kiev
    @saboteur_kiev
    А зачем их удалять?
    В заменить вы выделяете текст, разделенный двоеточием.
    В результате вы указываете этот текст в нужном виде.

    $3 $4:2 означает - взять третий столбец, пробел, четвертый столбец, двоеточие, второй столбец.
  • Как настроить CI/CD на виртуальный хостинг?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    Так а в чем проблема через ftp или ssh заливать не вручную?
  • Как объединять сервера?

    saboteur_kiev
    @saboteur_kiev
    Телепатов на этом сайте нет.
    Сама программа умеет работать в режиме кластера?
    Или это просто рандомная программа, а ты почему-то считаешь что любую программу можно распарралелить на несколько серверов?
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    Alex Wells,
    Я к тому и веду, что, имхо!!, это временно.

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

    Чтоже касается контейнера -
    Докер не является тем, что ставится из коробки во всех дистрибутивах, и в контейнере опять таки надо что-то запускать.
    То есть вместо банального cp для копирования файла, ваше "мощное" решение - это установить докер, потом скачать базовый образ чего-то, потом запустить контейнер, потом придумать как в этом контейнере примаунтить все нужные диски, и потом внутри контейнера копировать?
    Вам самому не смешно от этой чуши?

    Только, опять же, джава легко тестируется, более удобна, легко шерит код между проектом и "скриптами" автоматизации, не использует никакие костыли.

    В баше костылей столько же, сколько и в джаве, а то и меньше.
    Баш тоже легко тестируется - +x и все
    Непонятно что такое шарить код между проектом и скриптом автоматизации - скрипты на баш это просто код.

    Это "используем современные подходящие технологии, без велосипедов и заебов". Да, намного проще запустить контейнер с клиентом мускула, что бы создать базу и намного проще обновить контейнер с httpd, чем пытатся сделать это руками/косячной автоматизацией на баш.

    Нет, это не подходящие технологии.
    Запускать базы данных в контейнерах - это в принципе не подходящая технология, ибо зачем контейнер для базы данных? Это может быть удобно для дев енвайрнмента, когда надо запустить базу и потом ее грохнуть, а потом запустить другую базу, возможно другой версии. Но в продакшене, база должна просто жить, используя доступные ресурсы самостоятельно. Именно поэтому в нормальной ситуации вы не ставите себе в облаке базу, а используете готовое облачное решение.
    "проще обновить контейнер с httpd, чем пытатся сделать это руками/косячной автоматизацией на баш"
    Зачем обновлять контейнер с httpd, если httpd это практически по дефолту уже установленный в системе сервис, и обновить его можно не косячным скриптом с контейнером, а штатным пакетным менеджером.

    Ну вот, можете посмотреть на баш-скрипт посложнее: https://github.com/sfkulyk/jks-manager/wiki
    код как код. Упрощенный для максимальной совместимости, можно было бы оптимизировать, но это не требуется - баш не про performance. Поэтому код написан так, чтобы джуниор мог разобраться.
  • Если я поставлю жёсткий диск старого компьютера на новый, не возникнет конфликта программ?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    Нет, они же на другом диске установлены в другую виндовс.
    Главное чтобы на компьютере запустилась виндовс с его родного диска, и тогда программы на другом диске - для него будут просто набором файлов, а не установленным софтом.
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    DevMan, Так я же про zsh и написал =)
    если zsh станет дефолтной оболочкой во всех популярных дистрибутивах, вряд ли кто-то пострадает, а большинство вероятно даже не заметит разницы.
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    Vitsliputsli, либо вы не понимаете, как работает баш, либо не знаете что в баш даже отдельно существуют типы данных integer string и array. И внутренняя реализация этого вполне достаточна для баш скриптов.
    По делу вы видимо не хотите читать то, что вам пишут, и причисляете мне то, что я не говорил. Если вы делаете какие-то выводы про меня, указывайте мою цитату, чтобы показать на основании чего вы пришли к неверным выводам.
    Кроме того, я не сисадмин и в свое время работал с Си со всей заморочкой с указателями и работой с памятью.
    Но вот вы никак не хотите понять, что примитивизм - некорректное слово по отношению к тому, что баш - хороший инструмент для написания скриптов. И да, я считаю, что на баш можно писать довольно сложные скрипты для автоматизации, и это - часть программирования.

    ООП бесполезная трата ресурсов, ведь все можно сделать через if и for

    Не понимаю какое вообще отношение ООП имеет к if и for, вы точно считаете, что знаете что такое ООП? ;)

    Но, действительно, спорить бесполезно с человеком, кто не писал ничего сложнее скриптов автоматизации

    Ну так не спорьте с ними, вы же со мной общаетесь, или с кем-то другим?

    Понимаю, что для сисадмина все разработчики занимаются фигнёй, ведь все можно просто и легко сделать в bash.

    С чего вы так считаете?
    Я утверждаю совсем не это. Я утверждаю, что баш - это отличный скриптовый универсальный язык программирования, который одновременно является дефолтной CLI оболочкой в *nix, и на нем удобно программировать и простые скрипты и чуть более сложные. Но пытаться реализовать ООП в баш, или предлагать вместо него использовать такие вещи как python/perl и другое в качестве альтернативы - это оверинженеринг.
    Это вы принижаете возможности баш, упершись в единственный приведенный аргумент в виде реализации хранения переменных.