Истории с тегом: индийский код

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

9050

Без гуя задержек до…

Есть прибор — виндовый комп с платами сбора данных. Под виндой крутится оболочка, опрашивающая платы и по хитрым формулам считающая результаты измерений. На экране строятся разные графики. Приборчик опрашивается по LAN: запрос — ответ. Время отклика критично: нужно работать в реальном времени.

Если запросить одно значение, отклик придёт за 10 мс, если три и более пакетов — за 5. Если закрыть интерфейс и работать только по LAN — 3 мс.

И самое интересное: если выйти в какое-либо меню программки, отклик меньше 1 мс. Сильно меньше. Причём интерфейс работает, графики рисуются. Что разработчики там написали и как?!

А ведь были времена, когда вместо MOV AX,0 писали XOR AX,AX — на пару тактов быстрее…

8953

Апгрейд не должен останавливаться

Я поражаюсь милым маркетинговым трюкам известного производителя чипсетов и процессоров. Вместе с драйверами на контроллер давно распространяется их фирменная утилита мониторинга состояния жёстких дисков и массивов. То, что написана она на .NET, дистрибутив которого весит в десять раз больше, чем сама программа, — это семечки. Главная феерия впереди.

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

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

Наконец, апофигей. Потратившись на апгрейд и потирая руки, мы снова запускаем утилиту. О, в это невозможно поверить: теперь при деградации массива нам будет отправлено «тревожное» письмо! Для этого всего лишь достаточно иметь под рукой open relay.

Резюмирую: в давно разрабатываемую программу для мониторинга критичного сервиса в 2011 году добавляется функция отправки сообщений о неполадках по e-mail, которая включается только на определённых чипсетах и не содержит ни единого намёка на SMTP-авторизацию! И это в век спама и вирусов, когда ни один уважающий себя почтовый сервер без авторизации письмо из своего домена не отправит.

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

8918

Как будет «быдлокод» по-французски?

Знакомая попросила установить на ноутбук программу для изучения французского языка. А что сложного? Я согласился. Светловолосая красавица по-хозяйски вставила диск в привод (вдруг я не умею?), дождалась автозагрузки и оставила меня с компьютером наедине. Авторан оказался просто рекламой, пришлось искать и устанавливать всё вручную. Что предстало перед моим взором?

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

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

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

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

8864

Двойной российский Inception

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

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

Я понимаю, что можно было второпях нагородить делов, но вам, уважаемые, любой мало-мальски смыслящий человек скажет, что массив восьмого уровня вложенности — это перебор!

В связи с этим хочу напомнить программистам старую истину Стива Макконнелла: «Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте», передать огромный привет Андрею Николаевичу и Ивану Юрьевичу и пожелать им на новом месте работы такого же наследства, которое досталось мне!

8834

Пиксели-полиглоты

Разбирая код сайта, наткнулся на строчку:

Вот в какой стране это писали?

8795

Комменты — не хрен собачий

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

А потом этим чудом приходится пользоваться другим, где-нибудь в машине, с планшета. И начинается… Чудо-дизайн не влезает в рамки экрана ни по высоте, ни по ширине, потому что у дизайнера новенький монитор в полстены, под него и делалось. Многомегабайтные XML рвутся на лету, потому что мобильная связь такая мобильная. То, что удалось не порвать, никак не может обработать единственное ядро процессора, вяло шевелящееся под тоннами скриптов.

И вот наконец, с превеликими трудами преодолев затруднения, открывается оно — окно с единственным полем «Введите комментарий» и кнопкой «Отправить». Ну на хрена, спрашивается?

8763

Идите индийским путём

В 1994-м подарили мне старенький «Агат». Подключил я его к телевизору «Рубин» и давай учиться программировать. Впрочем, программированием это было назвать нельзя — так, баловство. Команда GOTO встречалась чаще остальных, вместе взятых. Только потом я узнал, что это называется «спагетти».

Затем «Агат» был задвинут во встроенный шкаф. А недавно решил я ностальгию потешить — достать, пропылесосить и включить. Сказано — сделано. Заработало с полпинка. Теперь на видном месте стоит, включаю иногда.

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

И откуда столько GOTO?

