Система из спичек и желудей собирает темплейт с нуля за 6 минут, а разворачивает машину "под ключ" из него за 200 секунд (и есть резервы срезать еще пару десятков).
Энтерпрайзная система от хрюклетта за дохуа бабла делает темплейт за полчаса и столько же из него разворачивает машину (YA RLY!).

Валятся и то, и другое с примерно одинаковой интенсивностью, но в случае спичек и желудей я могу все пофиксить сам, а в случае энтерпрайзной системы надо ждать, ну, от суток до недели.
Это все было вывалено головному офису практически под лозунгом "я ваш деплоймент труба шатал". Это очень огорчило, эмм, потомков колонистов Северной Америки, но поскольку нормальных аргументов нет, то получилось только огорчаться.
Акела принял бой, теперь надо не промахнуться.
UPD: Второй день наблюдаю вереницу фейловой диагностики от энтерпрайзной системы. Судя по всему, лихорадочно быстро ее перестроить сложно. А фигли ж - дебаггер так себе, трейсинга нет - то есть средства отладки, когда что-то реально не работает, родом из 80-х: понаставить отладочных печатей и запускать полный прогон.
Жуткое нагромождение из bash, awk и python сегодня таки поехало и собрало заготовку под ораклический сервер.
Ретроспективно некоторые решения были ужасны, но оно все работает весьма бодро.
В ближайших планах (в смысле, это уже в главной ветке, но не в релизе) перенос части баша в питон и дальнейшая минимизация кикстарта.
И, чем черт не шутит, переписывание верхнего селектора на питоне.

Кстати, [personal profile] grey_and_furry, как наиболее кошерно эмулировать and-list в питоне?
1) Через assert внутри try-except:
assert call(["ls", "-l"]) == 0
...
assert call(["pwd"]) == 0

2) или через вложенные if и общий статус:
success = False
if call(["ls", "-l"]) == 0:
    if call(["pwd"]) == 0:
...
        if call(["ifconfig"]) == 0:
            success = True
if success:
    # some code
    pass
else:
    # some other code
    pass

вариант 3 - просто фигануть call("ls -l && pwd", shell = True) мне не нравится, ибо нафиг стартовать оболочку вместо тонкой обертки поверх exec() - ну и нафиг морочиться питоном ради такой фигни

Python

Apr. 28th, 2017 08:35 pm
Таки оно случилось. Я решил, что мне проще написать двадцать строк на питоне, чтобы разобрать JSON, чем на повершелле (который с другой стороны) собирать awk-читаемый файл.
Результат забавненький и почти полностью состоит из subprocess.call(). В защиту этого подхода я могу только сказать, что вызываемые шелл-скрипты уже протестированы и работают, и быстрее и надежнее дергать их, чем переписывать на питоне.
Да, технический долг, да, рефакторинг, но Дед Лайн приходит после вторых майских, и тут не до жиру. Хотя если не зароюсь в отладке, селектор верхнего уровня, наверное, смогу переписать даже так.
Но после повершелла ощущения специфические - работа с JSON и вообще Dict-ами здесь примерно в полтора раза удобнее.
Сегодня я тестил мутексы в повершелле, причем не прихоти ради, а необходимости для. Ибо нужно держать в локальных файлах кэш некоей базы (долго объяснять, но, увы, это неизбежный костыль, хотя, да, идиотизм полнейший, но нас поставили перед фактом, что либо per rectum, либо вообще никак), а гонки с ним допускать ни в коем разе нельзя.
После этого я узнал о существовании flock в баше и долго думал о смысле жизни.
Оптимистичный план написать десяток постов по ДнД с интервалом в пару дней провален. Потому как чукча не очень писатель, мой суточный объем осмысленного текста очень конечен, а между экраном текста про хобби и сотней строк на <вставьте имя скриптового языка> приходится выбирать второе, ибо кюшять очень хочется.
И чтобы два раза не вставать, нет плохих языков, есть погромисты. Мне сегодня объяснили, что для того, чтобы проверить, что по такому-то пути есть файл, а в выводе такой-то команды есть такая-то строчка, нужен питон. Без питона никак, совершенно никак нельзя, потому что это свежо, модно и имеет романтический флер.
А я сегодня как раз запилил ассоциативный массив в bash. Потому что ничего младше шестой центоси у меня нема, так что обратная совместимость на мне не висит, а дергать по любому поводу awk только для того, чтобы из него дернуть system() - это как-то противоестественно.
Page generated Jul. 23rd, 2017 10:29 pm
Powered by Dreamwidth Studios