bash.im ithappens.me zadolba.li
5786

Задницей с разворота

25 марта 2011, 09:00

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

5785

И носом крутит

24 марта 2011, 16:45

Есть у меня квартира просторная, сервер на лоджии и, естественно, кот. Куда же без кота? Одним прекрасным летним днём примерно в десять вечера я решил посмотреть фильм и лечь спать. Ушёл готовить попкорн, а пока ходил, открыл балконную дверь — жарковато стало. Прихожу, сажусь на диван, пульт от телевизора в руки, сеть, и…

И сервера в сети нет. Проверяю с компа — не видится. Разгадка, как всегда, очевидна: кот вышел на лоджию остыть, а так как он там ещё ни разу не был, стал всё обнюхивать, в том числе и сервер. Своим носом котяра выкрутил оба реобаса на минимум. Естественно, такой режим работы предполагался только зимой, и сервер, нагревшись до 120 градусов, успешно выключился.

5784

Ну-ка мечи файлы на стол

24 марта 2011, 12:45

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

— Открывайте в терминале «Мой компьютер».
— Открыла.
— Есть ли там в списке сетевых дисков ваш диск C:?
— Не-е-ет, нету. Но есть какой-то диск C: на «Крейзи».
— Это не ваш ли?
— Не знаю.
— Откройте этот диск, посмотрите, ваши ли папки с файлами там лежат?
— Нет, знакомого ничего нет.

Ладно, выходим из сеанса. Смотрим имя удалённого компьютера — Crazy.

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

5783

Игра в свои ворота

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

Будучи обычным студентом обычного вуза, мой брат Саша помимо обычных студенческих увлечений уважал две вещи: программирование и хоккей. Именно поэтому в качестве обязательной для любого студента халтуры была выбрана полставочная должность инженера-системотехника в местном ледовом дворце. Да, в нашем уездном городке была своя хоккейная команда (назовём её «ГазМяс»), которая играла хоть и не на высшем уровне, но с довольно стабильной периодичностью занимала призовые места в своём дивизионе. Тренер «ГазМяса», дядя Вася, пользовался огромным уважением в кругах болельщиков.

Сашкина работа была довольно творческой и в основном заключалась в лечении внезапно глюкнувшего электронного оборудования. Особенно любимым занятием на рабочем месте была пляска с бубном вокруг электронного табло. Монохромная светодиодная панель через пень-колоду была подключена к гордости завхоза ледового дворца, старенькому 286-му с 640 килобайтами памяти и 30-мегабайтным винчестером. Работой табло управляла писанная на Сях программка, сопровождение которой передавалось по наследству от одного инженера-системотехника к другому. Жил мой брат да не тужил, но в один прекрасный день пришёл домой сильно пьяным, а наутро подал заявление об уходе. О причинах такого поступка он рассказал мне только через десять с лишним лет, и то после очень хорошего количества совместно принятого на грудь алкоголя.

Шёл февраль, хоккейный сезон подходил к своей кульминации, и мой брателло начал было грустить по поводу будущего вынужденного отпуска, как вдруг в один прекрасный день к нему в каморку зашёл профсоюзный деятель с предложением скинуться на подарок к дню рождения дяди Васи. И тут Сашка зажёгся Идеей! Лучший подарок для тренера что? Разумеется, победа любимой команды!

Идея была простой и гениальной. Большинство очков «ГазМяс» терял, лидируя в конце матча с разницей в одну шайбу и пропуская гол за несколько секунд до конца встречи. Соответственно, если как-нибудь уменьшить время игры, то и вероятность неблагоприятного исхода была бы меньше. Помимо судьи-хронометриста, контрольный секундомер которого благополучно пылился в ящике стола, единственным источником точного времени было пресловутое табло. Идея Саши заключалась в следующем: модифицировать табло так, что если «ГазМяс» ведёт, то смена секунд происходила бы не через одну секунду реального времени, а приблизительно через 0,9 секунды. Разница для человеческого глаза во время игры практически незаметная, но для игры — довольно критическая.

В программу было внесено следующее условие:

for (i=0; i<2; i++) { // Мы не знаем, в каком порядке команды будут на табло
if (startswith(lower(team[i]), "газмяс") { // Пусть мелочь из «ГазМяса-2» тоже порадуется
teamindex = i;
}
}

if (score[teamindex] > score[1 - teamindex]) {
quantifier = 0.9;
} else {
quantifier = 1;
}

Изменения были успешно протестированы на второй команде. Наступил день рождения уважаемого тренера, по совпадению ставший и днём очередного матча «ГазМяса». Саша, предвкушая радость дяди Васи вечером, отправился сдавать последний экзамен сессии. Только вот препод попался на редкость въедливый, и освободиться брату удалось только часов в восемь, аккурат к окончанию третьего периода. В нетерпении он зашёл на трибуну и обомлел. «ГазМяс» проигрывал одну шайбу, до конца игры оставалось десять секунд. Вбрасывание, пас назад, к левому борту, в центр, бросок… Шайба вошла в ворота соперника «ГазМяса» на мгновение позже сирены. Судья покачал головой и развёл руки в стороны, показывая, что взятие ворот засчитано не будет. Сашка посмотрел на табло. Местный «ГазМяс» встречался с «ГазМясом» из другого города. Украденной десятой доли секунды не хватило до ничьей.

К счастью, о произошедшем никто не узнал, а на турнирном положении «ГазМяса» потеря двух очков так в итоге и не отразилась. Мой брат живёт и работает сейчас в Штатах, пишет программы для микроконтроллеров, которые использует NASA в своих спутниках.

5782

Ископаемые чудеса

24 марта 2011, 12:45

Есть и в наше время люди, которые о памяти не забывают. Игра в 56 байтах и компилятор в 20 — это, конечно, хорошо, но вот использует ли их кто-то реально?

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

Другой продукт Хиппа — система контроля версий Fossil. В архиве — полмегабайта, один файл. В этот файл влезает собственно система контроля версий, баг-трекер, вики-движок, а заодно и веб-сервер. Каждый раз, когда я использую эту систему, задумываюсь: как это всё удалось туда запихать? Любая из этих систем от других производителей в установочном файле будет занимать десятки метров. Может, этот загадочный файл изнутри больше, чем снаружи?

5781

Вышибло мозги

24 марта 2011, 12:45

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

5780

Космические рыбаки

24 марта 2011, 11:00

Когда-то давно, когда скорости были маленькими, а цены на интернет большими, когда спутниковое ТВ только начинало шагать в массы, а про торренты ещё никто не слышал, у моего знакомого появилась DVB-карта SkyStar 2. Спутниковый инет тоже был недёшев, а потому многие занимались «рыбалкой»: с помощью плагинов и хитрых программ перехватывали чужой трафик. Ставишь фильтр на MP3, WMA, OGG — и на твой комп валится музыка. За ночь гигов до десяти можно было наловить. Сортируешь потом по тегам, интересное оставляешь, ненужное удаляешь.

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

Было время… Интересно, остались ли ещё «космические рыбаки» — или ADSL, 3G и оптика до дома погубили их как класс?

5779

КО-инициализация

Много раз слышал об индийском коде типа a = a. Смеялся, пока самому не пришлось в яваскрипте написать:

document.domain = document.domain;

Без этого дочернее окно никак не хотело видеть window.opener ни в одном браузере. Может, индусы так пишут не от хорошей жизни?

5778

Крайне китайские киски

Не так давно была у нас с группой товарищей своя артель эникейщиков по вызову. Клиента должны были подключить к интернету по ADSL. Ждёт неделю, другую, вызывает нас, чтобы мы «поговорили с ними на своём языке». Приезжаем. Тестируем линию — сигнала нет. Звоним провайдеру.

Диалог был долгим. Мы уверяем техспеца в том, что линия к ADSL не подключена, а он нас в том, что мы ламеры криворукие. В самом конце разговора, непосредственно перед тем, как выяснилось, что наряд по подключению почему-то не исполнен:

— А у Вас модем какой?
— Cisco.
— Ой, не знаю… Наверное, какая-то китайская хрень. Вы бы купили лучше Acorp или D-Link — это вот хорошая техника.

Прикрываю микрофон рукой и комментирую:

— «Мерседес»? Не знаю такое, наверное, какая-то китайская хрень. Взяли бы лучше «Ладу» или «Волгу» — вот хорошие машины, проверенные!