bash.im ithappens.me zadolba.li

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

9415

Наше Желтейшество

19 июня 2012, 10:00

Устроился на работу в известную компанию младшим жёлтым программистом. Проработал уже почти год. Мой старший товарищ учился на этой базе, переходя с «семёрки» на новомодную «восьмёрку». За несколько лет его практики база из простенькой УТ 10.3 стала чудовищем, в котором документы проводятся по десять секунд, а в коде без бочонка водки не разобраться. База стала зависимой от одного человека.

Сейчас товарищ ушёл в отпуск. Я уже три дня жду, когда отгрузочные документы перестанут проводиться, и директора придут меня убивать. Чувствую себя последним героем. Помолитесь за меня жёлтому богу, ладно?

9380

Быстрее, выше, глупее

Смотрю я на эти битвы мегагерцев с ядрами и тихо офигеваю. Производители софта для смартфонов до сих пор добиваются плавности движения картинки.

Как человек, программировавший на ZX Spectrum, я помню, что при 3,5 мегагерцах частоты (в тысячу раз медленнее современных процессоров!) в играх умудрялись делать плавный скроллинг. Ну, можно сделать скидку на С, на громоздкие библиотеки, на большое разрешение экрана. Но через какую жопу нужно писать софт, чтоб ему требовался на смартфоне четырёхъядерный процессор? Где хвалёное аппаратное ускорение?

Ответ прост: чем быстрее железо, тем больше быдлокода пишут программисты. Нас жестоко обманули, господа.

9245

Времени много, гигагерц полно

Сегодня ребята сдавали технологии программирования. Задают им задачу по SQL: вывести из таблицы поля «имя» и «дата рождения» только тех сотрудников, которые работают в Западном регионе. Вроде бы ничего сложного, да? Пишем:

SELECT name, birth_date FROM staff WHERE region="West"

Верно? А вот ни фига! Это задание нужно сделать двумя запросами: одним вывести имя и дату, а вторым отобрать сотрудников из заданного региона.

У меня только один вопрос: нас сознательно с универа учат писать индийский быдлокод?

9170

Падай ниц перед моим кодом!

Правлю чужой PHP-код. Самописный сайтовый движок, который умудрялся при 15000 посещений в сутки класть выделенный сервер. Причём процессор был загружен на 1–2%, а база трещала под неимоверной нагрузкой.

Выяснилось следующее. На странице в двух местах выводилось меню: полное и с текущего места. Мало того, что построение содержимого не было объединено в один процесс, то бишь каждый раз данные брались заново, так ещё и для простого составления списка статей, когда нужны заголовки и ещё пара мелочей, не мудрствуя лукаво, человек написал: «SELECT * FROM %tablename%». Всего в базе порядка 150 статей с полным и сокращённым текстом. Редкая статья меньше 4000 знаков. Ну, вы поняли…

Кривые комменты — и того лучше. Вместо простого запроса «SELECT COUNT(id) FROM %tableName%» человек получает массив всех записей из базы. Затем примерно в 30 строках описан сложнейший алгоритм подсчёта количества записей.

Но убило даже не это. После всех этих манипуляций красуется строчка:

$count_rows = $count_rows;

Ну, хоть в чём-то человек был уверен на 100%!

9139

Системные требования — китайская грамота

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

Апофеозом была не сама система, которая была собрана и запущена на коленке буквально за пару часов. Им была программа. Простой MSI, но на выходе… На выходе была китайская грамота. Поскольку жители Китая — наши соседи на Дальнем Востоке, мне приходится знать язык хотя бы с разговорником. Интерфейс на марсианском, хелп на марсианском — у меня истерика. Вылетает программа с ошибкой ODBC от драйвера MS Access. В мануале ничего не сказано про драйвера. Попробовал четыре ноута, на одном уничтожил операционку, пока на следующий день не пришёл к себе в офис. Там прога встала без проблем.

Баннер в итоге прошил, хозяева ресторана меня пригласили на поддержку сети и т. д., но, вопрос самолюбия остался. Позвонил в краевой центр знакомым прогерам, описал проблему. Они решили вопрос за двадцать минут. Поймали ошибку ODBC, грамотно рассудили, что раз программа китайская, значит, и бороться с ней надо по-китайcки, — добавили язык в винду, и всё завелось. И кто сказал, что компьютерный язык — английский? Дома на «семёрке» не получилось, а на работе приходится общаться с китайцами, потому язык там установлен.

9050

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

24 апреля 2012, 08:00

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

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

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

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

8953

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

11 апреля 2012, 08:00

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

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

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

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

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

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

8918

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

6 апреля 2012, 10:00

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

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

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

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

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

8864

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

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

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

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

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