Эмми Нётер. Эту женщину Эйнштейн считал одним из величайших творческих гениев математики

Читать про представительниц прекрасного пола всегда приятно, особенно когда это касается непревзойденных гениев и истинных мастеров в своих областях. Имя Эмми Нётер навсегда внесено в золотой зал славы математики, ведь даже Альберт Эйнштейн причислял её к величайшим математикам 20 века. Чем же эта женщина заслужила такое признание? 

Будущая королева абстрактной алгебры родилась в баварском городе Эрланген в 1882 году в состоятельной семье, главой которой был Макс Нётер, получивший ранее докторскую степень за свои нетривиальные исследования в области алгебраической геометрии — сложном направлении, изучающем геометрические объекты, заданные как множества решений систем алгебраических уравнений. Эмми, вопреки традициям гениев, с детства не проявляла необычных математических способностей, но была очаровательным и умным ребенком, играла на фортепьяно и любила танцевать.

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

Поворотной точкой в жизни Эмми Нётер справедливо можно назвать зиму 1903-1904 года, когда она провела семестр в знаменитом Гёттингенском университете, где слушала лекции непревзойденных немецких маэстро, таких как Герман Минковский, Феликс Клейн и Давид Гильберт, во многом определивших ход развития не только математики, но и физики 20-го столетия. Вернувшись на малую родину в конце 1904 года, Эмми всё-таки официально поступила в университет, т.к. ограничения для женщин были к тому времени сняты.

Изъявив желание заниматься исключительно математикой, Нётер взялась за дело с присущим ей упорством и прозорливостью: уже через 4 года она внесла значительный вклад в теорию инвариантов, успешно защитив диссертацию под руководством Пауля Гордана.

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

Однако через годы Эмми назвала свои первоначальные исследования «хламом». Что, может быть, и так, ведь великие свершения были еще впереди. В 1910 году научный руководитель Эмми ушел в отставку, а его место занял Эрнст Фишер, через которого она уже лично познакомилась с Давидом Гильбертом, очень живо заинтересовавшимся исследованиями девушки в области абстрактной алгебры. В 1915 году интерес превратился в приглашение Нётер для преподавания в Геттинген, однако даже Гильберту (!!!) не удалось переломить предрассудки университетского совета и пробить ей постоянно оплачиваемую должность.

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

Однако, несмотря на все трудности, в 1918 году Эмми Нётер внесла гигантский вклад… в теоретическую физику! В 36 лет она доказала теорему, названную её именем, которая связывает законы симметрии физических систем и законы сохранения энергии. На основе одной из наиболее абстрактных областей математики — теории бесконечных непрерывных групп, называемых группами Ли,- Нётер сделала важные выводы об однородности времени и пространства, которые неоднократно будут использоваться для построения физической картины мира.  

Согласно теореме Нётер, если система инвариантна относительно непрерывной группы симметрии, то в ней автоматически действует закон сохранения той или иной величины. Например, для группы пространственного поворота действует закон сохранения момента импульса, пространственного переноса - сохранения импульса, а для временного - закон сохранения энергии. Чувствуете, как пахнет фундаментальностью? И это я еще не упоминаю про специальные унитарные группы, которые определяют симметрии в электродинамике и в квантовом мире.

Первая страница прорывной работы Нётер.
Первая страница прорывной работы Нётер.

Если написать уравнение, которое кратко излагает все, что мы знаем о теоретической физике, то на одном его конце были бы имена Фейнмана, Шрёдингера, Максвелла и Дирака, а на другом — Эмми Нётер. Продолжив работу в Геттингене, Эмми защитила докторскую диссертацию, а в 1922 году всё-таки получила оплачиваемую должность «лектора по алгебре». Еще бы, ведь годом ранее Нётер опубликовала революционную работу, посвященную коммутативным кольцам и идеалам, заложив фундамент общей алгебры.

Эмми Нётер (в центре) с коллегами.
Эмми Нётер (в центре) с коллегами.

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

Самые известные из комплексных чисел — кватернионы. В отличие от обычных комплексных чисел, у кватернионов сразу три мнимые единицы: q = a+bi + cj+dk. Зачем так много? Дело в том, что эти отпрыски из четырехмерного мира позволяют очень просто описывать оптимальные траектории тел в пространстве. Если нужно подробнее — лучшее видео на эту тему.

