Истории с тегом: программизмы

Всего историй: 896

9197

Удаление и обрезание

Составляю отчёт по коммитам в хранилище кода в крупной программерской конторе. Наткнулся на юмориста, который пишет в комментариях к коммитам следующее:

> Петрова Ю. В. — достала!!!

> Исправлена косячина им. Иванова Александра

> Мы посовещались, и А. Иванов решил, что SHA должен быть всегда!

> Изгнание нечисти из PKCS#11

> Причёсывание древнего солюшена под современную моду

> Долив после забытия

> Откат неопредёленной длины

> Реализованы указания дядюшки Билла относительно DllMain

> Unknown very small changes

> Промежуточный вариант. Карцев ещё не до конца побеждён.

> Доработки под русскую козу Мозиллу

> Критические секции выброшены в пропасть

> Слияние с узбеками

> Довыкладывание чего-то недовыложенного

> К Мозилле добавлены недостающие рога и копыта

> Пятое копыто Мозиллы

> Явление Мозиллы

> Изведена порция зловредных глюков по памяти

> Version zamorochka

> Добавлены внебрачные связи

> Огромная интеллектуальная работа по сливанию

> Удаление и обрезание

> Исправление глюков после профессионального веб-дизайнера

9173

т__т

Работаю тестером в девелоперской компании. Сейчас весна, и я сильно страдаю от аллергии на всякое цветение — на улицу спокойно не выйти. Но всё так же сижу в лавке, работаю. Вид не очень у меня: лицо покрасневшее, глаза бурно красные и слезятся, горло горит.

Заходит ко мне в комнату разработчик, останавливается около меня и, удивлённо меня рассматривая, спрашивает, в чём дело. Я со страданием поднимаю на него глаза, вытираю текущие по щекам слезы и надрывным голосом говорю:

— Я разбираю твой код. Он ужасен. Не могу смотреть на него без слёз.

Поднимаюсь и выбегаю в коридор, бросая:

— Это слишком тяжело. Я лучше буду смотреть на весну!

Оставшиеся в комнате говорят, что эффект был очень сильный. С нетерпением жду новой версии приложения.

9137

Кошку на исходники

Вот зарекался же: дома о работе не думать. Вчера нарушил это правило, до часу ночи разбираясь в особенностях разработки многопоточного софта.

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

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

9135

Никогда и ни за что

В который раз очередная история о грустном: электрики неправильно подключили провода? Предыдущий админ не по стандарту обжал сетевой кабель? И теперь у вас получился большой бабах и занятие на выходные?

Скажите, а вы, наверное, и дорогу переходите по зебре, не глядя? Ну, вас же пропустить должны по умолчанию.

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

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

Не забывайте о проверке — фаз в проводе, цветов пар в кабеле, типов данных и прав пользователей. Ну, и по сторонам при переходе дороги поглядывайте.

9113

Корифеи-самодуры

«О да! Я программист!» Этим словом себя называют как вчерашние школьники и недоученные студенты, так и супер-пупер-профессионалы. Казалось бы, порог вхождения в профессию упал, освоить необходимые навыки может и первокурсник после пары книг, все методологии подробно описаны, масса небольших очень хорошо сделанных опенсорс-проектов. Посмотри поначалу, как делают другие, и сделай сам. Нет, это не наш путь. А задолбали вовсе не новички и не уровень кода, а как раз-таки профи, корифеи-самодуры.

Писать комментарии, конечно, не удел настоящего «мастера кода», а если писать, то обязательно с школьными, даже детскими, ошибками, называя всё английскими словами на русско-олбанский лад («респонс», «тестмащине»). Это было бы смешно и весело, если бы код не был зоопарком из недоделок и костылей.

Переделать общий репозиторий с полусотней проектов для удобства сборки на устаревшей системе? Так и надо. У меня работает.

Пользоваться стандартной библиотекой? Нет, мне не понравилась одна функция, и я решил всё переиначить.

Потратить уйму времени, написав банальщину, сотни раз сделанную десятки лет назад и отлаженную для всех случаев жизни? Конечно, ведь первая попавшаяся не подошла.

Это невежество смертельно задолбало. Горите в аду! Почему не потратить десять минут на чтение статьи и сделать один раз и хорошо? Не нужно никакого протекционизма, чтобы структура большого проекта стала понятной.

9098

Все лгут, все косячат

Когда-то давно на спор по пьянке я написал страничку с активным содержимым в Экселе, которая подсчитывала время работы передатчиков. С тех пор в неё была навалена ещё куча функций, и страничка стала неотъемлемой частью работы подразделения. Туда же был прикручен и заведён на бухгалтерию счётчик зарплаты для сменного персонала. Больше года к ней не прикасался. Работает — ну и хай с ней.

Много позже руководство придумало систему штрафов и поощрений за месяц. Условия были изложены, согласованы, документ был изъят для правок. Ковыряю формулы, интерфейс… Вроде удалась заготовка. Проверяю для одного нарушения. Программа беспристрастно штрафует сотрудника. Удаляю нарушение, на что программа мне выдаёт вполне логичный и оправданный результат: ЛОЖЬ. Ну, подзабыл я синтаксис как-то и формулу не дописал. Проржавшись, подумал: а ведь дело говорит железяка басурманская! В этой работе без косяков нельзя.

