Справочник автора/Компьютеры

Материал из Posmotre.li
Перейти к: навигация, поиск

Содержание

[править] Какие бывают

Форм-факторы современных компьютеров очень разнообразны.

[править] Что могут и чего не могут компьютеры?

« Компьютеры делают очень маленькие, очень быстрые ошибки. »
— Автор неизвестен

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

Короткое правило: передать страницу текста на другой край Земли в виде текста или в виде картинки проще, чем распознать на картинке с текстом этот самый текст.

[править] Легко

[править] Сложно

В более широком смысле — это все то, что надеялись за пару лет осилить отцы-основатели искусственного интеллекта как направления исследований. Конечно же, они не уложились в эти сроки. Только лет через 50 у нас есть отдельные результаты, далеко не все.

[править] Не представляется возможным на данном уровне развития

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

Скорее всего, перечисленное не будет работать без пары-тройки революций (a la лампы — транзисторы) в материальной базе.

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

[править] Кто занимается компьютерами

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

[править] Как делают микросхемы

В принципе, примерно тем же способом, что и пиццу. Ну разве что чуточку сложнее.

Всем известно из чего состоят электронные приборы? Ну, там разная фигня типа транзисторов, резисторов, лампочек, катушечек, конденсаторов и всего остального. Ну так вот, катушечки, лампочки и конденсаторы выкидываются на плату, чтоб не мешались (ибо они имеют слишком большие размеры и их нельзя сделать меньше), а вот транзистор — это штука, с которой уже можно работать. Их существует куча видов, и все они создают достаточный арсенал для инженера, который хочет заставить микросхему делать некие операции — переключить реле, чтобы начала протягиваться перфолента, принимать замыкания-размыкания контактов считывателя перфоленты и записывать эти данные в буфер, затем читать эти данные из буфера и выполнять их, ибо на самом низком уровне любые данные — это команды. Соответственно структура микросхемы — это каскады переключателей, и если их представить в виде виртуальной реальности, то это будет карта транспортной сети с горой светофоров, по которой машинки-сигналы снуют как ужаленные. Но фактически микросхема на разных этапах производства разная. Сначала это фотография — на подложку, выдраенную до блеска (дабы не было механических дефектов), наносится фотослой, на котором рисуется карта этой транспортной сети, её первого слоя, метрополитена. Затем вспышка! снято! — наносится следующий слой, и если предыдущий был метро, то этот — уже автодороги. Вспышка! Снято! рисуем следующий слой — пешеходные переходы. Снято! Монорельсы? Железные дороги? Всё для вас! Снято! сигналы будут сновать, делать пересадки, перещёлкивать флажки направления, группироваться кучей по несколько бит в вагон плюс машинист, сидеть в залах ожидания, томиться в электронной очереди в местном аналоге ИФНС… Но, физически это будет пицца, в которую на кремневую подложку-тесто уложены в смеси с сыром стандартные элементы — ветчина там, огурчики, помидорчики и так далее — в строгом соответствии с планом. Затем эта пицца-схема запихивается в коробку и везётся потребителю. OM NOM NOM NOM

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

Гражданские, индустриальные и военные микросхемы — разница между

[править] Как программируют компьютеры

Программисты, как уже говорили, бывают разные. Самая низкая производительность у системных программистов. Зато работают они на самом низком уровне, оперируя портами, банками памяти, стеком вызовов… Хорошо описана разница между системщиком и ERP-программистом в небезызвестном рассказе «История одного байта»[5]. Писать надо чётко: пишут на ассемблере или Си, «сторожков», не дающих совершить ошибку, как правило, нет, возможностей для отладки минимум, а последствия ошибки могут быть самые плачевные.

На втором месте — программист промышленный, он же кодер. Скорость промышленного программиста низка, потому что программа сложна. Просто вдумайтесь, сколько человек писали привычный вам Internet Explorer или Word. Пишут много людей, годами, и часто бывает, что человек, вернувшись несколько месяцев спустя к собственному тексту, вынужден разбираться в нём с нуля. Считается, что скорость промышленного программиста — 50 строк в день. Студент, способный написать курсач на 1000 строк за ночь, смеётся над ними, однако хорошая программа исчисляется сотнями тысяч строк. Нетрудно и запутаться. И требования к качеству выше — программа должна с честью выдерживать самые дикие «краш-тесты» и в худшем случае виновато говорить: «Извините, не хватило памяти».

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

На каком языке работают промышленные программисты? Языков выше крыши, наиболее распространены C++ («си плюс-плюс»), C# («си-шарп»), Java («Джава» или «Ява»), диалекты Паскаля (основной — Delphi = «Дельфи»). Недавно к ним примкнул Objective-C («обджéктив-си»). Все эти языки достаточно выразительны, чтобы писать нечто очень сложное и не допускать детских ошибок. Да, и обязательно спросите у знакомого программиста, какой язык для каких целей: например, под iOS на C# не напишешь. Я, конечно, и здесь мог бы написать, но текст быстро устареет: то Embarcadero наладит в своём Delphi поддержку iOS, то Microsoft откроет новую платформу Windows RT…

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

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

Веб-программисты бывают клиентскими (JavaScript, и только он — другого браузер не поддерживает), и серверными (Perl, PHP, реже Python, Ruby, Java). Кроме программистов, вебом занимаются дизайнеры, верстальщики, копирайтеры (писатель рекламных и информационных текстов, никакого отношения к копирайту это слово не имеет, и вообще слова не однокоренные — copywriter и copyright). Языки ERP чаще всего диалекты Бейсика (а в «1С: Предприятии» — ещё и русифицированный Бейсик).