Вообще, умение мыслить максимально абстрактно было козырем Эмми Нётер. Голландский математик Бартель Ван дер Варден писал об этом так:

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

В 1933 году мир изменился. В Германии к власти пришли фашисты, которые не могли терпеть, чтобы в колыбели цивилизации белокурым арийцам преподавала математику женщина-еврейка. Эмми поддерживала тесные контакты с советскими математиками, поэтому одним из вариантов рассматривался переезд в СССР и работа на кафедре алгебры в МГУ, однако получить на это разрешение не получилось.

Эмми пришлось эмигрировать в США, где она преподавала в женском колледже и читала лекции в Принстоне. Однако жить в более благоприятных условиях Нётер осталось недолго — через два года в возрасте 53 лет она умерла от онкологии. В течении всей жизни у Эмми Нётер не было ни мужа, ни детей. Их всех заменила математика и невероятное стремление к знаниям. 

ссылка на оригинал статьи https://habr.com/ru/company/itsoft/blog/552968/

Как мы сдавали онлайн экзамены в ВУЗах прошли сертификацию, выиграли несколько онлайн олимпиад

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

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

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

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

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

И так в чем заключается онлайн прокторинг? В основе своей это наблюдение за экзаменуемым посредством WEB камеры; контроль звуков в комнате экзаменуемого; и контроль экрана монитора.

Что теоретически может контролироваться с помощью WEB камеры: аномалии в направлении взгляда; закрытие части лица; наличие других лиц в кадре; обнаружение вторичных гаджетов; обнаружение книг и заметок; обнаружение невербальной коммуникации; обнаружение калькулятора (если это не разрешено).

Что теоретически может контролироваться с помощью микрофона: обнаружение человеческого голоса; обнаружение шелеста бумаги.

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

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

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

  • обеспечить необходимые условия для работы системы прокторинга, в том числе в соответствии с рекомендациями к подготовке рабочего места; Освещенность и чистый рабочий стол.

  • использовать для идентификации оригинал документа, удостоверяющий личность;

  • не покидать зону видимости веб-камеры во время выполнения заданий;

  • при выполнении заданий экзаменуемый по требованию проктора обязуется расположить камеру так, чтобы обеспечить видимость любого места в комнате;

  • в случае отсутствия технической возможности для реализации вышеуказанного пункта (например, недостаточный угол обзора видеокамеры, встроенной в ноутбук или монитор компьютера) экзаменуемый по требованию проктора обязан показывать лист с решением задания по запросу проктора во время проведения экзамена;

  • не отключать микрофон и не снижать его уровень чувствительности к звуку во время тестирования;

  • использовать только одно средство вывода изображения (монитор), одну клавиатуру, одну компьютерную мышь;

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

  • не использовать средства виртуализации;

  • не проговаривать вопросы и задания вслух с уровнем громкости обеспечивающим возможность третьим лицам услышать текст заданий/вопросов;

  • выполнять инструкции проктора;

  • немедленно сообщить Проктору о нарушениях правил, произошедших не по вине экзаменатора.

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

Некоторые организации не желали тратить деньги на системы прокторинга и пытались обеспечить контроль посредством систем видео связи Skype или Zoom, некоторые обеспечивали пост прокторинг просили прислать видеофайл с записью экрана и web камеры программой захвата экрана и веб камеры.

Был случай, когда задания были направлены на почтовый ящик экзаменуемого, их под видео в Skype необходимо было скачать решить отсканировать и направить организаторам экзамена. Запись монитора компьютера при этом не велась, но требовалось установить камеру чтобы было видно экзаменуемого, письменный стол, и по возможности экран компьютера. Мы во время экзамена вошли на почтовый ящик экзаменуемого выполнили решения, отсканировали его своим сканером, а потом положили наши сканы в расшаренную папку на компьютер экзаменуемого. Он сделал вид что отсканировал свою работу на своем сканере, а отправил наши уже загруженные сканы. Поскольку контроль почерка не проводился за эту работу мы получили 100 из 100 условных балов. Кода мы связывались с организаторами пытались объяснить, как обошли контроль, было видно, что они нас даже не понимали.

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

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

