Как найти систему оберона

5 минут назад, Kadrimme сказал:

Инфа на вики устарела с выходом нового рейлджека…

Неужели теперь после любой пробежки по гринирам мне не будут сыпаться части этого фрейма?

На англовики уже есть:

Oberon’s main blueprint can be purchased from the Market. Oberon’s component blueprints are obtained from Earth Proxima (Systems), Saturn Proxima (Chassis), and Veil Proxima Grineer-controlled territory (Neuroptics) Abandoned Derelict Caches in Empyrean missions.

Автоматический перевод:

Основной чертеж Оберона можно купить в Магазине. Чертежи компонентов Оберона можно получить с Проксимы Земли (Системы), Проксимы Сатурна (Шасси) и Территории, контролируемой Вейл Проксима Гринир (Нейроптика), заброшенных заброшенных тайников в миссиях Эмпирея.

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

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

скин на оберона

Как получить Оберона в Warframe

Приобрести этого персонажа можно в игровом магазине. За такую покупку придется отдать 325 платины. Если нет желания тратить реальные деньги на приобретение персонажа, то можно купить за 25 тысяч кредитов основной чертеж Оберона. А части варфрейма выбейте с Эксимусов – усиленных бойцов любой фракции. Чтобы 100 % получить все чертежи, отправьтесь на выживание в Руины Орокин вместе с Некросом. За 20-минутную миссию вы соберете все части.

На создание персонажа потребуются следующие ресурсы:

  • Модуль контроля – 1.
  • Полимеры – 1650.
  • Схемы – 500.
  • Сплавы – 520.
  • Галлий – 2.
  • Элемент питания Орокин – 1.
  • Рубедо – 300.
  • Кредиты –15 000.

Создание варфрейма в кузнице займет 72 часа. Если хотите ускорить процесс, то за это придется заплатить 25 единиц платины.

прайм оберон

Прайм-версия

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

Приобрести такого персонажа можно у других игроков. Покупка обойдется вам приблизительно в 100 единиц платины. Если не хотите расставаться с реальными деньгами, то выбить варфрейм можно на разломах с помощью реликвий Бездны. С основным чертежом, каркасом и нейрооптикой проблем не возникнет, ведь они выпадают довольно часто. А вот с системой Оберона в Warframe придется повозиться. Эта часть падает только с золотого приза реликвий Акси О2 и Акси О3.

Билд на оберона

Билд

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

  • Аура Стальной Натиск. Этим аугментом вы увеличите урон от ближнего оружия.
  • Эксилус-мод Силовое Течение. Аугмент повысит силу способностей.
  • Непрерывность. Аугмент увеличит длительность умений.
  • Возрождение Феникса. Синдикатский мод, восстанавливающий максимум здоровья при получении смертельного урона.
  • Мимолетное мастерство и Обтекаемость. Эти моды улучшают энергоэффективность.
  • Адреналин охотника. Преобразует получаемый урон в энергию. При желании этот мод заменяется Гневом.
  • Теневая Живучесть. Аугмент увеличивает показатель здоровья.
  • Теневое Усиление. Повышает силу способностей варфрейма.
  • Теневое Волокно. Повышает броню персонажа.

С таким билдом вам будут не страшны даже многоуровневые мобы. Поэтому сложные задания типа Вылазки или убийства Гидролистов на Равнинах Эйдалона станут для вас приятной прогулкой.

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

1. Причины громозкости программного
обеспечения

1.1 Сложность как эквивалент мощности

1.2 Времени всегда не хватает

2. Языки и методология проектирования

3. Проект «Оберон»

3.1 Три базисных правила

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

Лет 25 тому назад, интерактивный текстовый редактор мог быть спроектирован из расчета всего лишь 8000 байтов памяти — современные редакторы текстов программ требуют в 100 и более раз больше. Операционная система должна была обслуживать 8000 байтов, и компилятор должен был умещаться в 32 Кбайт, в то время как их нынешние потомки требуют для своей работы многих мегабайтов. И что же: это раздутое программное обеспечение стало быстрее и эффективнее? Наоборот. Если бы не аппаратура с ее возросшей в тысячи раз производительностью, современные программные средства было бы просто невозможно использовать.

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

Столь явный взрывной рост размеров программного обеспечения был бы, конечно, неприемлем, если бы не ошеломляющий прогресс полупроводниковой технологии, которая улучшила отношение цена/производительность в степени, не имеющей аналогов ни в какой другой области технологии. Так, с 1978 по 1993 год для семейства процессоров Intel 80х86 производительность увеличилась в 335 раз, плотность размещения транзисторов — в 107 раз, в то время как цена — только в 3 раза. Перспективы для постоянного увеличения производительности сохраняются, при том, что нет никаких признаков, что волчий аппетит, присущий ныне программному обеспечению, будет в обозримом будущем утолен [1]. Такое развитие событий спровоцировало появление многочисленных правил, законов и выводов, которые, как это и бывает в таких случаях, выражаются в универсальных терминах; как таковые, их невозможно ни доказать, ни опровергнуть. Следующие два «закона» чрезвычайно хорошо (хотя и с долей иронии) отражают нынешнее положение дел:

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

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

Причины громозкости программного обеспечения

Итак, два фактора вносят вклад в приятие потребителями программного обеспечения все более растущих размеров:

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

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

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

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

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

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

Сложность как эквивалент мощности

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

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

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

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

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

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

Времени всегда не хватает

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

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

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

Языки и методология проектирования

