13433

Длина имеет значение

Дело было в 98−99 году, когда, скопив приблизительно 1000 $, я наконец-то приобрёл свой первый комп (кстати, он неплохо работает до сих пор в качестве маршрутизатора под FreeBSD в режиме 24/7/365, пару раз в год чистится от пыли, и меняются кулеры).

Эпопея началась в процессе освоения, Windows я на тот момент не видел даже в книжках и свежая 98 была откровением. Через год товарищ из параллели открыл для меня NT4 Workstation (не буду рассказывать, как я первый раз ставил её пять часов без smartdrv), на которой я просидел следующие несколько лет (года аж до 2002, несмотря на Win2000), что меня и спасло. Система была офигительно стабильна, по сравнению с 95/98, и падала, только когда я сковыривал в ней что-то руками. Не припомню ни одного случая, чтобы она упала сама.

У NT было ещё одно большое «но» — DirectX for NT застрял на версии 5, и та была unofficial сборкой, игры же уже требовали шестую версию. Это и спасло меня от бесцельного прожигания времени. Хотя через несколько лет я с помощью Win32Dasm и Hiew убедил The Sims запуститься, заNOPав все проверки версии ОС наличия DirectX, но это уже отдельная история.

Так как играть я не мог, всё времяпровождение за компом тратилось на изучение и исследование. В том числе чрезвычайно внимательно были изучены все бумажки, прилагавшиеся к компу, практически целиком прочитан весь встроенный в винду хелп (Пуск → Справка, кстати до сих пор есть множество описанных там вещей, о которых знакомые айтишники знать не знают) и методом тыка изучено содержимое CD-диска с драйверами-утилитами от ASUS’овской материнки. Знание английского у меня тоже было никакое, поэтому буржуинские мануалы воспринимались со словарём с большим трудом. В конечном итоге я понял главное — на диске записаны драйвера. Это программы для лучшего взаимодействия Windows с железом. И если установлены «родные» драйвера, то производительность будет лучше. Эпопея «как уронить Windows» стартовала.

В принципе, всё обходилось спокойно, кроме одного пункта. На диске были UDMA66 драйвера, в комментариях к которым было сказано, что эти драйвера ощутимо ускоряют работу с диском (что с 32 MB оперативки и уползанием в своп было актуально), и я решил, что установить их просто критически необходимо. После установки картинки грузиться отказались… Восстановив работоспособность винды, я перечитал readme.txt буквально по словам со словарём, и из него я постиг, что с этими драйверами винт сможет работать только с родным же асусовским шлейфом, потому что он имеет определённую capacity в отличие от других.

Вскрыв машину я обнаружил, что на родном асусовском шлейфе висит CD-ROM, а винт подключён на шлейф без эмблемы ASUS. Поменял шлейфы — и вуаля! Винда стартанула! Выключил машину, снял шлейфы и приложил друг к другу. Замерял разницу линейкой. Как сейчас помню: родной асусовский был на 12 с лишним сантиметров (!) короче… Впрочем, помогло мне это не сильно — двухгиговый Fujitsu (работает в «роутере» до сих пор) отказался стабильно работать в UDMA66, и NT-шка буквально через пару минут засыпала меня сообщениями об ошибках чтения-записи. Пришлось откатиться на UDMA33.

Следи за длиной шлейфов, %username%, провода не идеальны и тоже имеют своё сопротивление и ёмкость.

13432

Fair dice roll

Великий корейский рандом, говорите? Всего лишь особенности работы генератора псевдослучайных чисел. Это очень хорошо, что вы только IP с его помощью формируете и ничего более, куда печальней дела обстоят в геймдеве, я вам скажу.

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

  • if (rand(10000)==1) и прочие подобные глупости при использовании генератора с нормальным распределением.

  • Выбор по таблице добычи при помощи генератора с нормальным распределением. Если сюда добавить ещё разный шанс трофеям, то для некоторых позиций вырисовывается совсем запредельная схема.

  • Генерация энтропии на основе данных игрока/сессии/сервера. Обычно легко прослеживается и явно заметна.

  • Выборка случайного элемента из некоторой части списка для придания «большей случайности». За пределами добра и зла. В одной известной игрушке про убийство монстров это привело к тому, что можно было сутками пытаться выбить шмотку, которой просто не может выпасть в текущей сессии.

  • Скрытая манипуляция выборкой под видом случайного выбора.

  • ...и даже сочетание всего вышеперечисленного.

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

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

13431

Гугл в помощь

Прочитав историю про ноль, расключённый на контакт заземления, получил лицевую травму от фейспалма.

Для кого выпускают ГОСТы, СНиПы и прочие стандарты? В основном, разумеется, для профессионалов. Но раз уж ты решил что-то сделать, ну так хотя бы загугли, можно вообще так поступить или лучше не надо.