Необходимо было организовать канал обратной связи использовать микронаушник не очень хотелось поскольку мы посчитали «неспортивным». Мы обнаружили что чувствительность нашего микрофона недостаточно хороша чтобы определить некоторые низкочастотные звуки, но при этом проходит все необходимые проверки. Поигравшись чувствительностью микрофона и АЧХ колонки, мы добились того что смогли передать и воспроизвести низкочастотный звук различаемый экзаменуемым, но при этом не фиксируемый микрофоном. Звук при этом так себе, но можно разобрать концепцию решения задачи. Для коммуникации экзаменуемого с помощником использовали обычный беспроводной дверной звонок. Что позволяло коммуницировать в режиме да/нет.

Излишние требования к прокторингу затрудняют работу самих организаторов. Показательным примером была олимпиада по информатике университета одного IT университета. Необходимо было вести запись рабочего экрана и с двух камер с помощью программы OBS. Причем перед началом экзамена необходимо было продемонстрировать подключенное оборудование разрешение монитора и потвердеть то что подключен один монитор, продемонстрировать диспетчер задач. Организаторы потребовали, чтобы время в панели чтобы во время записи панель задач не скрывалась, а системное время показывалось с точностью до секунды, для этого пришлось править реестр. Затем необходимо было этот видео файл размером более 5-6 ГБ загрузить на облачное хранилище и ссылку отправить организаторам. При этом необходимо было подключаться через Zoom, в Zoomе выбрать виртуальную камеру OBS которая передавала видеопоток с двух web камер и захвата экрана. Это вызвало кучу головной боли у организаторов, поскольку настройки программы OBS и правка реестра вызывала огромные проблемы у пользователей несмотря на подробную инструкцию.

Поскольку в ходе олимпиады необходимо было писать код. А человек, который учавствовал не то что не умел программировать он даже печатать нормально не умел. Необходимо было расширить функционал нашего приложения. Суть его заключалась в следующем. Мы, анализируя задания получение со скринов писали код программки в обычный текстовый файл.  Затем загружали его в папку на компьютере экзаменуемого. Программка отслеживала нажатия клавиш и в случае комбинации трех заранее выбранных клавиш. Считывала этот файл, а затем по нажатию любой клавиши на клавиатуре выводила на экран нужный символ. От экзаменуемого в данный момент требовалось в лучших традициях голливудских фильмов про хакеров, просто нажимать кнопки на клавиатуре как на пианино. По признанию самого экзаменуемого, самое сложное было в тот момент сдержать улыбку и держать «poker face». В данной олимпиаде мы вошли в топ 5 лучших после чего опять написали организаторам, и все рассказали. На удивление в данном случае нас выслушали с особым вниманием и обещали принять меры.

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

Далее мы столкнулись с системой examus или «Экзамус» на данный момент — это самая совершенная система прокторинга. Но ее использование вызывает кучу вопросов. Сама система представляет собой расширение, для браузера которое требует доступ к камере микрофону, может вести запись экрана. Анализирует запушённые приложения, подключенное оборудование историю браузера и историю поиска. И требует отключить антивирус на компьютере. По их заявлениям они обладают достаточно серьезными возможностями ИИ для анализа поведения экзаменуемого, анализа его клавиатурного почерка, экзаменуемого и планируют контролировать пульс ЭКГ и другие биометрические параметры. Система требует прав администратора в системе и может залезть куда угодно на компьютере. Она собирает обрабатывает кучу персональных данных.

Следует отметить что examus является закрытой системой нигде не публиковался аудит кода и ее истинные возможности и методы контроля. И даже для ВУЗов не раскрываются ее полный функционал.

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

Студенты ВШЭ выражали претензии, публично заявив о недоверии к ней, и направив ректору просьбу пересмотреть решение об экзаменации через систему «Экзамус». Их недовольство спровоцировали стандарты проведения экзамена и вседозволенность программы. Студентам удалось выйти на связь с директором «Экзамуса». Хотя он и ответил на вопросы, его комментарии почти не внесли ясности. Мониторинг ранее открытых сайтов объяснялся необходимым «для статистики и повышения эффективности работы сайта», а пункт о личных данных оказался якобы обычной практикой IT-компаний, и необходим из-за обязанности передавать данные в правоохранительные органы.

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