Хотя исследования в области разработки ПО, являющиеся ключевыми для многих будущих технологий, пользуются неплохой финансовой поддержкой, их результаты, судя по всему, признаются не слишком уместными для использования в современной программной индустрии. Систематическое методичное проектирование, например, имеет репутацию не слишком подходящего, так как для выхода на рынок продуктов, таким образом разработанных, будто бы требуется слишком много времени. Еще хуже обстоят дела с аналитической верификацией и методами доказательства корректности; помимо прочего, эти методы требуют более высокого интеллектуального калибра, чем вошедший в привычку «пробуй и все получится» подход. Неудивительно, что в свете любви потребителей ко всякого рода «бубенчикам и свистулькам», предложения о сокращении сложности с помощью концентрации на базисных принципах отметаются как заведомо абсурдные. Когда в качестве modus operandi выступает возглас «а все работает!», методологии и дисциплина разработки становятся первыми жертвами.

Методологии, связанные с языками программирования, до сих пор являются предметом дискуссий. В 1970-х было принято верить, что проектирование программ должно опираться на хорошо структурированные методы и слои абстракции с четко определенными спецификациями. Лучше всего эта мысль выразилась в концепции абстрактного типа данных, которая и нашла свое воплощение в новых тогда языках, прежде всего в Modula-2 и Ada. Сегодня программисты оставляют хорошо структурированные языки и мигрируют, в основном, к Си. Язык Си не позволяет компилятору даже выполнять контроль безопасности типов, а ведь именно эта функция в наибольшей степени полезна при разработке программ для локализации концептуальных ошибок уже на ранней стадии. Без контроля типов само понятие абстракции в языках программирования становится пустым и имеющим чисто академический интерес. Абстракция может работать только в языках, постулирующих строгий статический типовой контроль для каждой переменной и функции. В этом отношении Си несостоятелен и, в сущности, подобен ассемблерному коду, где, правда, «все работает».

Весьма примечательно, что абстрактный тип данных через 25 лет после своего изобретения появился вновь под названием «объектно-ориентированный». По своей сути этот современный концепт (принимаемый многими как панацея) более всего связан с построением иерархий классов или типов. Более старое понятие не было, в сущности, понято, пока не появился новый ярлык «объектно-ориентированный»; теперь же программисты признали присущую абстрактному типу данных мощь и обратились, наконец, к нему. Однако, чтобы об объектно-ориентированных языках можно было говорить всерьез, в них должна быть реализована строгая статическая типизация, которую нельзя было бы нарушить; это дало бы возможность программисту полагаться на компилятор в деле идентификации разного рода несогласованностей. К сожалению, наиболее популярный язык, С++, неудовлетворителен в этом отношении, потому что было изначально декларировано, что он должен быть совместим со своим предком — языком Си. Широкое принятие С++ подтверждает следующие «законы»:

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

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

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

Проект «Оберон»

Между 1986 и 1989 годами, Йорг Гуткнехт (Jurg Gutkneht) и я разработали и реализовали новую систему программного обеспечения — названную Оберон, предназначенную для рабочих станций, и которая опирается непосредственно на аппаратные средства и, соответственно, не использует каких-либо сторонних программ. Нашей основной целью было продемонстрировать — программное обеспечение может быть разработано так, чтобы использовать лишь небольшую часть памяти и процессорной мощности от обычно требуемых; при этом нет необходимости жертвовать гибкостью, функциональностью или удобствами пользователя.

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

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

Спроектированный и реализованный — от нуля — коллективом из двух человек за три года, Оберон за прошедшее время был перенесен на несколько серийно выпускаемых рабочих станций и приобрел симпатии многих преисполненных энтузиазма пользователей, особенно с тех пор, как стал свободно доступным [2].

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

За счет чего же удалось, затратив всего пять человеко-лет, построить такую представительную программную систему, да еще и дать ее исчерпывающее описание в одной-единственной книге [3]?

Три базисных правила

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

Во-вторых, мы хотели использовать истинно объектно-ориентированный язык программирования — способный обеспечить безопасность типов. В сочетании с нашей верой в то, что первый принцип является даже более обязательным для инструментальных средств, чем для самой создаваемой системы, это вынудило нас спроектировать собственный язык и сконструировать для него компилятор. Так и возник Оберон [4] — язык, в сущности полученный из языка Modula-2 путем удаления из него «ненадежных» особенностей (таких как функции преобразования типа и вариантные записи) вместе с не слишком существенными (примеры — тип-диапазон и перечислимый тип).

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

Расширение типа

Если, например, тип Viewer определен в модуле под названием Viewers, то тип TextViewer может быть определен как расширение Viewer (как правило, в другом модуле, который добавляется к системе). Всякая операция, применяемая к Viewers, может быть применена и к TextViewers, и всякое свойство, которое имеют Viewers, также относится и к TextViewers.

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

Расширение типа является типичной объектно-ориентированной особенностью. Чтобы избежать вводящего в заблуждение антропоморфизма, мы предпочитаем говорить «TextViewers совместимы с Viewers», а не «TextViewers наследуют от Viewers». Мы также избегаем введения совершенно новых терминов для хорошо известных понятий; например, мы остаемся верными термину «тип», избегая слова «класс»; мы сохраняем термины «переменная» и «процедура», избегая новых терминов «экземпляр» и «метод». Несомненно, что наш первый принцип — сосредоточение на сути — равно применим и к терминологии.

Пример типа данных

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

В системном ядре тип данных Text определяется как последовательность символов с атрибутами font, offset и color. Базисные операции редактирования заложены в модуле с названием TextFrames.

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

Активизация операций

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

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

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

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

Сохраняйте систему простой

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

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

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

Цена простоты

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

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

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

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

Заключение или девять уроков от Оберона

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

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

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

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

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

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

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

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

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

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

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


Литература

