...

суббота, 20 октября 2018 г.

Лучший способ начать изучать современную генетику, молекулярную биологию, генную инженерию и геномику

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


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

И вот недавно, я начал поиски образовательных материалов на эту тему. Искать долго не пришлось, я открыл Youtube и очень быстро наткнулся на курс генетики от MIT, который читал замечательный профессор Eric Lander. С первых же лекций я влюбился как в этого харизматичного человека, так и в тот предмет, которому он учит. Позже я узнал, что мало кто из его студентов мог устоять перед его чарами, руководство MIT особо отмечало его заслуги как в создании выдающихся курсов, так и в его уникальной способности заражать студентов своей очевидной любовью к биологии и генетике.
Эрик Лэндер — очень заслуженный человек. Математик по своему основному образованию, который позже переквалифицировался в генетика. Член национальной академии наук США с 1997 года. Лауреат многих престижных премий. Труды в основном посвящены биоинформатике, геномике и генетике. Со второй половины 1980-х годов занимается дешифровкой генома человека и применением её результатов в медицине. Один из руководителей проекта «Геном человека». Его группа секвенсировала треть генома человека.

Однако моя радость была недолгой, очень быстро я понял, что это не курс, а какие-то обрывки. Дальше все это повторилось еще несколько раз, официальный курс на https://ocw.mit.edu/ , частью которого оказался тот курс генетики, также оказался изрезанными кусочками лекций, загруженными в случайном порядке.
Моему разочарованию не было предела, я был как перед разбитым зеркалом, которое представляет величайшую драгоценность, когда в нем можно увидеть целую картину, но в моих руках были лишь осколки, которые никак не хотели стыковаться вместе — многие из них были просто утеряны.
Потом каким-то чудом мне удалось найти этот курс целиком, с правильной нумерацией лекций, но картинка была ужасного качества. Но там, внизу, среди последних лекций были лекции како-то другого, очевидно, более нового курса. И тоже случайные куски без начала и без конца…
Однако, все, что нужно было сделать, это начать в поисковой строке Гугла набирать имя этого замечательного человека. В ответ на это всплывала подсказка: eric lander edx. И на второй строке поисковой выдачи лежит та самая “жемчужина”, которой я мечтаю с вами поделиться: Introduction to Biology — The Secret of Life

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

Следует, конечно, сказать, что курс на английском языке. Я искренне сочувствую людям не знающим английского. Этот язык стоило бы выучить хотя бы ради того, чтобы познакомиться с этим курсом. Хотя и сам курс можно использовать как замечательный способ изучения английского языка — у Эрика Лэндера прекрасная артикуляция и очень ясное произношение. Множество вещей понятно из контекста. На самом сайте edX есть только английские и китайские субтитры, но есть способ добраться до русских субтитров.

Инструкция, как добраться до русских субтитров

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


Конечно, есть курсы по биотехнологии и на русском языке:
МФТИ “Введение в молекулярную биологию и биомедицину”
Bioinformatics Institute “Биотехнологии: генная инженерия”
Bioinformatics Institute “Молекулярная биология и генетика”
Отзывы на платформе stepik.org о них хорошие, но лично мне не известно качество этих материалов.

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

А о такой замечательной платформе, как www.edx.org, к своему стыду и счастью, я узнал исключительно благодаря той истории, которую только что вам поведал.

Спасибо за внимание, и желаю прекрасного путешествия в мир молекулярной биологии!

Let's block ads! (Why?)

ДНК. Механизмы хранения и обработки информации. Часть II

[Из песочницы] Колонки RADIOTEHNKIKA S-30 от старых к новым

image

Привет, меня зовут Артем Денисов. Я программист, увлекаюсь электроникой и всякими такими интересными штуками. Много лет читал хабрахабр, а теперь вот решил и сам статью написать.

Эта история началась в старом, темном и страшном подвале. В котором я обнаружил
древние советские колонки RADIOTEHNKIKA S-30. Которые мне достались от моего деда.

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

ВНИМАНИЕ!!! Много фото и видео.
«Бурение земли в поисках нефти? Вы имеете в виду, что надо сверлить землю для того, чтобы найти нефть? Вы сошли с ума!» Ответ на проект Эдвина Дрейка, создателя современной нефтедобычи, 1859 г.

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

Итак, поехали.

1 — разборка


Из двух колонок рабочей оказалась только одна. И вот как она выглядела.

DIY wooden bluetooth speaker

DIY wooden bluetooth speaker

DIY wooden bluetooth speaker

Вы не поверите. Конденсаторы на кроссовере (делитель частот) сохранили свою емкость. А ведь этим колонкам больше 30-ти лет. Честное слово! Я выпаивал и проверял.

DIY wooden bluetooth speaker

2 — проектирование


Все разобрано. Динамики удалось успешно извлечь. Кроссовер, на удивление, оказался еще жив. Что же делать дальше?

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

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

diy wooden bluetooth speaker

И сохранить вариант конструкции акустической системы с фазоинвентором в виде трубы.

diy wooden bluetooth speaker

3 — запчасти


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

diy wooden bluetooth speaker

Эта штуковина сразу решает много проблем. Она содержит блютуз модуль, поддерживает возможность прослушивания музыки с флешки, от телевизора. И имеет универсальный блок питания 110/220 вольт. И даже содержит, в комплекте, пульт дистационного управления.

А чтобы жизнь была веселой и радостной я еще заказал красивый ретро индикатор уровня звука.

diy wooden bluetooth speaker

И красную светящуюся кнопку питания.

diy wooden bluetooth speaker

Ну а пару деревяшек удалось недорого купить в местном магазине

diy wooden bluetooth speaker

4 — сборка


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


Если есть какие-либо вопросы, буду рад ответить.

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

Let's block ads! (Why?)

Взрывающие телефон

Bob Gudgel, Jay Dee Pritchard, и John “Captain Crunch” Draper с bluebox,используемом для обмана телефонной системы для совершения бесплатных звонков, во время поездки в Duvall, Washington, 1971. Фото Bob Gudgel

Когда компьютеры были большими, а деревья маленькими, до всех этих смартфонов, iPad’ов и планшетов, до времен Интернета или персональных компьютеров, группа технофилов, подростков, хиппи и преступников выяснила, как взломать самую большую в мире машину: телефонную систему.