Было принято решение не использовать виртуальную машину поскольку программе достаточно легко определить, что она запущенна в виртуальной среде. Так же приняли решение проводить тестирование на чистой только что установленной ОС и после экзамена откатывать ОС к изначальному состоянию.

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

В итоге мы успешно сдали все сессионные экзамены в нескольких вузах.

Так же мы без особых проблем прошли прокторинг при Сертификация по Яндекс.Директу. но там система не определяла вообще ни чего и можно было спокойно пользоваться программами удаленного доступа.

Выводы

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

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

Данные системы будут дальше развиваться и применяться поскольку это существенно дешевле чем реальные экзамены.

Я даже боюсь представить каково это сдавать экзамен под детектором лжи.

Планы на будущее

  • Попробовать применить IP KVM, мы хотели его попробовать сразу, но не успели заказать и оттестировать.

  • Раздобыть карту захвата, которая не определяется системой и позволяет добавить в видеопоток на монитор собственную информацию попробуем реализовать технологию picture by picture.

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

  • Будем думать, как можно будет подделывать информацию с датчиков ЭКГ и пульса.

Все имена изменены все совпадения случайны.

ссылка на оригинал статьи https://habr.com/ru/post/552970/

FTP исполнилось 50 лет

image

16 апреля 1971 года-это не только день, когда The Rolling Stone впервые выпустила Brown Sugar, но и день публикации RFC 114, знаменующий день рождения FTP.

В те дни вьетнамская война была в центре внимания, TCP/IP еще не существовал, Джими Хендрикс умер 6 месяцев назад, telnet был новым крутым парнем, а некоторые из самых влиятельных рок-н-ролльных артистов собирались выпустить свои шедевры, в то время как FTP использовал сетевой протокол под названием NCP.

За прошедшие годы протокол FTP был усовершенствован 16 раз, добавивилась поддержка TCP/IP, безопасного расширения, также известного как FTPS, которое использует ту же технологию, что и HTTPS, и более поздние дополнение, такое как поддержка IPv6.

Через пятьдесят лет после своего создания FTP все еще очень актуален, и миллионы FTP-серверов все еще доступны в Интернете, что довольно удивительно, учитывая плохой новостной фон, от многих людей и компаний, таких как Dropbox, пишущих о том, как плохо FTP объединяет протокол с полноценным продуктом. Не говоря уже о том, что самое близкое, что они получили к протоколу FTP — это гораздо менее яркий проприетарный API, который можно использовать только в том случае, если Dropbox будет достаточно любезен, чтобы предоставить вам ключ.

В 2021 году то, что кажется признанным прогрессом, принимает форму проприетарных протоколов, сделанных за закрытыми дверями и без каких-либо RFC. Вместо этого поставщикам, желающим создать конкурирующие серверы, остается реверс-инжиниринг SDK, как это сделал Minio с S3.

Кроме того, как мы могли коснуться темы FTP, не вспомнив самый печально известный комментарий на HackerNews, который был основным источником вдохновения при создании Filestash. Действительно, я считаю, что не должно иметь значения, какой протокол использует инструмент моей мамы. Как только этот инструмент станет простым в использовании, она сможет передавать те фотографии, которыми хочет поделиться, открывать видео и делать все другие вещи, которые не должны требовать от нее знания о протоколе, поскольку наша работа инженеров состоит в том, чтобы абстрагироваться от всех этих сложных вещей, чтобы кто-то, кто хочет получить доступ к своему банковскому счету с помощью привычного браузера, не должен был выбирать шифр при согласовании SSL.

Развитие FTP