Сложные и высоконагруженные веб-службы — поисковики, геоинформационные системы, социальные сети — отдельная песня, они ближе к промышленным. Может использоваться даже C++.

Игры. Игра, с одной стороны, «одноразовая» (только малая часть кода переносится в другую игру) и не критичная (есть «право на вылет», хоть это и не прибавлят реноме разработчику; привет, Bethesda!). С другой — игра не должна тормозить. С третьей — поджимают сроки: если к определённой дате игра не выйдет, верное банкротство (только монстры наподобие Valve и Blizzard могут позволить себе выпустить, «когда будет готова»). С четвёртой — элементарно сложна. И вот между всеми этими «огнями» держит баланс игровой программист. Когда в декабре 1997 открыли исходники Doom, некто Ли Киллоу ухитрился ускорить его в полтора раза! Но это не умаляет квалификацию Кармака: невиданный на то время движок вместе с несложным редактором был написан одним человеком чуть больше, чем за год[6]. В игре Braid 90 тысяч строк, в пересчёте на производительность промышленного программиста это 7 человеко-лет. Вот только игра была написана одним программистом и двумя художниками за два года.

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

Многие современные игры имеют модульную структуру: отдельно, с качеством промышленного кода, программируется трудоёмкий опус — графический движок, который может использоваться с доработками несколько раз и кочевать из игры в игру; отдельно прикручиваются разные примочки (скриптовые движки, физические движки типа Havok), и уже третьим слоем программируются скрипты, часто на собственном скриптовом языке игры или специфическом диалекте некоего известного языка. Небольшая студия вполне способна приобрести готовые недорогие компоненты и сама писать уже только скрипты. Прикручивание к движку визуально-звукового «мяса» — 3d-моделей, текстур, карт уровней, музыки и звуков — к программированию уже особого отношения не имеет. И вообще, на одного программиста пятеро «всех остальных», посмотрите в титры любой игры.

[править] Как взламывают компьютеры

Собственно, есть три цели взлома компьютеров.

Есть и четвёртая цель — не самоцель, правда, а промежуточная — повысить права, вплоть до овладения системой.

…И куча каналов взлома, рассмотрим их все.

[править] Бандитский (aka терморектальный) криптоанализ

xkcd № 538 о бандитском криптоанализе

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

Фраза «терморектальный криптоанализ» намекает на одну из пыток: паяльник в зад.

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

[править] Прямая диверсия

« — Как взломать банкомат?
— Берёшь ноутбук и кувалду. Кувалдой разбиваешь банкомат.
— А ноутбук для чего?
— А какой хакер без ноутбука?
»
— Анекдот

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

Электронщик DiHALT рассказывал историю одной диверсии. Станок закрыт на ключ, из ящика торчат провода клавиатуры и мыши, чертежи ходят по сети. Задача — украсть эти самые чертежи. Нашли такую же мышку, встроили в неё USB-хаб и флэшку, а имеющуюся выдернули. Показывают сисадмину мышку: вот я выдернул, можно вставить? Он и вставляет мышь с сюрпризом. Тоже, так сказать, взлом.[7]

[править] Вредоносная программа (aka зловред, вирус, червь, «троянский конь»)

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

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

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

Ну и напоследок терминология.

[править] Злоупотребление легитимными действиями aka флуд

Самый простой способ заDoS’ить систему — подключиться к ней и послать столько запросов, что или система рухнет, или канал связи. Это называется «флуд» (англ. flood — «потоп»). У обычного пользователя канал поуже будет, чем у сервера? А у тысячи пользователей — намного шире! Так что пускаем флуд со многих машин одновременно — это «распределённая атака на отказ» (distributed denial of service, DDoS).

Откуда берут тысячи пользователей? Подбрасывают им (как правило, через эксплойт) вирус, который ничем не проявляется, кроме этих самых атак. Вирус управляется из единого центра, образуя сеть (так называемый «ботнет»). Машинное время ботнета продают. Изредка бывают ручные DDoS’ы: посетители популярного сайта (как правило, имиджборды) решают кого-то «завалить».

На большее флуд не способен: ни украсть данные, ни овладеть системой.

[править] Эксплуатация ошибок aka эксплойт

Использование ошибок в программах, от англ. exploit — «эксплуатировать».

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

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

Рай эксплойтов был в 1980-е годы. Язык программирования Си, изобретённый ≈1975, имел несколько серьёзных конструктивных просчётов.

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

Впрочем, культура открытого ПО играет с народом злую шутку: если взломают распространённую библиотеку, пострадают очень и очень многие. В апреле 2014 открылась серьёзная ошибка OpenSSL Heartbleed (по некоторым данным, АНБ знало о ней как минимум год), и уязвимым оказалось огромное количество ПО и не менее 800 тыс. крупных сайтов. В одном из исправлений маршрутизатора ZyXEL была одна строчка[8]: обновили OpenSSL. С уязвимой на исправленную, разумеется.

[править] Эксплуатация небезопасных процедур

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

Следите за руками. В ОС Windows 95[9] решили, что компьютер должен быть доступен любой домохозяйке. Назвали каталог «папкой», переделали пусковое меню… и заодно сделали автозапуск всех дисков, для которых можно зафиксировать момент вставки (вставку флоппи-дискеты без периодического «дырчания» дисководом обнаружить нельзя). Винчестеры-то вставлять нельзя, а компакт-диски вне подозрений, потому что их делают на заводе. Съёмные диски наподобие LS-120, «Бернулли», ZIP и JAZ были дороги, редки и ненадёжны.

