Те, кто застал первые сайты, должен помнить: тогдашние веб-мастера всем элементам на экране придавали объём, рисуя «выпуклые» и «вдавленные» рамки. Если на экране таблица — она как будто сделана из проволочек. Если кнопка — то выпирающая из плоскости. Примерно так же выглядели программы, написанные в самой популярной среде разработки того времени — Дельфи.
Программы на Дельфи начали терять актуальность, а пришедшие им на смену часто использовали виджеты из MFC — с тонкими линиями, если и придающими объём, то чуть-чуть. И веб-дизайн отреагировал: строгие тёмные тонкие рамки в пиксель вокруг кнопок и ячеек таблиц.
Что же касается цветового решения — одно время был мегапопулярен вырвиглазный сине-зелёный дизайн, удивительно напоминающий тему по умолчанию Windows XP. Но вот вышла версия Windows с новым интерфейсом Aero, и в веб-дизайне начали использовать стиль «Веб 2.0» — полупрозрачные элементы, трёхмерные кнопки с полутенями и градиентами.
И вот сейчас одно из последних веяний моды — плитки с монохромными пиктограммами. Догадаетесь, откуда это?
Дизайнеры, может, хватит уже тырить чужие идеи, просто срисовывая интерфейс программ, за которыми вы сидите? Или тогда не называйте это дизайном.
А написать сюда заставила мелочь: на одном из сайтов, когда приходило личное сообщение, в строке статуса загоралась красная лампочка. Удобно: красная точка — что-то пришло. Но дизайнеры не дремлют, и теперь вместо этой лампочки — белый кружочек. Если новых сообщений нет — он чуть сероватый, если есть — становится белее. Вот и сиди теперь, вглядывайся: достаточно ли он белый, чтобы идти читать почту, или, может, не очень белый?
Руки пообрывать! Если у одной компании возникли какие-то сложности с отображением хотя бы 256 цветов в своём интерфейсе, то вы-то зачем уподобляетесь?
Выпендрёжный «плиточно-вебдванольный» дизайн с выплывающими вырвиглазными менюшками, рассчитанный исключительно на планшет, где картинки напрочь перекрывают контент (на сайте, извините, Analog Devices, не зайчиков-шнуфелей!) — это одно. Это то, что называется «вон из профессии». Когда сайт автомасштабируется под 640×480, старую мобилу, планшет и вайдскрин, меняя местами элементы дизайна — это совершенно другое.
Когда телефоны и планшеты принципиально не имеют аппаратной клавиатуры и приложения не могут работать без мультитача — это одно. Когда гаджет может иметь откидную QWERTY или, скажем, резистивный stylus-only экран для тех, кто любит в дороге рисовать — это совсем другое.
Когда операционная система для настольных ПК копирует интерфейс наладонников, которые имеют совершенно другую эргономику, их по-другому держат и используют, у них совершенно иное разрешение и размеры экрана, и получается в результате угробище Франкенштейна — это одно. Когда приложения с наладонников легко портируются на настольный ПК, а длинные нажатия заменяются на правые щелчки — это совсем другое.
Почему же вы всё время разрабатываете и производите одно и то же, хотя в своих мечтах и мыслях представляете это себе совершенно другим?
Испытываете трудности при отдачи контента порциями? Дискомфорт, говорите? Поделюсь своим опытом раздачи терабайтов обновлений к игровым клиентам. Не знаю, как это у «танчиков», но принцип одинаков везде.
Вот вы зарелизили игру. Первый вопрос: как выкладывать? Одним большим куском или в развёрнутом виде? Тут вопросов не возникает — конечно же, большим куском, раскидать его по серверам поближе к клиентам, на площадки с доступом к основным магистралам. А вот небольшие патчи? Выкладывать сразу или творить кумулятивные обновления? Всего-то из изменений — брутального орка кто-то из локализаторов обозвал «МойЗайчик». Первая мысль была именно такая: давайте сбацаем торрент, и пущай клиенты с клиентов обновляются, меньше нагрузки на сервера, ведь при более-менее массовом апдейте нагрузка может подскочить на порядок, никаких «теньге» (10 Gigabit Ethernet) не хватит. Сделали. Водрузили Transmission на сервера — мол, обновляйтесь. Ой, что это? Почему скорость такая маленькая? А что это клиенты предпочитают качать с центра, а не с других клиентов? А неблагодарные клиенты, скачав обнову, тут же вырубают обновлятор, чтобы играть не мешал, из-за чего начинают выигрывать HTTP-пиры. Вот это и есть традиционные грабельки: гладко было на бумаге, да забыли про овраги…
Так и живём. Имеем кучу nginx, которые раздают или с общего стораджа, или по свистку синхронизируются сами. А найти сервер, который вдруг не поддерживает докачку, надо сильно постараться. Или на коленке самому написать. Nginx в том числе и для этого был создан, чтобы, не сильно потребляя ресурсы, мог отдавать кучу мелких файлов очень большому числу клиентов.
А теперь представьте, когда вы такое количество файлов обновили только наполовину. Да, проверяем целостность клиента, проверяем тысячи хешей, перекачиваем старые файлы. В результате какая-нибудь «ферма» убивает батарею недобука, когда хозяин сидит в «Макдональдсе» и пытается обновляться там. А ему ещё и каждые полчаса линк отключают: мол, переавторизоваться бы …
Счастья, чтобы никто обиженный не ушёл, не существует. Может, с приходом планшетов всё изменится?
Устроился в небольшую компанию программистом. Компания предоставляет некоторые услуги своим клиентам. Но предоставляет крайне фигово: больше полусотни пользователей не держит.
Начинаю разбираться, что почём. Первым делом настораживает, что сессия длится один пакет. Следующий пакет так же должен быть с авторизационными данными.
— Ну, у нас же реализована архитектура «запрос — ответ»! Нам же не надо держать TCP-сессию! — говорит программист с 25-летним стажем.
— Гм, — говорю я и лезу в код сервера.
Лучше бы я этого не видел.
На каждый входящий пакет создаётся поток-обработчик, который умирает сразу же после того, как отсылает пакет обратно. И, естественно, убирает за собой все данные о клиенте. Что характерно, поток-получатель парсит HTTP-заголовок.
Начинаю переписывать код. Сперва создаю пул потоков-обработчиков, но очень быстро утыкаюсь в ситуацию, когда у меня 100500 потоков на 24-ядерной системе. В общем, ситуацию это спасает, но не намного.
Далее избавляюсь от авторизации: клиенту передаётся его сессионный ID, и уже дальше работаем с ним.
Потом избавляюсь от пула потоков, создав очередь запросов, из которой могут брать любые рабочие потоки.
Потом делаю ещё одну страшную вещь: переношу очередь запросов как можно ближе к получению пакетов, до парсинга HTTP-заголовка. Результат — восьмиядерный рабочий комп выдерживает стрессовую нагрузку до 100 тысяч пакетов в секунду.
На следующую неделю компания закрывается: в связи с кризисом отвалились три крупных клиента, и бюджета на программистов не хватает.
Если кто-то ещё помнит историю вычислительной техники — начиналось всё с многообразия архитектур и процессоров. Пусть компьютеров было мало в штуках, зато они были очень разными. Ни о какой ОС речи ещё не было, всё было уникально и по-своему.
Потом сформировались несколько типов компьютеров, появились ОС для них. Операционные системы уже начали становиться неким стандартом, позволяя программистам не так сильно завязываться на особенности реализации конкретной машины.
С расцветом персоналок многообразие архитектур ещё более сузилось, а количество разнообразных операционных систем продолжало неуклонно уменьшаться.
Дальше — больше: давно пропали процессоры Alpha, несмотря на свою уже тогда имевшуюся 64-битность, исчезли процессоры Motorola, бывшие когда-то сердцем компьютеров Apple, передовой для своего времени PowerPC сейчас можно встретить разве что в некоторых моделях бытовой техники, и даже некогда топовое железо от Sun доживает последние дни.
Сколько было различных вариантов UNIX? Где легендарный NextStep? Куда пропал BeOS, обещавший перевернуть представления о компьютерах? Даже QNX, лидер на рынке встраиваемых систем, сейчас вряд ли попадётся вам на глаза.
И вот наши дни: из всего богатства вариантов, из всего зоопарка систем сейчас мы имеем в наличии потомков линеек процессоров х86 и ARM, а из ОС — Linux, OS X и Windows. Другие пока ещё есть, но…
Причина этого вовсе не в происках злобных маркетологов, а в том, что потребители (в данном случае — разработчики, программисты, пользователи) стараются получить как можно больше, затратив минимальные усилия.
Зачем вкладывать деньги в сверхмощные сервера с десятками ядер, когда можно накупить стандартных дешёвых х86 и решить ту же самую задачу, хоть и немного иначе?
Зачем разрабатывать свой уникальный процессор с уникальными системами команд, когда можно взять копеечный штампованный ARM, который к тому же постоянно совершенствуется?
Зачем тратить время и силы на какую-то особую ОС, если тот же Linux прекрасно работает и на x86, и на ARM, что позволяет устанавливать его хоть в дата-центр, хоть в утюг с автоподогревом?
Наоборот, это маркетологам надо сказать спасибо, что до сих пор существуют OS X (хотя от неё до Linux рукой подать) и Windows (вопрос принципов и амбиций известной компании). Если бы не их усилия — люди бы пошли по пути наименьшего сопротивления, сокращая свои издержки за счёт унификации оборудования и софта.
Зачастую проще допилить готовое решение под свои нужды, чем городить что-то уникальное и полностью своё. А вы про «обмылки» говорите…
Смотрю фильм на DVD. Хакер взламывает то ли сеть, то ли базу данных, и у него запрашивают пароль доступа. Хакер потирает руки и произносит «Сейчас…»
Тут у меня звонит телефон. Ставлю DVD-плеер на паузу и иду отвечать. После долгого разговора иду на кухню, ищу, чем бы перекусить, попутно мою давно залежавшуюся в мойке грязную посуду…
Короче, вернулся в зал не скоро. Ага, думаю, надо фильм досмотреть. Беру пульт, снимаю с паузы. С экрана телевизора исчезает скринсейвер DVD-плеера, а вместо него на синем фоне белыми буквами, как в Norton Commander, запрос:
<code>Please enter the access code: _
</code>
На минуту крепко задумался, что за код от меня требует DVD-плеер, даже на пульте что-то набирать пытался, пока не понял, что первое нажатие кнопки «Play» убирает скринсейвер, а второе продолжает воспроизведение.
Ты только не обижайся, но я тебе один умный вещь скажу. Твой машина… Блин!
Я во многом консервативен, но экранную клавиатуру всё же поддержу. Говорите, на ней трудно быстро и безошибочно набирать длинные тексты? А вы пробовали? Физическая «клава» привыкшему к ручке тоже поначалу кажется неудобной, как, впрочем, и наоборот. Но стоит натренироваться — и кажется, что ничего удобнее нет. С экранной клавиатурой добиться такого результата тоже возможно, главное — захотеть.
А когда натренируешься, по-настоящему ощутишь главное достоинство ёмкостного экрана — нулевое усилие нажатия. С усталостью после набора довольно увесистого текста, в общем, почти попрощаетесь. Автозамену, кстати, лучше выключить: иногда она так заменит, что смеховой шок обеспечен. Лучше внимательно смотреть, что набираете. Этот навык тоже придёт, как и навык попадания по нужной клавише почти всегда с первого раза даже на маленьком экране. Более того, вы научитесь при работе на маленьком экране уставать меньше, потому что перемещать пальцы потребуется на меньшие расстояния. Именно так был набран этот текст (модераторы, гляньте, пожалуйста, нигде не промахнулся?), но это — не мой рекорд. Рекорд я установил четыре дня назад, набрав в «королевском мягком» аж 20 страниц 11-м шрифтом и устав меньше, чем если бы набирал на физических клавишах. Времени заняло ненамного больше (потренируюсь ещё — будет занимать даже меньше), при том, что на обычной клавиатуре я умею строчить довольно резво, зато всё проделано лёжа, а значит, меньше устали не только пальцы, но и спина. Текст был, кстати, научно-прикладным, так что из правила «лопата отупляет» иногда бывают исключения.
А как повлияет на ваш интеллект квадрокоптер для селфи, зависит только от вас. Если купите — не повлияет вообще никак, так же, как покупка штанов или батона. А если сами напишете для него математику (а это — стабилизация не только полёта, но и изображения) с нуля, независимо, в одиночку и желательно хотя бы частично на асме — к полёту на Марс можете себя считать готовым по крайней мере морально.
Как я погляжу, человеку проще накатать простыню, какие все разработчики плохие, чем просто поглядеть настройки программы. К примеру, та самая белорусская игра со своим инсталлятором успешно использует торрент для скачивания обновлений — достаточно поставить галочку в настройках, и прогресс скачивания не откатится. За деталями — к принципу работы торрент-сетей.
А менеджеры закачек давно уже поддерживают докачку по частям. Вопрос только в том, что зачастую её не поддерживает сервер, отдающий контент.
К тому же есть понятие непрерывности и атомарности операции. Никто не гарантирует, что установка патча или монтаж ролика будут правильно завершены в том случае, если дядя Вася, решив, что он мегаэлектрик, выбил вам пробки, а у вас «на паузе». Что делать в этом случае? Данные потеряли? Потеряли. Какой файл заменяли последним, есть информация? Нет. Правильнее снова запустить процесс, дабы получить гарантированный результат, а не пытаться выяснять, где побились блоки.
Кстати, наглядный пример: попробуйте в уборной поставить процесс на паузу. Можно ведь? Можно, хоть и сложно. Вот только некомфортно и возникает чувство несовершенства и недоделанности.
Не ищите злых козней разработчиков там, где их нет.
Лаборатория испытаний авиационных микрокомпрессоров. Проходит типовые испытания новое исполнение: три компрессора на стенде, стоит вой воздуходувок, девушка в белом халате усердно подбивает в Эксель статистику, дублирующуюся самописцами.
По окончании проверки компрессоры выключаются, а вой, хоть и не столь сильно режущий уши, остаётся, причём исходит он из системника. Как оказалось, кулеры в стареньком «атлончике» погибли на второй год эксплуатации, чтобы купить новые, нужно оформить кучу документов, придут они месяца через три, а работать нужно сейчас.
В общем, вместо процессорного вентилятора и вентилятора на выброс воздуха стоят авиационные воздуходувки. Промышленный подшипник, металлический корпус, отбалансированная металлическая крыльчатка, частота вращения — 12 тысяч оборотов в минуту.
Питание от бортовой сети с частотой 400 Гц? Так мы в лаборатории, с ним перебоев нет. Слишком шумный? Так когда на стенде нет хотя бы одного компрессора с двумя такими же воздуходувками, компьютер, в общем-то, и не нужен. Зато назначенный срок службы — 20 лет, а по количеству подаваемого воздуха при габаритах 60×60 такой вентилятор заткнёт за пояс любую «стосороковку».