RFC 114 (апрель 1971 г.)
RFC 697 (июль 1975 г.): CWD Command
RFC 765 (июнь 1980 г.): TCP/IP
RFC 959 (октябрь 1985 г.): Первоначальная спецификация FTP
RFC 1579 (февраль 1994 г.): FTP с поддержкой firewall
RFC 1635 (май 1994 г.): Как использовать анонимный FTP
RFC 1639 (июнь 1994 г.): операция по большим адресным записям
RFC 1738 (декабрь 1994 г.): унифицированные указатели ресурсов
RFC 2228 (октябрь 1997 г.): Расширения безопасности FTP.
RFC 2389 (август 1998 г.): механизм согласования функций для протокола передачи файлов.
RFC 2428 (сентябрь 1998 г.): расширения для IPv6, NAT и расширенного пассивного режима.
RFC 2577 (май 1999 г.): соображения безопасности FTP
RFC 2640 (июль 1999 г.): интернационализация FTP
RFC 3659 (март 2007 г.): Расширение команд FTP
RFC 5797 (март 2010 г.): Реестр команд и расширений FTP.
RFC 7151 (март 2014 г.): Команда HOST для виртуальных хостов

ссылка на оригинал статьи https://habr.com/ru/company/itelma/blog/552974/

Векторные игры на 32с3


Статья раскрывает тему нашего выступления на 32-м Всемирном конгрессе хакеров (32с3), посвященного ретро-геймингу и работе с эмулятором игровых автоматов (MAME) на XY-дисплеях. В нем освещается результат моего сотрудничества с еще одним членом NYC Resistor, цифровым дизайнером Адель Лин, которая увлекается разработкой игр и игровых пространств. При желании можно посмотреть получасовое видео выступления онлайн.

История векторной графики

Аналоговые компьютеры

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

Первая видеоигра, Tennis for Two 1958 года, была разработана на похожем аналоговом компьютере и выводилась на осциллограф. Отскакивание мяча было реализовано с помощью другого дифференциального уравнения, очень похожего на приведенное в предыдущем примере.

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

Адель в сотрудничестве с продюсером Жаном Анджелом, студией игрового дизайна Sozen Eyes и физиком Питером Такачем работала над современной реконструкцией этого устройства для Silicon City. Ввиду необходимости поддержания работоспособности инсталляции без обслуживания на все время пятимесячной выставки в музее NYHC они использовали монитор 4К и эмулировали игру. Дело в том, что во время демонстрации Tennis for Two в Брукхэвене работал штат техников, которые заменяли выходившие из строя детали, чего в NYHC хотели избежать.

Цифровые компьютеры

Spacewar! 1962 года стала одной из первых цифровых видеоигр, в которой на XY-дисплее компьютера PDP-1 отображались корабли игроков, их орудия, а также звездное поле. Управление осуществлялось с помощью рычагов и кнопок на передней панели системы, хотя зачастую во избежание их износа для этого собирались отдельные блоки управления.

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

Почему векторные игры?

В 1978 году, когда для игры Lunar Lander был разработан цифровой генератор векторов, память для фреймбуферов в видеоиграх обходилась очень дорого. Двум буферам размером 512х512х4 требовалось 128 запоминающих устройств общей стоимостью $614. — Джед Марголин, инженер Atari.

Именно поэтому во времена доминирования растровых дисплеев был смысл затратить все эти усилия, чтобы добиться отрисовки векторов. Стоимость создания растровой версии Asteroids с фреймбуфером, способным поддерживать разрешение экрана 1024х1024 составила бы тысячи долларов. Для этого также необходим дисплей, который справился бы с отрисовкой столь огромного количества вертикальных линий: большинство ЭЛТ же разрабатывались для телевидения, и обеспечивали разрешение всего в пару сотен тысяч линий.

Star Wars на Acorn Electron


Star Wars на векторном дисплее

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

Star Wars на Atari 2600

Star Wars на векторном дисплее

Помимо этого, векторы упрощают 3D-анимацию. Выше представлено сравнение растровой версии игры, пытающейся сымитировать трехмерный мир, с масштабированной и повернутой 3D моделью Tie-Fighter. В какой вариант вы бы предпочли сыграть?

Устройства генерации векторов

Как происходит отрисовка

В векторном дисплее луч не рисует горизонтальные «линии сканирования», как в условной ЭЛТ. Вместо этого он может быть направлен в произвольную область экрана для создания яркой точки в конкретном месте. В векторных дисплеях без запоминания яркость точки определяется продолжительностью направления на нее луча. Варьируя входы X и Y, можно рисовать линии или другие фигуры. С помощью быстрого перемещения или изменения яркости (“Z”) входного сигнала можно отображать прерывистые линии. В данном случае я отключил вход Z, чтобы можно было увидеть последовательность отрисовки объектов на экране. В показанной здесь игре Lunar Lander используется «цифровой генератор векторов», непосредственно управляющий лучом.

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

