5086

А теперь забудь об этом

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

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

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

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

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

5084

Это вам не скрутки по подъездам

Работаю я на химическом производстве. Цех обслуживает несколько контроллеров, связанных в локальную сеть. Разумеется, это не Ethernet, а вполне себе PROFIBUS в топологии Token Ring, да ещё по оптике сделанная. В отличие от хлипких разъёмов RJ-45 здесь применяются толстые кабели на защёлках, причём каждый узел сети подключается четырьмя кабелями: два входящих и два исходящих. В общем, резать такую сеть можно в нескольких местах; пока сохраняется хотя бы один линк, вам гарантирована пропускная способность, только пинги удлиняются. Случайно ничего не отваливается.

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

С компьютером вопросы решались просто: я показывал ребятам стоимость нового промышленного компьютера (пять нулей перед знаком доллара). А вот по поводу сетей каждый раз приходилось проводить ликбез.

5083

И ещё немножечко шьёт

Явление первое. Я и клиент.

— Сделаете репорт к веб-шопу в формате CSV?

— Сделаю.

Явление второе. Я и секретарша клиента.

— У меня для вас две новости: хорошая и плохая. Хорошая: ваш репорт работает. Плохая: все заказы изменили статус.

Как же ж так, что ж такое?.. Ведь писал только репорт, в нём ни одного запроса на изменение, исключительно выборка. Ещё раз проверяю свой скрипт. Опрашиваю секретаршу на предмет манипуляций с БД другими сотрудниками. В итоге вспоминаю: для лучшего понимания процедуры я запустил другой репорт в формате XML, написанный моим предшественником. Оказывается, этот репорт заодно меняет статус заказов...

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

5082

Нельзя тебе, тебе и всем остальным

Саппорт хостера. Клиент ругается, что он следовал инструкциям, а теперь не может открыть сайт. Смотрим .htaccess, а там прелесть:

Order Deny,Allow

Deny from XXX.XXX.XXX.XXX

Deny from XXX.XXX.XXX.XXX

Deny from All

5077

Пусть горит там что попало, лишь бы не было войны

Не понимал и не пойму воинствующих пророков MS и никсов, радостно стаптывающих клавиатуры в своих крестовых походах. Когда-то хотелось влезть со своей маленькой локалкой на сто машин и пяток серваков и домашними компами, которые не падают, с вопросом: «ЧЯДНТ?» Потом, поговорив с парой человек, которые плотно сидят на никсах всевозможных, я как-то успокоился и понял, что доказывать что-то и радостно кричать: «А вот эту задачу можно было сделать не так!» абсолютно бесполезно.

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

С наступающим вас, коллеги!

5073

Экономим нервы и такты

Вот все говорят: женская логика, женская логика... Мол, неописуемое и непонятное явление. А если проявить сообразительность? Да ещё не простую, а нашу, айтишную? Поясню на примере.

Давеча договариваюсь по аське со знакомой о встрече.

— Как сделаем: я тебе позвоню или буду ждать от тебя эсемеску?

— Да, так сделаем.

Казалось бы, вот он, яркий пример этой самой женской логики. Вот какой вариант она имела ввиду? Я спросил — оказалось, тот, в котором я ей позвоню.

Теперь берём учебник по С++. В разделе «Логические операции» читаем:

Логические операции сокращённого вычисления:

— сокращённая конъюнкция (conditional-AND) &&;

— сокращённая дизъюнкция (conditional-OR) ||.

Правый операнд сокращённых операций вычисляется только в том случае, если от него зависит результат операции: если левый операнд конъюнкции имеет значение true или левый операнд дизъюнкции имеет значение false.

Рассуждаем. В описанном выше примере имеем операцию дизъюнкции, которая должна обязательно вернуть true (так как один из предложенных вариантов должен быть выбран). Ответ знакомой — это передаваемое значение операнда. Читаются выражения слева направо — значит, значение присваивается левому операнду. А если левый операнд дизъюнкции равен true, правый уже не рассматривается, что придаёт ответу однозначность.

Логично? Логично. Ничуть не сложнее, чем в компьютере. Так-то! Читайте мануалы, товарищи.

5065

После меня — на свалку

Сам я инженер-программист в провинции. Это означает, что всё от компьютера до промышленного станка с ЧПУ находится в моём ведении. Подхалтуриваю решением проблем с компьютерами у знакомых.

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

— на материнской плате AM2 имеется индикатор POST-кодов, что не может не радовать;

— в обвесе южного моста явно не хватает деталей, которые выдрали с корнем;

— из БП отчётливо несёт горелым.

Вздыхаю ещё раз и лезу в запасники за процессором и новым БП. Медитирую над мануалом и фоткой материнки, напаиваю недостающий на южном мосту обвес. Подключаю. На индикаторе отчётливо виднеется проблема на ЦП. Проц жив на все сто — я в этом уверен. Достаю тестер. Снимаю решётку с сокета и наблюдаю отсутствие десятка контактов в разъёме. Тихо выпадаю в осадок: что можно было с ним такого сделать? Если нет нового сокета, будем допаивать контакты. Вот только что выбрать в их качестве?

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

Звука нет. Дрова встали, но сам звук не идёт. Лезу на материнку и меняю стабилизатор напряжения. Всё работает, как в сказке. На всё про всё у меня ушло два часа и километр нервных волокон, но работу я сделал — заметьте, обычным советским паяльником, пусть остро заточенным и заземлённым.

Свои кровно заработанные я получил в тройном размере: за работу, за срочность и за моральный ущерб. Есть такое поверье у меня в городе: если что-то не работает после меня — на свалку.

5062

Само выросло

Борода и свитер, говорите? Чашка немытая? Стихи в двоичном коде?

Когда-то на заре своей карьеры я был юным эникейщиком, на работу ходил в костюме, а борода и усы просто не росли. С первым поднятым на FreeBSD сервером я обнаружил, что щетина стала несколько гуще, а после перевода домена с W2K Server на Samba и организации DMZ мне подарили мой первый свитер, который почему-то оказался безумно удобным. Теперь у меня значительно больше опыта, знаний и умений, несколько фирм на постоянном обслуживании и куча разовых клиентов, свитер, борода и усы.

Честное слово: само выросло!

5061

Будь здоров, не кашляй

Купили племянникам комп. Приехал я, поставил систему, кучу игрушек. Решил, что антивирусник ставить бесполезно, всё равно загубят систему, а так хоть чему-то научатся.

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

Прошло ещё две недели. Звоню:

— Как дела? Что, вылечили комп?

— Нет, он у нас ещё лечится...

— Как?!

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

5060

Всё, что движется

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

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

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