Сообщество - Программисты шутят

Программисты шутят

257 постов 1 240 подписчиков

Популярные теги в сообществе:

3

Боль программиста

Боль программиста
7

Типичный день Scrum-команды

Типичный день Scrum-команды Юмор, Программирование, Разработка, IT юмор, Баг

У PM горят сроки! Команда разработки на охоте, аналитик что-то выбивают на скрижалях. Тестировщик без доступа к контуру на ощупь и «вкус» проверяет изменение.

Показать полностью 1
12

Протокол вскрытия неопознанного распределенного монолита

Протокол вскрытия неопознанного распределенного монолита IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси, DevOps, Монолит, Микросервисы

[Начало аудиозаписи (бодрый голос, с нотками цинизма и усталости)]

Протокол вскрытия № 666-IT/2025. Дата: 17 мая 2025 года. Время: 05:30.

- Я, ведущий DevOps-патологоанатом Сисадминов А.А., приступаю к патологоанатомическому исследованию неопознанного распределенного монолита, поступившего из ООО "Светлое Будущее" после фатального падения системы, зафиксированного 16 мая 2025 в 23:58 по московскому времени.

- Присутствуют: я, младший специалист Логинов П.Р., стажер Архитекторова Н.Ю.

Протокол вскрытия неопознанного распределенного монолита IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси, DevOps, Монолит, Микросервисы

- Итак, начнем. Внешний осмотр. Перед нами типичный корпоративный монолит — старожил цифрового мира. Судя по следам от PHP 5.3 в виде комментариев к коду, датированным 2011 годом, ему не меньше 14 лет. Внушительный возраст для любой системы в кровавом Энтерпрайзе, не находите, Логинов?

- Да, это почти живой мамонт!

- Отмечаю критическую анемию документации. В репозитории — одинокий README.md от 2012 года с гордой надписью "TODO: написать документацию".

- Так, что у нас тут… Kubernetes? О, да! Модный, молодежный. Оркестрация уровня «дирижер в запое». Поды висят в CrashLoopBackOff чаще, чем разработчики этого чуда видят кофейный аппарт. Логи… о, мда, логи! «Something went wrong», «Error: null», «PANIC: KERNEL PANIC (not really, just kidding, or am I?)». Креативненько, ничего Логинов, возьмите образцы на анализ.

- Первичный осмотр выявляет множественные очаги копипасты. Особенно вопиющий случай — модуль авторизации. Код проверки прав доступа размножен 47 раз с минимальными правками. Это уже не просто технический долг, это цирк абсурда ролевых моделей!

- Вижу следы восьми разных фреймворков, некоторые из которых не совместимы. Это мне напоминает "инновационный борщ, тёщи, приправленный усушенными котлетками и жаренными пельменями", брр. А вот это что? Закомментированный кусок кода с пометкой «// Игорь, это не трогай, я сам не знаю, как оно работает, но без него все падает!!!11». Игорь, если ты это слышишь, ты был не прав – оно и с ним упало. Из мешанины использованных языков программирования в разных модулях, можно предположить, что разработчики стремились изобрести свой высокоуровневый Brainf**k, совсем чуточку не успели.

Протокол вскрытия неопознанного распределенного монолита IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси, DevOps, Монолит, Микросервисы

- Ага, вот и причина непосредственного отказа. Один из «сервисов» решил, что ему мало 128 Гб оперативной памяти и попытался сожрать еще столько же из свопа. Классический OOM Killer пришел и сделал свою работу. Но это, так сказать, орудие убийства. Причина отказа куда глубже.

[идет продолжительная работа]

- Отказ наступила из-за необратимых изменений кода, навороченных за 13 лет разными разработчиками с их "уникальным видением". Рекомендации родственникам: кремация кодовой базы и старт с нуля. Пациент был нежизнеспособен с момента зачатия идеи в воспаленном мозгу тимлида.

- Ладно, хватит лирики. Пойду оформлять официальный протокол, Логинов, мне нужны результаты анализов. Эти бюрократы из «МинЦифЗдрава» требуют всё по форме.

[Щелчок выключения диктофона]


УТВЕРЖДАЮ

Заместитель начальника Отдела цифровой патологии и реанимации информационных систем

И.И. Кибернетиков

