bash.im ithappens.me zadolba.li
9731

Старьё моё

16 августа 2012, 07:15

Понадобилось недавно написать для студента небольшую программу на Паскале. Программа простейшая — переход в графический режим, построение графика функции, вывод таблицы значений. На Windows 7 x64 Паскаль, разумеется, не запустится, да и от версии х86 толку бы не было — там отсутствует возможность работы в графическом режиме.

Итак, попытка номер раз — FreePascal. Пишем привычный код для инициализации графического режима и ожидания нажатия любой клавиши. Оказалось, что это дело во FreePascal организовано более чем интересно: открывается отдельное окно для графики, но все сообщения от клавиатуры принимает другое окно, с консолью. Приложение по нажатии любой клавиши просто так не закрывается, только после ручного переключения на окно консоли. Гугление даёт решение проблемы: собрать программу с ключом APPTYPE: GUI, подключить WinCRT и вызвать ShowWindow. В общем и целом под Borland Pascal это гарантированно не соберётся, а необходима совместимость. Отпадает.

Попытка номер два. Для совместимости со старыми приложениями я использую виртуальную Windows XP. Вот и сейчас на виртуалке стоит новенькая «хрюша» со всеми обновлениями. Копирую весь пакет Turbo Pascal, который предусмотрительно имеется, запускаю bp.exe, открываю исходник, запускаю. Приложение закрывается: отвалился эмулятор ntvdm.exe. Я привык: как Windows XP ни ставь, где-нибудь в конце концов да вылезет глюк, но тем не менее. В ходе экспериментов выяснилось, что отваливается при любой попытке перейти в графический режим, а также просто на запуске turbo.exe. Переустанавливать виртуальную машину на тот момент не было ни времени, ни желания. Решил пойти другим путём.

Итак, попытка номер три. Хвалёный многими DOSBox. Много слышал о нём, но использовать не доводилось. Включаем, монтируем в качестве диска С: папку с Паскалем, запускаем bp.exe, открываем исходик и привычно нажимаем Ctrl+F9. Программа закрывается. Полностью. Путём курения манов устанавливаем, что в DOSBox это сочетание клавиш действительно поставлено на закрытие. Кому пришло в голову назначить для эмулятора такие простые сочетания, когда все они используются многими досовскими программами, неясно, но на то он и опенсорц. Ладно, убираем это сочетание из настроек DOSBox, запускаем — графика работает. Вносим изменения в исходник, чтобы доделать-таки эту несчастную задачу. Вносим… А они не вносятся, ибо Паскаль реагирует только на пробел и на клавиши со стрелками. Закрываем Паскаль, в консоли DOSBox — тот же глюк. Нажатия клавиш Backspace и Del вызывают появление на экране символов из набора DOS. Закрываем DOSBox, открываем, монтируем, запускаем — проблема исчезает, но появляется после следующего запуска написанной программы. В результате отладка идёт именно так: запускаем, выходим, закрываем эмулятор, открываем эмулятор, монтируем, запускаем, пишем…

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

9730

А ручка-то — вот она

15 августа 2012, 07:45

Ноут HP с Core i7 на борту греется, как маленький термоядерный реактор. Пришёл с подозрительно плавающим дефектом, был оставлен на run-in тест на выходные.

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

9729

Винда с винта — задача ещё та

15 августа 2012, 07:15

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

Первичный осмотр показал наличие на двадцатигиговом винте трёх разделов: с 98-й виндой без половины системных файлов, с XP, на котором была только папка System Volume Information (о том, что это была XP, можно было догадаться только по названию раздела), и раздел с данными, который позволили безжалостно затереть.

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

Сначала я попытался поставить систему на винт, подцеплённый к моему ноуту через USB-переходник, но винт, вставленный обратно, отказался запускать систему, показывая только синий экран с ошибкой 7B. Пробовал винду привести к состоянию запуска на любом железе — 7B. Пробовал ставить винду, но винт вставлять в родное железо сразу после копирования файлов, при первой перезагрузке, — даже ставиться дальше не хотело, 7B. Примерно в этот момент я обнаружил, что такими экспериментами убил загрузчик на жёстком своего ноута, так как винда вкатывала загрузчик не на тот винт, на который ставилась, а на первый в списке (что логично, это была моя глупость), и эксперименты со своим ноутом я решил прекратить.