9089

Задница как универсальный интерфейс

Как известно, задница есть универсальный интерфейс, поскольку через задницу можно сделать абсолютно всё. Читаю комментарии в коде:

// Сделать нормально нельзя, поэтому делаем через задницу.

И двумя десятками строк ниже:

// Увы, возможности задницы ограничены.

Так пошатнулась моя вера во всемогущество оного органа.

9086

Прости нас, Юра!

Несколько комментариев из кода:

{ оставим это до лучших времен… }

// Юра, извини

// … вот это нигде не используется, но на всякий случай… ^_^

#region ХХХ — пока неясно, где это юзается — уже ясно

// ХХХ: изменения в данном запросе, помеченные как -=#death#=-, исправляют ошибку, которая не совсем есть, работают неизвестно как и приводят неизвестно к чему. Теоретически всё абсолютно корректно, но на практике это нашими учёными богословами ещё не доказано.

// ну и изврат…

// предотвращая возможные вопросы: делаю поддержку XXX на уровне YYY, а не на уровне ZZZ из-за лени

9085

Я кулхацкер или где?

Пришло описание проблемы от заказчика: «При регистрации заявления о возврате бланков, у которых длина серии 3 знака, появляется ошибка, приведенная в приложении 1». Чтобы исправить проблему в коде, решил повторить ситуацию и проверить, откуда растут ноги у этой ошибки.

Попытался в программе оприходовать бланки с серией в три символа — нельзя, поле ввода серии рассчитано на два. Я кулхацкер или где? Оприходовал бланк с серией «ЫЫ», после чего руками в базе данных поменял значение на «ЫЫЫ».

Попытался в программе реализовать данный бланк — нельзя, бланки с ошибочной серией даже не отображаются в списках выбора. Я кулхацкер или где? Поменял серию бланка назад на «ЫЫ», реализовал, после чего снова руками в базе данных поменял серию на «ЫЫЫ».

Попытался в программе зарегистрировать заявление о возврате — нельзя, бланк опять не отображается из-за неверной серии.

В программе такой косяк сделать нельзя — там более девяти контролей стоит, которые отсекают все попытки накосячить; даже если поломать базу руками, всё равно ничего не получится. Подумал было, что заказчик так хитро издевается, но передо мной лежат два скриншота, где у них выбран кривой бланк и на экране ошибка. Как, как они это сделали?

Криволапый пользователь с лёгкостью порвёт систему, которую не смог поиметь матёрый хакер, и даже не поймёт при этом, что он натворил и как его угораздило.

9084

Три морали

Несколько лет назад работал я в белорусской IT-конторе, занимался сопровождением крупной системы документооборота для нацбанка и министерства по налогам и сборам.

Приходит как-то описание критической ошибки: пользователь пытается открыть документ (внутри программы), а вместо этого намертво падает SQL-сервер целой налоговой инспекции. Протестировал всё — ошибки не обнаружил, а потому попросил выслать мне бэкап базы данных пользователя. Просматривая базу, наткнулся на несколько замечательных строк в таблице «Причины списания бланков и акцизных марок»:

съели мыши и крысы

залили чернилами и хлоркой

проверка!

причина неизвестна (а я все знаю!) неправда

достали очень-очень

потешились и хватит

продали налево

куда-то делись

Потом я нашёл ошибку в базе — некорректное число в одном из системных полей. Как выяснилось позже, это одна добрая девочка-инспектор решила «списать из накладной партию в десять тысяч акцизных марок», но не смогла пройти через три уровня защиты от дурака и полезла в базу данных руками. Мораль: прокачанный пользователь бывает хуже ламера.

* * *

Писали как-то раз с коллегами план работ на месяц (шеф болеет гриппом, его нет). Одним словом, «Запорожские казаки пишут письмо турецкому султану». Взяли написанный шефом план на прошлый месяц и стали его переделывать. Под возгласы типа «Фигасе! А это тут ещё откуда?», «А что означает эта хрень?» и «Вау, да мы уже на месяц со сроками опоздали…» и дружный ржач всей команды рождался официальный документ, который определял нашу (и не только) зарплату на ближайшие два месяца. Мораль: программисты должны только кодить.

* * *

Пришло описание проблемы: медленно строятся отчёты. Формирование отчёта идёт в два этапа: построение отчёта в программе и рендеринг в Crystal Reports (длится в шесть раз дольше построения — специально замерял). Постановка задачи: «Отчёт по акцизным маркам по ХХХ области за год должен выводиться в течение не более 15 минут!» Объём файла отчёта — около 12 МБ. Тестируем похожий отчёт (81 МБ) на P4-3000, 1 ГБ DDR, результат — за 15 минут построилось (ещё только построилось — не рендерилось!) чуть больше 10% отчёта. Я в шоке. Спрашиваю: а что у них за суперкомпьютеры, если они хотят вывести отчёт за 15 минут? Шеф в ответ протягивает бумажку, на которой ровным почерком выведено: «Сeleron-600 / 128MB PC100 / …» Мне просто интересно, как у них ещё WinXP SP2 работает на таких машинах. По мне, уместнее было бы ставить задачу вывода отчёта хотя бы за две недели, но никак не за 15 минут. Мораль: своевременный апгрейд — залог спокойного сна программиста.