bash.im ithappens.me zadolba.li
12154

Двум не договориться

30 апреля 2014, 07:24

«Плавающий» обрыв провода может доставить немало хлопот, но бывает и иначе.

Давным-давно в далёкую контору (километров так десять от цивилизации) был проведён интернет. Проведён он был по обычной медной паре через SDSL-модемы — по тем временам очень даже неплохой вариант, тем более на таком расстоянии.

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

А тут вдруг пропадания связи прекратились совсем, правда, скорость чуть снизилась. Вроде бы и хорошо, но ведь это ненормально, когда происходит что-то само по себе? Полезли разбираться — оказалось, повреждение изоляции, окисление жилы и как результат — разрыв, два торчащих проводка в паре миллиметров друг от друга.

Пока жила разорвана — связь работает стабильно: сигнал-то в линии высокочастотный. А если соединить — начинает зависать раз в пару дней.

Решили, что пусть лучше зависает — реле работает без сбоев, зато никакой неопределённости.

12153

Cui bono

30 апреля 2014, 07:12

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

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

Я вынужден тебя расстроить.

Они не мастера фиалковой дефекации. Они такие же люди, как и мы с тобой. Единственная задача большинства разработчиков — максимизация прибыли.

Карточка — ужасный инструмент. Чистое зло. Жетон — лучик света, мира, надежды, добра и жвачки. Но карточка выгоднее. И поэтому используется.

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

Так и живём.

12152

Стереть серые сопли

30 апреля 2014, 07:00

Шесть лет назад мне довелось по просьбе настраивать свежекупленный Pentium D на 2,8 ГГц с 512 МБ оперативки. Симптомы были очень «весёлыми», особенно для ПК родом из солидной городской розничной сети: владельцы, пожилая пара, жаловались на невыносимые тормоза.

Прихватив свой домашний набор из отвёрток, термопасты и аварийных дисков с дистрибутивами, я прошёл сто метров до соседского дома, снял тапочки и принялся за железного друга. Дождавшись загрузки ОС и увидев дёрганую перерисовку окон на Windows XP SP2, я с лёгкостью определил диагноз: отсутствие драйверов. Полнейшее. Ребята из розничной сети не нашли ничего лучше, чем накатить на компьютер голую ОС и впарить в таком виде.

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

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

Прошло шесть лет.

Всё те же действующие лица, всё тот же ПК. Правда, теперь ОС выпадала в «синьку» ещё при инициализации ядра и отказывалась запускаться в безопасном режиме. Загрузившись с аварийного набора, я грустно окинул взглядом еле живой NTFS с покоцанной таблицей индексов на сильно трещащем 250-гиговом винчестере и спросил, нет ли у них запасного носителя. К моему удивлению, нашёлся новенький USB-винт на 320 гигабайт. Подключив его к ПК, я было принялся переносить на него данные с полудохлого раздела, но тут системник внезапно выключился, как и шесть лет назад, с той лишь разницей, что теперь я смог вновь его завести.

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

Делать нечего — отправил хозяев за новым блоком питания и жёстким диском, а сам пошёл домой. На следующий день сеанс возобновился. Меня встретили новенький Thermaltake на 650 ватт (как я и советовал) и… Seagate на 500 ГБ (ушлые продавцы сказали, что винчестеров на 2 ТБ нет в наличии). Вздохнув от безысходности, я принялся за установку.

Поскольку прошивка материнской платы в упор не видела больше 3,5 ГБ оперативки из четырёх, которую за эти шесть лет докупили и самолично установили хозяева, в ход пошёл проверенный временем дистрибутив. И тут… компьютер опять внезапно выключился. С новым блоком питания!

В шоковом состоянии начал ощупывать видеокарту, радиатор на южном мосту и на процессоре, ведь налицо симптом перегрева! Но нет — холодные. И всё же закравшееся сомнение не давало покоя. Забравшись в BIOS и вызвав PC Health Status, я чуть не уронил челюсть на пол: датчик на процессоре показывал 95 градусов Цельсия! Начал снимать радиатор… и обнаружил, что крепления сломаны, а на самом радиаторе и процессоре нет термопасты.