Помните давнюю историю про таксу, которая за потолком тянула UTP? Задорно, ага. ГОСТ Р 53246? ANSI/TIA/EIA-569A? Не, не слышали. Профи, безусловно.

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

А когда лень и недосуг почитать стандарт, получаются различные казусы. И не всегда забавные. Минимальный радиус изгиба оптики? Не в курсе? Тогда считай, что дешевле — ставить муфту на перелом кабеля или перетягивать трассу. Пучок UTP в одном лотке с вводным кабелем толщиной в руку — и чего это у нас тест на категорию 6 не проходит? Незаземлённый лоток — ой, откуда коллизии?

Иной раз складывается впечатление, что ГОСТы — это такая вещь в себе, никому, кроме авторов, не интересная. Добрая половина факапов, описанных на IT happens, как раз и случилась по причине пренебрежения правилами.

Собственно, это всё к чему? Есть такой документ — ПУЭ, Правила устройства электроустановок. Он совершенно не интересен ни админам, ни монтажникам слаботочки, ни, тем более, обычным гражданам, ровно до тех пор, пока не приходится столкнуться с сетью электропитания. Поскольку подавляющее число компьютерной и бытовой техники хочет для работы 220 В, в какой-то момент это столкновение произойдёт.

Так вот, когда это произойдёт, не поленитесь хотя бы Гуглом воспользоваться, если на ПУЭ сил не хватит. Узнаете много интересного про рабочий ноль и защитный ноль, например. Про то, что в распределительных щитах на вводе принято делать повторное заземление — соединять ноль и «землю». И про то, что после распределительного щита делать такое соединение категорически запрещается. Заодно узнаете, почему. Потому что, если вы этого не узнаете теоретически, то запросто можете узнать практически. Со всеми вытекающими.

13430

Великий корейский рандом

Пишу на C# тест для детей. Первое задание — перевести маску подсети в сокращённый вид, второе — перевести маску подсети из сокращённого вида в полный, далее — вычисление адреса сети и так далее.

Прога практически дописана. И тут я замечаю, что у меня выдается одна и та же маска в первом и во втором задании, просто в разной форме записи. Ну, совпало, думаю.

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

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

13429

Земля курильщика

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

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

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

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

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

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

13428

Опасные игры

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

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

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

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

И вот прошли все, остались только те три геймера. Взглянул на них «Вассерман» с улыбкой и сказал: «Ну что ж, для вас у меня особый экзамен, чем весь семестр занимались, то и будете сдавать». И дал он им три задания — завалить его в Quake в мультиплее трое против одного, побить его рекорды на всех трассах в NFS II и пройти созданный им уровень в Warcraft II (если уровень не проходится с первого раза, то на пересдаче даётся новый уровень). Сдавали они этот экзамен всю сессию долго и упорно, и однажды кто-то из студентов или преподавателей не выдержал и спросил его, зачем он их так мучает, они же ведь работают. «Знаю я, как они работают, — ответил „Вассерман“. — Я генеральный директор той фирмы, в которой они якобы работают».

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

13427

Неуловимый Джо

Индусы, индусы, индусы… Пару часов назад столкнулся с тем, что коренные американцы способны накосячить не хуже индусов.

Вставляем в программу проверку входных бинарных данных (_fpclass) — вдруг нам NaN пришёл (или ещё какой мусор). И неожиданно для себя получаем три жирных бага в совсем других местах: зависание, некорректное отображение данных, движение времени «большими рывками».

Пара часов отладки — и становится понятно, что дело в том, что _fpclass портит режим сопроцессора. И вместо long double у нас сопроцессор считает всё как float.

Открываем сорцы. Ну странно же, когда стандартная подпрограмма из системной библиотеки не восстанавливает регистры оборудования. Гм, она восстанавливает. Угу, восстанавливает. Но с перепутанным порядком параметров в вызове _control87.

Дата написания кода — © 1998, 2000. Версия библиотеки 10.0. Как этот баг прожил 15 лет? 15 лет, Карл!

13426

Много шума из ничего

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

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

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

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

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

— Почему вдруг ничего не работает?

— Где ещё могут быть резервные копии. Не, там мы удалили случайно, где ещё?

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

13425

Непрекращающийся фейспалм

Вот человек жалуется, что у него все компьютеры на работе начали скачивать Win10. А про WSUS не слышал, да? А хотя бы про настройку времени работы Windows Update? Хотя рядовые пользователи вообще не должны иметь прав на скачивание и установку любых апдейтов и приложений. Это основы.

Другой бегает по кабинетам бухгалтеров, чтобы посмотреть на текст на экране. Подключение по rdp или vnc? Мы не ищем лёгких путей!

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

