bash.im ithappens.me zadolba.li

Индийский код

2650

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

Довелось ставить хорошо доработанную под заказчика известную свободную CRM. Дорабатывали наши братья-индусы. Первое, что я встретил в документации — рекомендацию установить параметр ведения логов в Error only. Иначе, обещали разработчики, если поставить его в Warnings, а тем более в All, логи начнут слишком быстро забивать свободное пространство на диске.

Вдобавок ко всему install.php подключал и выполнял любой файл, переданный через POST. Время идёт, индусы не меняются.

2626

До свидания, комплексы

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

Программа заполняет таблицу на 16 колонок и сто с небольшим строк и выгружает данные в файл специального формата для последующей консолидации в головном офисе — прямо скажем, не сверхсложная задача. Сначала программа требует установить на компьютер и вручную настроить СУБД по инструкции, потом саму себя. Запускается только в полноэкранном режиме и жёстко устанавливает на мониторе разрешение 640 х 480. Как выяснилось, ЖК-мониторы наших кадровиков такое не поддерживают.

Что поделать — пришлось изучить формат выгружаемого файла и написать то же самое на макроязыке Экселя. После этого я понял: если писавший это может называть себя программистом, то я и подавно.

2617

За пару лет из Индии в Россию

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

global.krove-=1 /*хз че разобраться и потом написать коммент что это делает*/
if (global.krove<0) /*Та же хрень*/
{global.krove=0} /*То же самая хрень что и выше*/

При этом в коде было несколько тысяч переменных — какая за что отвечает, понять после двух лет просто нереально. Это ещё ладно. Дальше я увидел следующее и понял, что за два года сильно шагнул вперёд в отношении качества кода:

if (global.navik_vojdenia=2)
{}
if (global.navik_vojdenia=3)
{}

2614

Всех их вместе соберём

Продаём мы библиотеку, написанную на С++. К ней написали примерчик, как с помощью этой «либы» построить СОМ-сервер, и клиента на Visual Basic, чтоб показать, как этот COM-сервер дёргать.

А год назад я увидел, как это юзают испанские программисты. Наша библиотека по-прежнему упрятана в COM-сервер, Бейсик-клиент несколько переделан, чтобы его можно было дёрнуть из Delphi, а на Delphi написан переходник для Java. Видимо, больше языков программирования они не знали.

2602

Болгарская нормальная форма

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

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

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

При нормализации реляционной базы данных до болгарской нормальной формы на каждый учитываемый объект заводится от 7 до 50 штук маленьких, но очень гордых .dbf, в каждом из которых парой строчек описывается очередной признак или атрибут объекта. И не ссылками на записи в библиотеках, а именно сами признаки и атрибуты — словами. Надо ли объяснять, что при накоплении пары сотен тысяч объектов база распухает до сотен гигов этих самых мелких файликов? Для пущего антуража пишется всё это безумие на болгарифицированном FoxPro. Вы знаете, что означают слова «грешка» и «забележка»? А любой специалист, пытавшийся работать с этим чудом, знает, что это «ошибка» и «ярлык».

База размещается строго в папке, в которой установлена программа, а программа — строго в C:\%ProgramName%\, и никаких компромиссов. Экзешник должен быть запущен из-под админской учётки — это защита от воровства такая, программа постоянно тычется в сервак горе-разработчика, подтверждая свою легальность. Папка программы обязательно должна быть расшарена на полный доступ. Мало того, должен быть открыт полный доступ к трём DLL в System32, как вы его организуете — ваша забота. Приложения работают непосредственно с базой напрямую, программист не слышал ни о каких технологиях доступа к данным.

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

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

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

2448

Код по-студенчески: не печатается, не читается, не компилируется

Работаю городской компьютерной скорой помощью. Так вот, моя жена училась на программиста. За трое суток до сдачи диплома созналась, что программа не работает. Двое суток плясал с бубном — написал ей новую.

Диплом жена сдала на отлично. А её куратор (мы давно знакомы по работе) через час после этого позвонила и попросила в следующий раз писать код для студентов так, как они их учат. А это как, простите?

2417

Попкорн — пауза — права

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

К счастью, эти флешки воспроизводились в самом обычном плеере, что позволило мне нажатием кнопки «play» проиграть весь файл до конца и, поставив на паузу в нужном месте, сдать тест, не ответив ни на один вопрос.

2415

Молодые неспециалисты

Про нынешнее образование и молодых «специалистов». Простите — накипело.

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

Больше половины группы с компьютером не дружит. Простейший пример: половина не знает, что такое аська, про джаббер вообще никто не в курсе. Линукс в глаза не видели (а некоторые и вовсе не слышали). Все сидят в контакте и играют в «Фермера». Все гламурные такие, за собой следят; из всей группы только я нередко хожу с красными глазами и частенько пью кофе. Один одногруппник постоянно говорит: «Ну и что, закончим мы универ, всё равно ведь все пойдем на рынок работать». Я в шоке от таких слов. Чем думали, когда заявление сюда писали? Задницей? Ну да, больше вариантов и нету.

Стандартная картина на паре по информатике: я, составив программку, сижу и думаю, что бы ещё такого интересного в неё добавить, так как задания в основном простенькие. Меня подзывает девочка с жалобным выражением лица и плаксивым тоном просит посмотреть, что у неё в коде не так. Я смотрю, и глаза становятся круглыми от быдлокода. Начинаю обьяснять, что не так. Ладно, если человек вообще хоть что-то похожее на код напечатал, а то есть такие, которые вообще не понимают, что надо делать. Подзывает, спрашивает, что печатать, я диктую, потом интересуюсь: «Ты вообще понимаешь, что сейчас напечатал?» Отвечает отрицательно, я про себя ругаюсь матом и говорю, чтобы лекции хотя бы читал. Он в ответ: «Читал, не понял». Молча отхожу.

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

2406

Впариватели-интеграторы

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

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

Но всех переплюнули наши последние гости, которые должны были установить некий хитрый прибор учета. Прибор установили — работает и даже что-то учитывает, наверное. Приехали к нам показывать, как с ним обращаться. Вот только на их ноутбуке их программа работать отказалась (уже интересно). Гости извинились, уехали. Приехали в следующий раз — забыли взять с собой программу! Оставили нам девайс для связи с тем прибором, извинились и сказали, что вышлют программу по почте.

Прислали. Открываю инструкцию, по картинкам ещё отмечаю, что собрана программа в Борланде, похоже на Дельфи. Ну, ничего страшного, думаю, цель оправдывает средства. Запускаю, и тут эта софтина начинает меня радовать по полной: «List index out of bounds (–1)» при старте. Мда, в универе за такое по рукам били. С тем девайсом, что у нас, программа связываться отказалась. Открываю окно настроек и вижу кнопочки с надписями... «btnOK» и «btnCancel». Ну не п#$%@ц ли, товарищи?