— Ой, знаешь, Вася, а я его чистил.

— Когда?

— После того, как ты в первый раз к нам приходил.

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

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

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

Конец у этой истории счастливый. Накатил им джентльменский набор современного пользователя — Firefox с NoScript и AdBlock, VLC, μTorrent и Pidgin, а также сделал ярлык на ту самую программу для рисования. На сей раз с пустыми руками отпускать отказались.

Кем я работаю? Я художник-аниматор.

12151

В почти прямом эфире

29 апреля 2014, 07:24

Недавно мне приснился сон, что я разрабатываю плагин AdBlock для… телевизора. Схема работы плагина аналогична работе антивируса: телевизор кеширует несколько минут входящего видеоконтента. В вирусную (рекламную) базу заносится первый и последний кадр рекламы или иного контента, который требуется заблокировать. Плагин ищет в закешированном видео первый и последний кадр и вырезает всё между ними. В результате получается телевидение без рекламы, но с небольшой задержкой. Во сне я просматриваю огромное количество рекламы, создавая начальную вирусную базу, и вычисляю самый продолжительный рекламный ролик — именно этому значению и будет равно время кеша. Отдельным потоком пишу быстрый и максимально точный алгоритм сравнения видеоконтента со снимками первого и последнего кадра из вирусной базы. Проект открытый: каждый может внести в вирусную базу датаграммы ненавистной ему рекламы. Плагин легко интегрируется в современные телевизоры на Андроиде, для других создаю миникомпьютер-приставку, который является посредником между телевизионным кабелем и телевизором. Пишу сайт. Плагин для Андроида распространяю бесплатно, приставку продаю через интернет. Конечно, такой телевизор или приставку желательно подключить к интернету для актуализации вирусной базы, сейчас с этим проблем нет.

Утром проснулся уставший и невыспавшийся, но довольный результатом. Пока ехал на работу, пытался представить себе дорогу без баннеров.

12150

Связь из морских пучин

29 апреля 2014, 07:12

Давным-давно, в далёкой галактике, фидошный регион 2:46 (Украина и Молдова) начал собираться летом в Крыму на Тарханкуте. Было это ещё на заре мобильных телефонов, то есть покрытие не просто оставляло желать лучшего, а оставляло желать.

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

В разгар этого спора из палатки вылезает заспанный товарищ и интересуется, из-за чего весь этот шухер, который не даёт ему спокойно спать. Ему объясняют. Он достаёт свою «Моторолу». Результат тот же: один «пенёк» есть, связи нет. Товарищ пожимает плечами, прикуривает сигарету, заходит по колено в море, спокойно звонит в родной город, спрашивает, как дела в семье, заодно уточняет результат матча. Выходит из моря и, не обращаясь к онемевшей толпе, отстранённо произносит: «Вообще-то я мехмат заканчивал…» — после чего лезет в палатку досыпать. Связисты пристыженно расходятся.

12149

Роботом по воробьям

29 апреля 2014, 07:00

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

Графический юзер:

— Так, мне надо найти файл и скопировать его. Открываю строку поиска, забиваю название. Что там было? Васяпупкин_день_рождения? Нет, это была свадьба… А, чёрт с ним, забиваю «Васяпупкин». Хм. 20 результатов. Посмотрим. А, вот, точно — Васяпупкин_именины! Правой кнопочкой на него, «копировать», открываем окошко флешки, «вставить». Mission accomplished!

Командный юзер:

— Так, мне надо найти файл и скопировать его. Запущу-ка я скрипт. Что значит «ничего не найдено»? Но ведь оно там! Так. Код скрипта. Что это за чушь? Как я мог такое написать?! Тут меняем, там меняем… Отлично. Теперь запускаем ещё раз. Так. Откуда все эти 100500 файлов?! Я же… А, чёрт, точно, условия же. Так. Опять открываю скрипт, дописываю условия. Запускаю. Вот, файлов меньше, но почему-то не копирует. Ах да, пути же не прописал. Открываем скрипт, дописываем…

