[bash.org.ru] [IT Happens] [zadolba.li]

IT Happens

Клиент и саппорт. Разработчик и заказчик. Программист и программа. Вести с фронтов.
1615141312111098• • •321

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

11 февраля 2012, 11:00

рейтинг: 695

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

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

Эта история мне по нраву!

 

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

9 февраля 2012, 12:45

рейтинг: 940

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

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

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

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

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

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

Эта история мне по нраву!

 

#8371: Франкенштейн учится программировать

28 января 2012, 09:00

рейтинг: 1857

Началась эта история в разгар кризиса 2009 года. Работы в нашей микрофирмочке становилось все меньше с каждым днём. И тут, как в сказке, к нам постучалась некая биохимическая лаборатория с заказом на разработку софта для лабораторного комплекса, ссылаясь на наше название, в котором был намёк на кроссплатформенную разработку. Ну да, у нас было три программиста: один начинал с линуксов/C++, второй с Win/Java, а третий ещё на КПК со времён «палмов» софт писать умел. В общем, честно сказать им, что мы абсолютно не то, что им нужно, я сразу не рискнул, а через пару минут понял, что им, в сущности, уже всё равно, с кем пропадать.

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

Я попросил посмотреть на софт и понял коллег. Была одна старая машина под Win’98, на которой всё работало, и несколько машин, на которых эту разработку пытались запустить, но даже тотальное копирование жёсткого диска не помогало.

Через полдня изучения скопированного диска вырисовался диагноз. Обработка собрана из восьми опенсорсных и не очень пакетов разных лет и языков, написанных на Fortran IV, Java, Аda'95 и JDBC, работающих с обновляющимися через интернет научными базами данных самых разных форматов, для полного счастья склеенных редкой версией Perl, в которой, кстати и велась финальная часть обсчёта. Работа с БД велась через CPAN/ODBC.

Собираясь попрощаться, спросил, сколько же денег предлагают за такую работу. Переспросил. В общем, взялись.

Знакомый сисадмин собирал на корпоративных свалках компы, идентичные рабочему, а мы пытались понять, почему не работают нормально инсталлированные копии.

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

А самый весёлый секрет состоял в том, что PATH иногда надо было корректировать прямо во время сборки, работая клавишей Pause. Кстати, make тоже надо было иметь трёх видов.

В общем, вначале мы запустили действующую копию на собранном из запчастей компе, идентичном работающему, и получили от восторженного заказчика предоплату. Потом, уже не беспокоясь о своём будущем, за пару дней до отгрузки успели собрать нормально работающую копию на нормальном компе, при этом всё было скомпоновано под нормальную версию Perl, скомпилированного PAR. Все пиратские модули перед запуском копировались в зашифрованные папки, а по окончании аккуратно оттуда вычищались.

Вскоре мы уже приготовили первую версию софта, не содержащую ничего пиратского, потому что в следующем году обещали купить около 15 систем. В фирме уже десять человек — может, даже на одном языке всё перепишем когда-нибудь…

 

#8349: Индус — не национальность, а диагноз

25 января 2012, 12:45

рейтинг: 632

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

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

შენ მოგიტყან ტრაკი! Спасибо товарищу, который научил ругаться по-грузински — окружающие не понимают смысла. Ну почему в функцию имя поля должно передаваться в виде (field_name), а не field_name — без скобок?

И пофиг, что автор этого кода британец. Всё равно он индус.

 

#8328: В Индию со своим самоваром

23 января 2012, 16:45

рейтинг: 1211

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

Дальше — больше. Оказалось, о нормальных формах тоже никто не слышал. База данных предоставленного мне проекта имела чудовищную структуру, была не нормализована, во многом избыточна и нелогична. Выяснилось также, что самые основы — SQL — эти горе-разработчики не знают: везде и всюду я натыкался на чудовищные, громадные и неудобные запросы. Складывалось ощущение, что на словах SELECT, FROM и WHERE изучение разработчиками SQL закончилось.

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

Задолбали люди, которые не хотят прислушиваться к конструктивной критике. Достали те, которые считают себя специалистами, но категорически отказываются воспринимать новое. Устал я от тех, кто не старается сделать свою работу хорошо и качественно. Пугают такие конторы: когда к ним устраивается специалист без опыта, они могут научить его только плохому.

 

#8262: На полпути выделялка сломалась

16 января 2012, 09:00

рейтинг: 490

Найдено в коммерческом коде. Пишет бывший московский студент. Ну что, не только индусы получают деньги за объём программного кода.

if (isSelected) {
component.setBackground(Color.BLUE);
} else if (!isSelected) {
component.setBackground(Color.WHITE);
} else {
throw new IllegalStateException(
"Table row should be either selected, or not"
);
}

 

#8203: +20% мозгов

7 января 2012, 09:00

рейтинг: 1095

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

//TODO:
//include brains.h
//include hands.h
//exclude indian.h


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

//DONE!
//thank you, unknown developer!

 

#8161: Под шелест выпадающих ячеек

29 декабря 2011, 12:45

рейтинг: 632

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

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

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

 

#8150: Маленькое чёрное платье.gif

28 декабря 2011, 16:45

рейтинг: 628

Поступил заказ на модификацию дизайна юкозовского сайта под минимализм: чёрный, белый, серый. Без картинок. Вроде бы ничего сложного, одна халява.

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

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

 
1615141312111098• • •321
 
текст или номер истории
реклама
обратная связь
Хотите разместить рекламу?
Информация для рекламодателей.

Вопросы, предложения, что-то не так на сайте? Пишите в саппорт!
на сайте
Утверждено: 8399
Сегодня: 5
В рассмотрении: 2006
тэги
лучшие последних семи дней
статистика
Рейтинг@Mail.ru