5504

На свой страх и риск

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

Глава 1. Перед тем, как первый раз включить нетбук…

5503

Двумя прицельными ударами

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

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

А теперь сама история. Несу я сегодня этот фотик в кармане на работу — с клиентом договорились там встретиться. По пути зашёл в магазин выписать счета на кое-какое оборудования для работы. На улице шёл сильный снег. потому, зайдя в магазин, я начал отряхиваться. С очередным взмахом руки фотик вылетел из кармана и поскакал по кафельному полу через весь магазин. Сердце перестало биться. Поднимаю — опять большая вмятина, опять объектив не выезжает, сам фотик пищит и матерится ошибками на экране. Менеджеры магазина собрались в кучку — смотрят и хихикают, негодяи. Смотрю, а клей, которым я линзы приклеил, выдержал — линзы на месте, просто помятым корпусом прижало объектив и не даёт ему выдвинуться. Громко заявляю: «А сейчас будет ремонт по-русски!» Подхожу к стойке администратора и двумя прицельным ударами о столешницу выпрямляю корпус, после чего включаю фотик и снимаю менеджеров-зевак.

5502

Споткнулся, упал, очнулся — буква

Кто хоть раз мучился на C# с выводом форматированного текста в майкрософтовском GDI+, знает, что для точных измерений размеров выводимого текста нужно пользоваться методом MeasureCharacterRanges, так как MeasureString даёт лишь приблизительный размер прямоугольника, в который гарантированно укладывается выводимый на экран текст. Эти пляски необходимы, если ты уже нарисовал какой-то текст на экране, а теперь надо продолжить с того же места. Предлагаемая методика, хоть и громоздка, но считает всё точно, и привыкнуть к ней можно.

Разбирая код одного сумрачного гения с сертификатом MCSE, я узрел совершенно чудный алгоритм решения той же задачи. Определяются размеры буквы W, домножаются на количество букв в выведенном тексте, а потом из полученной точки правее выведенного текста начинется перебор всех пикселей справа налево, пока не встретится пиксель, отличный по цвету от фона. Затем определяется ширина пробела, прибавляется к найденной точке — и отсюда надлежит выводить следующий блок текста. Надо ли говорить, что измеренные таким образом размеры никаких гарантий не давали, если строка с выведенным текстом оканчивалась на буквы вроде T или V, а скорость вывода текста после исправления возросла в три раза?

5501

Простите за наглость

Добрый день!

С паролями для хостинга наметился прогресс: были высланы корректные пароли для MySQL. Прошла всего неделя; понадобились всего три письма с моей стороны, два звонка от меня и один гневный от клиента. Это безусловно серьёзный шаг для компании «*****». Ослепительно яркое будущее, мириады постоянных клиентов и солидная доля рынка — вот мысли, которые приходят на ум, когда вспоминаешь о вашей компании.

Можно ли попросить вас сделать нечеловеческое усилие и выслать корректные пароль и логин для FTP-доступа до конца недели, протестировать их перед отправкой (Господь, прости меня за наглость!) и указать порт, если он отличается от стандартного?

Обязуюсь впредь не беспокоить вашу компанию по подобным пустякам.

Навеки ваш N.

5500

Без начала и конца от неизвестного лица

Когда-то наша страна называлась СССР, и в ней была Партия. У Партии была История. История КПСС. Именно этот предмет преподавал тов. Трамвай (фамилия изменена). После распада СССР талантливейшего ментора в ранге подполковника определили на кафедру ЭВМ рассказывать нам об устройстве чуда инженерной мысли. На кафедре товарищу заботливо выдали книжку без начала и конца от неизвестного лица восьмидесятого года образца, полную средневекового бреда и зачем-то третий курс АСУшников, большей частью уже успевших препарировать компьютеры с разной степенью успеха, но все же умеющих отличить процессор от Светлого Будущего. Мы немного повозмущались таким цинизмом: после ассемблера, Дельфи, C, SQL, программирования дисковых контроллеров с точностью до полубита и прочей ереси нас заставили изучать строение ЭВМ!

Трамвай выступил убийцей души прекрасных порывов. Он рассказал нам про шины «ай-си-эй» и «пси», о том, что в WAV пишутся ноты, а в MIDI — цифровые отсчёты, про современные 16-битные процессоры, про винчестеры и дисководы 5,25 дюймов, про «Мсидос» и «Видовс». Первые три занятия мы с ним пытались спорить, но с подполковником спорить бесполезно, а иногда и опасно для мозга. Мы прекратили, тем более что любую свою глупость Трамвай прикрывал книжкой, которую ему сунули на кафедре, видимо, просто для смеха.