Аналоговая и цифровая генерация

При написании этого раздела я опирался на руководство Джеда Марголина по векторным дисплеям.


Схема цифровой генерации векторов


Схема аналоговой генерации векторов

Один из способов генерации векторов – это использование цифро-аналогового преобразователя (ЦАП), напрямую управляющего входами X и Y дисплея. Это и есть цифровой генератор векторов, который использовался в ранних играх вроде Asteroids и Lunar Lander. В нем задействовались 10-битные ЦАП и операционный усилитель, настроенный в качестве буфера, но при этом требовалось, чтобы ЦПУ большую часть времени выполнял обновление входных сигналов ЦАП, а разрешение ограничивалось до приблизительно 1024х768 точек.

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

На современном оборудовании можно легко генерировать 12-битные линии, которые намного превышают разрешение небольших векторных дисплеев. При этом можно также задействовать механизмы прямого доступа к памяти (ПДП) на микроконтроллерах, чтобы разгрузить процесс отправки данных в ЦАП. На картинке выше показанпрототип моей открытой для использования платы v.st. Ее можно без проблем собрать также на макетной плате для собственных экспериментов.

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

Аппаратная часть векторного дисплея

Осциллограф

Современные цифровые осциллографы не очень хорошо подходят для отображения данных. Их ЖК-дисплеи могут эмулировать послесвечение, но обычно обладают всего лишь 8-битным АЦП и очень низким разрешением. Они по-прежнему сверхполезны для общего измерения сигнала, но не в интересующем нас случае.

Вместо этого можно отправиться на eBay или craiglist и найти аналоговый ЭЛТ-осциллограф с режимом X-Y, который обойдется в районе $50 Подойдет любой вариант с шириной полосы в 5МГц и более – все равно ЦАПы на платах v.st могут выдавать частоту максимум 2МГц.

Запоминающие дисплеи

Дисплеи с запоминающей трубкой отлично подходят для очень детальных статичных векторных изображений, но не особо подойдут для игр с высокой частотой кадров. Так что поберегите деньги и не разоряйтесь на Tek 4014.

Вектороскоп

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

Консоли Vectrex


Консоль Vectrex


Электроника Vectrex

Домашняя игровая консоль Vectrex оборудована приятным черно-белым экраном с высокой резкостью. Можно без проблем отсоединить материнскую плату от аналогового драйвера ЭЛТ и вывести провода из корпуса для подключения платы v.st.

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

Лазерные проекторы

Также можно использовать лазерный проектор, вот только результат получится не лучшего качества. Физические зеркала обладают определенной долей инерции, и на включение/выключение луча требуется время. В результате частота обновления падает, и изображение получается мерцающим. Некоторые специализированные игры могут работать с очень быстрыми (45-60 Kpps) гальваническими сканерами, но почти все аркады требуют отображения слишком большого количества векторов.

Проект LazyMame добился неплохих успехов, но я не могу найти никаких подробностей или исходного кода уже с 2008 года. Позже в 2013 возник проект OpenLase-Mame, который с тех пор молчит. Помимо этого, другие разработчики пробовали создавать новые лазерные игры с помощью кастомного плагина Unity. Некоторые преуспели.

MAME


MAME – это акроним от Multiple Arcade Machine Emulator, означающего эмулятор множества аркадных автоматов, и его имя себя вполне оправдывает – он способен эмулировать тысячи игр и автоматов, включая практически все когда-либо созданные векторные аркады.

Эмуляция векторных дисплеев


Фактическое свечение на векторном дисплее


Эмулированное векторное свечение

Эффект «свечения», создаваемый яркими векторными линиями, относится к одной из излюбленных игроками особенностей. В MAME есть поддержка шейдеров HLSL, которые размывают яркие линии и создают подобие этого эффекта. Сверху изображен реальный дисплей
Vectrex, а снизу эмуляция на MAME.

Патчи для подключения к дисплею