Ниже приводится перевод отрывка из книги «Exploding the Phone», написанной Филом Лапсли (Phil Lapsley), в которой рассказывается история «телефонных фриков».

На заглавном фото: Bob Gudgel, Jay Dee Pritchard, и John “Captain Crunch” Draper с bluebox, используемом для обмана телефонной системы для совершения бесплатных звонков, во время поездки в Duvall, Washington, 1971. Фото Bob Gudgel.

Джейк Локк (Jake Locke это псевдоним конечно же) поставил свою чашку и пристально посмотрел на рекламное объявление. Это был ясный весенний день в Кембридже в 1967 году после полудня. Локк, студент в Гарвардском университете, только что встал с постели.

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

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

Это был медленный новостной день. В студенческой Гарвардской газете «The Crimson», не было интересных статей, поэтому Локк снова обнаружил, что читает объявления за завтраком. Он стал чем-то вроде знатока этих маленьких кусочков поэзии — люди, продающие автомобили, ищущие соседей по комнате, даже случайные персональное объявление, которое, вероятно, являлись шуткой между любовниками — все это было выражено примерно в дюжине слов.

Но это объявление было другим. Он пробежал его, но через некоторое время оно начало его раздражать.

WANTED HARVARD MIT Fine Arts no. 13 notebook. (121 pages) & 40 page reply K.K. & C.R. plus 2,800; battery; m.f. El presidente no esta aqui asora, que lastima. B. David Box 11595 St. Louis, MO 63105.

Локк видел похожие объявления от студентов, которые потеряли свои конспекты для того или иного курса и паниковали перед сдачей экзаменов. Объявления об утере часто помещали в Crimson в надежде, что какая-то душа найдет и вернет их. Fine Arts 13 был начальным курсом изящных искусств в Гарварде, так что это совпадало.

Но все остальное в этом рекламном объявлении не имело никакого смысла.

Fine Arts 13 не преподавались в Массачусетском технологическом институте.

И что это за тарабарщина после?

2,800? Аккумулятор? M.f., K.K., C.R.? Что там было с испанцами?

И почему кто-то из Сент-Луиса, штат Миссури, запустил объявление в Кембридже, штат Массачусетс, ища конспект для курса в Гарварде?

Локк наблюдал, как объявление появлялось каждый день в течение последних нескольких недель.

Кто бы они ни были, и что бы это ни было, они явно хотели эту тетрадь. Почему они так настойчивы?

Есть один способ это узнать.

Локк поискал кусок бумаги и ручку. Он написал: «Дорогой Б. Дэвид: У меня есть тетрадь. Давайте поговорим. С уважением, Джейк.» Он отправил письмо по почте, направляясь на Гарвардскую площадь, чтобы найти что-то интересное.

Через неделю конверт с почтовый штемпелем Сент-Луиса, Миссури появился в почтовом ящике Локка. Локк открыл конверт и прочитал единственный лист бумаги. Вернее, он пытался это прочитать. Это было не на английском языке. Казалось, это написано каракулями пришельцев. Оно было кратким, только один абзац или около того. Буквы выглядели знакомыми, но недостаточно для того, чтобы он мог их расшифровать.

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

Его сосед по комнате взглянул на письмо и сказал: «Похоже на русский».

Локк сказал «я тоже об этом подумал, однако эти символы не кажутся правильными».

«Да. Они не похожи. На самом деле…» Голос его соседа по комнате на мгновение затих. «На самом деле это зеркальное письмо».

«Чего?»

«Знаешь, это зеркальное письмо. Буквы записываются в обратном порядке. Видишь?»

Локк посмотрел. Конечно же: в обратном порядке.

Локк и его сосед по комнате подошли к зеркалу и записали перевернутую надпись. Это были кириллические — русские буквы. К счастью, соседка Локка изучала русским язык. Они сели за стол и перевели послание.

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

Локк откинулся назад. Кто-то поставил загадочное объявление в газету. Он ответил. Они отправили ему письмо. В зеркальной записи. На русском. В 1967 году. В разгар «холодной войны».

Шпионская сеть!

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

Блюбокс 1961-1970. Фото Ed Turnley

Локк отправил свой ответ в тот же день — по-английски, а не в зеркальной записи.

«Дорогой Б. Дэвид: На самом деле у меня есть тетрадь, и я хотел бы поговорить с тобой. С уважением, Джейк.»

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

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

Локк посмотрел на другую половину открытки. На ней было несколько вопросов:


  • Закончите следующую последовательность: 604, 234, 121, ...
  • Что значит M.F. ?
  • Какое оборудование используется студентами в Гарварде и Массачусетском технологическом институте?

А?

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

604, 234, 121…
604, 234, 121…
604, 234, 121…

604-234-1212.

Номер телефона?

Это была не справочная абонентов — Локк знал, что тогда это был бы номер 555-1212, — но и этот был с виду правильным. Во всяком случае. Он поднял трубку и набрал номер.

После первого же гудка ответил деловой голос женщины.

«Чистое очищение», сказала она.

«Простите что?», сказал Локк.

«Чистое очищение внутренний,» повторила женщина на этот раз более отчетливо.

Локк повесил трубку. Он уставился на телефон. Чистое очищение? Внутренний?

Код города 604, где же это?

В телефонной книге говорилось, что это Британская Колумбия. И где она находится? Западная Канада.

Локк оглядел свою комнату в общежитии, нашел атлас и открыл страницу Британской Колумбии. Он просмотрел карту. Крупные города имели имена, которые он узнал, такие имена, как Ванкувер и Принц Джордж. У меньших городов были менее знакомые имена. Типа Камлупс, Сквамиш. Квеснел. Чиланко.

Клина Клин (Kleena Kleene).

Примерно 1945 год. Дальние операторы на «кордовых досках». До середины века руки, ноги и голова оператора были рабочими лошадьми междугородней телефонной коммутации.

За ужином в тот вечер Лейк упомянул о своем телефонном звонке Стиву, еще одному его соседу по комнате.

Стив сказал: «Да. Это интересно. Моя подруга Сюзи — внутренняя.»

«Чего? Что такое внутренняя?» — спросил Локк.

«Это какой-то специальный телефонный оператор. Ты должен поговорить с ней, она могла бы помочь тебе понять, что это такое. Она живет в Ревире. Позвони ей.»

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

