bash.im ithappens.me zadolba.li
5498

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

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

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

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

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

5497

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

19 февраля 2011, 09:00

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

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

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

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

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

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

5496

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

19 февраля 2011, 09:00

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

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

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

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

5495

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

18 февраля 2011, 12:45

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

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

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

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

5494

Самый научный в мире скринсейвер

18 февраля 2011, 12:45

Давным-давно, когда «Pentium 60 МГц» звучало гордо, стоял в нашем отделе 486 DX-33 c двумя мегабайтами ОЗУ, зато с видеокартой SVGA, метром видеопамяти и математическим сопроцессором. Трудился компьютер над расчётами каких-то статистических научных данных по довольно сложным зависимостям и формулам — сейчас уж не вспомню. Программа была написана в реальном режиме x86, где для доступа к памяти за 1 МБ нужно было работать через EMS или XMS. Только в этом режиме процессора работал драйвер хитрой железяки, эти самые данные собиравший. Код был очень чудесатым: впихнуть в сегменты по 64 КБ массив на 840 — это не фунт изюма.

Нежданно-негаданно накрылся у этого монстра мегабайт оперативки. Естественно, программа перестала работать, а график сбора данных и их обработки был сорван. Институт, как и все научные учреждения страны, финансировался бедно, и несчастный мегабайт ОЗУ купить было не на что. Нормальные программисты сдались бы — но не мы.

Мы использовали… память видеоадаптера. Код даже переписывать особо не пришлось — вместо библиотеки доступа к XMS была написана библиотека доступа к видеопамяти через VESA. Размеры окна отображения — те же самые 64 КБ, только по другому адресу, который и был указан программе: «Данные искать и писать тут».

В бета-версии программы графический режим видеоадаптера при выполнении расчетов не переключался, и на экране творилась просто жуткая психоделика. Конечно, в релизе мы вставили переключение видеоадаптера в разрешение 320×240, чтобы в первых 64 КБ рисовать прогресс-бар: «Подождите, данные обрабатываются». С точки зрения наших учёных ничего не изменилось: графики с готовыми данными и интерфейс для их записи на диск мы выводили по-прежнему в честных 1024×768, и только на экране ожидания текст надписи стал покрупнее.

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

5493

Мышка бежала, хвостиком махнула

В ностальгических целях собрал древнюю машинку: AT-десктоп, Celeron 533, ISA-звук AWE64. Решил вспомнить старый добрый C&C — виндовую версию разработчик тогда уже выложил для скачивания, но мне принципиально хотелось под DOS. Добыл, записал на CD, загрузил DOS 6.22, запускаю установку — Divide overflow, выход в NC, на внешние раздражители не реагирует. Выдираю SCSI и сеть (освободить IRQ) — та же петрушка. Собираю первый «пенёк» (думал, «ошибка 200» на новых тогда процах) — то же самое. Загрузка по минимуму (мышь, CD) — ноль реакции. А тут ещё друг, системный программист со стажем зашёл в гости. Сразу начали грешить на кривую реализацию A20, хотели даже сами переписывать. И тут я подумал, что эта проблема могла случиться у кого-то ещё.

Полез в Гугл, вбил сообщение об ошибке — в первых строках вылез сохранённый неизвестным фанатом сайт Westwood того времени. Офигев от антикварного дизайна, читаю английским по зелёному:

You can update your mouse driver. The C&C installation software is not compatible with older mouse drivers.

Заработало сразу. Где можно было накосячить в драйвере мышки — до сих пор не представляю.

5492

Не верь мальцам, компы приносящим

Пришёл сегодня очередной клиент 13 лет с просьбой стереть Windows. Уточнив, зачем это надо, оставить ли какую-нибудь информацию с диска С: и сможет ли парень сам потом всё поставить, я взял LiveCD и форматнул машину, потом продемонстрировал пустой диск С: и нетронутый диск D:. Радостный паренёк схватил системник и убежал домой.

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