«18» мая 2025 г.

ПРОТОКОЛ № 666-IT/2025 патологоанатомического вскрытия информационной системы

Наименование «ИТ» организации, в которой производится вскрытие: Отдел цифровой патологии и реанимации информационных систем Департамента по надзору за стабильностью критической инфраструктуры.

Дата и время поступления системы: 17.05.2025, 04:48 (MSK)

Идентификатор «умершего»: Проект «Прорыв-2012», версия - неизвестная.

Возраст (время эксплуатации до фатального сбоя): 14 лет, 3 месяца, 2 дня (в режиме «постоянно падает, но мы поднимаем»).

Дата и время «полного отказа»: 16.05.2025, 23:58 (MSK)

Основной «клинический» диагноз (предварительное заключение службы эксплуатации): «Все сломалось, ничего не работает, пользователи в ярости, не могут закрыть спринт».

Дата и время вскрытия: 17.05.2025, 05:30 (MSK)

Вскрытие производил: Ведущий DevOps-патологоанатом Сисадминов А.А.

Присутствовали: Младший специалист по цифровой некроскопии Логинов П.Р., стажер Архитекторова Н.Ю. (сбежала через 15 минут с криком «О боже! Да я лучше бухгалтерию, буду переводить на метод ФИФО!»).

НАРУЖНЫЙ ОСМОТР СИСТЕМЫ: «Кожные пользовательские интерфейсы» недоступны, ответ сервера HTTP 503 (Service Unavailable) на всех эндпоинтах. «Трупные ошибки в логах» обильные, хаотично распределены по всем компонентам системы. «Трупное зависание процессов» наблюдается в 6 из 8 основных модулей. Сопроводительная документация-анамнез разработки фрагментарна, содержит ненормативную лексику и наскальные рисунки, не относящиеся к делу. Архитектурная схема представлена в виде эскиза на длинном бумажном чеке из КБ, вызывает сомнения.

ВНУТРЕННЕЕ ИССЛЕДОВАНИЕ СЕРВИСОВ И ПОЛОСТЕЙ СИСТЕМЫ:

  1. «Центральная нервная система Оркестратор Kubernetes»: Версия 1.25.х (устаревшая). Множественные Pod'ы в состоянии CrashLoopBackOff и ImagePullBackOff. Обнаружены некорректно сконфигурированные readiness и liveness пробы, приводящие к преждевременному «умерщвлению» работоспособных экземпляров. Конфигурационные файлы содержат критические данные в открытом виде.

  2. «Сердечно-сетевая система межсервисного взаимодействие»: Топология сети избыточно сложная, напоминает «Гордиев узел». Задержки при взаимодействии между «микросервисами» достигают нескольких десятков секунд. Обнаружены следы использования самописного протокола поверх HTTP/1.1 для передачи бинарных данных, что приводило к их регулярной закупорке каналов связи. «Микросервисы» по факту являются монолитными приложениями, упакованными в Docker-контейнеры, с высоким уровнем связанности (tight coupling).

  3. «Дыхательная API Gateway система»: API Gateway перегружен из-за отсутствия кэширования и неоптимальных запросов от фронтенда. Модуль «AuthService» демонстрирует признаки «гипертрофии» (размер Docker-образа 3 Гб) и «кислородного голодания» (регулярные OOM Killed). Обнаружены многочисленные хардкод-адреса зависимых сервисов.

  4. «Пищеварительная база данных»: Основная СУБД PostgreSQL – горизонтально шардированная. Структура БД ненормализована, наименования таблиц и полей не соответствуют общепринятым стандартам (например, tbl_prod_final_v2_important). Индексы на часто запрашиваемых полях отсутствуют. Обнаружены следы «несварения» данных (неконсистентность) между репликами. Обнаружена метастаза в виде документно-ориентированной MongoDB из одной коллекции, c полу структурированными данными.

  5. «Опорно-двигательная кодовая база»: Код написан на смеси Python, Go и Node.js (в рамках одного «микросервиса»), в наличии остаточные следы PHP. Присутствуют многочисленные «велосипеды» (самописные решения для стандартных задач). Уровень покрытия тестами – предположительно, менее 5%. Обнаружены закомментированные участки кода с пометками «не трогать, магия» и «костыль, убрать перед релизом».