К сожалению, мой патч для MAME, который добавлял поддержку экспорта векторов, был закрыт как «неприемлемо «грязный» способ достижения желаемого результата». Так что вам потребуется клонировать мое дерево и следовать инструкциям по созданию векторного MAME. Основная часть изменений находится в src/emu/video/vector.cpp и опирается на усекаемые окна, которые MAME использует для ограничения векторов областью экрана.

Патчи для Raspberry Pi

Я также портировал изменения в голую сборку MAME4AllPi для Raspberry Pi. Инструкции для векторного MAME на Pi аналогичны. Нужно будет клонировать дерево и вшить его в Pi. К сожалению, здесь имеется ряд проблем с джойстиком, которые еще предстоит исправить.

Играем


Вы можете поиграть в одну из оригинальных игр, Space Wars, вышедшую в 1977 году


Asteroids (1979) тоже всегда славилась популярностью и была одной из самых кассовых игр своего времени!


Lunar Lander на вектороскопе

Tempest на вектороскопе

Или, быть может, вам больше по душе придутся Lunar Lander (1979) и Tempest (1980).


Сэмулировать можно огромное число векторных игр, включая весь список Atari


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

Кастомизация

Пользовательские устройства ввода


Консоль Robotron собственной сборки


Robotron

Как только вы подключите векторный дисплей к MAME, вам наверняка захочется внести свои доработки. Можно без проблем собрать собственные USB HID-устройства на основе предлагаемых Adafruit аркадных джойстиков, кнопок и даже монетоприемников.

Примечание ред.: доступ к ресурсу Adafruit возможен только через VPN.

Креативное программирование с векторами

Если же вы устали от игр, то всегда можно превратить дисплей в вектороскопические часы. В Teensy 3 есть сквозные отверстия для кварцевого резонатора 32.768КГц и резервная батарея, позволяющая поддерживать точность отображаемого времени.

Можно писать игры, которые будут выполняться непосредственно на Teensy, как мой клон Asteroids, Space Rocks, или создавать какие-нибудь арт-проекты.


Некоторые энтузиасты реализуют поистине грандиозные проекты — vec9 стал первой векторной аркадой за тридцать лет, реализованной в кастомном автомате с рычагом управления, как в реальном танке.

Мы создали простую библиотеку на Processing, чтобы показать, как пишутся программы, взаимодействующие с такими дисплеями. Образец кода лежит в репозитории, а также портирован на ProcessingJS в виде демо-заставок Swarm и Random Walk.

Дополнительную информацию по платам можно найти на MAME, Vectrex и Tek 1720.

ссылка на оригинал статьи https://habr.com/ru/company/ruvds/blog/552420/

Как мой простой проект в Github стал вирусным

В прошлом месяце я создал простой проект, разошедшийся по различным техническим сообществам и социальным сетям. В Github он за 7 дней получил с 0 до 4 тысяч звёзд и более 200 форков. Github примерно в течение пяти дней рекламировал его в разделе Trending repositories of day.

Clone Wars

70 с лишним open-source-клонов или альтернатив популярных сайтов наподобие Airbnb, Amazon, Instagram, Netflix, Tiktok и т.д. В списке содержится исходный код, ссылки на демо, технологический стек и количество звёзд в GitHub.

Ссылка на проект

Ссылка на Github

Trending в Github — 13 марта 2021 года

Что меня мотивировало на создание этого проекта

Я технарь и часто сижу в популярных сообществах программистов на Reddit, таких как r/webdev, r/reactjs и т.п., следя за тем, что создают другие разработчики и узнавая о новых JS-фреймворках. Я заметил, что многие разработчики для изучения программирования создают клоны популярных сайтов наподобие Instagram, Trello, Spotify, и т.п., а потом делятся с другими, чтобы получить отзывы о качестве кода и рекомендации.

Разработчики делятся своими проектами в r/reactjs

Такие клоны разбросаны по множеству сообществ. Поэтому я подумал: почему бы не создать общий список всех этих клонов, который люди мы могли добавить в закладки и возвращаться к ним в будущем. Честно говоря, тогда я не был уверен, будет ли такой список полезен другим. Мне представилась возможность узнать это, создав его самостоятельно!

Как я составил список

