bash.im ithappens.me zadolba.li
10825

Месседжбокс не обманет

10 апреля 2013, 07:45

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

Так вот, бабушка эта на лекциях тупо бубнила методичку. Ходили к ней лишь девочки, за весь срок обучения не сделавшие самостоятельно и 10% своих работ, и люди, желающие иметь по окончании красную корочку. Я всегда в подобных случаях искреннее полагал, что лучше иметь лишних два свободных часа в неделю и «хорошо» в зачётке, чем отрабатывать пятёрку попой.

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

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

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

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

Вот препода по защите информации (царствие вам небесное, Лев Тихонович!) обмануть было куда сложнее. Его тесты представляли собой DOS-программку (защищённую, я подозреваю), которую он запускал со своей дискеты. Но и тут помог коллективный разум: мы просто наделали скриншотов всей группой, составив базу примеров. Хотя, постепенно тренируясь, мы таким образом научились всё считать и без шпаргалок, что, собственно, и требовалось…

10824

По рукам, пока не поздно

10 апреля 2013, 07:45

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

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

В третьем проекте будем использовать некие абстрактные имена. Удачные функции вынесем в библиотеку, оставив в базовом модуле только специфические процедуры.

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

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

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

— Так, вот тут мы дадим осмысленные имена, ведь у нас не какие-то абстрактные элементы, а баллоны с кислородом!

— А вот тут зачем так? Ведь все вычисления можно записать в одну строку!

— А почему здесь использованы примитивные IF — ELSE, ведь можно применить метод Лоренца — Шагенца для структурных инвариантов!

И хочется взять большую деревянную линейку — и по рукам ему, по рукам, пока не поздно…

10823

В тютельку

10 апреля 2013, 07:15

В 1992 году прокладывали мы сети во всех московских загсах. Ещё не Ethernet и даже не ARCnet. Потом несколько месяцев, где бы я ни шёл, фиксировал боковым зрением все проложенные кабели и ошибки монтажа.

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

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

Чудеса бывают. Только поганые.

10822

Нулевой баланс одежды

Работал компьютерным доктором. Историй пруд пруди, забавных и печальных, но некоторые выделяются особенно.

Принесла как-то тётенька системник со своего рабочего места. Не грузит Виндовоз. Проблему выяснили: сыплется HDD. Тётенька согласилась на установку нового с условием переноса архиважной рабочей информации со старого. Поскольку разметка повредилась тоже, восстанавливали программулиной пофайлово. Тем же вечером и отдали — мишн экомплишд.

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

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

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

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

10821

Чуть потуже, чуть приятнее

9 апреля 2013, 07:45

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

Если смотреть издалека, то всё правильно выглядит: провод идёт от блока питания и втыкается в материнскую плату. Втыкается нормально, ничего лишнего не торчит. Но стоит попробовать эту штуку включить, как комната наполняется едким дымом из блока питания. Поначалу грешили на бракованные блоки питания, но потом кто-то из глазастых заметил, что гнездо рядом с процессором называется не CPU, как можно было ожидать, а PCI. Новичка от удивления даже наказывать не стали.

10820

Так писал мудрец Обфусций

9 апреля 2013, 07:45

Я раньше думал, что так только на Баше бывает. Ну, или на Хабре.

Попался мне по долгу службы исходник от спиртзавода для французских контроллеров с немецким названием в среде разработки «Единство».

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

Вместо понятного и рекомендуемого для логики языка LAD используется язык структурного текста, в котором из конструкций IF — THEN — ELSEIF строится монстр, который уместился бы всего-то на двух понятных ветках релейной логики.

Все переменные имеют названия s_ed, st_ed, s_ed_o, t_q и не имеют комментариев. Комменты вообще скупы и непонятны по всему телу программы.

Развязка? Это не студент и даже не джуниор, а человек с многолетним опытом работы и запуска. Вот тут уже воистину страшно.

10819

