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

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

6085

Не стоит свеч

Переписка с компьютерным магазином.

Здравствуйте. Сообщаю вам о проблемах с аутентификацией клиентов, конфиденциальностью данных о заказах и возможных дальнейших проблемах. Я являюсь системным администратором %company%, в связи с чем зарегистрирован в интернет-магазине с логином %login% как юридическое лицо. В то же время я обращался в сервис-центр как физическое лицо без использования интернет-магазина, однако запись об этих действиях оказалась в вашей истории заказов (%order% от %date%), хотя меня об этом даже не предупредили. Кроме того, как физическое лицо я тоже зарегистрирован (логин %login2%) — логичнее было бы отнести этот заказ туда. Со своей стороны претензий не имею, просто сообщаю вам о проблемах.

Отвечают:

Добрый день! Действительно, мы знаем об этой «проблеме», но разработчик системы считает такое поведение программы нормальным. Так что пока нам приходится с этим мириться. В любом случае спасибо за письмо и за то, что пользуетесь нашим магазином.

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

6051

Ранний быдлокод-примитивизм

Программирование сродни изобразительному искусству. Посудите-ка сами.

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

Во-вторых, сложные программы, как и великие картины, пишутся длительное время.

В-третьих, даже сам процесс написания похож: подготовка (покупка принадлежностей/установка софта), задумка(эскиз/алгоритм) и сам процесс написания.

В-четвёртых, понимание мыслей художника/программиста тоже требует некоторых знаний.

Но почему же бывают выставки известных полотен, а выставок шедевральных программизмов не бывает? Вот представьте: «А тут вы видите код известного программиста N. Произведение исполнено в жанре быдлокода. Как вы можете заметить, автор не использует циклов. Этим он хочет показать неповторимость нашей жизни».

6009

Первый круг индокодерского ада

Проходил недавно конкурс молодых программистов. Запомнился один проект, написанный на VB: тест и таймер, отсчитывающий время до конца. Программа работала. Попросили показать исходный код. Тут-то и открылась истинная сторона программиста! Код, реализующий трёхминутный таймер:

IF S='0:01' THEN S='0:00'

IF S='0:02' THEN S='0:01'

IF S='0:03' THEN S='0:02'



IF S='2:58' THEN S='2:57'

IF S='2:59' THEN S='2:58'

IF S='3:00' THEN S='2:59'

6008

Ищут давно, но не могут найти

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

Полчаса я наблюдал за перепрошивкой коммуникатора. Прогресс-бар еле дополз до финиша, и утилитка радостно сообщила мне, что процесс успешно завершён. Не обнаружив каких-либо изменений, я с опаской полез в лог. 12508 строк вида «Error: Device not found». Спасибо, блин!

6001

--use_the_force=true

Несколько лет назад я клепал программулину для переноса данных между репозиториями. Работала она нормально, но нашёлся один крупный клиент в Штатах, на репозитории которого утилита глючила. Почесав репу и с ходу не сообразив, в чём может быть дело, я немного поменял алгоритм обработки данных — а вдруг спасёт? Так как старый алгоритм в большинстве случаев работал отлично, а новый был экспериментальным и не оттестированным, по умолчанию использовался проверенный, новый же вызывался ключом USE_THE_FORCE в конфиге. Мне показалось, это самый близкий к русскому выражению «станцевать с бубном» американизм — именно так я и представлял себе работу нового алгоритма.

Отправили клиенту. Баг исчез, все остались довольны, и история с ключиком ушла в прошлое… ровно до релиза новой версии. Когда я полез читать документацию, сполз под стол. Наши американские коллеги задокументировали этот ключ в том самом виде. Представили, да? «Установите ключ „Использовать Силу“, если без этого приложение работает ошибочно».

5985

Только для воскрешения

Писал для себя небольшую игрушку в Лазарусе месяца два назад. Поднадоело, скинул на виндовый диск и забыл на время.

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

5979

Объектно-обрезиненное программирование

Вспомните, вам доводилось когда-нибудь держать в руках предметы из обрезиненного металла? Приятная тяжесть в сочетании с теплотой и мягкостью покрытия, не позволяющего предмету выскальзывать из руки. Пожалуй, было бы неплохо иметь ноутбук в подобном корпусе, дверные ручки, кресла, кровать…

Стоп, какая нафиг кровать из обрезиненного металла? Кровать должна быть мягкой, удобной, уютной. Мягкие уютные кресла, мягкие уютные столы…

Опять фигня получается: какие мягкие столы?! Столы, кровать и ноутбук — это разные вещи с разными свойствами, и делают их по-разному.

Так какого же, спрашивается, хрена некоторые разработчики, один раз освоив некую концепцию программирования, начинают её применять где надо и не надо?

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

Им кто-то сказал, что code reuse — это правильно, и теперь вместо процедуры из трёх строк на C они прилинкуют пару десятков мегабайт библиотек фреймворка, в которых есть та самая процедура.

Им сказали: «Google использует server-side JavaScript», — и теперь они с упорством будут переписывать всю логику под возможности нового инструмента. Авторитет!

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

5950

Рождённый ползать

Я тут понял, что за ботва с Икаром. Икар — это ICar, то бишь некий абстрактный интерфейс транспортного средства. При попытке взлететь метод ICar:Fly() оказался незаимплеменченным для конкретного экземпляра, вследствие чего он и рухнул. Подозреваю, что компилятор ругнулся на попытку создать экземпляр абстрактного класса.

5921

Не пропадёт ли звук, не подведёт ли cron?

Понадобилось пораньше встать с утра. Не беда — простенький будильник написан и включён.

Как истинный программист, я проснулся не от звонка будильника, а за пять минут до него, чтобы проверить, как он сработает.

5887

Про#$али всю ракету — заработаем ещё

Пускаем спутник. Циклограмма заправки второй ступени сжатым гелием. Команду «открыть клапан» написали, «пустить газ» написали, а «закрыть клапан» — забыли. 60 миллионов баксов в виде ракеты и спутника плюхнулись в океан. Реакция начальства: «Ну, ты больше так не делай» — и всё. Отличная у меня работа, не находите?