Четвертый после ремонта в серверной не только не удосужился зайти проверить, что там как, но и даже на график температуры не посмотрел ни разу за три месяца! Я даже не знаю, что тут вообще можно сказать кроме «вон из профессии» и LMD.

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

Я медленно покрываюсь фейспалмами и не понимаю, зачем все эти люди присылают истории, основанные на вопиющей некомпетентности, небрежности и раздолбайстве.

Неужели они не понимают, что именно они — позор IT?

13424

Только линукс и ничего, кроме линукса

Хоть история и про IT, но выругаться и выплакаться хочется совершенно по-обычному. Итак. Товарищи линуксоиды (вернее, примерно 90%), как же вы задолбали!

Давно ли операционные системы на базе ядра Linux были маргинальными? Давно ли пользователи ОС Windows и компьютеров Macintosh смеялись над убогим графическим интерфейсом, в котором вечно что-то недоделано, неудобно или просто недоступно? Давно ли взрослые дяди даже не смотрели в сторону «студенческой поделки», а поднимали корпоративные системы на Solaris, AIX или, на худой конец, *BSD? Времена те прошли, и (простите, простите за этот штамп!) пингвин по имени Тукс уверенно шагает по планете. Он раздаёт вам интернет в квартире, он помогает вам сказать «алло, привет!» любимым людям, он помогает учёным исследовать глубины космоса и строение материи. Это здорово? Конечно, здорово!

Но как же сильно достали линуксоиды! Которые пользуются такой замечательной системой на базе Linux по имени Убунту, или Арч, или Дженту, или Дебиан, или какой там ещё. Они видят, что линукс успешен, и теперь считают себя богами. Они считают, что все открытые системы должны быть на Linux, а иначе это бяка.

Что характерно, многие из этих линуксоидов — как раз те, кто лет десять назад хаял Linux почём зря… Они это знают и гордятся этим — мол, я выбираю инструмент под свою задачу. Слова крутого профи. Остальные люди, конечно, не выбирают никогда инструменты под свои задачи. Только линуксоиды-профи.

Эти линуксоиды ещё смутно подозревают, что до линукса тоже что-то было, но отказывают ему в существовании — точно так же, как отказывали в существовании Linux и сопутствующему ПО ещё двадцать и даже десять лет назад.

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

Эти линуксоиды накидываются на любую новость об операционных системах семейства BSD или, скажем, ReactOS — потому что, по мнению этих авторитетных специалистов (многие из которых стесняются даже своего имени), разработчики сих систем имеют наглость что-то делать не так, как завещал великий Р. М. Столман.

Если кто-то говорит, что в ядре Linux исправлена старая ошибка, то они радуются исправлению ошибки. Но если проскакивает новость, что ошибка исправлена в ядре Solaris — всё, туши свет: как вообще можно пользоваться Solaris, когда есть Linux?!

Если какой-то дистрибутив Linux получает какую-то поддержку от известной фирмы — это признание заслуг. Если какая-нибудь OpenBSD — это, конечно, атака корпорастов на open source.

Если где собирается конференция разработчиков Gentoo — это круто. Если же речь идёт о ReactOS — это «делать им больше нечего», «пилят чужие деньги» и так далее.

Энтузиазм, бескорыстность, талант, предусмотрительность — все эти качества, по мнению таких вот линуксоидов, могут существовать только в мире Linux. Остальные же — в лучшем случае, заблудшие овцы, на которых снисходительно смотрят как на недолюдей.

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

И совсем шизофрения: линуксоиды умудряются одновременно хвалить разработчиков OpenNTPD и хаять разработчиков операционной системы OpenBSD, хотя это одни и те же люди. Даже прямая отсылка к басне про свинью под дубом доходит не до всех.

Из-за линуксоидов немало людей, живущих в миру открытых систем, поуходили со многих интернет-ресурсов вроде OpenNet. Потому что просто невозможно общаться, когда любой технический вопрос, если он не о Linux, моментально превращается во флейм. Тролли торжествуют — они выживают своих «оппонентов».

У меня только один вопрос к вам, горе-линуксоиды. Вот, допустим, остался в мире только Linux. Кого вы тогда будете поливать грязью? Друг другу пойдёте глотки грызть ведь.

А что делать мне — не знаю. Где найти русскоязычную тусовку об открытых системах, чтобы и Linux там был, и все остальные, и чтобы друг к другу относились с уважением, радовались достижениям разработчиков «чужих» систем и учились у них? Не видно таких.

Остаётся только интернационально кучковаться и грустно шутить про самих себя.

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

Устал и задолбался. Искренне ваш, разработчик «ненужной» OpenBSD.