1. E.Perratore et al., «Fighting Fatware», Byte, Vol.18, No.4, Apr. 1993, pp.98-108.
2. M.Reiser, The Oberon System, Addison-Wesley, Reading, Mass., 1991.
3. N.Wirth and J.Gutknecht, Project Oberon — The Design of an Operating System and Compiler, Addison-Wesley, Reading, Mass., 1992.
4. M.Reiser and N.Wirth, Programming in Oberon — Steps Beyond Pascal and Modula, Addison-Wesley, Reading, Mass., 1992.

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

Warframe: Полное руководство по Оберону — добыча, способности и постройки

Эта статья является частью каталога: Warframe: Полное руководство Содержание < ul class=»table-content-level-1″>

  • Как создать Оберона Прайм
    • Способности Оберона
    • Улучшения Оберона
    • Лучшие сборки Оберона

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

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

    Обновлено Чарльзом Бургаром от 11 февраля 2023 г.: В недавних патчах Оберон получил несколько баффов, увеличив полосу брони Расплаты и усилив один из своих аугментационных модов. Мы обновили это руководство, указав обновленные значения его способностей и улучшений, добавили раздел, в котором обсуждается оптимальное использование осколков архонта, и мы добавили несколько реликвий, связанных с Обероном Праймом, когда он в последний раз выходил из хранилища.

    Содержание

    1. Как создать Оберона
    2. Чертеж Оберона
    3. Оберон Нейроптикс
    4. Системы Oberon
    5. Как создать Оберона Прайма
    6. Чертеж Оберона Прайм
    7. Оберон-Прайм-Нейроптикс
    8. Шасси Оберон-Прайм
    9. Системы Оберон Прайм
    10. Способности Оберона
    11. Статистика
    12. Пассивный
    13. Smite
    14. Hallowed Ground
    15. Продление
    16. Расплата
    17. Улучшения Оберона
    18. Smite Infusion
    19. Hallowed Eruption
    20. Обновление Феникса
    21. Святая расплата
    22. Лучшие сборки Оберона
    23. Стартовая сборка (0 Forma, No Subsume)
    24. Билд поддержки эндшпиля (4 Forma, Roar Subsume)
    25. Билд “Охотник на Эйдолонов/Усиление урона” (Форма 5, Подбор Рева)

    Как создать Оберона

    Warframe: Oberon Complete Guide – Добыча, способности и сборки

    Части Оберона можно получить из тайников в определенных миссиях Рэйлджека, выпадая из ротации A. Это делает Оберона одним из самых сложных Варфреймов для получения . Его основной чертеж можно приобрести на рынке за 30 000 кредитов.

    Чертеж Оберона

    Оберон Нейроптикс

    < h3 id=»оберон-шасси»>Шасси Oberon

    Системы Oberon

    Вернуться к быстрым ссылкам

    Как создать Оберона Прайма

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

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

    Чертеж Оберона Прайм

    Оберон-Прайм-Нейроптикс

    Шасси Оберон-Прайм

    Системы Оберон Прайм

    Вернуться к быстрым ссылкам

    Способности Оберона

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

    < source media=»(min-width: 768px)» size=»963px» data-srcset=»https://static1.thegamerimages.com/wordpress/wp-content/uploads/2022/01/Warframe-Oberon-Feyarch- Fashion.jpg?q=50&fit=crop&w=963&dpr=1,5″/>

    Статистика

    Пассивный

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

    На практике этот пассив дает 25% здоровья, брони и щита связи между вашим Варфреймом и каждым компаньон-союзник, а не просто питомец Оберона. По мере того, как вы увеличиваете характеристики Оберона, повышаются и защитные характеристики вашего питомца. Эта пассивка суммируется с модами Link. Пассивный залог Оберона не работа с MOA или Hounds. Бесплатное оживление за миссию доступно только для компаньона Оберона.

    Smite

    Warframe: Полное руководство по Оберону — добыча, способности и постройки

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

    Эту способность можно включить в систему Гельминта.

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

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

    Хотя игроки не склонны специально выбирать эту способность, Кара лучше всего работает с силой способности. Сила увеличивает урон от этой способности и бонус к урону от радиации, который вы получаете от дополнения Smite Infusion.

    Hallowed Ground

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

    Святая земля: освящает землю перед Обероном праведным огнём, нанося урон любому противнику, стоит в огне.

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

    Враги, которые стоят на Священной земле, будут получать урон дважды в секунду, каждый такт дает небольшой шанс, что цель станет облученной. Цели, пораженные радиацией, будут атаковать ближайших врагов, эффективно превращая Hallowed Ground в способность контроля толпы. Т<сильный>o сделайте эту способность простой в использовании, создайте ее для силы и дальности способностей. Диапазон заставит его покрывать гораздо большую площадь—увеличив его радиус и угол, который он покрывает—в то время как Сила увеличит урон и шанс статуса Священной земли.

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

    Продление

    Warframe: Полное руководство по Оберону — добыча, способности и постройки

    Обновление: Исцеление волны энергии исходят от Оберона к его союзникам, со временем восстанавливая здоровье.

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

    1. Вы со временем восстанавливаете HP.
    2. Если вы упадете, вы будете истекать кровью медленнее.
    3. После того, как вы встанете на Священную землю, вы на короткое время получите усиление брони.

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

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

    Расплата

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

    Расплата: быстро поднимает врагов в воздух, а затем уверенно швыряет их вниз. Враги, поддавшиеся этой силе, могут создать Сферу здоровья.

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

    Возможно, самая сильная часть Расплаты — это полоса брони. Если Расплата атакует врага, находящегося на Священной Земле, эта способность снимет 50 % его базовой брони. Здесь стоит подчеркнуть базовую броню, так как это означает, что последующие заклинания Расплаты имеют дополнительный эффект полоски. Чтобы полностью снять броню с цели, понадобится всего два применения, а если вы сможете достичь 200 % силы способностей, потребуется всего одно применение.

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

    Вернуться к быстрым ссылкам

    Улучшения Оберона

    Warframe: Полное руководство по Оберону – Добыча, способности и сборки

    У Оберона есть улучшения для каждой из его способностей, некоторые из которых сделать Оберона востребованным для миссий на выносливость или охоты на Эйдолонов. <сильный>Улучшения Оберона можно приобрести в синдикатах New Loka или Steel Meridian за 25 000 репутации каждое. Чтобы купить эти моды, вам нужно достичь максимального ранга в любом Синдикате. Кроме того, вы можете получить эти моды через систему обмена игроками Warframe.

    Smite Infusion

    Warframe: Oberon Complete Guide – Добыча, способности и сборки

    Smite Infusion: Улучшение Smite: удерживайте, чтобы применить, дарует всем союзникам в радиусе 15 м дополнительные 100 ед. % радиационного урона к их атакам в течение 40 с.

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

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

    Hallowed Eruption

    Warframe: Полное руководство по Оберону – добыча, способности и сборки

    Священное извержение: Улучшение «Святая земля»: повторно активируйте, чтобы нанести весь оставшийся урон и статус «Радиация». Пассив: +100% к длительности Священной земли.

    Каждый раз, когда вы применяете Священную землю, вы можете повторно применить ее в любой момент, чтобы взорвать способность. Любые враги на поверхности Священной земли получат оставшийся урон, на который Святая земля настроена, — удвоенный урон, указанный для способности, умноженный на ее оставшуюся продолжительность. Это делает Hallowed Eruption надежной DPS-способностью для низкоуровневого контента.

    Урон от этой способности зависит от силы и продолжительности способности. Хотя способность дает вам дополнительную длительность, на это преимущество не влияет длительность способности или любые другие свойства; он суммируется с другими источниками продолжительности. Пока это дополнение установлено, вы можете иметь только один экземпляр Hallowed Ground в любой момент времени.

    Обновление Феникса

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

    Phoenix Renewal: Обновление Augment: получение смертельного урона под действием Renewal вместо исцеления вам или союзникам до 50% здоровья. Этот эффект срабатывает только один раз для каждого союзника каждые 90 секунд.

    Всякий раз, когда цель, находящаяся под действием «Обновления», должна быть повержена, вместо этого она получает 50% своего здоровья и становится неуязвимой на несколько секунд. Этот эффект имеет время восстановления 90 секунд и действует на человека. Phoenix Renewal будет активироваться как для игроков, так и для компаньонов. Хотя HP, восстановленные с помощью этого улучшения, зависят от силы способностей, 90-секундная продолжительность блокировки не зависит от модов длительности способностей. Вы не можете сбросить это время восстановления, повторно активировав Обновление; время восстановления сохраняется даже после завершения обновления. Мы рекомендуем использовать это улучшение, если вы планируете брать Оберона с собой в Арбитраж или любые миссии на выносливость.

    Святая расплата

    Warframe: Полное руководство по Оберону — добыча, способности и постройки

    Святая расплата: Улучшение расплаты: дальность расплаты увеличивается на 40%. Радиус 3 м вокруг каждого затронутого врага дает дополнительную броню союзникам и наносит 300 единиц урона в секунду врагам.

    Нанесение урона цели с помощью Расплаты создаст трехметровый вихрь, который наносит 300 единиц урона в секунду. , каждый тик урона с высокой вероятностью накладывает статус «Радиация». Союзники, находящиеся в этом вихре, вместо этого получают 250 единиц брони, которые добавляются к другим источникам брони и не подвержены влиянию модов. <сильный>Вы можете увеличить радиус действия вихря с помощью диапазона способностей, дополнительную броню с помощью силы способностей и урон в секунду с помощью силы способностей. Бонус дальности Расплаты суммируется с другими модификаторами дальности Способностей.

    Вернуться к быстрым ссылкам

    Лучшие сборки Оберона

    Warframe : Полное руководство по Оберону — добыча, способности и сборки» /></p><source media=

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

    Прежде чем мы перейдем к сборкам, важно отметить, что лучшая защита Оберона — это Танк ХП. Он варфрейм, который может восстанавливать HP и получать большое количество брони, что делает его идеальным кандидатом на адаптацию и некоторые умбральные моды. Что касается способностей Гельминта, мы рекомендуем заменить Smite или Reckoning другой способностью поддержки, такой как Elemental Ward Хромы. Вы также можете включить способность Rhino’s Roar, чтобы дать вашей команде атакующий бафф. Если вы выберете последнее, подумайте о том, чтобы оставить Smite для использования дополнения Smite Infusion.

    Что касается школ Фокуса, Мадурай и Зенурик — хорошие варианты. Мадурай отлично подходит для получения 40% силы способностей для ваших заклинаний «Обновление» и «Священная земля». Зенурик может помочь восстановить Энергию, если вы не возражаете временно отказаться от Обновления.

    Осколки Архонта

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

    Большинство сборок Оберона захотят использовать осколки силы способностей (малиновые). Неплохая идея разместить в ячейке два Осколка скорости сотворения (янтаря) Archon, чтобы облегчить использование Reckoning и Hallowed Ground, но это в основном улучшение качества жизни, а не обязательное требование. Чем больше Силы вы дадите Оберону, тем сильнее будет его исцеление. Ни в одной из сборок, перечисленных ниже, не используются осколки Archon.

    Стартовая сборка (0 Forma, No Subsume)

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

    • Форма: 0
    • Подразумевается: Нет

    Эта стартовая сборка фокусируется на одном: силе способностей. Поскольку Оберон не часто использует свои способности, мы будем использовать Преобразование энергии и Растущая сила как условные бонусы к силе способностей, которые Оберон может привязать к своей способности «Обновление». Umbral Intensify и Augur Secrets еще больше увеличивают общую силу этого билда, чтобы сделать Renewal надежным инструментом выживания.

    Чтобы сохранить Oberon’ s Запас энергии на достойном уровне, Primed Flow и Rage используются для преобразования всего полученного урона в энергию. Оттуда используйте Umbral Vitality и Адаптация для увеличения количества попаданий. Наконец, продление Phoenix без рейтинга используется, чтобы дать вам льготный период на случай, если вы сделаете один шанс. Ранги этого аугмента влияют только на восстанавливаемое здоровье, если в противном случае вы бы умерли, поэтому мы можем позволить себе использовать версию без рейтинга.

    Имейте в виду, что все перечисленные здесь моды Primed являются полностью необязательными. Вы можете заменить любой мод Primed его аналогом по умолчанию и отлично справитесь с этой сборкой. Если вы считаете, что Энергия является проблемой, замените Секреты Авгура на Streamline и Umbral Vitality для их общего варианта. Для арканов используйте все, что у вас есть под рукой. Хороший выбор: Arcane Guardian, Grace, Avenger и Molt Augmented.

    Вернуться к быстрым ссылкам

    Билд поддержки эндшпиля (4 Forma, Roar Subsume)

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

    • Форма: 4 (Аура, Умбрал, В, Д, Д (Эксилус))
    • Подразумевается: Рев (Носорог)

    Так как Оберону не требуется столько силы способностей, чтобы снять броню с помощью Расплаты, нам не нужно использовать Слепую ярость в этой конфигурации, что значительно повышает эффективность наших способностей. Сначала мы стремимся достичь 200% силы способностей, используя теневое усиление и переходную стойкость. Мы усиливаем Umbral Intensify с помощью Umbral Vitality , что также значительно повышает HP Оберона.

    Что касается энергии, мы используем Primed Flow и Ярость, чтобы получать Энергию при получении урона, которую мы сразу же восстановим с помощью Обновления. Адаптация поможет свести к минимуму быстрые попадания по нескольким целям, и мы также будем использовать Растягивание.чтобы упростить использование Hallow Ground и Reckoning. Мы предпочитаем Боевую дисциплину для нашей ячейки ауры, так как она позволяет нам активировать заклинания тайной магии при попадании, такие как Магический страж или Магический мститель. Выберите свой любимый.

    Слот Exilus зависит от вас. Мы рекомендуем использовать Primed Sure Footed для ситуаций, когда вы не находитесь на Священной Земле. В то время как большинство игроков за Оберон будут пытаться играть рядом со своей Священной землей, это делает прыжки пули или перемещение по большим наборам клеток довольно рискованным в контенте Steel Path. Если вы не беспокоитесь о том, что вас оглушат, не стесняйтесь заменить это на Хитрость или Силовой дрифт. Вам нужно понизить рейтинг мода, а не формировать слот Exilus, чтобы он подходил для любого мода.

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

    Вернуться к быстрым ссылкам

    Билд “Охотник на Эйдолонов/Усиление урона” (Форма 5, Подбор Рева)

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

    • Форма: 4 (Аура, Умбрал, V, Двойной рывок (Эксилус))
    • Возможность: Рев (Носорог) ИЛИ Затмение (Мираж)

    Охотник на эйдолонов и сборка специального баффа незначительно отличаются, поэтому в этом разделе мы рассмотрим оба варианта. Для Охотника на Эйдолонов вы захотите использовать Рев Носорога вместо Расплаты и построить как можно больше Силы. Вы также захотите, чтобы Smite Infusion Augment еще больше увеличил урон, наносимый вами и вашей командой. Когда приманки будут повреждены, нажмите «Обновление», чтобы быстро их вылечить. Не забудьте отключить обновление, когда закончите, чтобы быстро восстановить свою энергию. Хотя это и не обязательно, мы рекомендуем Arcane Nullifier, чтобы избежать потери всей вашей энергии во время боя с Эйдолоном.

    Warframe: Полное руководство по Оберону — добыча, способности и сборки

    Сборка с усилением обычно используется для статических миссий на выносливость, таких как защита, и сосредоточена исключительно на усилении урона вашей команды. Мы заменяем Roar для Mirage’s Eclipse и Hunter Adrenaline для Total Eclipse Augment. Вы также можете заменить Primed Continuity на Narrow Minded восьмого ранга, если вы не возражаете стоять прямо над своими союзниками. Стальной заряд также можно обменять на пожертвование энергии, если вы не возражаете против потери силы способностей. Убедитесь, что ваш Оберон стоит на свету, чтобы дать вашей команде усиление урона.

    Не стесняйтесь использовать Рев вместо этого, если вам не нравится Затмение, но оно дает объективно лучший положительный эффект урона, чем Рев и складывается с этой способностью. Для Оберона, ориентированного на положительный эффект, мы рекомендуем использовать Arcane Energize или школу Zenurik Focus, чтобы поддерживать максимальную энергию.

    Вернуться к быстрым ссылкам

    Время на прочтение
    11 мин

    Количество просмотров 15K

    by Niklaus Wirth
    Professor (retired)
    Swiss Federal Institute of Technology (ETH)
    Zurich, Switzerland

    В 1988 году мы с Юргом Гуткнехтом завершили и опубликовали язык программирования Оберон [1, 2], который являлся преемником двух других языков, Паскаля и Модулы-2, разработанных мной ранее. Язык Оберон был спроектирован нами изначально как более рациональный и эффективный, чем Модула-2, что облегчило студентам академической системы образования освоение компьютерной науки. Не останавливаясь на достигнутом, в 1990 году мы построили современную операционную систему (ОС) Оберон для рабочих станций, использующую окна и возможности для обработки текстов. Затем мы опубликовали книгу, раскрывающую детали как компилятора Оберона, так и одноимённой ОС. Книга, названная «Проект Оберон», включала в себя исходные тексты системы.

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

    Однако возникло серьёзное препятствие. Оригинальный компилятор был создан для процессора, уже исчезнувшего с рынка. Так что я решил переписать компилятор для современного процессора. Но в ходе небольшого исследования, я так и не смог подобрать процессор, полностью удовлетворяющий моим критериям ясности, правильности и простоты (clarity, regularity and simplicity). Поэтому мне пришлось спроектировать собственный процессор. Эта идея смогла осуществиться благодаря современному чипу ППВМ (программируемая пользователем вентильная матрица, FPGA), позволившему мне создать аппаратное обеспечение точно так же, как создаётся программная система. Более того, выбор Xilinx® FPGA дал мне возможность переделать систему, не отклоняясь сильно от оригинального проекта 1990 года.

    Новый RISC-процессор реализован на недорогой плате Digilent Spartan®-3 с одномегабайтным модулем статической (SRAM) памяти. Все мои аппаратные доработки касались интерфейса мыши и SD-карты, заменяющей жёсткий диск в старой системе.

    Книга и исходный текст всей системы доступны на сайте projectoberon.com [3,4,5]. Там же доступен отдельный файл S3RISCinstall.zip. Он содержит инструкцию, образ файловой системы для SD-карты и битовые конфигурационные файлы для FPGA (в форме PROM-файлов для флэш-памяти платы Spartan-3), конструктивные части для аппаратного интерфейса SD-карты и мыши.

    RISC-процессор

    Процессор представлен Verilog-модулем RISC5 и состоит из арифметико-логического устройства (АЛУ), массива из шестнадцати 32-битных регистров и управляющего модуля с регистром инструкций IR и программным счётчиком PC (см. более подробно — прим. перев.).

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

    RISC5 импортируется из контекста (environment) RISC5Top, содержащей интерфейсы для различных устройств, отображаемых в память и SRAM (256 МБ х 32 бита). Вся же система (рис. 1)

    Рис. 1. Диаграмма системы с Verilog-модулями.

    содержит следущие Verilog-модули (показано количество строк каждого модуля):

    RISC5Top environment 194
    RISC5 processor 201
    Multiplier integer arithmetic 47
    Divider 24
    FPAdder floating-point arithmetic 98
    FPMultiplier 33
    FPDivider 35
    SPI SD card and transmitter/receiver 25
    VID 1024 x 768 video controller 73
    PS2 keyboard 25
    Mouse mouse 95
    RS232T RS232 transmitter 23
    RS232R RS232 receiver 25

    Я отобразил в память чёрно-белый VGA-дисплей так, чтобы он занимал 1024 х 768 х 1 бит на пиксель = 98,304 байта, по существу, 10 процентов от всей доступной памяти в 1 мегабайт. Доступ к SD-карте, заменившей собой 80 мегабайт из оригинальной системы, осуществляется по стандартному интерфейсу SPI, принимающему и сериализующему байты или 32-битные слова. Клавиатура и мышь подключены по стандартному последовательному интерфейсу PS-2. Кроме этого, имеются кабели последовательного асинхронного RS-232 и многоцелевого 8-битного параллельного интерфейса ввода-вывода. Также модуль RISC5Top содержит миллисекундный счётчик.

    Операционная система Оберон

    В программное обеспечение ОС входит ядро, включающее в себя распределитель памяти (memory allocator) со сборщиком мусора, файловая система вместе с загрузчиком, текстовая система, система просмотра (viewer system) и текстовый редактор.

    Модуль под названием «Oberon» является центральным диспетчером задач, а «System» это базовый командный модуль. Действие (action) вызывается кликом средней кнопки мыши на тексте вида «M.P» в любом отображении на дисплее, где P – имя процедуры, объявленной в модуле M. Если M недоступен, он автоматически загружается.
    Большинство команд редактирования текста вызываются обычными мышиными кликами, в которых левая кнопка обслуживает каретку, помечающую текущую позицию в тексте, а правая кнопка отвечает за выделение текста.

    В модуль «Kernel» входят дисковое хранилище (disk-store management) и сборщик мусора.
    Просмотрщики (viewers) располагаются плиткой и не накладываются друг на друга. Стандартная разметка отображает две вертикальных дорожки с неограниченным количеством просмотрщиков. Вы можете увеличивать или уменьшать их, а также перетаскивать за титульную полоску. На рис. 2 показан пользовательский интерфейс на мониторе, подключенному к плате Spartan-3 с клавиатурой и мышью.


    Рис. 2. Пользовательский интерфейс на мониторе и Spartan-3 справа внизу.

    Загруженная система занимает 112,640 байт в модульном пространстве (21 процент) и 16,128 байт в куче (3 процента). Она состоит из следующих модулей (с числом строк каждого), показанных на рис. 3:

    Kernel 271 (inner core)
    FileDir 352
    Files 505
    Modules (loader) 226
    Viewers 216 (outer core)
    Texts 532
    Oberon 411
    MenuViewers 208
    TextFrames 874
    System 420
    Edit 233

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

    Компилятор Оберона

    Компилятор встроен в систему и использует простой метод рекурсивного нисходящего синтаксического разбора. Активация компилятора делается с помощью команды ORP.Compile @. Парсер получает символы от сканера, обрабатывающего идентификаторы, числа и специальные символы (такие, как BEGIN, END, + и другие). Эта схема доказала свою пригодность и элегантность во многих приложениях и описана в моей книге «Compiler Construction»[6,7].

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

    Все адреса переменных рассчитываются относительно базового регистра. Это R14 (стековый указатель) для локальных переменных (задаётся при входе в процедуру в рантайме), или R13 для глобальных и импортированных переменных. Базовые адреса загружаются по запросу из глобальной таблицы модулей, чей адрес хранится в регистре R12. Регистр R15 использован для адресов возврата, согласно RISC-архитектуре. Остальные регистры, R0 – R11, доступны для вычисления выражений и передачи процедурных параметров.

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

    ORP parser 968
    ORG code generator 1120
    ORB base def 435
    ORS scanner 311

    Компилятор занимает 115,912 байт (22 процента) модульного пространства и 17,508 байт (4 процента) кучи (перед компиляцией). Его исходный код размером около 65 килобайт. Компиляция самого компилятора отнимает всего несколько секунд на 25-МГц RISC-процессоре [8].

    Компилятор всегда генерирует проверки для индексов массива и указателей на NIL. Это порождает трапы (trap, ловушка — прим. перев.) в случае нарушения. Такая техника гарантирует высокий уровень защиты от ошибок и повреждений. Фактически, целостность системы может быть нарушена только путём использования таких операций псевдо-модуля SYSTEM, как PUT и COPY. Эти операции должны быть использованы ограниченно, только в модулях драйверов устройств и их легко отыскать по имени SYSTEM в списке импорта. Вся же система запрограммирована на самом Обероне, без использования ассемблерных кодов.

    Я выбрал плату Digilent Spartan-3 из-за её ценовой доступности и простоты, что делает её подходящей для образовательных учреждений, приобретающих целые наборы для классов. Большая выгода так же и в присутствии статической RAM на плате, которая позволяет подключаться (interfacing) напрямую (и даже считывать байты). К сожалению, новейшие платы используют динамическую RAM, которая хотя и вместительнее, но более сложна для подключения, требует дополнительные контуры для обновления и инициализации (калибровки). Подобная схемотехника может быть не менее сложной, чем весь процессор со статической RAM. Даже если контроллер поставляется на чипе, он нарушает наш принцип, согласно которому всё должно быть доступно для контроля.

    Мысли напоследок

    Более 40 лет назад Ч. Хоар отметил, что во всех ответвлениях науки и технологии студенты подвергаются влиянию большого количества примеров серьёзных конструкций до того, как наберут собственный экспериментальный опыт. Программирование и проектирование программ подчёркивают эту парадигму. Студентам приходится писать программы с самого начала, вместо изучения различных образцов.
    Причина столь ужасного положения была в том, что почти не существовало литературы с квалифицированными примерами. Поэтому я решил исправить ситуацию и написал книгу «Алгоритмы и структуры данных» в 1975 году. В дальнейшем (вместе с Ю.Гуткнехтом), в рамках преподавания курса операционных систем, я спроектировал систему Оберон (1986—88).
    Спустя время, преподавание программирования не получило заметного улучшения в силу того, что системы драматически усложнились и увеличились в размерах. Хотя опенсурс и получил признание, но он не смог изменить ситуацию, поскольку большинство программ создаются лишь бы поскорее их запустить, а не для лучшего понимания их человеком.
    Я продолжаю делать смелые предположения о том, что все программы должны быть созданы не только для компьютера, но и для понимания человеком. Они должны быть доступны. Это задача гораздо сложнее, чем создание исполняющихся программ, даже если они корректны и эффективны. Это подразумевает, что не должно быть ассемблерных вставок.

    Результат игнорирования человеческого фактора приводит к тому, что повсюду возникают не очень тщательно спроектированные приложения, доводимые до рабочего состояния отладкой, иногда с мрачными последствиями. Для достижения понимаемости стоит придерживаться простоты и порядка, отказываясь от ненужных украшений и, избегая колокольчиков со свистками, различать общепринятость и пригодность (conventional and convenient).

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

    И наконец, преимущество краткости ещё и в том, что можно безопасно надстраивать такую систему, не опасаясь неизвестных возможностей, таких как бэкдоры (back doors). Это существенное свойство, очень важное для систем, критичных к вопросам безопасности, если учесть увеличивающуюся опасность атак на целостность систем. Не менее важно, что и аппаратная часть нашей системы не содержит никаких скрытых частей. Никто не сможет дать гарантий для систем, построенных на фундаменте, недоступном для понимания во всей полноте.

    Благодарность

    Я очень признателен Полу Риду за его неоценимый вклад. Он предложил мне отредактировать книгу «Проект Оберон» и также предложил заново реализовать всю систему на FPGA. Пол был неиссякающим источником ободрения. Заменить диск на SD-карту была его идея и он же предоставил SPI, PS-2 и VID Verilog-интерфейсы.

    Ссылки

    1. www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf
    2. www.inf.ethz.ch/personal/wirth/Oberon/PIO.pdf
    3. www.inf.ethz.ch/personal/wirth/ProjectOberon/index.html
    4. www.inf.ethz.ch/personal/wirth/Oberon/PIO.pdf
    5. www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf
    6. www.inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction1.pdf
    7. www.inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction2.pdf
    8. www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Applications.pdf (Ch. 12)

    Приложение

    Язык Лола и его трансляция в Verilog

    Язык описания аппаратуры (hardware-description language, HDL), названный Лола, был определён в 1990 году в целях преподавания основ проектирования аппаратного обеспечения. Это было время, когда текстовые определения начинали заменять принципиальные электрические схемы и тогда же становились доступны первые FPGA, хотя и не достигшие ещё промышленного уровня. Для Лолы был создан компилятор, генерирующий битовые файлы, пригодные для загрузки в FPGA. Форматы битовых файлов раскрыты фирмами Algotronix, Inc. и Concurrent Logic Inc. Оба формата позволяли работать с ячейками довольно простых структур, оптимальных для автоматической разводки.

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

    Очевидным решением было построить такой компилятор Лолы, который не будет генерировать патентованные бит-файлы, но позволит транслировать в язык, для которого Xilinx предоставляет специальный инструмент. Мы выбрали Verilog. Это решение подразумевало несколько экстравагантный обходной путь: во-первых, модуль Лолы должен быть распарсен (parsed), затем оттранслирован, и в итоге распарсен снова. На всех этих этапах мы должны гарантировать, что компилятор Лолы имеет надлежащий контроль ошибок и возможности проверки типов.

    Чтобы подтолкнуть разработку Лолы-2, нам потребовалось переформулировать на Лолу все модули RISC5-процессора. Что и было сделано.

    Язык Лола

    Лола является маленьким, немногословным языком в стиле Оберона (см. www.inf.ethz.ch/personal/wirth/Lola/Lola2.pdf). Для краткости, мы покажем здесь только один пример текста на Лоле (рис. 1). Единица исходного текста называется модуль. Его заголовок определяет имя модуля, имена и типы входных и выходных параметров. После заголовка следует секция объявлений локальных объектов, таких как переменные и регистры. Далее располагается секция определения значений переменных и регистров. BYTE задаёт массив из 8 бит.

    MODULE Counter0 (IN CLK50M, rstIn: BIT;
    	IN swi: BYTE; OUT leds: BYTE);
    
    TYPE IBUFG := MODULE (IN I: BIT; OUT O: BIT) ^;
    VAR clk, tick0, tick1: BIT;
    	clkInBuf: IBUFG;
    	REG (clk) rst: BIT;
    	cnt0: [16] BIT; (*half milliseconds*)
    	cnt1: [10] BIT; (*half seconds*)
    	cnt2: BYTE;
    
    BEGIN leds := swi.7 -> swi : swi.0 -> cnt1[9:2] : cnt2;
    	tick0 := (cnt0 = 49999);
    	tick1 := tick0 & (cnt1 = 499);
    	rst := ~rstIn;
    	cnt0 := ~rst -> 0 : tick0 -> 0 : cnt0 + 1;
    	cnt1 := ~rst -> 0 : tick1 -> 0 : cnt1 + tick0;
    	cnt2 := ~rst -> 0 : cnt2 + tick1;
    	clkInBuf (CLK50M, clk)
    END Counter0.
    

    Рис. 1. Исходный текст на Лоле показывает счётчик секунд и миллисекунд, отображаемых на индикаторах платы.

    Компилятор Лолы

    Компилятор использует простой метод рекурсивного нисходящего синтаксического разбора. Он активируется на выбранном исходном тексте Лолы командой LSC.Compile @. Парсер получает символы от сканера, обрабатывающего идентификаторы, числа и специальные символы (такие, как BEGIN, END, + и другие). Эта схема доказала свою пригодность и элегантность во многих приложениях и описана в книге «Compiler Construction (Part 1 и 2)».

    Вместо генерирования текстов Verilog прямо на лету, парсер сначала создаёт дерево операторов, что более подходит для дальнейшей обработки. Такой подход имеет преимущество в том, что любой требуемый вывод может быть легко сгенерирован подходящим транслятором. Один из таких — транслятор в Verilog. Первая команда LSV.List outputfile.v. Другая команда может транслировать в VHDL или просто вывести дерево. Третья может сгенерировать список соединений (netlist) для дальнейшей обработки разводчиком.

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

    LSS scanner 159
    LSB base 52
    LSC compiler/parser 503
    LSV Verilog generator 215

    Инструкции по транлсяции из Лолы в Verilog можно найти здесь: www.inf.ethz.ch/personal/wirth/Lola/LolaCompiler.pdf.

    Различия между программными и аппаратными «программами»

    В прошлом предпринималось множество усилий для того, чтобы заставить языки HDL выглядеть как «обычные» языки программирования. Кроме этого, HDL имеют «двойников» среди других ЯП, адаптируясь к их стилю. Например, Verilog произошёл от Си, VHDL от Ады и Лола от Оберона. Но мы считаем, что важно видеть фундаментальные отличия между двумя этими классами, в частности, в присутствии синтаксических сходств, или даже идентичностей. Что же это за фундаментальные отличия?

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

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

    Идея Джона фон Неймана представить процессорную архитектуру на базе секвенсора (sequencer) была гениальной. Секвенсор содержит регистр инструкций, согласно которым в каждом такте выбираются определённые схемы и игнорируются остальные, что приводит к умелому повторному использованию различных частей АЛУ. Такты или шаги по своей природе последовательные, стало быть, возможно переприсвоить значения переменным согласно тому, как программный счётчик соотносит их с определёнными местами в программе и в последовательности инструкций. Идея секвенсора сделала возможной выполнение огромнейших программ на относительно простых схемах.

    Итак, Лола-2 это HDL в стиле ЯП Оберон. Представленный здесь компилятор транслирует модули Лолы в Verilog-модули. Преимущества Лолы как в простой и привычной структуре языка, так и в акцентировании компилятора на проверку типов и усовершенствованной диагностике ошибок. Полный набор модулей для RISC-процессора, описанных на Лоле: www.inf.ethz.ch/personal/wirth/Lola/index.html

    Понравилась статья? Поделить с друзьями:
  • Как найти величину банковской ставки
  • Как найти человека если он в колонии
  • Как составить меню на день с учетом калорий
  • Как найти периметр квадрата онлайн
  • Как составить план по книжке