«Итак, как мне позвонить внутрь?» спросил Локк.

«Ты не сможешь. Внутри есть специальные номера телефонов, которые могут набирать только операторы. Если ты хочешь позвонить в Нью-Йорк внутреннему оператору, то тебе нужно набрать что-то вроде 212-049-121. Где 121 — это вход внутрь, 049 — код маршрутизации внутри Нью-Йорка, а 212 это код области Нью-Йорка. Но ты не можешь набирать номера, например, 049 или 121 с обычного телефона».

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

«Но я не знаю никого в Канаде», — сказал Локк.

«Это нормально. Вошедший внутрь может звонить куда угодно. И мы в телефонной компании иногда получаем звонки с тестового телефонного коммутатора, и делаем звонки в места для тестирования.
Просто скажи им, что ты с тестового коммутатора. Будь уверен в себе и действуй так, как будто ты знаешь, что делаешь, и все пройдет без проблем».

«Хорошо. Я попробую. Эй, любая идея, что такое ‘M.F.’?»

«Ну, — ответила Сьюзи, — это может быть многочастотный (multifrequency)».

«Мультичастотный. Что это?» — спросил Локк.

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

«Хорошо. Эй, спасибо, Сьюзи.» Они попрощались. Он повесил трубку.

Локк снова поднял трубку и набрал номер 604-234-1212. В очередной раз ответил женский деловой голос.

«Клина Клин, внутренний».

«Привет, ух, да», — сказал Локк. «Это тестовый коммутатор. Не могли бы вы соединить меня с 619-374-8491?»

«Один момент». Была пауза. Шипение на больших расстояниях стало громче. Щелчок. Еще одна пауза. Еще шипение. Еще один щелчок. Затем звуковой сигнал.

«Привет?» Это был его друг Дэйв в Сан-Диего.

Локк поболтал со своим другом несколько минут, а затем повесил трубку. Ему казалось, что он плывет. Это казалось волшебным. «Действуй так, как будто ты знаешь, что делаешь, и все пройдет без проблем».

Это сработало!

Blue Boxes Circa 1961-1970. Фото Ed Turnley

Два открытых вопроса. Один из них: «Какое оборудование использовалось студентами в Массачусетском технологическом институте?».

И еще раз, уже другой сосед по комнате пришел на помощь к Локку — к счастью, Локк жил в общаге и имел много соседей по комнате. «Мы говорим о телефонах и студентах MIT, верно? Я помню статью в Crimson около года назад о некоторых учениках MIT, у которых возникли проблемы с игрой с телефоном. Может это оно и есть?»

«Может быть», сказал Локк. «Но как мне найти старую копию Crimson?»

«Библиотека?» — предложил его друг.

Это было испытание. Раньше Локк никогда не был в библиотеке университета.

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

От переводчика, вот эта статья Five Students Psych Bell System, Place Free Long Distance Calls:


Пять местных студентов, четыре из Гарварда и один из M.I.T, потратили восемь месяцев на междугородние и международные телефонные звонки в качестве гостей Bell System, прежде чем они были наконец обнаружены.

Телефонная компания приняла новости без огорчения, только однако, конфисковав 121-страничную записную книжку Fine Arts 13, которая содержала записи об этих «исследованиях» и потребовала, чтобы они представили полный отчет, который насчитывал 40 страниц с двойным интервалом, из того, что они сделали.

Во время «исследований» студенты обнаружили одного внутреннего оператора в Kleena Kleene B.C., который мог перенаправлять (и перенаправлял) их на любой телефон в Соединенных Штатах.

Еще более полезным внутренним оператором оказался тот, кто был в Мехико сити, который связывал их с номерами по всему миру, в том числе и с президентом Мексики. Однако в президентском дворце кто-то сказал, что президента нет. Было 2 часа ночи.

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

Они также обнаружили, что музыкальные инструменты или даже свист человека могут активировать оборудование.

Как загипнотизированный, Локк читал слова из статьи и разные мысли приходили ему в голову.

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

Локк был в восторге. Кусочки мозаики вставали на места, и теперь у него было достаточно информации, чтобы ответить Б.Дэвиду. Но статья была скупа в ​​деталях. Ему нужно было узнать больше. Ему нужно было поговорить с оригинальными студентами Гарварда и Массачусетского технологического института. Локк записал имя автора статьи — студента в Гарварде.

На следующий день он заполнил ответную открытку и бросил ее на почту Б.Дэвиду. Затем он позвал репортера Crimson, чтобы выудить более подробную информацию. Но репортер не очень помог. Он не знал имен студентов Гарварда или Массачусетского технологического института и оказалось, что он получил большую часть своей информации из статьи в Boston Herald. Затем он поговорил с репортером Herald, чтобы получить дополнительный контекст.

«Разве репортер Геральд не знал имена учеников?» спросил Локк.

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

Вернувшись в библиотеку Локк откопал статью из Геральд. Там описывалось, как студенты Гарварда и Массачусетского технологического института звонят президенту Мексики и дал имя «blue box» — электронному устройству, которое позволило им взломать телефонную сеть. Там говорилось и о том, что они не спали ночами, тратя восемьдесят часов в неделю на исследования, набирая десять тысяч номеров в течение двух-трех дней, чтобы найти нужную им информацию. Там даже говорилось, что студенты были допрошены агентами ФБР, которые думали, что они крадут защищаемые секреты.

Локк узнал номер телефона газеты.

«Будьте уверены в себе и действуйте так, как будто знаете, что делаете». Он глубоко вздохнул, взял трубку, набрал «Геральд» и попросил подключить его к репортеру, который написал статью.
Когда репортер ответил, Локк вежливо объяснил, кто он и что ему нужно.

«Это специальный агент Стивенсон из Бостонского офиса ФБР. У нас есть отчет о том, что произошла какая-то новая деятельность, связанная с инцидентом, произошедшим несколько лет назад, когда некоторые студенты из Гарварда и Массачусетского технологического института неправильно использовали телефонную систему. Мы пытаемся связаться с ними, чтобы поговорить с ними об этом, но у нас нет текущей контактной информации. Я видел вашу статью о них год назад или около того. У вас есть номера телефонов кого-нибудь из них?»

Нет проблем, ответил репортер. Он был бы рад помочь.

Прежде чем Локк успел позвонить кому-нибудь из студентов, зазвонил его телефон. Это был Б. Дэвид, и он хотел узнать о тетради Fine Arts 13. О, да, эта тетрадь: та, которой у Локка на самом деле не было. Локк сделал все возможное, чтобы поддерживать интригу. Он «признался», что на самом деле он не был одним из студентов Гарварда или Массачусетского технологического института, но он знал их. Он был их другом. Он участвовал в некоторых их «исследованиях».

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

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

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

Все это казалось захватывающим для Локка. Он позвонил бывшему студенту Массачусетского технологического института — теперь проживающему в Беркли, штат Калифорния, — чей номер он получил от репортера «Геральд». Студент был достаточно дружелюбен, но, как и Б. Дэвид, также неохотно предоставлял информацию. Студент из Массачусетского технологического института объяснил, что он и его друзья были пойманы и допрошены ФБР, хотя фактически не были привлечены к ответственности. Он подчеркнул, что Локку нелегко будет играть с этим предметом и что он должен держаться подальше от всего этого. Локк дал ему дополнительную информацию. Наконец студент MIT сказал ему: «Если ты действительно хочешь узнать больше, все, что тебе нужно знать, находится в библиотеке».

Отлично, подумал Локк, третье путешествие в библиотеку.

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

Bell System Technical Journal

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

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

Локк начал тратить много времени на телефон.

«Ищи недостающие АТС, ищи шаблоны номеров», — сказал ему Дэвид.

Локк знал, что код АТС был первыми тремя цифрами местного телефонного номера. Проводя тщательное изучение телефонной книги и делая много звонков, Локк обнаружил в районе Бостона неизвестные АТС. Когда Локк находил АТС, он начинал перенабирать все ее телефонные номера. Все десять тысяч.

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

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

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

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

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

«Для чего это нужно?» спросил студент-аспирант.

«Будьте уверены в себе и действуйте так, как будто знаете, что делаете».

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

Аспирант очень удивился, но помог.

Локк начал часто посещать магазины электроники в Кембридже, ища запчасти и руководство по сборке своей синей коробки. Вскоре он познакомился со студентами MIT в клубе Tech Model Railroad или TMRC, недалеко от станции метро Kendall Square T. TMRC был домом для одной из самых технически сложных моделей железных дорог в стране, возможно, в мире.

Tech Model Railroad или TMRC

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

Это был настоящий рассадник энтузиастов телефонии.

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

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

Невероятно, но некоторые люди озаботились, об этом Локк узнал по возвращении в свою комнату в общаге в июне 1967 года, всего через три месяца после того, как увидел рекламное объявление о Fine Arts 13 в Crimson. Он понял, что у него проблемы с того момента, как он вошел в дверь: его ожидали трое мужчин.
Одним из них был смущенный заведующий общагой, профессор Гарварда. Локк не знал двух других, но он заметил, что один из них носил пальто — странно, учитывая, что это был теплый летний день.

«Ты попался, Локк,» сказал заведующий.

Пытаясь выйграть время, Локк спросил «Кто попался?».

Локк, исходя из реакций трех своих посетителей, предположил, что это было неправильно.

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

Один из его посетителей оказался из телефонной компании AT&T.
Другой представился в качестве специального агента из Бостонского офиса ФБР.
Они попросили Локка пройти в деловую часть города. Агент ФБР сказал ему, что это очень серьезный вопрос, что у них есть некоторые вопросы, на которые они хотели бы получить прямые ответы, и что они арестуют его, если он не будет сотрудничать.

Следующие двадцать четыре часа Локк там, что казалось сценой из детективного фильма 1940-х годов: пустая комната с деревянным столом, креслом для него, двумя стульями для следователей и голой лампочкой, свисающей с потолка. Сидя напротив него, агент ФБР и человек, отвечающий за безопасность в телефонной компании, упорно трудились, чтобы заставить его признаться в использовании blue box для бесплатных телефонных звонков. Несмотря смертельный страх, Локк все отрицал. Я не понимаю, о чем вы говорите, сказал он.

После нескольких часов допроса он наконец признал, что да, blue box был его, но он использовал его только для того, чтобы узнать о телефонной сети. Локк ожидал, что они начнут поджаривать его, сколько бесплатных звонков он сделал, но его следователи сменили направление. Они хотели знать, кто дал ему техническую информацию, необходимую ему для создания синей коробки.
Он объяснил, что видел статью в «Boston Herald», а затем нашел статью в «Bell System Technical Journal» и узнал обо всем оттуда. Другими словами, не было никого другого; он был один.
Это заняло много времени, но ему удалось убедить их в его версии событий.

Тема допрос опять изменилась. Ладно, сказали они, ты сам до всего дошел. Хорошо. Теперь скажи нам, кому ты продавал синие коробки.

Локк смутился. Продажа коробок? Какие коробки? Он построил только одну, и он никому ее не продал. Агент ФБР был уверен, что он продавал их — или, по крайней мере, поставлял их другим. Кому, он не говорит. После долгих часов взад-вперед Локку удалось убедить их, что была только одна коробка, которую он построил, и он не продавал ее. В ретроспективе Локк говорит, что рад, что он никогда не думал об этом. «Идея продажи синих коробок мне никогда не приходила … к счастью! Это неплохая идея».

Локк провел ночь в ФБР. Утром ему сказали, что он может уйти, но только после того, как он подготовил письменный отчет, описывающий, что он сделал, и методы, которые он использовал. Он утром написал этот отчет.

Когда он уходил, Локк повернулся к человеку из телефонной компании. По его лицу скользнула усмешка.

«Кстати», — сказал он, — «я не занят этим летом. У вас, ребята, нет открытых вакансий?»

Let's block ads! (Why?)

Имплементация катсцен и последовательностей действий в играх

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

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

local function cutscene(player, npc)
  player:goTo(npc)
  if player:hasCompleted(quest) then
    npc:say("You did it!")
    delay(0.5)
    npc:say("Thank you")
  else
    npc:say("Please help me")
  end
end

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

1. Открывается дверь
2. Персонаж заходит в дом
3. Дверь закрывается
4. Экран плавно темнеет
5. Меняется уровень
6. Экран плавно светлеет
7. Персонаж заходит в кафе

Последовательности действий также могут использоваться для скриптования поведения NPC или для реализаций битв с боссами, в которых босс выполняет какие-то действия одно за другим.

Структура стандартного игрового цикла делает имплементацию последовательностей действий непростой. Допустим, у нас есть следующий игровой цикл:

while game:isRunning() do
  processInput()
  dt = clock.delta()
  update(dt)
  render()
end

Мы хотим имплементировать следующую катсцену: игрок подходит к NPC, NPC говорит:«You did it!», а затем после короткой паузы говорит:«Thank you!». В идеальном мире, мы бы написали это вот так:

player:goTo(npc)
npc:say("You did it!")
delay(0.5)
npc:say("Thank you")

И вот тут мы и встречаемся с проблемой. Выполнение действий занимает некоторое время. Некоторые действия могут даже ожидать ввода от игрока (например, чтобы закрыть окно диалога). Вместо функции delay нельзя вызвать тот же sleep — это будет выглядеть так, будто игра зависла.

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

Самый очевидный способ для имплементации последовательностей действий — это хранить информацию о текущем состоянии в bool'ах, строках или enum'ах. Код при этом будет выглядеть примерно так:

function update(dt)
  if cutsceneState == 'playerGoingToNpc' then
    player:continueGoingTo(npc)
    if player:closeTo(npc) then
      cutsceneState = 'npcSayingYouDidIt'
      dialogueWindow:show("You did it!")
    end
  elseif cutsceneState == 'npcSayingYouDidIt' then
    if dialogueWindow:wasClosed() then
      cutsceneState = 'delay'
    end
  elseif ...
    ... -- и так далее...
  end
end

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

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

В катсцене, которую мы хотим реализовать, нам нужно имплементировать следующие действия: GoToAction, DialogueAction и DelayAction.

Для дальнейших примеров я буду использовать библиотеку middleclass для ООП в Lua.

Вот, как имплементируется DelayAction:

-- конструктор
function DelayAction:initialize(params)
  self.delay = params.delay

  self.currentTime = 0
  self.isFinished = false
end

function DelayAction:update(dt)
  self.currentTime = self.currentTime + dt
  if self.currentTime > self.delay then
    self.isFinished = true
  end
end

Функция ActionList:update выглядит так:

function ActionList:update(dt)
  if not self.isFinished then
    self.currentAction:update(dt)
    if self.currentAction.isFinished then
      self:goToNextAction()
      if not self.currentAction then
        self.isFinished = true
      end
    end
  end
end

И наконец, имплементация самой катсцены:

function makeCutsceneActionList(player, npc)
  return ActionList:new {
    GoToAction:new {
      entity = player,
      target = npc
    },
    SayAction:new {
      entity = npc,
      text = "You did it!"
    },
    DelayAction:new {
      delay = 0.5
    },
    SayAction:new {
      entity = npc,
      text = "Thank you"
    }
  }
end

-- ... где-то внутри игрового цикла
actionList:update(dt)

Примечание: в Lua вызов someFunction({ ... }) может быть сделан вот так: someFunction{...}. Это позволяет писать DelayAction:new{ delay = 0.5 } вместо DelayAction:new({delay = 0.5}).

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

Советую посмотреть презентацию Шона Миддлдитча (Sean Middleditch) про action list'ы, в которой приводятся более сложные примеры.

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

local function cutscene(player, npc)
  player:goTo(npc)
  if player:hasCompleted(quest) then
    npc:say("You did it!")
    delay(0.5)
    npc:say("Thank you")
  else
    npc:say("Please help me")
  end
end

Чтобы сделать симуляцию if/else, нужно реализовать нелинейные списки. Это можно сделать с помощью тэгов. Некоторые действия могут помечаться тэгами, и затем по какому-то условию вместо перехода к следующему действию, можно перейти к действию, имеющему нужный тэг. Это работает, однако это не так легко читается и пишется, как функция выше.

Корутины Lua делают этот код реальностью.


Основы корутин в Lua

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

Чтобы поставить корутину на паузу, нужно вызвать coroutine.yield, чтобы возобновить — coroutine.resume. Простой пример:

local function f()
  print("hello")
  coroutine.yield()
  print("world!")
end

local c = coroutine.create(f)
coroutine.resume(c)
print("uhh...")
coroutine.resume(c)

Вывод программы:

hello
uhh...
world

Вот, как это работает. Сначала мы создаём корутину с помощью coroutine.create. После этого вызова корутина не начинает выполняться. Чтобы это произошло, нам нужно запустить её с помощью coroutine.resume. Затем вызывается функция f, которая пишет «hello» и ставит себя на паузу с помощью coroutine.yield. Это похоже на return, но мы можем возобновить выполнение f с помощью coroutine.resume.

Если передать аргументы при вызове coroutine.yield, то они станут возвращаемыми значениями соответствующего вызова coroutine.resume в «основном потоке». Например:

local function f()
    ...
    coroutine.yield(42, "some text")
    ...
end

ok, num, text = coroutine.resume(c)
print(num, text) -- will print '42    "some text"'

ok — переменная, которая позволяет нам узнать статус корутины. Если ok имеет значение true, то с корутиной всё хорошо, никаких ошибок внутри не произошло. Следующие за ней возвращаемые значения (num, text) — это те самые аргументы, которые мы передали в yield.

Если ok имеет значение false, то с корутиной что-то пошло не так, например внутри неё была вызвана функция error. В этом случае вторым возвращаемым значением будет сообщение об ошибке. Пример корутины, в которой происходит ошибка:

local function f()
  print(1 + notDefined)
end

c = coroutine.create(f)
ok, msg = coroutine.resume(c)
if not ok then
    print("Coroutine failed!", msg)
end

Вывод:

Coroutine failed! input:4: attempt to perform arithmetic on a nil value (global ‘notDefined’)

Состояние корутины можно получить с помощью вызова coroutine.status. Корутина может находиться в следующих состояниях:

  • «running» — корутина выполняется в данный момент. coroutine.status была вызвана из самой корутины
  • «suspended» — корутина была поставлена на паузу или ещё ни разу не запускалась
  • «normal» — корутина активна, но не выполняется. То есть корутина запустила другую корутину внутри себя
  • «dead» — корутина завершила выполнение (т.е. функция внутри корутины завершилась)

Теперь с помощью этих знаний мы можем имплементировать систему последовательностей действий и катсцен, основанную на корутинах.

Создание катсцен с помощью корутин

Вот, как будет выглядеть базовый класс Action в новой системе:

function Action:launch()
  self:init()

  while not self.finished do
    local dt = coroutine.yield()
    self:update(dt)
  end

  self:exit()
end

Подход похож на action list'ы: функция update действия вызывается до тех пор, пока действие не завершилось. Но здесь мы используем корутины и делаем yield в каждой итерации игрового цикла (Action:launch вызывается из какой-то корутины). Где-то в update игрового цикла мы возобновляем выполнение текущей катсцены вот так:

coroutine.resume(c, dt)

И наконец, создание катсцены:

function cutscene(player, npc)
  player:goTo(npc)
  npc:say("You did it!")
  delay(0.5)
  npc:say("Thank you")
end

-- где-то в коде...
local c = coroutine.create(cutscene, player, npc)
coroutine.resume(c, dt)

Вот, как реализована функция delay:

function delay(time)
    action = DelayAction:new { delay = time }
    action:launch()
end

Создание таких врапперов значительно повышает читаемость кода катсцен. DelayAction реализован вот так:

-- Action - базовый класс DelayAction
local DelayAction = class("DelayAction", Action)

function DelayAction:initialize(params)
  self.delay = params.delay
  self.currentTime = 0
  self.isFinished = false
end

function DelayAction:update(dt)
  self.currentTime = self.currentTime + dt
  if self.currentTime >= self.delayTime then
    self.finished = true
  end
end

Эта реализация идентична той, которой мы использовали в action list'ах! Давайте теперь снова взглянем на функцию Action:launch:

function Action:launch()
  self:init()

  while not self.finished do
    local dt = coroutine.yield() -- the most important part
    self:update(dt)
  end

  self:exit()
end

Главное здесь — цикл while, который выполняется до тех пор, пока действие не завершится. Это выглядит примерно вот так:

Давайте теперь посмотрим на функцию goTo:

function Entity:goTo(target)
    local action = GoToAction:new { entity = self, target = target }
    action:launch()
end

function GoToAction:initialize(params)
  ...
end

function GoToAction:update(dt)
    if not self.entity:closeTo(self.target) then
      ... -- логика перемещения, AI
    else
      self.finished = true
    end
end

Корутины отлично сочетаются с событиями (event'ами). Реализуем класс WaitForEventAction:

function WaitForEventAction:initialize(params)
  self.finished = false

  eventManager:subscribe {
    listener = self,
    eventType = params.eventType,
    callback = WaitForEventAction.onEvent
  }
end

function WaitForEventAction:onEvent(event)
  self.finished = true
end

Данной функции не нужен метод update. Оно будет выполняться (хотя ничего делать не будет...) до тех пор, пока не получит событие с нужным типом. Вот практическое применение данного класса — реализация функции say:

function Entity:say(text)
    DialogueWindow:show(text)
    local action = WaitForEventAction:new {
      eventType = 'DialogueWindowClosed'
    }
    action:launch()
end

Просто и читаемо. Когда диалоговое окно закрывается, оно посылает событие с типом 'DialogueWindowClosed`. Действие «say» завершается и своё выполнение начинает следующее за ним.

С помощью корутин можно легко создавать нелинейные катсцены и деревья диалогов:

local answer = girl:say('do_you_love_lua',
                          { 'YES', 'NO' })
if answer == 'YES' then
  girl:setMood('happy')
  girl:say('happy_response')
else
  girl:setMood('angry')
  girl:say('angry_response')
end

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

Чуть более сложные примеры


С помощью корутин можно легко создавать туториалы и небольшие квесты. Например:
girl:say("Kill that monster!")
waitForEvent('EnemyKilled')
girl:setMood('happy')
girl:say("You did it! Thank you!")

Корутины также можно использовать для AI. Например, можно сделать функцию, с помощью которой монстр будет двигаться по какой-то траектории:

function followPath(monster, path)
  local numberOfPoints = path:getNumberOfPoints()
  local i = 0 -- индекс текущей точки в пути
  while true do
    monster:goTo(path:getPoint(i))

    if i < numberOfPoints - 1 then
      i = i + 1 -- перейти к следующей точке
    else -- начать сначала
      i = 0
    end
  end
end

Когда монстр увидит игрока, мы можем просто перестать выполнять корутину и удалить её. Поэтому бесконечный цикл (while true) внутри followPath на самом деле не является бесконечным.

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

function cutscene(cat, girl, meetingPoint)
  local c1 = coroutine.create(
    function()
      cat:goTo(meetingPoint)
    end)

  local c2 = coroutine.create(
    function()
      girl:goTo(meetingPoint)
    end)

  c1.resume()
  c2.resume()

  -- синхронизация
  waitForFinish(c1, c2)

  -- катсцена продолжает выполнение
  cat:say("meow")
  ...
end

Самая важная часть здесь — функция waitForFinish, которая является враппером вокруг класса WaitForFinishAction, который можно имплементировать следующим образом:

function WaitForFinishAction:update(dt)
  if coroutine.status(self.c1) == 'dead' and
     coroutine.status(self.c2) == 'dead' then
     self.finished = true
  else
    if coroutine.status(self.c1) ~= 'dead' then
      coroutine.resume(self.c1, dt)
    end

    if coroutine.status(self.c2) ~= 'dead' then
      coroutine.resume(self.c2, dt)
    end
end

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

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

Достоинства и недостатки корутин

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

И всё это выполняется в одном потоке, поэтому нет проблем с синхронизацией или состоянием гонки (race condition).

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

(Примечание: с помощью библиотеки PlutoLibrary корутины можно сериализовать, но библиотека работает только с Lua 5.1)

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

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

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

Let's block ads! (Why?)

[Подборка] Разработка, дизайн и продвижение сайтов: 17 полезных материалов

Создать качественный сайт, который привлечет пользователей продуманным интерфейсом и красивым дизайном – непростая задача, с которой не справляется огромное количество компаний.

Я собрала полезные ссылки, которые помогут пройти этот путь и не совершить необязательные ошибки.

Выбор: самостоятельная разработка, студии, фрилансеры или конструкторы


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

Ниже – несколько статей, в которых эксперты рынка веб-разработки описывают плюсы и минусы каждого подхода и делятся советами:


О чем помнить, при работе над дизайном


Еще один крайне важный момент – дизайн сайта. Создать качественный логотип и интерфейс не так просто. Решить эту задачу поможет изучение материалов из списка ниже:

Как привлечь посетителей


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


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

Let's block ads! (Why?)

[Из песочницы] Конференц-комнаты на базе Asterisk

Antimony — САПР из параллельного мира

Среди трёхмерных САПР наиболее известны программы, реализующие два основных подхода к проектированию: прямое моделирование и параметрическое.
Кроме того, существуют процедурные САПР, которые позволяют моделировать посредством программирования. Такой подход снискал себе признание среди любителей программирования и проектирования устройств с открытыми кодом и конструкцией. Например, хорошо известен OpenSCAD, который здесь не раз упоминался.
Предлагаю посмотреть на еще одну необычную САПР под названием Antimony.

image
Рис. 1. Antimony — САПР из параллельного мира
Antimony — САПР с открытым исходным кодом, который предоставляет подход к твердотельному моделированию при помощи направленных ациклических графов.
Такой подход используется в различных пакетах для 3D визуализации, текстурирования и создания игровой графики, а для твердотельного моделирования такой подход применяется, наверное, впервые.

Сам автор Мэтт Китер описывает свое детище как «CAD из параллельной вселенной».
Antimony построен из трёх основных компонентов:

  • Фреймворк для движения данных по направленному ациклическому графу.
  • Геометрическое ядро для CSG (Constructive Solid Geometry) операций, использующее функциональное представление (F-Rep) твёрдых тел.
  • Библиотека примитивов и трансформаций «fab». Библиотека содержит как привычные операции вроде перемещения, масштабирования, поворота, булевы операции, так и более необычные для твердотельных САПР, такие как деформация притяжения, отталкивания, изгиба.

image
Рис. 2. Деформация отталкивания

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

image
Рис. 3. Передача значений посредством связи и через имя узла и параметра

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

image
Рис. 4. Скрипт узла «круг»

Принцип построения модели в общих чертах тот же что и в более привычных САПР: берём плоскую фигуру, применяем к ней операцию построения трёхмерного тела (или сразу берем трёхмерный примитив), затем комбинируем это тело с другими при помощи булевых операций или применяем операции перемещения и деформации.
Модели могут быть как однотельными так и многотельными, жесткую параметрическую связь Antimony не навязывает, покуда пользователь сам не задаст связи. Выбор плоских фигур невелик, но все они являются замкнутыми областями, так что к ним применимы те же логические операции что и к твёрдым телам.

Пользовательский интерфейс представлен двумя основными окнами: окном графов и
окном видового экрана (вьюпорта). Можно открыть дополнительное окно видового экрана с комплексом четырех проекций.

image
Рис. 5. Минимализм во всём

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

Так как автор программы работает в Formlabs, то он позаботился о возможности материализации полученных моделей. Поэтому Antimony поддерживает экспорт моделей в виде 2.5D растра (карты высот в формате PNG) и в виде моделей в формате STL для 3D-печати. Команда для экспорта — тоже узел графа.

image
Рис. 6. Результат экспорта в STL

И немного о недостатках:

  • Импорт моделей из других САПР отсутствует.
  • Невозможность задавать произвольный плоский контур в качестве эскиза для трёхмерного тела существенно ограничивает возможности моделирования.
  • Вопрос, как рационально делать фаски и скругления остается открытым.
  • Уровень стабильности проекта оценивается как бета-версия, что-то серьезное пытаться делать в Antimony пожалуй не стоит, но поиграть будет интересно.

Ожидая негодование инженеров-конструкторов, должен заметить, что такая САПР создана в первую очередь не в практических целях, а из личного спортивного или научного интереса автора. Понятно, что ни о каких чертежах здесь речь не идёт, так как Antimony разработан исключительно для моделирования трёхмерных тел.

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

Название для своей необычный САПР автор выбрал не случайно. Antimony переводится как сурьма — вещество, сочетающее в себе свойства металлов и неметаллов, и расширяющееся при застывании расплава.

Интересно посмотреть программу в работе на скринкасте Мэтта Китера:

GitHub: github.com/mkeeter/antimony
Antimony написан на C++ и Python. В репозитории присутствуют инструкции по сборке из исходников для Linux и macOS, и готовые DMG образы.

Let's block ads! (Why?)

Статистика ЦБ: заработок хакеров от кибератак на финансовые организации в 2018 году упал почти в 14 раз

Изображение: Christiaan Colen | CC BY-SA 2.0

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

Заработок хакеров снижается


По данным отчета, с января по август 2018 г. целевые атаки принесли им 76,5 млн руб. Годом ранее доход киберпреступников составил 1,08 млрд рублей, и это несмотря на рост общего числа атак (22 в 2018 против 20 в прошлом году).

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

К примеру, в марте этого года был задержан один из лидеров хакерской группировки Cobalt, которая проводила масштабные и успешные атаки на финансовые организации, в том числе связанные с похищением денег из банкоматов. В феврале 2018 года Центробанк сообщал, что за весь 2017 год хакеры из группы Cobalt похитили 1,16 млрд рублей у 240 российских банков.

Фокус атакующих смещается с банков на их корпоративных клиентов


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

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

Атаки в сфере биржевой торговли и способы защиты от них


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

Иногда им удается провести успешню атаку с серьезными последствиями. Например, в 2015 году хакеры атаковали казанский «Энергобанк» с помощью трояна Corcow. С его помощью им удалось захватить контроль над компьютером в сети банка, на котором был установлен торговый терминал. Это позволило преступникам совершать несанкционированные операции по покупке и продаже валюты на Московско бирже. В результате манипуляций за 15 минут курс рубля упал на 15%, а компания потеряла 244 млн.

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

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

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

Кроме того, для верификации данных, отображаемых в торговом терминале, можно использовать API SMARTcom – сервис позволяет разрабатывать собственные торговые приложения, программировать роботов и использовать партнерские приложения. Перед совершением крупных сделок трейдер сможет сверить данные в терминале и стороннем софте для минимизации риска ошибки.

Другие материалы по теме финансов и фондового рынка от ITI Capital:


Let's block ads! (Why?)

[Из песочницы] Пиратство в Космосе – Коварная Delta-V и Водородные Стелс-Пароходы — Часть 1

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

Однако давайте разберемся, возможно ли пиратство в космосе на самом деле?

Итак, что такое пиратство?


image
Китайская джонка

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

Пиратство действует в соответствии с правилами, которые делают кражу целесообразной:

  • Ценность добычи оправдывает понесенные затраты и риск нападения пиратов
  • Добычу можно оперативно реализовать
  • Обеспечена безопасность пиратов от преследования после нападения.

image

Довольно простые правила, не правда ли.

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

image

В 1986 году после падения жестокого режима Сиада Барре началась разрушительная гражданская война. Государственные учреждения перестали функционировать, повстанцы и банды организовались в вооруженные группы, а сомалийский флот был расформирован.

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

В совокупности, сложившаяся ситуация позволила многочисленным группам, вооружившись АК-47 и РПГ, сформировать флот из небольших лодок и рыболовецких траулеров и свободно действовать в открытом море и тех же водах, через которые проходит постоянный, богатый поток кораблей груженных грузовыми контейнерами, входящими или выходящими из Индийского океана через Суэцкий канал.

image

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

image
Такие группы атаковали грузовые корабли.

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

Ситуация изменилась к 2011 году


Количество нападений выросло до тысяч в год, пираты требовали миллионные выкупы только за один корабль. Поэтому, военным флотам было дано разрешение на пересечение границ территориальных вод Сомали для преследования пиратов. Теперь военные корабли США патрулировали район, вместе с военными кораблями более 20 стран мира, включая Японию и Новую Зеландию. Грузовые корабли теперь стали оснащать водными пушками, безопасными комнатами, а в команде были вооруженные охранники. Группы по борьбе с пиратством проводили рейды по укрытиям на суше, конфисковывали оружие. Были сформированы силы морской полиции.

image
Корабли ВМС США патрулируют акваторию в поисках пиратов

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

Условий для пиратства больше не было. Поэтому, с 2012 года не было зафиксировано ни одного случая успешного нападения на грузовые суда в районе Африканского Рога.

image
Конец эпохи

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

Пиратство… в Космосе!


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

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

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

image

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

image
КС Кронос 1

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

Поиск цели (жертвы)


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

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

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

image

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

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

image
SMPritchard

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

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

image

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

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

Перехват цели


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

Главная проблема — вездесущее отслеживание космических кораблей.

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

image

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

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

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

На каждый метр/секунду ускорения цели, пиратам потребуется 1 м/с на ускорение и еще 1 м/с на торможение для атаки. Это значит, что пиратам потребуется, более чем в два раза больше дельта-V чем у любой цели, которую они пытаются захватить.

Например, если цель, которая движется со скоростью 20 км/с. имеет резерв дельта-V в 25 км/с для торможения в пункте назначения и маневрирования, оснащена ракетным двигателем со скоростью истечения 30 км/с (Isp 3058s), то её массовое соотношение в начале пути должно было составлять 4,48, а теперь составляет 2,3. На каждый килограмм сухой массы космический корабль-цель будет нести от 3,48 до 1,3 кг топлива.

image
Расходные топливные баки позволят достичь высокого массового соотношения

Пиратский космический корабль, который попытается поймать такой космический корабль-цель, должен сначала разогнаться до скорости 20 км/с, с которой движется цель, израсходовать резерв в дельта-V 25 км/с, а затем затормозить с 45 км/с до полной остановки. Если допустить, что его двигательная установка аналогична двигателям корабля- цели, то массовое соотношение пиратского корабля должно составлять около 20. А значит на каждый килограмм сухой массы он должен нести 19 кг топлива: то есть, такой корабль на более чем 95% будет состоять из топливных баков!

Формула полета ракеты работает таким образом, что удвоение дельта-V космического корабля потребует квадратичного увеличения соотношение масс.

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

Решение этой критической для космических пиратов проблемы существует: и Это стелс- технологии.

image
Скриншот из фильма The Expanse

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

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

image
Vantablack

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

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

image
Корабль использует ускоритель масс для движения

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

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

Конструкция такого космического корабля невидимки/стелс, назовем его «Водородный Пароход» — из-за использования кипящего жидкого водорода — имеет свои недостатки. Такому кораблю потребуется очень большое количество жидкого водорода, который не отличается высокой плотностью. Что приведет к тому, что даже самый недальнобойный «Водородный Пароход» будет очень массивным. Например, для обработки 10 кВт отработанного тепла комнатной температуры потребуется испарение 2,3 г/секунду жидкого водорода. Если космический корабль должен находиться в режиме скрытности на протяжении шести месяцев, то ему потребуется запас водорода в 36 тонн, который имеет объем 517 м^ 3. А это цилиндр шириной 3 м и длиной 73 м!

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

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

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

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

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

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

Делай деньги, делай деньги…… – Типы нападений


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

Когда перехват становиться нападением пиратов?

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

Самый простой способ заработать– потребовать выкуп за экипаж.

image

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

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

image
Испанские торговцы, возвращающиеся из Южной Америки, груженные золотом, были основными целями

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

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

image
Сбросьте контейнер или мы будем стрелять!

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

image
Взлом шлюза, by ThDark

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

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

image

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

image
Роскошные космические «яхты», перевозящие VIP-персон, должны быть особо осторожными

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

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

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

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

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

Изменение маршрута полета космического корабля направив его в неправильный пункт назначения гарантирует, что корабль прибудет в отличное от изначального пункта назначения место (например в порт, в котором коррумпированные грузчики утащат весь его груз), или например, что полет корабля займет намного дольше времени. Задержка поставки может негативно повлиять на колебания цен на рынке, чем могут воспользоваться финансово опытные пираты: таким способом можно уменьшить стоимость акций компаний, вызвать оплату штрафов за недоставку срок, увеличить стоимость товара из-за искусственного дефицита или манипулировать рыночными опционами и ставками в пользу пиратов.

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

image

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

База


Естественно Пиратам нужна своя база.

image
Окололунная заправочная станция

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

image

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

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

image
Пиратская база, устроенная в ядре кометы

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

Альтернативные пираты


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

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

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

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

image
Дроны с манипуляторами

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

image

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

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

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

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

image

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

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

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

image

image

Например у Ост-Индийской компании практически были свои собственные вооруженные силы, а правила компании были законом.

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

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

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

image

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

Что дальше:

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

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

Let's block ads! (Why?)