Прошли годы. Люди стали ходить с флэшками, недешёвыми[10], но необычайно надёжными и не требующими специального дисковода. На них точно так же действовал автозапуск. Вот только, в отличие от компакт-дисков, писать их можно без всяких препятствий, настоящий рай для вирусописателя. (Кроме того, в народ пошли пишущие CD-приводы, что привело к появлению известного числа заражённых компакт-дисков.) Закрыли недоделку только в запоздавшей Windows Vista.

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

[править] Дополнительные административные (и не только) каналы

Часто подобными каналами грешит техподдержка производителя, и администраторы просто должны знать: такой канал есть, его надо перекрыть. Например, в домашних версиях Windows XP по умолчанию создаётся дополнительный пользователь «Администратор» без пароля. В 2012 был скандал — особый запрос на маршрутизатор D-Link даёт административный доступ к нему.

[править] Использование человеческих слабостей aka социальная инженерия

« — Я администратор Steam. К сожалению, произошёл обвал одного из серверов. Вы обязаны дать нам свой логин и пароль, если не дадите, то вас забанят навечно.
— А это не я регистрировался, а мой папочка.
— А кто твой папа?
— Полковник ФСБ.
»
Bash.im № 406830

Пожалуй, самые интересные рассказы о социальной инженерии можно прочитать в книгах Кевина Митника, наиболее известного хакера-злоумышленника.

[править] Подслушивание через сторонние каналы

Из того, что я слышал…

Есть и более приземлённые способы выудить какую-то информацию. Базы данных обычно дают записям порядковые номера. Создадим одну запись и через месяц ещё одну. Разница между номерами — это сколько объектов появилось в БД за месяц.

Чтобы защититься, сторонние каналы надо идентифицировать, экранировать и зашумить.


использование квадрокоптера для радиоперехвата Wi-Fi на небоскрёбе

[править] Взлом шифра

« Каждый может придумать шифр, который он не в силах взломать. »
— Шуточный постулат криптоанализа. Приписывается Брюсу Шнайеру (1998)

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

[править] Подбор пароля

Никто не запоминает шифровальный ключ — строку байтов фиксированной длины (для симметричных шифров — от 64 до 256 бит). Ключ по каким-то правилам строят из пароля — последовательности букв и цифр. Чтобы пароль по сложности приблизился к «достаточно тяжёлому» (64 бита) шифру, пароль должен быть из 12 случайных символов со знаками препинания, или из пяти случайных слов из словаря.

Крайне слабые пароли (подбираются даже вручную):

Слабые пароли (не выдерживают машинного перебора):

Средние пароли (приемлемы для интернета и прочих систем, где скоростной перебор невозможен[11]):

Прочные пароли (выдерживают даже перебор в миллионы паролей в секунду, например, когда изъяли шифрованный винчестер). Насчитайте сложность 50 и более бит:

Возможен такой случай: через «человека посередине» получаем пароль к чему-то незащищённому (например, FTP-серверу), а затем пробуем его к другим ресурсам.

Внимание нематематикам: «сложность перебора 40 бит» означает, что есть 240 паролей. Другими словами, увеличение сложности на 1 бит увеличивает перебор вдвое, на 10 бит — в 1024 раза. И ещё одна «клюква» из кино: на экране мелькает цепочка букв, вдруг из них останавливается одна, затем вторая… Такой перебор — явный признак «колхозной криптографии».

[править] Вмешательство в связь aka человек посередине

« И в суму его пустую
Суют грамоту другую
»
— Пушкин

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

За подробностями отсылаю на любой учебник по криптографии, ключевые слова — «человек посередине» (man-in-the-middle), «центр сертификации» (certification authority). Вкратце правдоподобные сценарии.

Кто может стать человеком посередине…

Как «человек посередине» может сработать…

[править] Взлом биометрической аутентификации

http://habrahabr.ru/post/237145/

Как недавно выяснилось, чтобы взломать стандартный сканер отпечатков пальца, даже не нужен сложный муляж пальца, точно воспроизводящий его фактуру, а достаточно отпечатка, напечатанного на вполне обычном принтере https://geektimes.ru/post/272238/

[править] Серверы и суперкомпьютеры

Поверьте мне, современные настольные процессоры — это практически передний край технологий, и процессоры серверные — это либо специально отобранные настольные с аппаратно включёнными серверными возможностями, либо что-то особенное, сделанное по тому же техпроцессу, но лишённое чисто настольных вещей: например, на серверах распространена система команд Itanium aka IA-64, никогда не применявшаяся в настольных машинах. Касательно памяти — бывает память с кодами коррекции ошибок, чтобы сбой во время многомесячной работы не вызвал зависание.

Такие же серверные процессоры используются и в суперкомпьютерах. Суперкомпьютеры сейчас делают по т. н. кластерной схеме: берутся несколько компьютеров чуть мощнее обычного настольного и соединяют сетью. Правда, сеть обычно не Ethernet, а InfiniBand — решение специально для кластеров (серверных и суперкомпьютерных). Операционная система — обычно производная Unix (автор этих строк долгое время имел доступ к кластеру с операционной системой CentOS и планировщиком SLURM).

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

Графического интерфейса у серверов и суперкомпьютеров нет (даже если суперкомпьютер служит для обсчёта 3D-мультиков), исключительно консоль. Но бывает веб-интерфейс. Бывают клиентские программы с графическим интерфейсом: например, для заливки файлов на суперкомпьютер широко используют программу WinSCP[12]. И, разумеется, ни то, ни другое каких-то мегакрасот не даст: первое — это обычный интернет-сайт, второе даст знакомый интерфейс твоей родной ОС (Windows/Linux/Mac). Собственно, общаясь с суперкомпьютером, вы общаетесь не с самим суперкомпьютером, а с выделенной для этого управляющей машиной.

