При подключении к компьютеру выяснилось, что на флешке внезапно откуда-то появилась Ubuntu 9.04. Что это за самозарождение жизни, я не могу понять до сих пор. Если учесть, что на момент использования смартфона у меня не было компа, история вдвойне мистическая.
#7691: Я не могу на вашем суржике
12:00 04.11.2011, IT happens
Разбираюсь с одной программой, которая должна работать на нескольких ПК. Естественно, не хочется на каждом её устанавливать, потом обновлять и т. д. Заглядываю в реестр и тихо стекаю по стулу.
[HKEY_LOCAL_MACHINE\SOFTWARE\%company_name%\%product_name%]
"Version"="a.b.c.d"
"InstallDir"="d:\\games\\%product_name%"
"InstallPath"="d:\\games\\%product_name%"
"Dir"="d:\\games\\%product_name%"
"Path"="d:\\games\\%product_name%"
"language"="English"
То ли на этом у программиста кончилась фантазия, то ли к каждой конкретной строке обращаются участки кода, разработчики которых никогда так и не установят контакта.
#7692: WHERE bpm = 130
14:00 04.11.2011, IT happens
Открываю Query Analyzer, пишу запрос «SELECT * FROM …», втыкаю наушники, тыркаю на зелёную стрелочку Execute query и возмущаюсь:
— @#$, чё не играет?!
#7693: Затухающие колебания вязкого кода
14:00 04.11.2011, IT happens
Давно это было. Наехал на меня начальник: мол, вы что-то делаете-делаете, а ни хрена не видно. Ну, я в сердцах слил статистику из репозитория, построил графики и всякие аппроксимации методом наименьших квадратов и малость охренел сам.
Написание проекта можно рассматривать как переходный процесс из состояния 0 (ничего нет) в состояние 1 (проект готов). Из курса ТАУ я ещё помнил дифуры второго порядка для затухающих колебаний, но увидеть такой график, разглядывая динамику количества строк в проекте, не ожидал. Шутки ради по той же схеме проанализировал коммиты всех подчинённых — картина та же, хоть и менее явная. Потом поднял статистику фиксации багов и нашёл аналог длины свободного пробега молекулы в газе.
В общем, так.
1. Достаточно большой софтверный проект как макросистема описывается с достаточной точностью дифуром второго порядка (затухающие колебания в вязкой среде), то есть двумя числами. Каждый программист может быть описан теми же двумя числами. Примерный смысл на бытовом уровне: как быстро человек пишет код и как быстро он правит баги.
2. Коэффициент затухания («вязкость», сопротивление изменениям) у всего софтверного проекта больше, чем у любой его подсистемы или у отдельного программиста. Период колебаний у программера практически всегда равен двум суткам: залил — все потестили — залил фикс. Как минимум 20% строк первоначального коммита будут поправлены — тоже интересная константа.
3. Совместно работающие программисты подчиняются правилу сложения источников белого шума: суммарная эффективность равна корню из их числа.
4. Время фикса бага пренебрежимо мало по сравнению со временем его жизни. Чтобы нарваться на баг, надо тестить. Никакие другие методы, увы, не помогут. Время жизни бага растёт экспоненциально в зависимости от количества пофикшенных.
Вот так. Рассчитав всего два числа, я могу сказать, когда мы закончим отлаживать проект, оценить эффективность любого программера и прикинуть количество багов в проекте, исходя из частоты подачи рекламаций. Но, что самое печальное, это константы. Я не могу повлиять на них точно так же, как не могу изменить ускорение свободного падения. Поэтому знания эти бесполезны.
#7694: Закрутилось-завертелось
12:00 05.11.2011, IT happens
Случилось однажды средней руки компьютерной конторе прокладывать сеть на одном производственном предприятии. Между делом обнаружил главный сетепрокладчик, что рядом с каждой сетевой (в смысле, 220 В) розеткой установлена ещё одна, запасная. Поинтересовался у главного местного: мол, чёй-то?
— А это, — получил он ответ, — наша система бесперебойного питания. Если накроются внешние сети, мы всё равно при электричестве останемся.
— А как работает?
— Пойдём, покажу.
В общем, в глубоком-преглубоком подвале стоит волшебная установка, от которой и растянута по всему зданию эта самая бесперебойная сеть. Схема такая: здоровенный электродвигатель, запитанный от обычной электросети, раскручивает огроменный чугунный маховик тонны в три весом. По другую сторону от маховика установлен электрогенератор, от которого и расходится по всему зданию сеть бесперебойного электропитания.