И так далее, пока «послушный скрипт на побегушках» не получит именно те чёткие настройки, какие нужны.

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

Давайте будем благоразумны и не станем забивать гвозди кувалдами, а воробьёв сбивать из пушек?

12148

Недоперезагрузка

28 апреля 2014, 07:24

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

На ремонт принесли старенький системник на nForce2. Индикатор пост-кодов показал, что на шине PCI активен сигнал Reset. Причин такому состоянию может быть очень много: от отсутствия одного из напряжений питания до убитого южного моста. Первым делом я решил исключить самый естественный источник этого сигнала, для чего отключил провода, идущие к передней панели корпуса. Оценив, что до разъёма очень неудобно будет тянуться отвёрткой, решил вернуть кнопку питания на место. На свою беду я запомнил, какой провод на какие штырьки шёл, и прочитал подписи только на материнке, причём неправильно из-за того, что они были сделаны весьма оригинальным способом.

Если бы машина не стартовала сразу после подачи питания, я бы неизбежно понял, что вместо Power вернул на место Reset, а так я посчитал, что эта проверка выполнена, и продолжил диагностику.

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

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

Дальше по плану мероприятий должна была следовать проверка на отвал BGA-пайки процессорного сокета и чипсетов, но материнка, будучи запитанной вне корпуса, нормально запустилась. Проверив, что умеренная деформация никак не влияет на работоспособность, я решил, что какой то из выводов на обратной стороне платы упёрся в корпус. Для проверки этой гипотезы я постелил в корпус пару листов бумаги и закрутил материнку на место. При подаче питания машина опять стартанула сама и вывела сообщение о сброшенных настройках BIOS (наверно, успели сброситься, пока я вытаскивал батарейку для проверки). Что-то меня дёрнуло подключить провода передней панели при работающей машине. На этот раз надписи на материнке я прочитал правильно, и при подключении кнопки Reset машина перезагрузилась и ушла в ступор, как раньше. Стоило выдернуть злополучный разъём, как машина опять пошла грузиться. Тут-то я всё и понял…

Кнопка оказалась поломана довольно подлым образом: в ненажатом состоянии звонилась на 3 кОм.

12147

Криптоустойчивый контейнер

28 апреля 2014, 07:12

Некоторое время назад родственники стали жаловаться, что в их подъезде какие-то нехорошие люди регулярно то ломают домофон, то портят почтовые ящики и выбрасывают. Жильцы подозревают в этом раздел сфер влияния районного ЖКХ и местного ТСЖ, но доказать ничего не могут. Обращались неоднократно к участковому — всё бесполезно. После очередного раза, когда взломали их ящик, и без того потрёпанный жизнью, внезапно пришла идея. В закромах был найден антивандальный коммутационный ящик подходящего размера, доработан болгаркой для получения входящей корреспонденции, окрашен и повешен на четыре анкера 10×150 непосредственно в бетонную стену рядом с остальными.

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

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

12146

Типа того

28 апреля 2014, 07:00

В тридевятом царстве, в тридесятом государстве жили-были, не тужили, по-английски говорили Кен Томпсон и Деннис Ритчи. Но наскучила им басурманская речь, и придумали они новый язык. Да так ловко, что целые армии программистов по белу свету восприняли язык, как родной. Появились и проповедники языка С, и его адепты, и даже отдельные секты со своими священными сводами законов и правил, аки секта поклонников С++ во главе с Бьёрном Страуструпом. Но в основе своей все они жили по одному канону, установленному основоположниками языка.

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

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

И да, неявное преобразование типов в С/С++, к которому надо относиться очень внимательно — страшная вещь, особенно когда пишутся кроссплатформенные приложения. Не зря в одной толстой священной книге от Страуструпа этому вопросу отведена чуть ли не целая глава.