Истории с тегом: программизмы

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

11243

Стук в закрытую дверь

Разгребая свои старые исходники, нашёл такой шедевр:

fclose(f_log);

fprintf(f_log, "Файл закрыт");

Долго думал.

11241

Ракеты Голдберга

Ракеты и лошадки, говорите?

Вот есть, допустим, сайт — справочник-поисковик по довольно большой базе данных. Работает очень просто: проставил галочки фильтра, нажал кнопку «Поиск», почитал результаты.

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

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

Потом заменили галочки на ползунки ON/OFF. Всё бы ничего, но теперь вместо одного клика их нужно перетягивать из одного положения в другое.

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

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

И зачем?

11226

Сохраним вымирающих кракозябров

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

Но не всё так просто. Если кто встречал, иногда UTF-8 выглядит кракозябрами, при этом от «нормальной» она отличается значением первого байта: 0xD0 вместо 0xC2, например. Причём и то, и другое довольно часто в разных программах называют UTF-8, и тогда в их настройках сам чёрт ногу сломит.

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

— Не парься, скачай Штирлица.

— Не парься, подключи библиотеку iconv.

— Не парься, набей соответствие в табличку.

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

На фиг. Пошёл читать документацию в оригинале.

11216

Тончайший баланс костылей и затычек

Позвонили мне как-то из Челябинска. Предложили работу, помощь при переезде. С квартирой проблемы были, поэтому согласился.

Фирма в числе прочего занимается продажей туров в Азию. Есть сайт c поиском туров, управлением продажами, регистрацией клиентов и т. д. Движок на C++, так как всё делалось давно и должно было держать большую посещаемость. Требуется поддержка и доработка. Если что непоятно, есть главный программист, можно обращаться к нему. Испытательный срок — месяц. Зарплата на уровне начинающего программиста. Это то, что сказали на собеседовании.

Первый день. Главный программист показал рабочее место. Сделал svn update. Конфликт, ещё конфликт. Позвонил кому-то. Оказывается, предыдущий программист по какой-то причине просто копировал файлы на сервер.

— Ты тоже копируй, только осторожно, не сломай ничего на сайте, и делай бэкапы.

— Так давайте настроим нормально.

— Да мне сейчас некогда…

Второй день. Директор сказал, что компьютер на ночь можно не выключать — рабочее время программиста ценнее. Оно, может, и ценнее, но экономить пару минут на включение… Что ж тут за работа такая?

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

— Кстати, давайте SVN настроим.

— Да мне сейчас некогда…

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

— Как вот это работает?

— Да я сам не намного больше тебя знаю, лучше сам разбирайся.

Разбирался до вечера.

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

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

— А что вы делаете? Пойдёмте-ка в переговорку.

— Знаете, мне кажется, я не пройду испытательный срок.

(Удивлённо, немного изменившись в лице.) Как так? Почему?

Долго разговаривали. Решили, что я доделаю форму регистрации и могу увольняться.

Восьмой день (после выходных). Добавил поле в форму регистрации. Ради интереса посчитал — изменения были в 16 местах в 9 файлах плюс небольшой костыль в виде триггера в базе.

На следующий день мне подписали заявление об увольнении. Ну её на фиг такую работу!

11116

Ввод в небытие

Редактируя очередной код, я вдруг понял, почему у многих программистов есть привычка что есть силы ударять по клавише Enter. Этим ударом, подобным хлопком тапка по таракану, программист давит багов!

11115

С нуля и до нуля

В середине девяностых мне исполнилось десять лет. На мой первый юбилей родители купили 386-й комп — краса и гордость нашей улицы!

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

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

11084

И никто не виноват

Я пишу для Ардуино,

Это славная машина.

Я пишу для Ардуино

Скетчи разных железяк.

Если плата выйдет плохо —

Назову её «дурёха».

Если скетчик выйдет плохо —

Назову его «дурак».

Подошли ко мне два брата

И тихонько говорят:

«Разве плата виновата?

Разве скетчик виноват?

Ты их пишешь плоховато

И паяешь кривовато.

Ты сама и виновата,

И никто не виноват».

Я пишу для Ардуино,

Пью индийский чай печально,

Я пишу для Ардуино,

Приговариваю вот:

Если плата выйдет плохо —

Назову «электрочайник».

Если скетчик выйдет плохо —

Назову «индийский код».

11061

Точка невозвращения

Девушка собралась к подружкам. Свой телефон она потеряла, взяла мой.

Будильника у меня нет, пользуюсь тем, который на телефоне. На следующий день на работу — вставать как-то нужно. Решил написать будильник. Написал. Проверил. Работает.

Встал бодрым и выспавшимся. Смотрю на время. Естественно, проспал: при отладке забыл брейкпоинт убрать.

11048

Вот такие пироги

На IT happens часто ругают программистов за кривые интерфейсы, нелогичное поведение программы и прочие подобные вещи. Вот только далеко не всегда в этом виноват программист. Если это не какой-то самопальный проект, а коммерческий продукт, в зависимости от конторы в разработке интерфейса могут участвовать проектировщик взаимодействия, дизайнер, менеджер, маркетолог… Нет, есть клинические случаи, когда этим заставляют заниматься программиста, но тут, опять же, претензии надо предъявлять не программисту, а его руководству.

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

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

Так что, уважаемые пользователи, если вам попалась программа с кривым интерфейсом, не стоит сразу ругать программистов. Часто мы на вашей стороне, но не всегда имеем возможность что-то изменить.

11045

К четвёртому пришествию

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

— Сделаем всё, как вы хотите! А как вы хотите?

— А вот так!

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

— А мы так не можем! У нас всё так и вот так — и никак иначе. Иначе только на год сдвинуть сроки.

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

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

Мне этот ужас потом встраивать. А отказаться от них уже нельзя: времени нет. Как говорится, если хочешь сделать что-то хорошо, сделай сам.