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

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

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 гигов — рядом с мокрыми зимними сапогами, без бесперебойника, на одном оплавленном удлинителе с калорифером. (Выдохнул.) Мечта админа.

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

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

2417

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

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

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

2415

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

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

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

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

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

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

2406

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

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

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

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

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

2324

Истинный фейл

Кодеры под Новый год порадовали. Есть требования на дизайн некой функции, которые звучат примерно так: «The %function()% shall perform %action% when its %parameter% is true...» Автор документа опечатывается и пишет: «its %parameter% os true». Понятно, буковки „i“ и „о“ рядом. Доблестный вордовый спеллчекер не согласен с вариантом и заменяет на «its %parameter% or true».

Умница. Так лёгким движением электронов по кремнию условие превращается в чёрт знает что, оставаясь при этом вполне понимаемым. Верификаторы — люди непривередливые, на логичность им ругаться запрещено, не их ума дело, кода (якобы) не видят. Пишут пару тест-кейсов на покрытие этого условия, получают фейл и тут уже с чистой совестью открывают issue на requirement/code mismatch — всё по процедуре.

На носу католическое Рождество. Прекрасно понимая, что америкосовый интегратор скоро уйдёт на каникулы, индусский кодер торопится исправить баг, втыкает в требования, втыкает в код, видит там if(param) {}, говорит «угу, непорядок» и приводит код в соответствие с требованиями: if(param || TRUE) {}. Код по требованиям, фейлов нет, придраться не к чему.

2233

Индийская маршрутизация

Вы говорите, индийскому коду в институтах учат? Надо зрить в корень, господа. Сегодня мне довелось побывать на уроке восьмого класса по информатике. Темой были маршрутизация и веб. Тема вроде важная, но содержание — сплошной LOL. Итак:

«На сервере установлена специальная программа под названием TCP/IP. Причём первая часть, то есть TCP, занимается разделением сообщения на части, а вторая — маршрутизацией».

И плевать им, что IP — низкоуровневый протокол сетевого уровня, а никакая не программа, установленная на сервере. И что главная задача TCP — установление соединений, а разбиение пакетов на части — путь реализации этой задачи.

«На сайте стоит специальная программка HTTP, которая хранит и ищет в интернете веб-странички. Если искать информацию на одном сервере и на другом, то результат будет разный. Поэтому результат поиска на Яндексе и Mail.ru отличается».

Без комментариев. Если у нас так будут учить основам компьютерной техники в школе, то в институтах ещё долго будут писать индийский код.

2020

Метафоры 2.0

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

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

А надеяться на то, что всё пройдет безглючно — это делить на ноль шкуру неубитого медведя.

2008

Дитя человеческое

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

Итак, модуль по работе с кадрами. Дядя, не мудрствуя лукаво, запрашивает свои собственные данные и выпадает в осадок. Мало того, что он отображается в системе как женщина, так он (она?) ещё и беременный! Так как кодят систему в основном индусы, огрехи всплывают часто. Как оказалось, забеременеть можно не только по естественным причинам, но и в результате неправильного использования nvl и decode.

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