Удивительно, но даже если клиент три раза говорит одно и то же, это совершенно не значит, что именно этого он хочет.

5491

Хорошего понемножку

18 февраля 2011, 11:00

Окончив училище, под чутким контролем мамы я составил резюме, в котором указал весь курс, что мы проходили, только с пометкой: «Уверенно программирую на…»

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

Эти полчаса я никогда не забуду. Такого стыда мне с тех пор испытать не довелось. Меня приняли за самородка-самоучку: в резюме указаны были почти все языки программирования, о которых у меня имелись хоть какие-либо знания (даже если это была всего одна команда). У меня было желание убежать оттуда со скоростью света или провалиться в ад.

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

5490

Правила сетеделов

18 февраля 2011, 11:00

Волей случая перепал мне в 17 лет сервак от развалившейся только что небольшой местной сети, в строительстве которой я принимал активное участие. Точнее, после кое-каких несварений с местным монтажником, ушедшим на покой, все кабели тянул я, за что получал пряники и конфеты, пока всё не свернулось окончательно.

Переговорив с умными людьми, я созрел: будет мне собственная сеть! В считанные дни организовал иссохший от недостатка быстрого инета народ (хорошие провайдеры до нас тогда ещё не добрались), и было решено: Viva la Internet! Юная душа рвалась ввысь, и дерзко принято было решение ставить гигабит. Собрали с каждого из 120 человек по копейке — вышла приличная сумма, на которую и получили заветный порт. А дальше всё как по книжке, но только моя дотошность перешла разумные границы.

Было сварено 16 железных ящиков под свитчи с капитальным замком на каждом, герметизацией и вентиляцией, которые заняли места на крышах. Максимальное расстояние — 85 м от свитча до свитча. Все магистральные кабели — с тройной изоляцией, экраном и тросом. Заземление стояло минимум в 11 участках (как правило, сортирные трубы, выступающие на крышу). Скрутки — на термоусадках с литолом внутри, герметичности которых позавидовал бы электромонтажный ГОСТ. Выглядела вся сетевая конструкция на 9 из 10: ящики покрашены в белый цвет, на каждом адрес и логотип новорождённой сети «N.net» под полиэтиленом.

Но это было цветочками. Ягодки — система электропитания, созданная на многолетнем опыте дедов: 220 В подходило к каждому свитчу параллельно магистральным витухам… из розетки за моим монитором. Для этой цели в квартире была заменена проводка. Также был оборудован шкаф под сервер и конвертер, где температура никогда не превышала +25 даже в +43 на улице.

Арбалет, гофротрубы, крепления, предохранители… Сломано три ударных сверла перфоратора, одна обжимка, один мизинец, два бокореза. Километры кабеля, проложенного на совесть, и вовсе не счесть. За два летних сибирских месяца всё было готово. Я плакал, когда смотрел наверх с улицы.

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

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

Как-то ляпнул один мужичок: «Вот идиоты, зачем так усираться?» Я улыбнулся, кивнул. Эх, только этого я и не учёл — мнения специалиста. Зато учёл многое другое: коробки смотрят на север, чтобы меньше грелись; провода, если и идут не через подъезд, то только за сточными трубами, чтобы не сорвались вместе со льдом; перед каждой грозой вилка достаётся из розетки за монитором, и вся сеть засыпает. А ключи от крыш только у меня и у аварийников.
Многое хочется рассказать, но, наверное, секреты умрут со мной.

Пусть кто-то твердит, что провода ненадолго, скоро все квартиры завалят тарелки, мега-пупер-вайфай, 5G или телепатия. А пока я натравливаю торрент-клиент на файл в 4 ГБ, иду ставить чай и сделать два бутерброда, а по возвращении вижу скачанный фильм. Я рад, включая купленный на сетевые деньги проектор. И даже занимающий целую полку запасной сервак не убедит меня и даже не натолкнёт на мысль, что хоть одно из сотни соблюдённых мной правил монтажа было бесполезным.