ПАТОЛОГОАНАТОМИЧЕСКИЙ ДИАГНОЗ:

  • Основное «заболевание»: Острая декомпенсированная архитектурная недостаточность, развившаяся на фоне тотального игнорирования принципов проектирования распределенных систем и DevOps-практик. Тип: «Распределенный Монолит с полиорганной дисфункцией микросервисов».

  • Осложнения: Синдром каскадного отказа модулей. Терминальная стадия технического долга. Критическая зависимость от «магического кода Игоря», о чем свидетельствуют множественные коммиты. Фатальные уязвимости безопасности.

  • Сопутствующие «заболевания»: Хроническое отсутствие автоматизированного тестирования. Дефицит компетентной документации. Синдром «Неприятия чужой разработки» (NIH) в тяжелой форме.

ЗАКЛЮЧЕНИЕ О ПРИЧИНЕ «ОТКАЗА» СИСТЕМЫ: «Отказ» информационной системы «Прорыв-2012» наступила в результате совокупности критических архитектурных просчетов, некомпетентной реализации, отсутствия контроля качества и пренебрежения базовыми принципами разработки и эксплуатации ПО. Непосредственной причиной остановки функционирования явился отказ модуля «AuthService» вследствие исчерпания выделенных ресурсов памяти (OOM Killer), что вызвало цепную реакцию отказа зависимых компонентов. Система стала нежизнеспособна в долгосрочной (и, как оказалось, краткосрочной) перспективе.

РЕКОМЕНДАЦИИ:

  1. Признать проект «Прорыв-2012» полностью несостоятельным.

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

  3. Останки системы (репозитории, артефакты сборки, конфигурации) архивировать с пометкой «Крайне токсично. Не реанимировать!».

  4. Команде разработки в полном составе пройти курсы повышения квалификации по темам: «Основы архитектуры ПО», «DevOps для чайников», «Тестирование – это не больно».

  5. При планировании аналогичных проектов в будущем закладывать бюджет на привлечение внешних ИТ-архитекторов и независимых стейколдеров.

Ведущий DevOps-патологоанатом

___________________ Сисадминов А.А.

М.П. (Отдела Цифровой Патологии)

Показать полностью 3
14

Сказание о лохматом чудовище Легаси

Лохматое Легаси чудовище подняло свои щупальца из темно-коричневого озера и простонало:

– Уууу, моя обратная совместимость. Мои кеши переполнены, мой редис страдает, sql на обслуживании, избавь меня от страдания путник...

Путник подумал и решил, скастовать древнее колдунство:

– HTTP/1.1 307 Temporary Redirect

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

– О, мудрейший из кодеров, о заклинатель API! – пророкотало чудовище, его голос стал чуть менее дребезжащим. – Твоё заклятие принесло временное утешение. Мои логи ошибок перестали расти как на дрожжах, а латенси… о, оно почти вернулось к приемлемым значениям! Но я чувствую, это лишь отсрочка. Адрес, на который ты меня перенаправил… он ведь тоже не вечен?

Путник, видавший не один падающий прод и не одну DDoS-атаку, кивнул. Его плащ, расшитый символами регулярных выражений, слегка колыхнулся.

– Ты прав, о Древний Код. Заклинание 307 Temporary Redirect лишь перенаправило входящий трафик на зеркальный инстанс, который я развернул на скорую руку в соседней виртуальной долине. Это дало нам передышку, но твоя основная сущность, твое озеро данных, всё ещё страдает от десятилетий несовершенных коммитов и забытых веток.

– И что же делать? – в голосе Легаси снова послышались нотки отчаяния. – Я чувствую, как старые зависимости, словно ядовитые водоросли, опутывают моё ядро. Мои индексы фрагментированы, а таблицы раздуты до неприличия!

Путник достал из сумки потёртый артефакт, похожий на планшет, но сделанный из лунного камня. Экран вспыхнул мягким светом, отображая сложные диаграммы связей и потоков данных.

Сказание о лохматом чудовище Легаси IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси

– Есть более могущественное колдунство, – сказал он, проводя пальцем по экрану. – «Великий Рефакторинг Ядра». Оно требует огромной концентрации и точных расчётов. Мы должны будем слой за слоем распутать твои старые скрипты, оптимизировать запросы, возможно, даже применить «Микросервисное Расщепление» на самые тяжелые модули. Это как пересобрать тебя заново, сохранив твою мудрость, но избавив от балласта.