Устав бороться, я отмазался от экзамена и занятий, пообещав написать эмулятор лабораторного стенда по изучению чуда советской электроники — процессора КР580ВМ80А. Сначало было интересно, но потом интерес к эмулятору куда-то пропал, и перед экзаменом минут за тридцать я просто набросал форму. Окно с нажимающимися кнопочками, счётчиком команд, регистрами, кодами команд и памятью на сто шагов ввела Трамвая в состояние экстаза, и я получил заслуженную пятёрку. И только друзья-товарищи так и не простили мне обмана целого подполковника.

5499

Ещё один вопрос про интернет, и я за себя не ручаюсь

Прочитал историю про диванного Рэмбо и вспомнил недавний случай.

Появилась у меня в доме мышь. Откуда она взялась на пятом этаже — история умалчивает. Зная, что зверюга и провода погрызть может, расчехлил я свою Crosman 1077, зарядил, поставил рядом с компом — и сижу дальше своими админскими делами занимаюсь. То ли мышь опасность почувствовала, то ли просто по делам куда бегала, но почти день она не появлялась.

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

Знакомый сидит на диване с отвисшей челюстью и смотрит то на винтовку (которую с самого начала не заметил, видимо), то на убитую мышь. Отпив полстакана пива залпом, произносит: «Теперь понятно, почему тебя на работе пользователи не беспокоят. Я бы тоже не стал».

5498

Цифра в боксе, плюс в уме

Учусь в небезызвестной Бауманке на робототехнике. Начало второго семестра, первая в нём информатика и задание: написать на WinForm калькулятор. Пока все радостно рисовали кнопочки на форме, я решил сделать калькулятор из двух текстбоксов, вылавливая в них ключевые символы по событию Change и отправляя в нужные переменные, дабы потом посчитать. Ловила программа элементы не как-нибудь, а брала для этого из текстбокса символ по счётчику, который рос при каждом вызове этого самого Change. Да, знаю, что индусятина, но вылетела из головы команда, чтобы длину строки получить.

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

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

Ой! Пользователь нажал кнопку! Так, счётчик у нас ноль, смотрим нулевой символ… Ага, единичка. Ничего делать не буду, но счётчик плюсану. Ай! Опять кнопку нажали. Ладно, надо свои ватты отрабатывать. Счётчик — единица, и под номером один у нас… ага, плюсик. Мы его из текстбокса убираем. Вай, что это — опять событие Change! Я же и то не закончил! Ладно, справлюсь, у меня оперативки много. Что, опять проверять текстбокс? Ладно. Счётчик — единица. Что? Да нету здесь символа с таким номером! Идите вы все…

5497

Долго ли умеючи?

А начиналось всё с невинного: «Не зайдёшь в гости глянуть на ноут моего шефа? Что-то он жалуется на него, может, винду переставить надо. Это же недолго, да?» Прикинул, что дело на пару часов, и пошёл.

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

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

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

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

— Не зайдёшь в гости глянуть на ноут моего шефа? Что-то он жалуется на него, может, винду переставить надо. Это же недолго, да?

5496

Починизм, или проклятие ремонтника

Привет! У меня страшная болезнь: починизм, или проклятие ремонтника.

Я умею чинить технику. Я использую чиненые вещи до тех пор, пока их станет нельзя починить. Если вещь починить нельзя, она отправляется на запчасти. Отправить на запчасти — значит хранить в пыльном углу комнаты до тех пор, пока запчасти не понадобятся. Часто я чиню вещи в дороге, чем попало и как попало, потому почти каждая починка представляет из себя костыль с занозами. Я могу годами обходить мелкие глюки и не обращать внимание на занозы и страшный вид костылей.

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

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

5495

Простите мой индийский

Был посажен писать программку на ABAP/4. Как программист я себя не позиционировал. С языком знаком был на уровне «прочитал пару чужих кодов». Опрос коллег показал: подобного ничего не делали. Вариант обточить чужое не катил.

Полтора месяца глупых вопросов, чтения, медитаций — и что-то готово. Рядом с заголовком я оставил комментарий:

Первая программа. За индийский код не бить.

Гуру, отнеситесь с пониманием.

Начинающие, если путей, кроме индуизма, не видите, признайтесь сразу.

В том же месяце я занялся йогой. Это как-то связано?