8504

Мои маленькие кривокодики

Ну что, программеры, померялись? А теперь слово службе сопровождения ваших творений.

При установке необходимо отредактировать конфиги в XML. Господа, кто вам сказал, что XML подходит для этого? Перемещаться внутри облака тегов в поисках начала и конца, особенно если конфиг «всё в одном» — та ещё задача. Что, какой специальный редактор? Софт устанавливается на сервер, что стоит в бункере, и на каждый байт там требуется свидетельство о сертификации на гербовой бумаге. Что помешало посмотреть, как это делается вот уже более 30 лет в UNIX-системах?

Установка внезапно валится на одном из этапов. В мануале: «Укажите путь к файлу в конфиге». На деле в половине модулей эта настройка игнорируется, а путь тупо забит в коде. Да, это быстрее, чем парсить XML-конфиг, — а я что говорил?

В программе сотрудник привязан к двум отделам — такое ТЗ дал менеджер проекта. Но вот теперь нам надо к трём отделам. Что? Нужно полностью пересматривать структуру базы? А почему было не сделать это с помощью двух таблиц и связки между ними? Думали, не нужно? Сложно спорить. Программисту надо ставить задачу чётко, он рассуждать не умеет. Может, и код за вас написать?

Разработали новую версию? Ну зачем, зачем было менять структуру конфига? Это же теперь переносить все настройки со старого в новый. Кстати, как там с путями? Берётся везде из конфига, окей. А почему не работает? Путь слишком длинный, больше 256 байт? И что? Ограничение Виндоус? При чём тут Виндоус, у нас ведь Джава на Соляре? У вас Виндоус, вы думали, так везде?

Не хватает производительности базы, надо таблицы партиционировать. Что такое партиционировать? Это вы меня сейчас спрашиваете, разработчики? Подсказываю: вевеве-точка-гоогле-точка-ком. Индекс слетает, говорите? Подсказываю… А-а, догадались сами?

Логи где? Нет, вон в тех стапятиста мегабайтах сами ковыряйтесь. Где логи «пришло-ушло-упало»? Да, надо сделать. Да, именно так. Нет, стопицот не надо. Не получается? Подсказываю: гоогле-точка-ком, шестая ссылка, читать, делать. Мне за вас сделать? Хорошо, зарплату перечислите авансом или потом?

8491

Беспредел по-индийски

Понадобилось мне как-то сконвертировать документ. Нашёл я пробную софтину для этой цели. Документ был солидного размера, и после запуска конвертации прога сказала мне, что она демонстрационная, и дальше 50-й страницы конвертировать не будет.

Подумал я и решил указать ей диапазон страниц 1—60. Прокатило. Подумал ещё и указал диапазон 1—1277 (весь документ). Тоже прокатило. Неплохая демонстрация возможностей проги и качества кода.

8476

Смертельная битва на костылях

Я тот самый нелюбимый быдлокодерами программист, который пишет не «2 + 2», а интерпретатор формул (благо опыт позволяет это сделать быстрее, чем некоторые кодеры напишут и отладят свой «2 + 2»). Не пишу хардкодом параметр, который «никогда-никогда не будет меняться», а сделаю настройку. Могу вместо костыля плюнуть, потратить пару часов, но переписать так, чтобы не требовалось постоянно латать.

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

Так что потом не удивляйтесь, что за хардкод путей (который запрещён), ориентацию на единственный браузер или билд DX, влезание со своими именами, повторяющими чужие в системах с глобальной видимостью объектов, наплевав на установленные правила именования, вам настучали по голове и лишили части премии.

Ещё одна особенность быдлокодеров: сделать костыль не самым простым и надёжным способом, а наиболее извращённым. Работает, естественно, лишь в некоторых случаях (которые и были протестированы), а дальше пусть тестеры разбираются. Найдут — поставим ещё костылей.

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

Почему я не делаю всё сам? Физически не хватит времени писать несколько проектов, поэтому я занимаюсь наиболее приоритетными и воскрешаю смертельно больных. Опыт позволяет минут за двадцать найти и исправить баг, который до того искали полдня. Набирать код со сверхскоростью недостаточно — когда-то надо ещё и думать.