Суперкомпьютеры состоят из узлов. Грубо говоря, один узел — это одна материнская плата, с одним или несколькими процессорами и общей памятью. Обычно суперкомпьютеры сдаются пользователям именно узлами, нет возможности получить одно процессорное ядро. Задачи выставляются в очередь, и как только приходит очередь и появляется запрошенное количество узлов, задача запускается. По опыту, одно ядро было раза в полтора быстрее, чем ядро доступного мне настольника, таких ядер на узле восемь. В большинстве случаев нет возможности дать пользователю пять узлов, а потом ещё три, когда те освободятся: с одной стороны, это очень тяжело программируется, с другой — распространённые библиотеки параллельного программирования такого не поддерживают. Хотя про суперкомпьютеры из верхних строчек Top500, где одна задача — это сотни и тысячи узлов, я слышал, что там отказы — часть штатной работы, и программистам приходится это учитывать.

Задачи бывают разные: одни на несколько месяцев, другие — на несколько минут, третьи — вообще тестовые: чтобы убедиться, что всё компилируется и работает. Тестовые задачи малы и коротки, но они самые срочные: пока задача ждёт, ждёт и программист. На разных кластерах очередь проходит по разному; у нас была «общая» зона на большие задачи, и «тестовая» на маленькие (до часа).

Неизвестно, заработал ли придуманный иракцами кластер из приставок Playstation 2 (это от безысходности, ничего другого американцы не продавали). А вот спустя 10 лет, ≈2010, США реально построили кластер из почти 2000 Playstation 3 — вот так применили «принцип бритвы и лезвий»[13] в свою пользу. Бывают ещё «видяшные» кластеры, для них nVidia делает специальные платы, которые не способны работать как видеоплаты, но способны гонять их фирменную библиотеку CUDA[14]. Вычислительная мощь обычной геймерской видеоплаты в десяток раз больше, чем у процессора, однако совсем нет логического устройства, поэтому лучше всего они выполняют задачи, когда надо одно и то же несложное вычисление (без трансцендентных функций вроде синуса) запустить на куче разных входов. Ну и точность невысокая: с привычными для компьютеров 14-ю значащими цифрами видяхи если и работают, то с большим скрипом. Точность у видях вдвое меньше, семь цифр.

Некритичные слабонагруженные серверы делают даже на микрокомпьютерах размером с кредитную карту наподобие Raspberry Pi. Но всё-таки «настоящие» серверы (даже если там старая настольная матплата, аналогичный процессор и какой попало диск) стоят в стоечных корпусах в датацентрах. Причина — в доступности: интернет не откажет, свет не пропадёт, централизованное кондиционирование… А для критичных задач требуют «доступность четыре девятки»: 99,99 % времени сервер будет работать. На простои — меньше часа в год! Для этого в датацентрах есть газовое пожаротушение, мощнейшие стоечные бесперебойники, «горячий резерв», готовый заработать, когда основное оборудование откажет или его просто остановят на обслуживание. И в «настоящих» серверах, как правило, диски можно менять «на горячую» (что в настольниках запрещено). Хотя и на это накладывается чисто русская безалаберность: бывает, что уборщица может ходить там, где запрещено появляться и директору.[15] Другой пишет: два электроввода проложили в одной канаве, и «джамшуды» уничтожили сразу оба, а долго не проверявшиеся дизели подвели[16].

Чтобы отказы винчестеров не мешали работе, используют файловые системы с резервированием. У гигантов обработки данных, наподобие Яндекса и Гугла, свои наработки. А в машинах попроще используется RAID — Redundant Array of Inexpensive Disks, «избыточный массив недорогих дисков». Чтобы можно было дистанционно переставлять ОС, многие хостеры предлагают IP KVM — Keyboard, Video, Mouse over IP.

[править] Квантовые компьютеры

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

В чём их особенность? В том, что они работают на принципиально иной логике, чем классические. В классической двоичной логике бит — это или 0, или 1. А в квантовой логике кубит — это с какой-то вероятностью 0, с какой-то 1. И совершив какую-то операцию над кубитом, мы одновременно совершаем операцию над нулём и над единицей. А если выполнить операцию с последовательностью кубитов, то одним махом переберутся все возможные комбинации классических битов. Результат вычисления, правда, получается не идеально точный, а в какой-то степени приближенный к точному (но, действуя по определенному алгоритму, можно добиться любой требуемой точности вычислений).

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

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

[править] Компьютерные сети

[править] Топология сетей

+ Название говорит само за себя: компьютеры подключены к общей шине, что экономит кабель.
+ Если один из компьютеров сломается, то сеть всё равно будет работать.
− Но если уж сама сеть или сервер сломалась/сломался, то сеть не будет работать ни за какие коврижки.
− У сети низкий уровень безопасности.
− Вся информация передаётся от сервера к пользовательскому компьютеру n1, затем к компьютеру n2, и так по очереди.
− Если случились неполадки, то их очень сложно найти.
+ Сеть может быть очень длинной — до 20 км.
− По такой сети легко распространяются вирусы.
− В отличие от общей шины, если один компьютер сломался, то сеть не работает.
+ В связи с этим, пользовательские компьютеры работают напрямую с сервером.
+ Сеть очень безопасна.
− Если сломался сервер, то сеть не работает.
− Расходует много провода.
Сеть очень безопасная и хорошая. Лишь три недостатка:
− Центрального компьютера нет.
− Число юзеров ограничено.
− Расходует много провода.

