bash.im ithappens.me zadolba.li
3619

Сбиты прицелы

Писали с однокурсниками в качестве дипломной работы «игры для программистов». Основная идея была заимствована из Robocode.

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

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

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

— Разобрался с физикой? — спрашиваю.
— Нет.
— Понял, как по существующей физике ездить?
— Нет.
— А что тогда случилось? Почему они вдруг так хорошо работать стали?
— Да у нас угол до цели неправильно считался. Исправил — и сами поехали...

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

3618

Хеш моего хеша

13 июля 2010, 11:45

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

Только после того, как оказалось, что неизвестный хакер — админ из соседней фирмы, я раскололся, что пароль «1D62C8A1A0B00CAAAD1BB9DE3148C23F71CFC689» — это и есть SHA-1-хеш очень известного виндового файлика, а использовать хеш в качестве пароля — мой способ всегда хранить подсказку под рукой.

3617

Палата интернетозависимых

13 июля 2010, 11:45

Лежал в больнице, принёс с собой нетбук фильмы смотреть. Для интереса решил поискать вайфай-точки. Нашёл одну с WEP-шифрованием. Где наша не пропадала? Грузимся с live-флешки BackTrack — пароль наш. Вся палата радуется. Пододвинули кровать к стене, где наилучший сигнал был, сидим впятером, как зомби, на внешние раздражители не реагируем. Медсестра зашла — испугалась. Позвала врача. Пришёл врач, спросил пароль.

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

3616

Ланч-контроллеры

13 июля 2010, 11:45

Прихожу в столовую — стоят две микроволновки рядом. На одной время 10:11, на другой 10:12. Думаю: «Непорядок! Надо синхронизировать, а то работать не будут!» Пора, пора в отпуск.

3615

Вред-дизайн

13 июля 2010, 10:00

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

Кнопку отправки формы никогда нельзя делать типа submit, а во всех полях нужно глушить событие onKeyPress, если keyCode==13. Табулятор тоже лучше заглушить. (Любители этого подхода делали, к примеру, сайт Почты России.)

Лучше всего, если пользователю после ввода данных нужно будет навести мышку на кнопочку, посмотреть циклическую анимацию и в нужный момент щёлкнуть мышкой. Верх мастерства — если в остальные моменты анимашка делает не form.submit(), а form.reset(). Это отсеет ботов. («Хомяки».)

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

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

При наведении мыши на элемент навигации все остальные элементы должны изменяться, на худой конец меняться местами. Пусть пользователь вспомнит игру «Лабиринт», придумывая безопасный путь мышки до нужной ссылки. (Сайты многих гигантов электроники.)

Размещать кнопки управления текстом рядом с полями ввода неинтересно — лучше расположить их поверх, так, чтобы часть вводимого текста была закрыта. (Последний редизайн Гугла.)

Системные требования сайта должны выглядеть очень круто: пусть пользователь сначала выбьет из бюджета своего НИИ деньги на последний топовый компьютер вместо печатной машинки с 256 мегабайтами памяти (мы одних скриптов вдвое больше подключим, не говоря уже о картинках), а уж потом зайдёт на три секунды на наш сайт, чтобы получить-таки ссылку на Рапидшару и скачать справочник по радиоэлектронике за 1974 год.

Пользовательское соглашение лучше всего поместить в <textarea> — а вдруг пользователь захочет переписать несколько абзацев? (Рамблер несколько лет тому назад.)

Вершина мастерства верстальщика — повесить ссылочку на валидатор. Ну а лёгким флиртом может показаться одна-единственная ошибка на странице: XHTML-тег <img> на HTML-странице, соответствующий баннеру «Valid HTML».

3614

Черновая печать

13 июля 2010, 10:00

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

3613

Налог на технофобию

13 июля 2010, 08:00

Да, я тот самый мудак, который выставляет вашим знакомым километровые счета за ремонт и обслуживание ПК.

Вчера одному почистил систему от вирусов — 1100 рублей. Грохнул ему boot.ini, сейчас еду систему переустанавливать — ещё 1200 рублей в карман. Ну а что — жить как-то надо же!

Бывает, приходишь, запускаешь AVZ, видишь в логе два экрана червей и троянов, характерных для «клубничных» сайтов, в шутливой форме советуешь осторожнее лазить по подобным ресурсам, а в ответ: «Да я ни-ни! Это мне хакеры прислали!» Конечно-конечно, на вашем компьютере содержится сверхважная для хакеров всего мира информация.

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

3612

Новая метла по-новому метёт

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

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

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

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

— Мужики, что случилось?
— Дым!
— Отбой тревоги, там помойку подожгли, весь дым прёт в окна и вентшахту.

Как выяснилось чуть позже, наша шефа решила устроить день чистоты и спалить весь мусор.

3611

И слова доброго не скажут

12 июля 2010, 15:45

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