Выставка достижений печатного хозяйства

IT в российских институтах — это нечто.

Принтеры. На нашей кафедре их всегда было столько, что хватило бы на немаленьких размеров типографию. Комбайн Xerox, эквивалент которому по скорости переработки документов может составить разве что промышленных размеров шреддер. Двуфамильные лазерные принтеры в количестве двух экземпляров — их совокупной мощности вполне хватает на десятки человек с залипшими Ctrl+P, слепо печатающих всё, что приплывает по HTTP. Мелкие домашние/полуофисные принтеры в количестве, превышающим любые разумные и неразумные пределы. Доисторические сканеры — нерабочие, рабочие, рабочие, но не подключённые. И самое главное — из всего этого изобилия работает дай бог одно устройство! Как выяснилось позже, как только в очередном принтере кончаются картриджи, начальство спустя некоторое время просто покупает новый принтер. Ходят слухи, коллекция и поныне продолжает пополняться.

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

Сервер. Тут ничего не могу сказать — тотальный комод на FreeBSD, на котором вертелось всё и вся, начиная с DHCP и кончая уже позже настроенной Самбой. Настроил это чудо умелец, который и на десктопе у себя FreeBSD держал. Любые попытки разрешения технических проблем с центральной службой института натыкались на загадочное поведение оной: при упоминании FreeBSD сотрудники её впадали в малайский амок и улетучивались в ближайшее окно. Несмотря на то, что за сервером смотрел когда никто, когда папа Карло, оно как-то работало. Думаю, и до сих пор работает.

Наконец, пользователи. Старшие преподаватели, не способные за мало-мальски разумный срок набрать средних размеров текст. Аспирант в количестве одной штуки, который и швец, и жнец, и на дуде игрец, и за сервером смотрец. Преподавательница реляционных баз данных, при мне объяснявшая студенту, что таблица, распечатанная им непосредственно из Access, ну никоим образом не находится в первой нормальной форме. Студенты-краснодипломники, перед сдачей диплома задающие вопросы вроде: «А как мне сделать график в Экселе?»

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

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

10818

Линукс Линуксович

9 апреля 2013, 07:15

Кажется, я понимаю, откуда у техподдержки идёт фраза: «Закройте программу Linux». Нет, это не тупость, это не чтение по бумажке, это горе от ума.

Наберите в консоли Linux слово «linux». Что вы увидите?

Программа "linux" на данный момент не установлена. Вы можете установить её, выполнив: aptitude install user-mode-linux

Установим программу и откроем её словом «linux»… Ну, вы поняли, как мы можем потроллить техподдержку или техподдержка может потроллить нас?

10817

Прощай, прошлое

9 апреля 2013, 07:15

«Поколение деградирует. И это отчасти наша вина», — пишет автор недавней истории.

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

Ещё не перевелись такие люди, как мой отец (56 лет), жалующиеся, что они-то в своё время ринулись бы изучать устройство автомобиля или кататься, только позови. И что? Вам интересно ковыряться в устройстве того куска электроники, что сейчас на СТО выбрасывают целым блоком, потому что дешевле поменять? Однако «Формула-1» ещё интересна молодёжи.

Ещё не перевелись такие люди, как мой брат (35 лет), жалующиеся, что они-то в своё время ринулись бы изучать устройство «Амиги», только позови. И что? Вам интересно ковыряться в устройстве того куска электроники, что остался в памяти людей в виде комикса про скунса? Однако его эмуляторы ещё интересны молодёжи.

Ещё не перевелись такие люди, как я (27 лет), которые не бродят широко утоптанными тропами и отлично понимают почему. Компьютеры развиваются существенно быстрее книг, автомобилей и приставок, просто некогда становится изучать прошлое, если оно реально не помогает будущему.

Технологическая сингулярность всё ближе. Уже сейчас нас догоняют наши дети, а их — младшие братья, и все они говорят, что мы что-то теряем. А что именно?