В провайдерских сетях используются сети «точка-точка», которые на уровне маршрутизации объединяются в кольца. Это даёт некоторую избыточность (при обрыве одного кабеля сеть продолжает работать) и экономит провод по сравнению с двойной прокладкой. Ну и кто обычно портит кабели? Землекопы, которые, если уж копнут — так порвут всё сразу.

[править] Пакетная коммутация

Кое-кто из вас делал простенький телефон из пары микрофонов и пары наушников. Три провода, говорить по такому телефону могут только двое. А как сделать, чтобы через один кабель говорили трое, четверо, сто человек?

Вариант 1. Канальная коммутация. Широкий эфир делим на 5 (10, 100) каналов поуже. Как делить — другой вопрос (физическими парами проводов, временными слотами, разделением частот или как-нибудь ещё). Просто, как пять копеек, но есть недостатки.

Соединяться могут ровно N человек, (N+1)-го не пустит. Если один канал пуст, его нельзя раздать поровну остальным (например, чтобы поднять качество речи). А если кто-то молчит, он всё равно расходует канал. Поэтому пошли на другой метод, пригодный только для цифровых данных.

Вариант 2. Пакетная коммутация. Участник посылает в эфир пакет — M байтов с заголовком, от кого пакет и кому доставить. Система по мере возможности пытается этот пакет довести до адресата. Так что пакетной сети нет разницы, работают тысяча соединений в час по чайной ложке или одно, но на всю ширину канала.

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

А что будет, если пакет всё же пропадёт? На уровне сетевого протокола (IP) — ничего (правда, в протоколах есть порядковые номера, и пропуск недвусмысленно говорит, что что-то в канале нечисто). В системе протоколов TCP/IP есть два транспортных протокола (TCP и UDP) — TCP работает со сплошным потоком данных и тайком от программы пытается его реконструировать, посылая запросы на повтор. UDP — просто стрельнул пакетом в канал и забыл, применяется в голосовых программах, играх и прочих местах, где нужны свои нестандартные меры обеспечения надёжности связи.

[править] Маршрутизация

Большая сеть состоит из кучи сетей поменьше: одни многоабонентные, другие — каналы «точка-точка». Как от абонента А попасть к абоненту Б? Эту задачу и решает маршрутизация.

Каждый маршрутизатор решает кусок этой задачи: допустим, к маршрутизатору подключены N сетей. У нас есть пакет, предназначенный абоненту Б. В которую из N сетей — и какому получателю, если сеть не «точка-точка» — его отправить? Это делается по несложным правилам, которые называются таблица маршрутизации.

На абонентских компьютерах таблица маршрутизации, как правило, тривиальная: всё, что не в локальной сети, идёт на т. н. шлюз (маршрутизатор, ведущий в глобальную сеть). Я на своём компьютере обнаружил 10 правил маршрутизации — из них пять связаны со специальными адресами (0.0.0.0, 127.0.0.1 и т. д.), три с локальной сетью (192.168.x.x), и два — маршрут по умолчанию (на квартирный маршрутизатор).

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

Эти все правки я делал своей рукой. А в интернете слишком много событий, чтобы к каждому привлекать админа. Маршрутизаторы перенастраиваются протоколами автоматической маршрутизации. На данный момент (2016) интернет своей связностью обязан протоколу BGP. Известно немало случаев, когда BGP заглючивал и от интернета отваливался кусок.

Существует несколько схем вещания.

[править] Уровни сетевых протоколов

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

Это деление крайне приблизительно — например, IP захватывает третий уровень (маршрутизация) и четвёртый (разбиение пакетов). TCP — четвёртый (надёжность передачи) и пятый (организация постоянного соединения). Тот же HTTP — прикладной протокол, но он широко используется как сеансовый, чтобы проходить через прокси-серверы. Но, раз уж мы строим сеть, нас интересуют именно низшие уровни.

Оконечное оборудование (модемы, сетевые платы) не относят ни к какому уровню. Однако те из домашних модемов, которые подключаются через Ethernet или Wi-Fi, не являются оконечным оборудованием и вынуждены быть мостами и маршрутизаторами. Точно так же мостами являются стоечные модемы (DSLAM и т. д.), стоящие у провайдера.

Оборудование 1-го уровня. Не понимает сетевой адресации, неспособно изменить частоту пропускания. Требует с обеих сторон сети с одинаковой адресацией и сходными физическими принципами. Если соединить сети по 1-му уровню, они станут одной локальной сетью и смогут находить друг друга, например, через «Сетевое окружение» Windows. Широковещательный пакет IP или Ethernet «расползётся» по всей сети. Оборудование 1-го уровня зависит от технологии сети — например, в очень старых Ethernet-сетях на коаксиальном кабеле были терминаторы — железные заглушки с резистором внутри.

Оборудование 2-го уровня. Работает с внутрисетевой адресацией (MAC-адреса и т. д.). Уже позволяет менять частоту передачи, разделять домены коллизий (участки сети, на которых возможны коллизии — двое одновременно пытаются передать что-то). Требует с обоих концов сети с одинаковой адресацией. Если соединить сети по 2-му уровню, они станут одной локальной сетью и смогут находить друг друга, например, через «Сетевое окружение» Windows. Широковещательный пакет IP или Ethernet «расползётся» по всей сети.

Оборудование 3-го уровня. Работает с межсетевой адресацией (IP-адреса). Не видна внутрисетевая адресация — я не о «серых» IP, а о MAC-адресах. Широковещательный пакет Ethernet (без IP-заголовков) упрётся в маршрутизатор — и стоп. Широковещательный пакет IP — зависит от настроек.

Оборудование более высоких уровней.

[править] Интернет

Напомним пару фактов.

[править] Интернет вещей

