Category: наука

Category was added automatically. Read all entries about "наука".

Через тернии к

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

Наладчица Петрова паяет электронное устройство

Сдох DVD-рекордер, решил тряхнуть радиолюбительской стариной и починил сам. Диагностика удалась даже без осциллографа, одним мультиметром: в блоке питания накрылась управляющая микросхема со встроенным импульсным ключом, и из-за этого ещё сгорел резистор в цепи её запуска. Микросхему заменил, конечно, на такую же, тут без вариантов, а резистор впаял ОМЛТ-1 из старых запасов. Заслуженный, лет 30-40 возрастом.

Красный, потому что совеццкий:

Психи-программисты

Ковыряюсь в написанном на Lotus Notes банковском клиенте, на который наша контора перешла около года назад. Писала его в своё время одна фирма, потом, видимо, развалилась, сейчас поддерживает другая. Делали, похоже, совершенно разные программисты. Местами мне в принципе нравится логика автора, но код совершенно не вычищен, масса ляпов, кривых исправлений, работает всё через ужасную жопу. Но некоторые другие куски же писал просто псих. Представляете этакого помощника Сумасшедшего Учёного - всклокоченные волосы, безумные глаза, прожённый халат? Вот он.

Есть, например, процедура GetColor, возвращающая значение цвета (число - просто RGB) по его идентификатору. Для начала, чем мог бы быть идентификатор цвета - перечислением? Целочисленной константой? Нет, идентификатор - это строка! В процедуру передаётся "имя" цвета, вроде "Red" или "Dark violet-pink", хотя эти строки не имеют отношения к пользовательскому интерфейсу, а являются сугубо внутрипрограммными. Соответственно, таблица цветов описывается двумя массивами - в одном названия, в другом значения. Цветов знаем много - сто, массивы имеют по сто элементов. Поскольку сразу индексировать в таблицу при таком подходе нельзя, для поиска нужного цвета процедура делает поиск простым перебором. Уже хорошо, да? Дальше - больше. Как можно хранить значение цвета?Самый естественный вариант, казалось бы, хранить в массиве напрямую число-значение. Нет, во втором массиве хранятся... строки с шестнадцатеричной записью значения! После нахождения значения нужного цвета его надо преобразовать в число из строки - это делается два раза. Первый раз - при помощи библиотечной процедуры, полученный результат тут же выкидывается. Второй раз - вручную, при помощи своего куска кода, с ошибками, которые, к счастью, на работу не влияют. Ну и под занавес - где должны храниться массивы имён и значений? В глобальной константе или переменной? Они хранятся в локальной для процедуры структуре данных. И каждый вызов процедуры GetColor начинается с двухсот присваиваний, инициализирующих эти массивы. При всей нелюбви к падонкаффскому, я, как говорится, пацтулом.