Чудовище замерло, обдумывая слова путника. Из озера донеслось тихое шипение – это старые сессии начали корректно завершаться под действием временного редиректа.

– Но это… это же изменит меня до неузнаваемости! – прошептало оно. – Смогу ли я остаться собой после такого вмешательства? Сохранится ли моя… моя уникальная бизнес-логика, накопленная веками?

– В этом и заключается искусство, – улыбнулся путник. – Мы не будем ломать то, что работает, а лишь улучшим и оптимизируем. Представь: твои кеши будут работать как часы, Redis будет летать, а SQL… SQL будет петь от радости чистых и оптимизированных запросов. Ты станешь быстрее, надежнее, и сможешь обрабатывать запросы нового поколения, о которых сейчас даже мечтать не можешь. Но для этого нам понадобится тщательно проанализировать твой «Swagger», твою карту API, и, возможно, провести несколько «A/B тестов» на отдельных щупальцах. - Он указал на одну из диаграмм на лунном камне.

– Смотри, вот здесь, в самом сердце твоего озера, лежит монолитный артефакт, известный как «Главный Контроллер Всего». Он отвечает за всё и сразу. Мы можем аккуратно выделить из него несколько более мелких, но специализированных сервисов. Каждый будет жить в своем небольшом, чистом «докер-пруду», и общаться с другими через быстрые «gRPC-потоки».

Лохматое Легаси чудовище медленно кивнуло одним из своих многочисленных отростков. В его древних, мерцающих глазах, отражающих консольные логи, загорелась искорка надежды.

– Я… я готов попробовать, о Мастер Деплоя. Но скажи, с чего мы начнем это великое таинство? Каково будет первое заклинание на пути к моему обновлению?

Путник закрыл артефакт-планшет и спрятал его в сумку.

– Первое – это всегда git checkout -b feature/refactoring_core. Мы создадим безопасную ветку реальности, где сможем экспериментировать без страха обрушить то, что еще дышит. А затем… затем мы начнем с самого простого: npm audit fix --force для твоих внешних зависимостей. Это может быть больно, но необходимо.

Чудовище издало звук, похожий на скрежет старого жесткого диска, но в нем уже не было прежней безысходности.

– Да будет так, – прошелестело оно. – Начинай свое колдовство, путник. Моя uptime в твоих руках.

Путник кивнул, доставая из своей сумки видавший виды свиток пергамента, исписанный мелким, убористым почерком. Это был «Манифест Гибких Заклинаний».

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

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

– О, это была эпоха великих надежд и быстрых релизов! Я был задуман как «Единый Портал Всего Сущего» для Королевства. Изначально всё было просто: учёт маны, перепись населения, доска объявлений для рыцарских турниров. Но потом пришли они… стейкхолдеры.

Путник сочувственно хмыкнул. Он знал этот тип сущностей.

– Первым был Королевский Казначей, – продолжало Легаси, одно из его щупалец начало нервно подрагивать, вызывая рябь на воде. – Ему нужна была «абсолютная точность в расчётах десятины и налогов НДС на драконьи клады». Пришлось встроить модуль на 1С-заклинаниях, потому что только старый гном-бухгалтер знал, как правильно обсчитывать чешую и драгоценные камни. Этот модуль до сих пор работает, и никто не решается его трогать. Он… он critical path.

– Затем явилась Гильдия Торговцев Специями, – голос Легаси стал ещё более заунывным. – «Нам нужна интеграция с межконтинентальной системой доставки на грифонах! И чтобы цены обновлялись в реальном времени, в зависимости от направления ветра и настроения драконов-покровителей пути!» Их API был написан на эльфийском диалекте LISP, и документация существовала только в виде устных преданий. Каждая новая версия их «Грифон-Экспресса» ломала мне половину логики.

– А потом… потом пришла Принцесса, – тут чудовище совсем сникло, и озеро вокруг него помутнело от поднявшегося ила, и пошло странной пеной. – Она захотела «социальную сеть для фей и других волшебных существ, с возможностью делиться пыльцой и лайкать радуги». И чтобы «всё было розовое и с блёстками!» Её команда UI/UX-фей наложила столько !important стилей поверх моих старых табличных раскладок, что браузеры старых гоблинов до сих пор падают в kernel panic.