Поначалу «последняя миля» интернета прокладывалась существующими коммуникациями, например, телефоном (телефонные модемы, ISDN, xDSL) и телевизионным кабелем (DOCSIS)[18]. Сейчас всё больше домовладений, куда на небольшое расстояние (в подвал или на ближайший столб) проводят гигабитную оптику, а остальное можно прокинуть и Ethernet-кабелем. Так что одна тенденция — интернет через существующие провода — превращается в противоположную — специализированные провода заменяются компьютерной сетью. У многих стоит IP-телефон (и только от мини-АТС до аппаратов обычный аналоговый кабель), играет интернет-радио, IPTV преобразуется в коаксиальный кабель коробочкой на этаже. Аналоговые камеры наблюдения заменяются IP-камерами.

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

Концепции интернета вещей предшествовала концепция «умный дом», обстёбанная в (слабеньком) фильме «Один дома-4». Но во времена возникновения «умного дома» не было удобоваримых компьютерных сетей, потому связь велась, разумеется, на нестандартных технологиях и промышленных шинах вроде I²C (а для дистанционного управления — телефонный модем).

Однако у интернета вещей есть и проблемы.

[править] Компьютерная клюква

[править] Об устройстве компьютеров

[править] При компьютерной ошибке валит дым, а иногда и лопаются мониторы

Об этом есть отдельная статья: Взрывающиеся мониторы.

[править] Достаточно выстрелить в монитор, и все части компьютера полностью отказывают

Об этом есть отдельная статья: Выстрелить в монитор.

[править] Компьютер проецирует буквы на лицо работающего

Этот «спецдефект» легко реализовать, поставив в корпус монитора мультимедиа-проектор (а то и простой фильмоскоп). Свет от монитора ненаправленный, и возможны только едва заметные пятна, если одна сторона монитора, например, синяя, а другая — жёлтая.

[править] Будущее за голосенсорными экранами, как в «Аватаре»

Основная статья: Зрительский интерфейс

Хорошо. Возьмите ящик побольше, привяжите к нему изолентой планшет, подложите брусок, чтобы было поудобнее, и поработайте на этой штуке хоть пару часов. У кого Wii: Wii Remote — тоже неплохая модель того, что будет.

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

[править] О функциональности программ

При любой улике можно заглянуть в какую-то БД и найти записанного там 
Об этом есть отдельная статья: Магическая база данных. И подштамп конкретно о лицах — Распознавание лиц.
Даже очень нечёткое фото можно восстановить на компьютере 
Об этом есть отдельная статья: Кнопка увеличения. К сожалению, дизайнерам и фотографам не до смеха, ведь клиент иногда просит их сделать как в телевизоре.
Почему в кино такие точные строки прогресса, а у нас они ходят рывками? 
Даже простое копирование файла на карманный винчестер — это открыть файл на источнике и на приёмнике, скопировать (дисковым кэшем мы управлять не можем, поэтому первые байты копирования происходят очень быстро — реально ничего не пишется, только заполняется кэш), закрыть файл (одновременно сбрасывается кэш[20]). Где-то узкое место — процессор, где-то — память, где-то — доступ к диску, линейное чтение диска, время реакции сети, пропускная способность сети или графика. А теперь заменим винчестер на более ёмкий — линейное чтение ускорится в √GB2/GB1 раз, а время доступа на том же уровне. В общем, любая компьютерная операция — это огромная куча таких совершенно разных действий, которые, как ни пытайся, точно не сбалансируешь.
Если много дёргать графику, компьютер будет заниматься графикой, а не делом. Так что приходится разбивать задание на куски длиной в десятые доли секунды и только в эти моменты — два-три раза в секунду — двигать прогресс.
И бывает, что системный вызов длится долго и не даёт никакой информации о том, как он поживает (например, тот же сброс кэша). Ждём-с… А на строке прогресса — или задержка, или рывок.

[править] О программировании

[править] «Сделать хотел грозу, а получил козу»

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

  1. Написанная, но забытая функциональность. Именно так в любой игре появляются чит-коды: на этапе тестирования они очень нужны. Убедиться, что уровень физически проходим и что ни в одной комнате рендерер не заглючивает — хватит и бессмертия. Убедиться, что босс работает — перескакиваем на уровень с боссом, доходим до него на бессмертии, а на босса можно и выключить. При сдаче коды оставляют — по крайней мере не мешают.
  2. Функциональность, которая есть «в базе», но не нужна и заблокирована не до конца. Даже сугубо специализированные устройства наподобие электронных книг, как правило, работают на полноценной операционной системе с файловой системой и произвольно запускаемыми программами. Поскольку продаём потребителю не компьютер общего назначения, а всего лишь читалку, да и вирусов боимся, все эти функции блокируются. Но хакеры не дремлют, и через эксплойт делают, чтобы безобидная программа наподобие смотрелки графики записала нужный файл в системный каталог, а остальное — дело техники.
  3. Какая-то небольшая функция, связанная, например, с выходом за границы. Обычно такие выходы приводят к отказам и зависаниям, но иногда по счастливой случайности прокатывают. Классический пример — старые версии Microsoft Paint: когда в списке масштабов щёлкаем на нижней границе, получаем ещё более крупный масштаб. Эти самые «выходы за границы» — и есть основной источник эксплойтов, но чтобы программа в процессе не «упала», нужны специальные входные данные и хакерское обучение. Гроза в козу сама не превратится.

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

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

Другой вариант — уточнение рамок проекта: переносим программу на соседнюю отрасль, дописывая одну функциональность и отбрасывая другую. Яндекс (интернет-поисковик) изначально был системой поиска по базам документов, Drupal (система управления сайтом) — маленькой студенческой социальной сетью.