1. Скрейпинг Reddit

Я хотел найти все посты, содержащие ключевое слово «clone». Сначала я пользовался стандартным поиском Reddit: reddit.com/r/reactjs/search/?q=clone&source=recent&restrict_sr=1&sort=new (это значит искать все посты в сабреддите reactjs с ключевым словом «clone» и отсортировать по новизне). Этот запрос возвращал все посты, в том числе и низкокачественные, с рейтингом 0, вопросами о том, как создать клон какого-то сервиса, и т.д. Из этого дампа сложно было бы найти хорошие проекты клонов. Поэтому я воспользовался сайтом redditsearch.io, предоставляющим расширенные возможности фильтрации Reddit, например, возврат постов, имеющих хотя бы 10 «лайков», опубликованных в определённый промежуток времени, и т.д.

Далее я создал список из всех этих клонов, их репозиториев на Github, ссылок на демо, технологического стека. Всё делалось вручную.

Также я загуглил запрос «open-source alternatives» и нашёл несколько полнофункциональных клонов Slack, Airtable, Bit.ly, Evernote, Google analytics, и т.п. Их я тоже добавил в список.

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

Придумываем название проекту

Я назвал свой проект в честь телевизионного мультсериала 2008 года Star Wars: The Clone Wars («Звёздные войны: Войны клонов») и сохранил похожую цветовую схему.

Мультсериал Star Wars: The Clone Wars

Github-проект Clone Wars

2. Красивое отображение таблицы

Я уже работал с markdown раньше, но мне впервые довелось создавать markdown-таблицы и оказалось, что таблица на странице проекта Github выглядит ужасно. Особенно если это длинная таблица с множеством столбцов. Я хотел сделать её красивее (с постоянно висящим сверху заголовком), то есть проект нужно было развернуть где-то ещё. Но он всё равно должен был находиться на Github, чтобы с ним могли удобно работать другие люди. Я решил хостить его на своём личном сайте https://gourav.io.

Мой сайт создан с помощью NextJS, и я уже использовал markdown (mdx) для написания постов, поэтому достаточно было просто скопипастить markdown-файл из моего Github-проекта на новую страницу https://gourav.io/clone-wars. Кроме того, я использовал Tailwind CSS с плагином «typography», повышающим удобство чтения таблиц и другого текста.

Я думал над повышением автоматизации до следующего уровня, например, при внесении изменения в Github-проект или слиянии пулл-реквестов (PR) можно было бы обновлять таблицу на моём сайте https://gourav.io/clone-wars. Но я решил не переусложнять систему, потому что изменения были не такими уж частыми.

Делаем проект виральным

Я опубликовал пост в 2-3 сабреддита, и он взлетел.

reddit.com/r/reactjs

reddit.com/r/webdev

Последствия

После того, как проект получил определённую популярность, многие разработчики начали использовать PR для добавления в список своих проектов-клонов. Когда я запустил проект, там было примерно 75 клонов, но теперь их больше 120, и я часто получаю новые PR.

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

Люди начали писать твиты о Clone Wars. @nickbulljs предложил идею для разработчиков, ищущих работу.

Рекрутёры устали от погодных приложений и калькуляторов расходов.

Вот более умная идея для разработки:

  1. Выберите один сайт из 70 с лишним open-source-клонов популярных сайтов типа Netflix, Instagram и прочих по ссылке ниже.
  2. Изучите кодовую базу.
  3. Создайте собственный клон.

gourav.io/clone-wars

После этого твита у меня появилось больше 150 новых подписчиков.

А ещё один человек задонатил мне 5 долларов по ссылке BuyMeACoffee, которую я добавил в своей проект. Спасибо тебе, незнакомец.

За 30 дней после запуска проекта мой личный сайт посетило более 40 тысяч человек, а проект получил более 80 тысяч просмотров.

Вот часть статистики по пользователям (первые 30 дней после запуска, т.е. после поста в Reddit):

Реферальные сайты

Пользователи по странам

Пользователи по ОС

Пользователи по браузерам

На данный момент проект имеет GitHub repo stars и GitHub forks.


На правах рекламы

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

ссылка на оригинал статьи https://habr.com/ru/company/vdsina/blog/552886/