Сказание о лохматом чудовище Легаси IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси

Путник медленно кивал, листая свой Манифест.

– Понимаю. Каждый тянул одеяло на себя, добавляя свои feature request-ы, не думая об общей архитектуре. И, конечно, всё это нужно было «вчера», не так ли? У нас в ордене ходили слухи про странный культ: «Лучше два раза быстро, чем один раза правильно!»

– Именно, но про культ мне ничего не известно! – воскликнуло Легаси, вздымая волну. – А так, да «Нам нужен MVP к Новолунию!», «Релизим перед Зимним Солнцестоянием, допилим потом!». «Рефакторинг? Нет времени, вражеские орки-хакеры наступают на наши файрволы!» И так десятилетиями. Костыли на костылях, обёрнутые в заплатки из try-catch блоков, которые ловят Exception и просто пишут print("ололо, что-то пошло не так") в логи забвения.

– А что насчёт безопасности? – осторожно спросил путник. – Обычно на таком этапе появляются «Рыцари Белого Хэша» или «Инквизиторы SSL-сертификатов».

– О, да! – глаза Легаси вспыхнули красным светом, как индикаторы перегрузки сервера. – Они появились в самый последний момент перед запуском модуля «Королевская Сокровищница Онлайн». Когда уже были розданы все рекламные флаеры, а менестрели пели хвалебные оды по всем тавернам. Эти «Специалисты по Информационной Магобезопасности» из Ордена Непробиваемого Щита пришли с толстенными талмудами политик и процедур.

– Представляешь, они заявили, – продолжало чудовище, его голос дрожал от негодования, – что мой «Протокол Аутентификации по Родовому Гербу» недостаточно надёжен! Что «использование общедоступных порталов для передачи секретных указов – это дыра размером с Великое озеро Байкал»! А вишенкой на торте их аудита стал… мой летающий трон!

– Что прости, Летающий трон? – путник удивленно поднял бровь.

– Да! Это была гордость Короля! Летающий трон на интернет-тяге! Он должен был парить над столицей, транслируя королевские указы через Wi-Fi и раздавая бесплатные NFT-портреты Его Величества! Инженеры-гномы потратили на него полгода! А эти… эти безопасники заявили, что «незащищённый root-доступ к антигравитационным рунам трона, управляемый через незашифрованный HTTP-канал с дефолтными кредами admin/admin123 – это…» Ну, ты понял. Они грозились наложить iptables -F на всё королевство!

– Путник покачал головой. – Классика. И что же?

– Пришлось выбирать, – тяжело вздохнуло Легаси. – Либо трон, либо запуск Сокровищницы. Король был в ярости. Он метал молнии (буквально, он же маг четвертого уровня). Но Казначей и Гильдия Торговцев убедили его, что работающая экономика важнее парящего пиар-инструмента. Трон отправили на «доработку в соответствии с ГОСТ Р 52069.0-2013 Небесной Канцелярии», и с тех пор о нём никто не слышал. А мне в ядро вшили столько правил и двухфакторных заклинаний, что я стал медленнее ленивца на транквилизаторах. Но зато «безопасный». – Вода в озере немного успокоилась. Чудовище перевело дух.

Сказание о лохматом чудовище Легаси IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси

– Вот так, путник, я и стал тем, кто я есть. Сплетением противоречивых требований, поспешных решений и отчаянных попыток всё это как-то удержать на плаву. Теперь ты понимаешь глубину моих болот из spaghetti code?

– Путник задумчиво смотрел на Легаси. –  Понимаю, – сказал он наконец. – Твоя история – это сага о многих системах. Но даже самое запутанное наследие можно распутать. Если есть воля и хороший debugger. Начнём с анализа зависимостей тех самых 1С-заклинаний. И посмотрим, нельзя ли их обернуть в какой-нибудь более современный API-шлюз, чтобы хотя бы изолировать эту древнюю магию. А Принцессины, блёстки… боюсь, тут придётся применить глобальный CSS Reset и объяснить ей прелести адаптивного дизайна.

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

– Хорошо, – кивнул Путник, обводя взглядом мутные глубины озера и прикидывая объем предстоящих git log --graph --oneline --decorate --all. – Но прежде, чем мы начнем распутывать твои самые древние commit-ы, скажи, о Легаси, а что с документацией? Не всё же можно понять, силами реверс-инжиниринга. Где твои «Свитки Архитектуры», «Манускрипты API Эндпоинтов», «Руководства Пользователя для Заклинателей Низшего Звена»?

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

– Документация… – прошелестело оно, и несколько пузырей с запахом старого озона поднялись со дна. – Она существует… в виде легенд. В виде устных преданий, передаваемых от одного уволившегося Архимага другому. Часть её была начертана на стенах «Пещеры Первых Коммитов», но после обвала, вызванного неудачным DROP TABLE users; без условия WHERE, те фрески утеряны.

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

– Но они в основном гласят:

// TODO: Rewrite this before the dragons notice

или

// Здесь магия, не трогать, работает на честном слове и синей изоленте.

– Иногда встречаются целые поэмы на Древне-Ассемблерском, описывающие элегантность решения, которое теперь вызывает лишь воспоминания о былом StackOverflowException.

– Путник вздохнул. – Знакомая картина. «Знание, передаваемое путем болезненной отладки» – самый распространенный вид документации в подобных системах. То есть, никакого «Confluence -Хранилища Знаний», никакого «Jira - Трекера Задач и Багов» с подробным описанием фич?

–  Ой, да был когда-то «Вики-Гримуар», – призналось Легаси. – Но последний Хранитель Знаний, эльф по имени ЛегоЛАГ, ушёл в «Бессрочный Отпуск в Валинор» после того, как его правки по «Оптимизации Запросов к Оракулу Судьбы» откатили в пятый раз. С тех пор гримуар зарос паутиной 404 Not Found.

Взгляд Путника скользнул выше, к потолку пещеры, где сквозь мутную воду виднелись контуры следующего уровня системы – вероятно, то, что когда-то было «Бизнес-Логикой Верхнего Уровня». И тут он заметил его.

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

От Легаси какой-то подозрительный смешок, перешедший в кашель, который мог бы означать «о, только не это».

– А, ты про «Великую Подпорку Стабильности Имени Архитектора Глюкона»… – с трудом выдавило оно из себя фразу. – Это… это долгая и печальная история о том, как «быстрое решение» становится «вечной инфраструктурой».

– Рассказывай, – Путник устроился поудобнее на выступе из застывшего JSON-а.

– Это случилось во времена «Великого Запуска Модуля Предсказаний Погоды для Королевских Пикников», – начало Легаси. – Требование было простым: «Точность 99.999% за 24 часа до события». Но команда метео-магов перемудрила с «нейронной сетью на рунах хаоса», и модуль начал потреблять немыслимое количество CPU time и RAM-эссенции. Каждый раз, когда он пытался просчитать вероятность дождя над конкретной полянкой, весь второй этаж, где крутились основные сервисы Королевства, начинал вибрировать и проседать. Логи сыпались ошибками OutOfMemoryError и Kernel Panicus Totalus.

– Архитектор Глюкон, известный своим девизом «Работает – не трогай, падает – подопри!», вместо того чтобы оптимизировать прожорливый модуль (на это не было «времени в спринте»), предложил гениальное решение. Он вызвал бригаду гномов-кузнецов и велел им сковать этот… костыль. Сталь – для прочности, а мифриловый набалдашник… он не просто для красоты. В него встроены «Руны Аварийного Распределения Нагрузки». Когда сенсоры фиксируют критическую просадку производительности на втором этаже, набалдашник начинает светиться и перенаправлять часть вычислительной магии на резервные кластеры в «Подземельях Холодного Резерва».

– То есть, вместо того чтобы починить протекающий кран, вы просто поставили под него ведро побольше и автоматизировали его выливание? – уточнил Путник.

Сказание о лохматом чудовище Легаси IT юмор, Программирование, Юмор, Разработка, Код, Длиннопост, Баг, Легаси