[править] Программист работает сутками, сидя на пицце и энергетиках

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

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

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

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

А вот для хакера (помните, он не совсем программист) это обычный режим деятельности. Его задачи сложные, но разовые, и сначала он вкалывает ночами, чтобы побыстрее выдать взломщик, а потом отсыпается. И системный администратор так нередко работает: то наладить участок сети, то всё работает, сиди себе, читай документацию. Cисадмины порождают миф о том, что «IT-шники играют на работе»: когда неполадка устранена и всё работает, то получается свободное время до следующей неполадки. И случайно вошедший человек может увидеть играющего админа. Ну а то, как он сутками аврально работает, когда что-то сломалось — он этого не видит, так как уходит в шесть, а админ остаётся авралить.

[править] Одиночка переплюнул IBM (Microsoft, Apple)

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

Прототип от продукта отличает многое что:

Реальный пример: Кен Сильвермен сделал движок, на две головы превосходящий движок Doom. Первая игра — Exhumed — была горбушкой такой ещё. Славу он снискал позже, игрой Duke Nukem 3D, уже при финансовой помощи издателя Apogee.

И, наконец, в IBM и Microsoft тоже деньги считают: если «прокатывает» небольшая доля проектов — пусть продукт прокатит, а там уже купим. На счету того же Microsoft: FrontPage (веб-редактор), Money (программа учёта семейного бюджета), Streets and Tips (геоинформационная система), Photo Editor (простой фоторедактор), Skype (голосовой мессенджер), Navision → NAV (бухучёт), Minecraft (игра в жанре «песочница»), Havok (физический движок), Hotmail → Outlook.com (почтовый сервер).

Реальность нереалистична? Хакер-одиночка реально переплюнул Tesla, Google, Apple, Ford и так далее в создании автопилота для автомобиля. А вот и нет, вполне себе реалистична: построил прототип, показал его, нанял двух инженеров, готовит продукт. В статье нигде и не говорится, что переплюнул кого-то. Мало того, поначалу рамки продукта очень ограничены — всё верно. Запасаемся попкорном и ждём, не повысят ли цену по сравнению с анонсированной 1000$, и как фирма из трёх человек будет реагировать на иски насчёт ошибок в автопилоте (нейронные сети — они в принципе неконтролируемы, да и как поведут себя дешёвые камеры в сложных условиях — кто знает). Другой пример из 2016 года: автор No Man’s Sky не справился с рамками проекта и запорол такую ожидаемую игру.

[править] Хакер набирает программу от начала и до конца, не пользуясь клавишами редактирования

Штамп времён Бейсика с нумерацией строк (язык обучения, изобретённый в 1965 — тогда ещё видеотерминалов не было и консоль представляла собой электрическую печатную машинку; особо распространён был в домашних компьютерах 1980-х). На видеомониторе на структурных языках удобнее писать так: появилась, например, команда begin[24] — вписываем парный end, курсор вверх и пишем тело между ними.

Так что набор от начала и до конца реально встречается нечасто:

Впрочем, и там бывают опечатки; если руки на алфавитно-цифровой клавиатуре, их, по опыту, проще не редактировать, а перепечатать кусок слова[29]. Да и программист больше смотрит на своё творение, чем собственно пишет.

Спецдефект реализуется просто: «хакер» набирает что угодно, а компьютер выводит заранее записанный текст.

[править] О взломе компьютеров

[править] Всю информацию из ЦРУ или НАСА можно украсть через сайт

Основная статья: Взрыв АЭС через Wi-Fi

Никто не кладёт все яйца в одну корзину. Вопрос не только во взломостойкости, но и в физическом разграничении доступа (вебмастера не имеют дела с секретной информацией), и в отказоустойчивости (работы с сайтом не помешают секретным задачам). Во времена рая эксплойтов (1980-е), может, и можно было забраться на Telnet-сервер (веба тогда не было), через него на брандмауэр, а через него в локальную сеть… Сейчас это практически невозможно. Эдвард Сноуден похитил информацию, потому что был сисадмином высокого уровня доступа.

Катастрофические сливы обычно бывают с веб-службами: Яндексом, Вконтакте, PlayStation Network… Ну, это и понятно — базы данных должны быть где-то близко к веб-серверу.

[править] Пароль подбирается по букве

Явный признак «колхозного» шифра. Тем-то и интересен шифр, что близкие ключи дают совершенно разные шифровки.

[править] Чем мощнее организация, тем тяжелее шифр

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

Может, в 1970—80-е гг., когда большая часть криптографии была засекречена, основные шифры были ручные и электромеханические, а дешифровальщики кайфовали от свалившегося криптоаналитического чуда — компьютера, — так и было. Сейчас шифры практически не взламываются, и реальные причины взлома компьютеров таковы:

[править] Об идентификации и анонимности

Anounimous&Identification.jpg

[править] О взломе видеокамер и микрофонов

[править] См. также

