12047

Хороша masha@, да не ваша

Есть у меня подружка — пусть будет Маша. Фидошница с незапамятных времён, личный домен masha.ru примерно с тех же лет, современными интернет-технологиями пользоваться умеет.

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

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

Оказалось, что Мария, увидев при регистрации в интернет-магазине поле «имейл», решила, что раз её зовут Маша, то адрес masha@masha.ru — красивый и вполне подойдёт. Почему бы его не ставить при регистрации, раз люди просят? А своего адреса у неё нет.

— Зачем мне имейл? — спросила хабаровская Маша. — У меня ведь пароль есть.

— Видите ли, Маша, — сказала Маша московская, — у меня тоже есть все эти ваши пароли. Они исправно приходят мне на почту. И, кроме того, я знаю размер вашего нижнего белья…

12046

Два грызуна пара

Есть у меня давнишний приятель. Лет тридцать знакомы. Компом он пользуется ещё со времён «Искры» и ЕС-1841. Всё это время он водит мышь левой рукой. Не потому, что левша, просто по давней привычке. Да-да — дабл-клик он делает показательным пальцем левой руки.

Недавно приятель обнаружил, что USB-шных мышей к компу можно подключить несколько, и теперь пользуется двумя мышками. Справа и слева. Утверждает, что так на широкоформатнике 27″ гораздо удобнее.

12045

Весь шоколад мира не заменит палки докторской

Работаю в бухгалтерской фирме кем-то вроде эникейщика. Фирма маленькая, особых проблем нет, но «попрактиковаться на кошках» директор разрешает. Иногда вредничаю и устраиваю девочкам день запретов большинства сайтов, но быстро надоедает.

Вообще, люблю я своих сотрудниц. Одна прочухала про «эффект присутствия»: как только её компьютер артачится, она больше не лупит истерично по клавиатуре и грызуну, а просто зовёт меня постоять рядом. Удивительно, но работает. Заменить картридж и отнять у МФУ сожранные листы? Хорошо. Терпеливо расскажу, как и куда сохранять файлы из почты, даже про вкладки в Экселе поясню. Невольно постигаю 1С, чтобы, опять-таки, объяснять девочкам, что и почему. Конечно, иногда они путают меня с электриком, но я не обижаюсь.

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

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

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

12044

Приятных вам граблей

Индусский код, рядом лежащие папки? Терминология выдаёт программиста, который, кроме своего Виндоус-десктопа, где всё рядом, похоже, мало что повидал. Вот вам другая история.

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

Проходит год, программу дописывают. Теперь она сама забирает данные с FTP-сервера, на который их заливает скрипт из офиса, потому что залить прямо на хостинг нельзя. Данные берутся из каталогов на файловом сервере в офисе, что стоит на столе у главбуха.

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

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

Да, теперь на первый взгляд получается как-то глупо: лишние операции, которые можно было бы заменить копированием! Оптимизаторы негодуют, кроют матом тупых индусов и убедительно доказывают свою точку зрения очевидными фактами: да, действительно, можно ведь просто скопировать!

Но если завтра вдруг возникнет потребность разделить сервера, например, перенести сайт обратно на хостинг, чтобы не потерять при очередном переезде, или на виртуалку, чтобы утилизировать по максимуму процессор и упростить восстановление из образа VM — то всё, что будет нужно, это поменять в коде адрес. Работы на пару минут.

Так было бы, если бы оптимизаторы не оптимизировали то, что в оптимизации не нуждалось. Теперь придётся переписывать — а с разработчиком уже разобрались, верно? Будете извиняться или искать другого?

Эта история, конечно, несколько притянута за уши, но суть именно такая: иногда правильнее изобразить «индуса», добавив лишний транспортный протокол, или вынеся в настройки то-что-никогда-не-поменяется, или добавив лишнюю функцию, или даже написав формулу типа А = А*1, чем потом получить непереносимое, немасштабируемое решение, на которое придётся молиться с бубном и сдувать с него пылинки.

Было время, и я стремился к оптимизации: зачем нам вот эта функция, если внутри она просто вызывает другую? Зачем нам лишняя проверка, если исключение никогда-никогда не возникнет? А потом менялись внутренние функции библиотек, менялись алгоритмы, программы вешались, заставляя ночами ковырять древние исходники в поисках очередного «оптимального хода».

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