– Именно! – подтвердило Легаси. – И это «ведро» стало настолько критически важным, что теперь вокруг него построена целая экосистема мониторинга и поддержки. Есть даже специальный «Орден Хранителей Костыля», которые дважды в день проверяют затяжку болтов и уровень магической смазки в мифриловом шарнире. Попытки убрать его приводили к немедленному segmentation fault всего «второго этажа». Он стал неотъемлемой частью моей… сущности. Символом того, как временное решение, принятое под давлением «бизнес-требований» и «сжатых сроков», может врасти в систему так глубоко, что его удаление становится сравнимо с операцией на открытом сердце без анестезии.

Путник покачал головой, но в его глазах читалось не только сочувствие, но и профессиональный азарт.

– Что ж, Легаси, – сказал он, поднимаясь. – Похоже, наш backlog пополнился ещё одной эпической задачей. Но сначала – документация. Мы должны найти хоть какие-то следы первоначального замысла. Возможно, в архивах Королевской Канцелярии сохранились «Технические Задания на Пергаменте» или «Протоколы Совещаний с Резолюциями Его Величества». Без этого мы рискуем, удалив один костыль, породить десяток новых гидр-багов.

–  Удачи тебе, путник, – прошелестело Чудовище. – Поищи в «Забытой Библиотеке Закомментированного Кода». Говорят, там иногда находят фрагменты древних диаграмм последовательности, нацарапанные на обратной стороне счетов за эльфийский эль.

Всех обнял, продолжение возможно будет.

Показать полностью 4

Когда наблюдаешь очередной срач между фанатами php и node.js

Когда наблюдаешь очередной срач между фанатами php и node.js IT юмор, Программирование, Картинка с текстом, Программист, Telegram (ссылка), PHP, Nodejs, IT, Javascript, Мемы

Взято тут - https://t.me/memolecules/29

Часы с мировым временем, или региональная шутка

Уже год пользуюсь часами фирмы Casio *World time *. Там можно любыми способами доковыряться до времени хоть Нью - Йорка, хоть Мьянмы, хоть Италии. Плюсом там есть подобие хронометра. А что вы ожидали от классических часов? Но и там не обошлось без шуток. Я начал в них ковыряться, и нашёл всё что угодно. Не иначе они посадили в часы нанокитайца.

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

Купил я это чудо вместо моих старых Casio F-91. Они страшным образом потерялись. Бесследно.

Увы...

Между нами, мальчиками. Продолжение поста про Саню и Аню

Продолжение про многострадальную "пишущую машинку". Я просто не вывел ещё несколько любопытных тезисов.

1)

На данном устройстве сделанном фирмой "Casio" было очень много фич и багов. Фичей был калькулятор на кучу строк и внезапно органайзер. Органайзер был шуточным. Какой серьёзный "органайзер" вы ожидали от электронного блокнота начала нулевых???

2)

Скажу сразу: эта машинка ещё и недолговечная. Года через два она накрылась. И мне не удалось ещё раз её на время получить.

3)

Скажу сразу number two: мне попадался шанс купить подобное устройство. Но по злой иронии судьбы он был прошляплен.

4)

Дорогие друзья!!! Желаю заявить прямо, что мне тогда было мало лет. Но из - за своего заболевания я уже тогда умел искать фичи за 3 минуты. И находил. Делал. Возвращал все в исходную позицию. Почитайте "Понедельник начинается в субботу" или "Полдень. XXII век". Там ещё жёстче программеры прикалывались.

За сим остаюсь,

Ваш несостоявшийся коллега

Роман Извеков.

Как Саня может превратиться в Аню

Мне однажды улыбнулась Фортуна попробовать попользоваться чужим "банком данных" фирмы Casio с калькулятором. При каких условиях не буду рассказывать. Это полный... Ну вы поняли. Шутка состояла в том, что там была телефонная книжка. И была в этом устройстве волшебная кнопочка "ред.". В устройстве был забит телефон какого - то Сани. Я нажал "ред." и на экране появилась Аня вместо Сани. Нажал ещё раз, и опять появился Саня. Шутка была ещё в том что там был будильник, и я его поставил. Через минуту или час раздалось "Пи - пи - пи". Было дело в 2004 году в мои 6 лет. Техника была возвращена хозяйке. Ничего страшного не случилось. Специально поставил тэг моё. Потому что это испробовано на личном опыте.

Отличная работа, все прочитано!