[править] Примечания

  1. Однако, справедливости ради, кое-какой прогресс всё же есть. Компьютер умудрились подключить к жукам, а людям с нарушениями подвижности компьютеры уже начали помогать ходить и более-менее скоординированно двигаться. Это, конечно, не заливка Википедии прямо в мозг, но тоже неплохо.
  2. Самое близкое, что имеется — байт-код, выполняющийся на виртуальной машине вроде Java. Позволяет работать везде, где есть виртуальная машина Java. А вот компиляция под произвольную платформу без предварительного написания компилятора для этой платформы — задачка на грани искусственного интеллекта.
  3. Что особенно весело, так это способность данного вируса сэмулировать Нажатие Красной Кнопки с физическим замыканием целой кучи контактов (для чего есть такая штука, как Ключ, сэмулировать которую невозможно).
  4. И, внимание, интернет ≠ Всемирная паутина = Веб! Всемирная паутина — одна из служб, которая показывает страницы. В интернете есть много других служб: электронная почта, сетевые игры, BitTorrent.
  5. История одного байта
  6. Игровое «мясо» всё-таки писал не Джон Кармак, а Джон Ромеро и Дейв Тейлор; эта подсистема Doom куда более низкого качества и в ней много «жёстко закодированных» мест.
  7. Пятиминутка реальности: устройство ввода типа «мышь» и устройства Mass storage, сиречь флешки, относятся к разным категориям USB-девайсов, так что провернуть подобную диверсию можно только если админ свалял дурака и закрытый ящик — единственное препятствие.
  8. [1], версия 2.03.0.C.4 — буква C означает «стабильная».
  9. Прошу не холиварить, ОС ли это. Да, загрузчик Win95 не вполне автономный, но по всем остальным признакам это ОС: использует свой менеджер памяти, свои драйверы, значительно более эффективный, чем в ДОС, дисковый кэш… А вот Windows 3.x ещё не ОС.
  10. Это сейчас (2014) можно купить тормозную, но действующую флэшку за 12$. Автор этих строк в 2005 году обзавёлся флэшкой на 1 гигабайт за 350 гривен (=70$).
  11. Для обычных интернетовских паролей такой безопасности более чем достаточно. Никто не будет перебирать пароли с миллионной частотой, чтобы прочитать вашу переписку с мамочкой, написать гадостей в ваш ЖЖ или стянуть пятьсот рублей с ваших Яндекс-денег. Если кому-то уж очень зачешется это сделать, они применят другой метод, например, социальную инженерию или подброс клавиатурного шпиона.
  12. Никак не связанную с «людьми в чёрном» SCP Foundation, и уж точно не связанную с операционкой SCP времён нежного возраста автора этой правки — разновидностью CP/M; это всего лишь Secure CoPy — клиент «набирает» файл через ту самую консоль (SSH).
  13. 13,0 13,1 Принцип, придуманный Кингом Жиллетом (тем самым), гласит: продавай бритвы дёшево, а лезвия дорого.
  14. К тому же nVidia купила компанию Ageia, изготовлявшую физические ускорители, дорогие и мало на что нужные, и пустила её библиотеку PhysX прямо на CUDA — геймеры с мощными видеоплатами радуются. А вот аналогичная пара AMD Firestream + OpenCL как-то не взлетела.
  15. http://ithappens.ru/story/721
  16. http://ithappens.me/story/12594
  17. Драйверы принтера делятся на драйверы принтерного языка и драйверы принтерного порта. Драйверы языка специфичны для модели принтера. Драйверы порта — а сколько там этих портов — COM, LPT, USB, плюс сетевые протоколы LPR, JetDirect aka RAW, IPP, SMB — обычно встроены в ОС, хотя в Windows до 2000 серверы иногда требовали особые драйверы. Так вот, драйвер языка нужен тот же, а драйвер порта — другой.
  18. А PLC — связь через электросеть — больше технология ближней сети, когда нет возможности тянуть ни Ethernet, ни Wi-Fi.
  19. Колебания атмосферного давления дают погрешность в полметра, потому атмосферное давление тоже надо мерить.
  20. Если в настройках Windows указано «Безопасное извлечение» — это по умолчанию стоит для съёмных дисков.
  21. Таковыми будут Adobe Photoshop и Paint.net. Существуют и графические редакторы специального назначения: для фотообработки (Adobe Lightroom), для цифрового искусства (Krita), для пиксельной графики (Cosmigo Pro Motion)…
  22. Для пользователей пиратского ПО: очень дешёвая программа; столько, например, стоит коммерческая лицензия на просмотрщик XnView.
  23. Впрочем, нет худа без добра — очень удачно реализованы разовые специфичные компоненты, которые не стоит инсталлировать в редактор — например, потому что привязаны к задаче.
  24. Простите уж, что в качестве примера привёл не слишком любимый профессионалами Паскаль. Тем-то он и хорош, что язык многоцелевой, от обучения до действующих программ, и ключевые слова begin/end как-то удобнее объяснять неспециалисту, чем фигурные скобки.
  25. Имеются в виду старые диалекты Бейсика с нумерацией строк. Бейсик такой потому, что он, во-первых, проектировался даже не под монитор, а под телетайпный терминал. И во-вторых, авторы хотели отойти от сложностей с компиляцией и сборкой, программа должна запускаться прямо из оболочки программирования. По последней причине Бейсик стал популярен в микрокомпьютерах 1980-х (технические трудности с запуском программы из программы исчезли только с распространением процессоров с сегментной памятью — например, x86). Впрочем, современные Бейсики Lotus Notes или Microsoft Office структурные.
  26. Наиболее известный формат соревнований — формат ACM («эй-си-эм»): один компьютер, три человека, пять часов и семь-десять задач; сдавать можно сколько хочешь раз (за повторные сдачи — штрафные очки), задача засчитывается, если пройдены все тесты. Формат IOI (олимпиады школьников) другой: один человек, три-пять задач, сдают в самом конце, а баллов даётся тем больше, чем больше пройдено тестов.
  27. Слышал случай, когда олимпиадник сдался за час (!) до окончания: решение знает, но в час точно не впишется.
  28. TTY = TeleTYpe, телетайп.
  29. Может, по секундомеру не слишком быстро, а по экономии умственных усилий — а программисты изначально лентяи — оптимально.
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты