Рубрика «legacy» - 4

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

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

image
Инфографика в посте сделана на R по реальным данным из Тарификатора.

Вы сталкиваетесь с тарификацией доставки, когда делаете заказ в интернет-магазине. Тарификатор — IT-система, которая говорит каким способом товар доставят, на какие посылки разобьется корзина, сколько стоит доставка и когда привезут заказ. Тарификатор собирает информацию со склада и служб доставки, перерабатывает и выдает результаты покупателям интернет-магазина на сайте.

Цена за доставку товара для покупателя интернет-магазина редко совпадает с ценой, которую транспортная компания возьмет с самого магазина. Захотели вы привезти книги с помощью DHL в Новосибирск. OZON.ru выставит вам конкурентную цену за доставку — 500 руб. При этом DHL за эту доставку выставит OZON.ru счет на 1000 руб. Это кажется странным, но такова реальность, которую диктует рынок.
Читать полностью »

При разработке каких-либо продуктов у команды зачастую возникает желание перестать бороться с текущим состоянием проекта и переписать всё снова, на этот раз "правильно" и "по науке". Обычно такие порывы не одобряются, но в этот раз я бы хотел предложить к прочтению перевод поста Hugo Baraúna, посвященного тому, какие вопросы нужно задать себе, если всё же решили переписывать.

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

Будут ли обе платформы существовать одновременно, или нет?

Читать полностью »

Древний ноутбук Compaq — единственный ключ к суперкару McLaren F1 - 1
Фото: Patrick Gosling

Это ноутбук Compaq LTE 5280 начала 90-х со сделанной под заказ картой условного доступа (conditional access system) — программно-аппаратным механизмом для доступа к закодированному сигналу от систем McLaren F1. В 2016 году команда McLaren Automotive — одна из самых продвинутых технологических и автомобильных компаний в мире — по-прежнему использует такие ноутбуки и программы под DOS для обслуживания сотни суперкаров McLaren F1, каждый из которых стоит от $12 млн.
Читать полностью »

Давеча safinaskar задал мне следующий вопрос в личной беседе:

Здравствуйте, видел вашу статью про банкоматы habrahabr.ru/post/217337. У меня вопрос: почему интерфейс всех банкоматов такой антиюзерфрендли, такой одинаковый и такой «жёсткий», в отличие от других автоматов (скажем, автоматов Qiwi)? Я имел дело с банкоматами Сбербанк, Росбанк и Мой банк (сейчас обанкротился).

Правильно ли я понимаю, что ПО для обычных автоматов (напр. Qiwi) — это самое обычное ПО, разрабатываемое также, как обычно разрабатывается ПО. Легко внести изменения в софт, пишется обычными инструментами под обычные ОС (напр. Windows), учитывается UX и иногда бывают баги.

А ПО для банкоматов пишется один раз и навсегда (в целях безопастности), безопастность ставится превыше UX. Так? И отсюда проблемы с UX?

У меня такое чувство, что все банкоматы используют одну и ту же программу, это так?

Если я не ошибаюсь, банкомат сперва просит ввести пин, затем сумму и только потом проверяет пин на правильность. Почему так?

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

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

Читать полностью »

Все чаще и чаще я вижу, что люди уклоняются от новейших технологий, делая выбор в пользу обратной совместимости. «Мы не можем повышать минимальные требования к PHP до 5.5, потому что у нас 50% пользователей еще на 5.4» говорят они. «Нет никакого способа обновиться до Guzzle 4+, у нас бекенд на версии 3 и переделывать его слишком долго и дорого». И самый лучший аргумент от WordPress: «Мы не может придти к полному ООП, потому что большинство пользователей сидят на shared-хостингах с 5.1 или не знают про MVC».

Нонсенс.

Legacy-код – это большое НЕТ

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

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

PHP 5.7 vs. PHP7

Как я уже говорил в прошлом письме, 5.7 был отклонен в пользу перехода непосредственно к PHP7. Это означает, что не будет новой версии между 5.6 и 7 — даже если она и появилась бы, то просто служила бы сигналом тем, кто все еще погряз в устаревшем коде. Первоначально, 5.7 не должна была иметь новые функции, но должна была выбросить уведомления и предупреждения об устаревании кода, который скоро изменится в v7.

Революция PHP7: Типы возвращаемых значений и удаление артефактов - 1

Также необходимо предупредить о некоторых ключевых словах, которые будут зарезервированы в PHP7, чтобы люди могли быстро привести свой код в соответствие с помощью какой-нибудь «автоматической» проверки совместимости версий PHP. Однако, как я писал в рассылке, большинство людей, которые достаточно компетентны, чтобы соблюдать совместимость своего кода с последней версией PHP, на самом деле и не используют конструкции, которые может сломать PHP7.
Читать полностью »

Legacy фобия Коллеги, у меня для вас есть замечательная новость, мы получили чудесный проект, его несколько лет писали неизвестные нам разработчики, адрес которых мы вряд ли узнаем (чтобы «поделиться обратной связью»), писали очень давно и не известно под чем, и нам предстоит его поддерживать и развивать. Проект сейчас находится на пике своей производительности и мы скоро упремся, любые неаккуратные изменения могут его положить, но мы будем его развивать. Ура!

Согласитесь, странно звучит? Как бред больного на голову программиста. Кто же любит legacy? Это же всегда говнокод (ведь только мы сами пишем идеально), в нем полно багов (а мы сами пишем без ошибок), ужасные решения (ведь только мы сами выбираем подходящую архитектуру), и почти всегда его сложно читать (ведь только мы сами пишем понятно и красиво).

Читать полностью »

Посвящается тем 45% .NET разработчиков, что до сих пор сидят на фремворках 2.0-3.5.

Да, вы не ослышались. async и await во втором дотнете. Но всё по-порядку.

Зачем?

В какой-то момент мне надоело вручную возиться с написанием асинхронного кода. Async/awat выглядели слишком вкусными, чтобы не попробовать. Зная, что Microsoft при добавлении новых возможностей в язык и компилятор не привязывает их жёстко к фреймворку (так, extension-методы и LINQ отлично можно использовать во втором .NET, если где-нибудь объявить System.CompilerServices.ExtensionAttribute) и видя Async CTP, добавляющего возможность использования async/await в 2010-ую студию при использовании в качестве целевого фреймворка .NET 4.0, я подумал, а почему бы и нет?

Читать полностью »

Введение

Очень не хватало возможности ввести пользователей в контекст перед голосованием. Спасибо! И так

Преамбула

Работая со старым унаследованным кодом, порой встречаются достаточно проблемные участки, которые есть желание переписатьисправитьпеределать, но нет такой возможности. Этот код может быть с ошибками, которые не исправляются годами и с ними приходится мириться. Что делать с таким кодом?
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js