Мы, программисты, часто развлекаемся очень специфическим юмором.
Недавние споры на форуме навеяли мне вот такое творение в этом жанре:
Департамент: Heavens Corp
Owner Иешуа (senior developer)
Тип проблемы: Software defect
Product family: млекопитающие
Unit: человечество
Severity: critical
Operating System: HeavenOS
CPU: Galaxy2011
Resources: Все природные ресурсы земли
Краткое описание проблемы:
Периодическая 100% загрузка процессора и слишком большое потребление природных ресурсов
Полное описание:
Большое количество безконтрольных подпроцессов производятся процессом "человечество", которые все вместе периодически отбирают всё процесcорное время.
В логах также возникает интересная циклическая ошибка:
Resources usage 50%
ApocalypsePanicTask activated!
CPU usage 95%
Ошибка в процессе "человечество" org.heaven.NoApocalypseException
at org.heaven.ApocalypseModule.<init> (line: 15)
at com.human.ApocalypsePanicTask.<finish> (line:666)
caused by
org.heaven.AccessException
Access denied!
ApocalypsePanicTask terminated
...
Resources usage 50.2%
ApocalypsePanicTask activated!
CPU usage 98%
Ошибка в процессе "человечество" org.heaven.NoApocalypseException
at org.heaven.ApocalypseModule.<init> (line: 15)
at com.human.ApocalypsePanicTask.<finish> (line:666)
caused by
org.heaven.AccessException
Access denied!
ApocalypsePanicTask terminated
....
- Алоха Иешуа! Какие у Тебя есть идеи по поводу NoApocalypseException?
- Алоха Шеф! Какой-то процесс, прожденный "человечеством", пытается активировать ApocalypseModule, но не может этого
сделать из-за нехватки прав доступа.. ApocalypsePanicTask - это какая-то недокументированная функциональность.
ApocalypseModule был спроектирован таким образом, что только Вы сможете его активировать с помощью специальной команды из своей консоли..
- Понятно, проблема очень похожа на критическую..в ближайшие 2 года я хотел бы получить от Тебя полный отчет по всем процессам, порожденным "человечеством"...
Через 2 года исследований:
- Процессы, пророжденные человечеством, отсортированные по степени потребления природных ресурсов
com.human.PetroleumBurning - 60%
com.human.AtomSplitting - 30%
сom.human.HadronCollider - 8%
сom.human.RiverTurnOver - 1%
сom.human.EarthTrample - 1%
- Процессы, пророжденные человечеством, отсортированные по степени потребления времени CPU
com.human.Science + com.human.ScienceScholasticism - 30%
com.human.PhilosophySophistic - 15%
com.human.DreamyInactivity - 5%
com.human.ApocalypseThinking - 50%
(think - думать, dream - мечтать)
- Отличная работа, Иешуа!Я полагаю, что как раз com.human.ApocalypseThinking и создает нам проблему?
- Нет шеф, я так не думаю.. есть предположение, что ApocalypseThinking происходит из PhilosophySophistic и DreamyInactivity.. Если мы попробуем удалить com.human.ApocalypseThinking, то скорее всего этот модуль возродится снова уже под другим названием, и снова потребуются годы на его поиски.
- И, наверно, возможно самосоздание всех модулей из com.human после их удаления?
- Да, безусловно!
- Тогда необходимо копать глубже.. что из себя представляет процесс "человечество"?
- Это мегапроцесс, состоящий из милиарда маленьких микропроцессов "людей". Каждый человек - это тоже процесс, но очень короткий и в основном химический..
- Но, например, мегапроцесс "волки" тоже состоит из множества таких же химических микропроцессов, и в то же время "волки" не порождают никаких недокументированных процессов и тем более не создают целые библиотеки типа "com.human"
- Согласен, я думаю, что стоит понаблюдать с помощью отладчика за "волками" и "человечеством".. хотя вместо "волков" я бы понаблюдал за "обезьянами"..
- И сколько лет Ты собираешься за ними наблюдать?
- Думаю, лет 100 хватит..
- А у нас крайний срок решения этой проблемы всего 200 лет... Что говорится в документации по поводу API "человечества" и API других млекопитающих?
Почему бы для начала просто не сравнить их API по документации?
- Это к сожалению невозможно! Документация была залита лавой во время извержений вулкана забыл уже сколько тысяч лет назад!
- Черт! И никто даже не помнит когда и в каком месте и при извержении какого вулкана это произошло?
Появляется Черт: - никто, я тоже не помню!
- Ладно, Иешуа, запускай свой отладчик, но смотри в основном на различия в API.. исследуй все три процесса "волки", "человечество", "обезьяны"..
Прошло 5 лет:
- Алоха шэф! Я нашел принципиальные отличия в API:
Цитата:
public interface Волк { \\тоже самое для обезьян
public boolean isОпасность();
public void setОпасность(ПризнакиОпасности);
public boolean можноСъесть();
public void setМожноСъесть(ПризнакиCъедобного);
public boolean аНеСъестЛиЭтоТебяСамого();
.....
}
|
Цитата:
public interface Человек {
public boolean isОпасность();
public void setОпасность(ПризнакиОпасности);
public boolean можноСъесть();
public void setМожноСъесть(ПризнакиCъедобного);
public boolean аНеСъестЛиЭтоТебяСамого();
.....
public abstract String почему();
public abstract void потомуЧто(String описание):
}
|
А в остальном все абсолютно одинаково, у всех видов есть хранилище данных для входной информации и механизмы передачи этих данных по наследству от старых процессов к новым..
- Иешуа, все понятно.. спасибо за отличную работу.. Ты говорил, что есть специальная команда для активации ApocalypseModule, где она..
- Она была в документации ммм...
- Залитой лавой в неизвестно каком тысячелетии?
- ..эээ.. да