12043

Индуса среди бюргеров не спрятать

Понадобилось нам как-то раз поддерживать немецкий сайт по продаже недвижимости на TYPO3. Модули много кто там писал до нас. Позднее заказчик перенёс сайт на другой хостинг, и в админке перестал работать импорт новых позиций.

Импорт работал так. Заказчик специальной прогой формировал XML-файл с инфой для импорта в базу и папки с картинками, всё автоматически паковалось в ZIP и заливалось на сайт в папку import. В админке надо было открыть страницу со списком файлов в каталоге import и нажать одноимённую кнопку.

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

Модуль работал так. Открывалось FTP-соединение с этим же сервером, FTP-функциями PHP скрипт залезал в каталог import (в соседнюю папку), распаковывал архив и парой запросов заливал в базу. Повторюсь: скрипт работал с соседней папкой через FTP. Логин и пасс были напрямую прописаны в коде, в функции соединения.

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

Утром я не могу зайти по FTP и в хост-панель сайта. Днём в сети появляется человек заказчика и рассказывает следующую историю.

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

12042

Горячая, но не клавиша

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

12041

Мысль неизречённая есть истина

Он проснулся. Утро было действительно добрым. Наконец-то выходные, никуда спешить не надо! «Вот бы ещё для полного счастья фильм с торрента скачать какой-нибудь», — подумал он.

На середине мысли с его балконом бесшумно поровнялся флип. Из него вышли двое в серебристых одеждах, затащили бедолагу в футуристическое средство передвижения и куда-то повезли. По дороге ему объяснили, что за мысль о скачивании фильма с торрента полагается пятнадцать суток в «обезьяннике» на Луне. И лучше отбыть пятнадцать суток за мысль, чем гораздо больше — за само скачивание.

В лунном ИВС его охватывали смешанные чувства. С одной стороны, побывать на Луне ему всегда хотелось, но не позволяли финансы. До удешевления таких полётов оставалось лет двадцать. А тут — бесплатно! С другой — ему хотелось погулять по Луне, посмотреть на достопримечательности, а не провести две недели в четырёх стенах.

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

12040

Подозрительные шестидесятые

У нас есть партнёр. У партнёра есть база, в которую можно заносить данные через специального клиента (с локальной базой) или через веб-интерфейс. Это порождает кучу проблем, но… «отлито из бронзы, руками не трогать». Записи, сделанные через клиента, нумеруются с единицы, а через веб-интерфейс — с шестидесяти. Те, кто плотно работает с этой системой, уже привыкли и научились отслеживать проблемы, вызванные «шестидесятыми» записями. Существуют и несколько автоматических отчётов и рассылок на тему «подозрительные шестидесятые».

В прошлый понедельник один не очень внимательный товарищ отправил по офису письмо с заголовком: «Список проводок из шестидесятых, которые вызовут проблему с налоговой». Это письмо увидел главбосс и поинтересовался: а с чего это вдруг у нас в базе есть проводки из 60-х, если наша контора была организована только в 2002-м?

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

12038

Чёй-то мы?

Как рассуждают компьютерщики:

— Поймите, компьютер — не телепат! Он делает не то, что вы думаете, а то, что вы просите. Научитесь чётко формулировать свои просьбы, и компьютер будет делать то, что вам нужно.

Как рассуждают пользователи:

— А чёй-то вы, компьютерщики, не сделаете эти свои компьютеры телепатами? Сколько задницы протираете, а воз и ныне там! А заодно абстрактному мышлению их обучить не помешало бы.

Нечёткая логика существует не первое десятилетие, а с недавних пор и Bluetooth-энцефалографы доступны рядовым гражданам. А правда, чей-то мы?

12037

Вы за это заплатите!

Работаю в небольшой компании, занимающейся приёмом звонков. Ведём массу связанных с этим проектов.

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

Когда в технические моменты ползти уже стало некуда, я решил послушать записи. В каждом звонке голосовое приветствие: «Стоимость минуты разговора составляет 60 рублей без НДС» — и разрыв соединения.