Ещё на прошлом месте работы я узнал, что «семёрку» можно ставить с жёсткого диска на него же, сделав раздел активным. Оттуда же я помнил, что с XP такое не прокатывает. Выход? Делаем из жёсткого загрузочную флешку для установки с неё винды! В принципе, занятие довольно геморройное, но в процессе раскопок я нашёл программку WinToFlash, позволяющую автоматизировать процесс до нескольких кликов. Таким образом на винт я залил винду с кучей вшитых драйверов на контроллеры (во избежание синих экранов с 7B), и через полчаса на несчастном ноуте стояла заветная XP.

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

9728

Приучен к лотку и клавиатуре

15 августа 2012, 07:15

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

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

9727

Пока ремонтник не разлучит вас

15 августа 2012, 07:15

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

Оплатили, отгрузили, привезли. Ставлю Windows и прочее. Три компьютера их сборки работают на ура, «левый» же не хочет. Не могу даже запустить установку, проблема напоминает перебои питания материнки.

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

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

9726

svn blame boss

Работал начальником программистов. Как-то техподдержка обнаружила баг в нашем продукте. Условия были весьма хитрые, но, надо отдать должное, передали достаточно информации, чтобы я смог воспроизвести баг на своей машине. Ошибка оказалась пустячной. Быстро исправил, проверил. Насторожило то, что это ядро, на котором построен не один десяток приложений. Значит, им грозит обновление ядра и внеочередной релиз.

Решил узнать, насколько всё запущено: кто и когда сделал эту ошибку, кто пропустил при проверке, кого ругать. svn blame ничего не дал. Код не менялся с самой первой ревизии при импорте из старых хранилищ. Не поленился, поднял старое. Нашёл. Оказалось, что бывший начальник во время рефакторинга ядра случайно удалил одну нужную строчку… семь лет назад. За все эти годы никто не заметил ошибки. Конечно, приложения падали регулярно, но на это была куча других причин: неисправности сети, вирусы, несовместимые сторонние компоненты.

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

9725

Код города — 2012

14 августа 2012, 07:45

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

Звонит из филиала бухгалтер:

— Не проводится документ, остатки есть, что делать?
— Измените время документа на 23:59:59. (Одинэсники поймут.)
— Ага. (Молчание секунд десять.) А 23:59:59 — это телефон какой-то? Кого там спросить?

9724

Айпишник апокалипсиса

14 августа 2012, 07:45

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

Как-то нужно было добавить новый принтер в сеть с общим доступом (Server 2003). Умная книга подсказала, что сажать принтер нужно на статический IP, а Гугл посоветовал перезагрузить DHCP после создания резервирования. Я честно выполнил все инструкции.

В тот момент, когда поднялся DHCP, полностью упала вся телефония и интернет. АТС своя, инет-шлюз стоит на другом сервере. Судорожно начал искать связь между этими событиями и понял, что ничего не понимаю. Я человек довольно самокритичный, и в голову лезли различные мысли о том, что спец из меня никакой, что я тут вообще делаю и т. п.

Через час начальник успокоил: возле здания провайдера, который предоставлял нам и телефонию, проводились какие-то работы. Строители перебили основной силовой кабель и обесточили всё здание. Но пивом я всё равно отпаивался долго…

9723

Осторожно, няшная собака

14 августа 2012, 07:45

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

— Надо в квартире к кабелю тестер подключить.
— Нет проблем, только подождите, у нас там собака.

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

Минут через пять дверь открывается, и нас впускают. Снимаем башмаки. Выбегает чихуахуа! Я так понимаю, хозяева не за нас, а за свою собачку боялись — мелкие псины очень часто от радости писаются.