Содержание
Версии Cisco IOS и правила лицензирования
IOS (Internetwork Operation System) — операционная система, под управлением которой работает большая часть маршрутизаторов и коммутаторов Cisco. Функционал конкретного оборудования зависит от того, какие функции поддерживает установленный на нём образ IOS и от физических компонентов этого оборудования.
Задача данной статьи — помочь разобраться в том, какие бывают версии IOS и как происходит лицензирование. Есть семейство релизов — это группа IOS-ов для разных устройств, относящихся к одной и той же версии и базирующейся на общих компонентах исходного кода. Например, есть семейства 12.3, 12.4, 15.0, 15.1 и т. п. В рамках каждого из них поддерживается большой набор утсройств. Кстати, после семейства 12.4 произошли большие изменения как в системе лицензирования, так и в некоторых принципах распространения IOS и в результате появилось сильно отличное следующее семейство 15.0. Обратите внимание, что IOS-ов 13 и 14 нет.
В пределах одного семейства может быть несколько линеек IOS-ов. Например, в 12.4 есть две линейки:
- 12.4(1), 12.4(3), 12.4(5), 12.4(7), 12.4(8) — это основная линейка (Mainline train или Maintenance Deployment releases(MD)) Это консервативная линейка, где версии отличаются одна от другой в основном исправлением найденных ошибок и уязвимостей.
- 12.4(2)Т, 12.4(4)Т, 12.4(9)Т — технологическая линейка, каждый образ этой линейки основан на образе основной, с добавлением поддержки некоторых новый программных или аппаратных функций Например, 12.4(2)Т основан на 12.4(1).
В данном случае не так важно запомнить конкретные линейки, скорее следует понять принцип их построения. Дополнительные линейки (такие как Т обычно обозначаются большими английскими буквами) и их может быть произвольное количество в зависимости от задач компании Cisco в конкретный момент времени. Как уже было сказано выше, начиная с семейства 15.0 правила построения линеек слегка изменились.
Пока давайте убедимся, что то что было сказано про линейки и семейства пошло нам на пользу: имеется образ 12.4(20)Т1 — как понять его название?
- 12.4 — семейство IOS-ов,
- 20 — номер релиза в рамках этого семейства,
- Т — признак того, что это технологический релиз, отличающийся от основного поддержкой каких-то новых функций,
- 1 — номер ребилда данного релиза (такое тоже бывает, если необходимо внести незначительные изменения в релиз, то меняется номер ребилда, а не добавляется новый релиз).
Лицензирование Cisco IOS
Лицензия на IOS — важный компонент вашего сетевого устройства, так как в конечном итоге именно от неё зависит итоговый набор поддерживаемых функций и технологий. До семейства 15.0 существовало 8 вариантов лицензий, каждый из которых применялся к определённой версии IOS, то есть, покупая лицензию на IP телефонию, например, вы получали образ IOS в котором присутствует функционал IP телефонии. Начиная с версии 15.0 количество вариантов лицензий уменьшилось и изменился механизм активации лицензий.
До семейства 15.0 были доступные следующие варианты лицензирования:
- IP Base (самый урезанный вариант, с поддержкой IPv4, trunking, DSL и др.
- IP Voice (то же плюс IP телефония).
- Advanced Security (то же плюс Firewall, IDS/IPS, IPSec, 3DES, VPN) — образ с различными функциями безопасности.
- SP Services (IP Voice плюс SSH/SSL, ATM, VoATM, MPLS) — образ для провайдеров, с поддержкой различных WAN протоколов.
- Enterprise Base (IP Voice плюс Apple Talk, IPX, IBM layer 3 routed protocols) — образ для крупного бизнеса с поддержкой различных протоколов третьего уровня помимо IPv4.
- Advanced IP Services (то же что Advanced Security плюс SP Services).
- Enterprise Services (то же что Enterprise Base плюс SP Services).
- Advanced Enterprise Services — в этом образе доступно всё что может предоставить оборудование.
Такова была политика лицензирования. Если вам необходимо купить оборудование, вы смотрите в конфигураторе на сайте Cisco какой образ IOS для вашего оборудования необходимо лицензировать исходя из нужного набора функций. Пакеты 6,7 и 8 условно называются премиальными.
Последняя версия старого семейства 12.4(24)Т сменилась семейством 15.0, в котором Cisco отказалась от большого количества линеек. Теперь все релизы выпускаются последовательно, но делятся на стандартные и релизы с расширенной поддержкой. Такая практика напоминает, например, политику выпуска Ubuntu Linux, где LTS релизы можно рассматривать как аналоги релизов IOS с расширенной поддержкой. Расширенные релизы обозначаются буквой M (или EM — Extended Maintenance). Стандартные релизы — это условно говоря, аналог того, что раньше называлось техническим релизом. EM релизы выходят с интервалом 16 — 20 месяцев.
Рассмотрим пример: Вышел релиз 15.0(1)М — это релиз с расширенной поддержкой. Затем последовательно выходят стандартные релизы, в которых накапливается новый функционал: 15. 1(T), 15.1(2)T, 15.1(3)T. Затем все эти изменения фиксируются в очередном релизе с расширенной поддержкой 15.1(4)M. Между выходом 15.0(1)М и 15.1(4)M проходит 20 месяцев. Таким образом, если всё работает хорошо и нового функционала не требуется, то можно обновляться только по мере выхода EM релизов, а если не хватает каких-то функций, то они могут появиться в очередном Т-релизе.
Давайте снова проверим наши познания в нумерации релизов начиная с 15-го семейства. Имеется образ 15.1(1)Т1:
- 15 — мажорный номер семейства,
- .1 — минорный номер семейства,
- (1) порядковый номер релиза,
- Т — стандартный релиз (без расширенной поддержки),
- 1 — номер ребилда.
Лицензирование для маршрутизаторов второго поколения (ISR G2: 1900, 2900, 3900) отличается от того что мы описывали выше. Если раньше надо было покупать и скачивать один из 8 образов IOS в зависимости от того, какие функции нам требуются, то теперь скачивается универсальный образ, в котором пакеты функций изначально заблокированы, но могут быть открыты при помощи специальной процедуры активации. Вместо 8 версий IOS-ов имеется одна версия с 4мя пакетами:
- IP Base — пакет всегда активирован по умолчанию, содержит функции для работы с BGP, OSPFm EIGRP, ISIS, RIP, PBR, IGMP, Multicast
- Security — активируемый дополнительно пакет, позволяющий работать с Firewall, SSL VPN, DMVPN, IPS, GET VPN, IPSec и т.п.
- Data — активируемый пакет, позволяющий работать с MPLS, BFD, RSVP, L2VPN, L2TPv3, IP SLA и т.п.
- Unified Communication — активируемый пакет, не доступный для устройств линейки 1900, позволяющий работать с CUBE, SRST, Voice Gateway, CUCME, DSP, VXML и другими функциями, необходимыми для организации голосовых коммуникаций.
Выше было сказано, что имеется один универсальный образ для таких устройств, но, на самом деле это не совсем верно — есть два образа universalk9 и universalk9_npe. Отличаются они тем, что в npe версии убраны функции, связанные с шифрованием (IPSec, SSL и т.п.) Соответственно на этой версии активация пакета безопасности не сработает. NPE образ удобен для ввоза в страны, в которых есть особые правила по ввозу криптографических устройств (к таковым относится и Россия). В любом случае, даже эта небольшая путаница с образами выглядит гораздо проще, чем 8 отдельных IOS-ов. 3 активируемых пакета гораздо удобнее включать, тем более, что можно делать комбинации из пакетов, включив, 1, 2, или все три.
Как восстановить загрузку Cisco IOS (восстановление образа IOS)
Давайте представим, что у Вас не загружается маршрутизатор / коммутатор Cisco. Возможно, Вы случайно удалили IOS, потому что ошиблись при вводе команд и не прочитали внимательно предупреждение от системы. Или же образ ОС повредился по независящим от Вас причинам. В любом случае это типичная проблема, с которой рано или поздно сталкивается каждый сетевой инженер. Безусловно, без фундаментальных знаний и навыков восстановить образ операционной системы IOS на маршрутизаторах Cisco и коммутаторах Catalyst крайне сложно. Однако это полное пошаговое руководство позволит Вам легко решить подобные проблемы. И в кратчайшие сроки восстановить работоспособность профессионального сетевого оборудования.
Содержание:
- В каких случаях может потребоваться восстановление образа IOS
- Как восстановить загрузку IOS на маршрутизаторе Cisco или коммутаторе Catalyst
- Восстановление образа Cisco IOS на маршрутизаторе из режима ROMMON по TFTP
- Восстановления Cisco IOS на коммутаторе Catalyst с помощью консольного кабеля (rollover)
- Восстановление web-интерфейса на коммутаторе Catalyst с помощью TFTP
- Выводы
В каких случаях может потребоваться восстановление образа IOS
Прежде всего, давайте разберемся в том, как понять, что причиной неработоспособности устройства является именно проблема с операционной системой IOS. Если Вы подключились к маршрутизатору и видите такую картину — это означает, что прошивка маршрутизатора не загружается.
В случае с коммутатором Catalyst в аналогичной ситуации картина будет точно такой же.
Это означает, что нужно выполнить восстановление образа Cisco IOS.
Как восстановить загрузку IOS на маршрутизаторе Cisco или коммутаторе Catalyst
Теперь давайте рассмотрим последовательность действий, необходимых для восстановления загрузки Cisco IOS. Стоит отметить, что для коммутаторов Catalyst и маршрутизаторов инструкции будут отличаться.
Восстановление образа Cisco IOS на маршрутизаторе из режима ROMMON по TFTP
К сожалению, как мы уже выяснили, иногда образ операционной системы IOS на Вашем сетевом маршрутизаторе Cisco может быть поврежден. Чтобы вернуть оборудованию работоспособность — следует выполнить восстановление образа IOS из режима ROMMON. Для этого сначала просто вводим в командную строку следующий набор команд:
IP_ADDRESS=192. 168.29.55 IP_SUBNET_MASK=255.255.255.0 DEFAULT_GATEWAY=192.168.29.1 TFTP_SERVER=192.168.29.3 TFTP_FILE=c2900-universalk9-mz.SPA.154-3.M10.bin tftpdnld
Перечисленные выше команды имеют следующие значения:
- IP_ADDRESS — IP-адрес Вашего устройства;
- IP_SUBNET_MASK — маска подсети в Вашей сети;
- DEFAULT_GATEWAY — шлюз по умолчанию в Вашей сети;
- TFTP_SERVER — IP-адрес TFTP-сервера в Вашей сети;
- TFTP_FILE — файл образа Cisco IOS, который нужно скачать c TFTP-сервера;
- tftpdnld — команда для старта скачивания образа по TFTP.
Система предупредит Вас о том, что данные на флешке устройства будут перезаписаны (потеряны). Для продолжения копирования нужно нажать y. После завершения загрузки с TFTP-сервера нового образа операционной системы нужно перезагрузить устройство. Для этого вводим команду reset:
Если все действия были выполнены правильно — маршрутизатор запустится уже с восстановленным образом IOS.
Читайте также: Как активировать лицензию (пробную) Cisco.
Восстановления Cisco IOS на коммутаторе Catalyst с помощью консольного кабеля (rollover)
Теперь давайте рассмотрим, как выполняется восстановление образа Cisco IOS на коммутаторе Catalyst. Технически такая процедура осуществляется с помощью консольного кабеля (rollover). В командную строку нужно ввести следующий набор команд:
switch: flash_init switch: load_helper switch: copy xmodem: flash:c3560-ipservicesk9-mz.150-2.SE11.bin
Далее выполняем передачу файла по протоколу Xmodem. Для этого в программе эмуляции терминала MiniCom нажимаем комбинацию клавиш Ctrl + a, затем z, затем s (Send files).
Выбираем в списке Xmodem.
Выбираем файл образа Cisco IOS — c3560-ipservicesk9-mz.150-2.SE11.bin, выделяем его курсором и нажимаем пробел (Space), затем — Enter. В результате должна начаться отправка файла.
Процесс загрузки может занять несколько часов.
Когда файл загрузился — выполняем запуск операционной системы на коммутаторе. Для этого вводим в командную строку следующую команду:
boot flash:c3560-ipservicesk9-mz.150-2.SE11.bin
Восстановление web-интерфейса на коммутаторе Catalyst с помощью TFTP
Также в работе с сетевым оборудованием может возникнуть ситуация, при которой требуется восстановление web-интерфейса на коммутаторе Catalyst. Подобную процедуру также можно выполнить с помощью TFTP. Для начала — выполняем настройку сети на коммутаторе. Устройство должно «видеть» Ваш TFTP-сервер. Вводим в командную строку следующий набор команд:
switch> enable switch# configure terminal switch(config)# interface vlan 1 switch(config-if)# ip address 192.168.29.55 255.255.255.0 switch(config-if)# no shutdown switch(config-if)# end switch#
Далее — выполняем очистку флеш-накопителя, чтобы там не осталось «мусора». Для этого вводим следующую команду в командную строку:
switch# erase flash
Запускаем копирование web-интерфейса из TFTP и его распаковку на флеш-накопитель:
switch# archive tar /xtract tftp://192.168.29.3/c3560-ipservicesk9-tar.150-2.SE11.tar flash:
Если Вы все сделали правильно — восстановление web-интерфейса на коммутаторе Catalyst должно было пройти успешно.
Выводы
Выполнить самостоятельно восстановление загрузки Cisco IOS (восстановление образа Cisco IOS) намного проще, чем кажется на первый взгляд. И такие навыки точно пригодятся в работе сетевым и системным инженером, а также — многим другим ИТ-специалистам. Надеемся, что наше пошаговое руководство позволит Вам избежать типичных ошибок новичков. И научит Вас уверенно работать с таким профессиональным сетевым оборудованием.
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.
Больше похожих постов
Как открыть файл ISO: 4 простых способа
4 марта 2021ЛикбезТехнологии
Есть несколько вариантов — выбирайте тот, что больше нравится.
Поделиться
0
Файлы ISO являются одним из форматов образов или, другими словами, точных копий дисков. Они используются для распространения установщиков операционных систем, программного обеспечения, игр, медиаконтента. ISO‑файл можно записать на физический носитель или просмотреть его содержимое, минуя этот шаг.
По большому счёту, ISO — это архив со структурированными файлами. Их можно открыть средствами операционной системы или с помощью подходящего приложения.
1. Как открыть файл ISO средствами ОС
Все современные ОС умеют работать с ISO‑файлами, они монтируют их к файловой системе и позволяют взаимодействовать с содержимым. Помимо просмотра, можно также записать образ на физический носитель.
Windows
Начиная с Windows 8 в системе реализована поддержка ISO, поэтому для работы с образом нужно лишь найти его в проводнике и открыть двойным щелчком. Через пару секунд образ диска появится в разделе съёмных носителей в «Моём компьютере». Для записи следует вызвать контекстное меню и выбрать «Записать образ диска».
Если у вас Windows 7 — воспользуйтесь другими вариантами, описанными ниже.
macOS
Операционная система Apple также умеет монтировать файлы ISO и делает это с помощью встроенной утилиты DiskImageMounter. Она запускается автоматически, если попытаться получить доступ к образу в Finder или через пункт контекстного меню «Открыть».
Linux
Все популярные Linux‑дистрибутивы легко открывают ISO‑файлы собственными средствами без какого‑либо дополнительного ПО. Нужно лишь сделать правый клик на файле и выбрать «Подключить архив» или «Открыть с помощью…» → «Менеджер архивов». В первом случае ISO‑образ смонтируется, во втором — станет доступным для просмотра.
Кроме того, можно записать образ на диск, если выбрать в меню «Открыть с помощью…» → Disk Image Writer.
2. Как открыть файл ISO с помощью архиватора
Поскольку ISO‑образ по сути является архивом — его легко открыть в любом архиваторе. Например, WinRAR, 7‑Zip и других. Достаточно вызвать контекстное меню и выбрать соответствующую команду.
- Скачать WinRAR →
- Скачать 7‑Zip →
3. Как открыть файл ISO с помощью специализированного ПО
Такие приложения понадобятся, когда необходимо не просто просмотреть содержимое образа, а эмулировать его подключение к виртуальному приводу для установки игры или воспроизведения в проигрывателе Blu‑ray. Подобные программы имитируют работу дисковода и заставляют систему думать, что в компьютер вставлен физический диск, даже если отсутствует сам привод.
Существует множество утилит для эмуляции дисковода и работы с образами. Рассмотрим, как открыть ISO‑файл в двух наиболее популярных.
Daemon Tools Lite
Самая известная программа для работы с образами дисков. Она платная, но имеет бесплатную Lite‑редакцию с базовыми возможностями, которых будет более чем достаточно, чтобы открыть ISO‑файл.
Скачайте Daemon Tools Lite по ссылке и установите, следуя подсказкам мастера. Для получения бесплатной версии выберите вариант «Бесплатная лицензия с рекламой».
Запустите утилиту и нажмите на кнопку «Быстрое монтирование». Укажите файл ISO‑образа и щёлкните «Открыть». После этого диск появится в проводнике, а если в нём есть меню автозапуска — оно тут же будет предложено.
UltraISO
Как и предыдущее, это приложение позволяет монтировать, редактировать, конвертировать и записывать образы, а также создавать загрузочные носители. UltraISO предлагается на платной основе, однако имеет бессрочный пробный период с ограничением в 300 МБ на редактирование образов и напоминанием о покупке. К счастью, на монтирование дисков это не распространяется.
Скачайте UltraISO по ссылке и установите его. Откройте приложение, выбрав в окне запуска «Пробный период».
Перейдите в меню «Сервис» → «Смонтировать на виртуальный диск…».
Щёлкните по кнопке с тремя точками, выберите ISO‑файл и нажмите «Смонтировать». Образ появится в проводнике, и можно будет просмотреть его содержимое или выполнить автозапуск.
4. Как открыть файл ISO на Android
Довольно редкий сценарий, но тоже вполне реальный. Открыть образ на смартфоне можно с помощью архиватора с поддержкой ISO. Например, RAR или ZArchiver. Просто установите приложение, запустите его и извлеките файлы из нужного образа.
Загрузить
Цена: Бесплатно
Загрузить
Цена: Бесплатно
Читайте также 💿⚙️💻
- 16 бесплатных программ для Windows, которые должны быть у каждого
- Как переустановить Windows: пошаговая инструкция
- Как создать образ диска в формате ISO
- Как конвертировать DjVu в PDF: 4 бесплатных инструмента
- Как создать загрузочную флешку с Linux
Профессия iOS-разработчик от Skillbox 2023: обзор курса и отзывы | Loratravels
Daniel Iversen
Перейти к разделу:
Профессия iOS-разработчик
Профессия Flutter-разработчик
Профессия Мобильный разработчик
Курс iOS-разработка для начинающих
Курс Тестирование мобильных приложений
Skillbox – это образовательная платформа, где можно пройти специализированные курсы, прослушать актуальные вебинары и даже получить новую профессию. На Skillbox собраны самые востребованные и трендовые специальности, позволяющие с легкостью трудоустроиться по окончанию обучения. Удобство платформы заключается в том, что Вы можете обучаться в любое время и в любом месте, поскольку предполагается удаленное онлайн-обучение.
Учеба в Skillbox – это не только теоретические лекции, но и практические задания, благодаря которым Вы сможете изучить реальные кейсы. Задания Вы будете выполнять в рамках проектов от реальных крупных заказчиков и партнеров. Вести Вас во время обучения будут кураторы, которые поделятся опытом в решении разнообразных бизнес-задач и необходимыми инструментами.
Также после прохождения обучения Вы сможете обратиться в Центр Карьеры, где Вам помогут составить резюме, пройти собеседование и успешно трудоустроиться. Для студентов Skillbox доступен Лекторий. Лекторий – это открытая площадка, где проводятся выступления со спикерами, воркшопы и различные мероприятия.
Узнать подробнее обо всех доступных курсах и профессиях на платформе Skillbox можно на официальном сайте.
Rawpixel/Программирование и разработка
Профессия iOS-разработчик
Образовательная платформа Skillbox предлагает пройти обширный обучающий курс по профессии iOS-разработчик. Освоение данной профессии позволит Вам создавать приложения и сервисы для мобильных телефонов, работающих на платформе Apple. Это очень перспективное направление, т.к. пользователей, предпочитающих именно эту платформу, с каждым годом становится всё больше. Вы освоите язык программирования Swift и научитесь проектировать интерфейсы, тестировать код и загружать приложения в App Store.
Данный курс подойдет новичкам, начинающим программистам и программистам, которые хотели бы освоить дополнительную специализацию. Длительность программы по профессии iOS-разработчик составляет 1 год.
Обучение будет проходить на специальной онлайн-платформе Skillbox, где Вам будет доступно более 300 лекций в формате видеоматериалов, а также множество практических заданий, направленных на оттачивание теоретических знаний. Учиться можно в любое удобное для Вас время. Также Ваше обучение будет сопровождать куратор, который ответит на любые организационные вопросы и будет проверять Ваши «домашние задания». За время учебы Вы приобретете следующие профессиональные навыки:
- Программирование на языке Swift;
- Работа с многопоточностью и передачей больших объёмов данных по сети;
- Проектирование мобильных приложений;
- Работа с архитектурными моделями MVC, MVVM, SOLID;
- Создание ярких и запоминающихся интерфейсов для приложений.
За время обучения Вы также выполните несколько самостоятельных проектов, например, создадите приложение для доставки еды и новостное приложение. Один из проектов будет командным, другое – индивидуальным. Данные проекты впоследствии станут частью Вашего профессионального портфолио.
Поскольку курс будет длиться год, то он тематически разделен на несколько модулей, которые включают в себя изучение языка Swift, работу с системой Git, языком запросов SQL и некоторые другие области. Вы разберете такие вопросы, как:
- Основы разработки на Swift;
- Переменные и числовые типы;
- Работа со строками;
- Логические типы и управление потоком;
- Работа с массивами;
- Работа со словарями;
- Основы разработки UI;
- ООП;
- Списки;
- Сетевые запросы;
- Анимация;
- Архитектура приложения;
- Тестирование;
- Асинхронное программирование;
- Фреймворки;
- Многопоточность.
По отзывам студентов, за время обучения Вы получите множество профессиональных навыков, например, научитесь разрабатывать мобильные приложения для iOS и работать с основными алгоритмами сортировки и поиска, писать реактивный код с использованием RxSwift и владеть iOS SDK, получите опыт командной работы в Git и опыт разработки многопоточных приложений, сможете верстать сложные интерфейсы с помощью UIKit и Swift и следовать принципам ООП и SOLID, а также применять паттерны проектирования.
Узнать подробнее о программе и записаться на курс можно на официальном сайте Skillbox.
Rawpixel
Профессия Flutter-разработчик
Образовательная платформа Skillbox предлагает пройти обширный обучающий курс по профессии Flutter-разработчик. Данная профессия позволяет создавать кроссплатформенные мобильные приложения для iOS и Android. Специалист в области Flutter-разработки программирует на языке Dart, что дает возможность запускать сервисы и приложения сразу на обеих платформах – Android и iOS.
Этот курс подойдет нативным разработчикам и программистам других профилей, которые бы хотели освоить новую область своего применения и стать мобильным разработчиком. Длительность курса составляет 14 месяцев. За это время Вы освоите один из нативных языков программирования — Swift или Kotlin, язык Dart, фреймворк Flutter и напишете кроссплатформенные приложения для своего профессионального портфолио.
Обучение профессии будет проходить на интерактивной платформе Skillbox. Здесь для Вас будут доступны видео-лекции от ведущих экспертов в сфере Flutter, практические задания с написанием кода, работа с куратором, а также создание собственных проектов. Всего за время учебы Вы пройдете порядка 115 тематических модулей и получите следующие профессиональные навыки:
- Написание блоков приложений на нативном языке;
- Настройка взаимодействия приложений с бэкендом;
- Работа по Scrum-методологии по спринтам;
- Создание приложений на Flutter и Dart;
- Взаимодействие с UX-дизайном;
- Тестирование мобильных приложений;
- Использование готовых функций из библиотек;
- Работа в системе контроля версий Git.
За время обучения Вы пройдете важнейшие темы в разработке: Основы Dart; Основы Flutter; Слои; Навигация; Асинхронность; Работа с формами; Тестирование; Архитектура; Мультиплатформенные решения; Темы приложения; Анимация; Работа с медиа, картами и Web View; DevTools; Flutter под капотом, а также освоите одну из двух специализаций – Android или iOS.
За время обучения Вы выполните несколько крупных собственных проектов, которые впоследствии станут частью Вашего профессионального резюме. Среди таких работ, например, создание приложения для прослушивания музыки, приложение для учета расходов, приложение для социальной сети, приложение для интернет-магазина и некоторые другие.
По отзывам студентов, среди Ваших новых компетенций появятся такие, как создание мобильных приложений под конкретную платформу и кроссплатформенных приложений, опыт проектирования клиент-серверных приложений, знание Flutter и Dart, работа с API, в том числе социальных сетей, работа с реактивными библиотеками, создание блоков на Swift или Kotlin, работа в системе контроля версий Git, работа с многопоточностью, тестирование мобильных приложений и другие. Узнать подробнее о программе и записаться на курс можно на официальном сайте Skillbox.
Rawpixel/Программирование и разработка
Профессия Мобильный разработчик
Образовательная платформа Skillbox предлагает пройти обширный обучающий курс по профессии Мобильный разработчик. Мобильный разработчик – профессия универсальная, и поэтому она так востребована на рынке труда. Данный курс позволяет научиться создавать приложения на платформе Android или iOS, тестировать и оптимизировать код для работы на разных устройствах, а также получить навыки разработки сложных UX/UI-решений.
Данная программа подойдет новичкам в программировании, начинающим мобильным разработчикам, а также специалистам из других областей, которые бы хотели освоить новую специализацию. Длительность курса составляет 2 года. За это время Вы освоите профессию iOS или Android-разработчика, а также изучите дополнительные навыки и умения.
Обучение будет проходить на специальной интерактивной платформе Skillbox, где Вам будут доступны различные учебные модули. Теорию Вы будете получать в формате видео-лекций от ведущих экспертов в области мобильной разработки, а практику в виде заданий с последующей проверкой куратора. По ходу обучения Вы также выполните несколько самостоятельных проектов. По итогу учебы Вы получите следующие навыки и умения:
- Создание нативных приложений на языке Swift или Kotlin;
- Тестирование приложений;
- Проектирование интерфейсов и анимации;
- Написание чистого и эффективного кода;
- Настройка клиент-серверной части;
- Работа с базами данных при помощи SQL и создание сетевых запросов.
Если Вы выберете специализацию iOS-разработчик, то основными темами для изучения станут: Основы разработки на Swift, Основы разработки UI, Классы и структуры в Swift, ООП, Протоколы, Компоновка элементов UI, Жизненный цикл и навигация, Библиотеки, Многопоточность, Сетевые запросы, Анимация, Архитектура приложения, Тестирование, Асинхронное программирование, Оптимизация и инструменты Xcode, Алгоритмы и структуры данных, Паттерны проектирования, Фреймворки, SwiftUI + Combine, Networking и другие темы.
Если Вы выберете специализацию Android-разработчик, то основными темами для изучения станут: язык программирования Kotlin, Сборка и ресурсы, Разметка, Вёрстка с помощью ConstraintLayout, Жизненный цикл Activity, Фрагменты, Работа с ViewPager и диалогами, Списки, Android jetpack: ViewModel, Navigation, Работа с сетью, Обмен данными по сети, Библиотека Retrofit, Работа с файлами, ContentProvider, Введение в Базы данных, Работа со списками, Тестирование, Code-review на продвинутом уровне, RxJava и другие темы.
По отзывам студентов, курс четко структурирован от простого к сложному, имеется множество практических заданий, а самостоятельные проекты позволяют создать первые приложения и получить практический опыт, который станет частью Вашего профессионального резюме. Узнать подробнее о программе и записаться на курс можно на официальном сайте Skillbox.
WOCinTech Chat
Курс iOS-разработка для начинающих
Образовательная платформа Skillbox предлагает не только обучение по профессии, но и отдельные специализированные курсы, посвященные какой-либо одной тематике. Курс iOS-разработка для начинающих – это базовая программа, направленная на освоение основных навыков в данной области и закрепление практическими заданиями и проектами. Длительность курса составляет 6 месяцев.
Программа курса подойдет новичкам в программировании, начинающим разработчикам и разработчикам из смежных областей. Вашими базовыми навыками станут:
- Программирование на языке Swift и работа в среде Xcode;
- Умение создавать простые приложения с доступом в интернет;
- Работа в Figma и проектировка интерфейсов по макетам от дизайнеров;
- Размещение приложения в App Store;
- Применение принципов ООП на практике;
- Работа с UI;
- Создание архитектуры приложений на моделях MVC, MVVM, SOLID;
- Работа в версии Git.
За время обучения Вы выполните порядка 24 практических работ и изучите около 120 видеоматериалов. Учеба будет проходить на специализированной платформе Skillbox, где Вы будете изучать теорию и выполнять практику. За Вами будет закреплен куратор. Вашим итоговом проектом станет Новостное приложение. Им Вы сможете пополнить Ваше профессиональное резюме. Основными темами для изучения станут:
- Среда разработки
- Основы Swift-разработки
- Основы разработки UI
- Классы и структуры в Swift
- ООП
- Протоколы
- Компоновка элементов UI
- Работа с макетами
- Жизненный цикл и навигация
- Списки
- Библиотеки
- Версионный контроль
- Многопоточность
- Сетевые запросы
- Анимации
- Создание навигации в коде
- Публикация приложения в AppStore
По отзывам студентов, данный курс дает базовое представление об iOS-разработке, позволяет начать стажировку в данной области и продолжить обучение на более углубленном уровне. Само обучение проходит на удобной и интуитивно понятной платформе, лекции ведут ведущие специалисты в сфере iOS. Учиться можно в любое удобное время в любом удобном месте. Узнать подробнее о программе и записаться на курс можно на официальном сайте Skillbox.
Rawpixel/Программирование и разработка
Курс Тестирование мобильных приложений
Образовательная платформа Skillbox предлагает не только обучение по профессии, но и отдельные специализированные курсы, посвященные какой-либо одной тематике. Курс Тестирование мобильных приложений направлен на освоение работы с мобильными ОС, языком Java, автотестами и системой непрерывной интеграции CI/CD. Длительность программы составляет 9 месяцев.
Данный курс подойдет новичкам в тестировании мобильных приложений и тестировщикам из смежных сфер, которые хотели бы поменять специализацию или освоить дополнительную компетенцию. За время обучения Вы приобретете следующие навыки:
- Работа с Android Studio и Xcode;
- Настройка CI/CD-системы и генерация отчётов;
- Проверка особенностей мобильных приложений;
- Разработка тестов под любые задачи.
Обучение проходит в любое удобное для Вас время на интерактивной платформе Skillbox. Здесь для Вас будут доступны видеоматериалы, теоретические лекции, практические задания, общение с куратором, создание собственных проектов. Всего за время учебы Вы изучите 43 тематических модуля и отсмотрите почти 400 видеоматериалов, а сам курс состоит из следующих уровней:
- Ручное тестирование;
- Java-разработка;
- Автоматизированное тестирование;
- Система контроля версий Git.
По отзывам студентов, курс прекрасно структурирован и дает возможность получить полноценные знания в области тестирования мобильных приложений. За время обучения студенты осваивали такие навыки, как функциональное тестирование на Android и iOS, работа с Android Studio и Xcode, работа с Jenkins и настройка CI, работа с эмуляторами и симуляторами, работа с Appium Desktop, составление баг-репортов, автоматизированное тестирование на Android и iOS, написание простых и сложных автотестов.
Узнать подробнее о программе и записаться на курс можно на официальном сайте Skillbox.
Rawpixel/Программирование и разработка
Образ жизни для iOS для Apple iPhone, iPad (стр.: 3)
Star & Style
A Complete Magazine covering Film, Fashion And Life style
Magazine Subscriptions are available for purchase inside this app.
Six months subscription — $5.99 (automatically renewed until canceled)
One year subscription -…
Delivery Magazine
Whether you work in the stop/start world of the courier, carry the tools of your trade in a van or ute or drive a company vehicle as part of your salary package, when the time comes for either new vehicle acquisitions or fleet…
xPlore File Manager
This app is a complete file manager and viewer.
Features:
— For iPhone, iPod touch, and iPad.
— View files of many types, including images, movies, sound, text, Office, PDFs.
— Copy, paste, rename, and move files.
— Send…
Sheer Magazine
Sheer Magazine is an internationally published fashion publication. With a global reach of over 40 countries worldwide, the magazine has gained a loyal readership in the short time it has been established.
Originally launched…
Сабрина Russia (Sabrina Russia)
3
Универсальный журнал по вязанию на спицах и крючком. На его страницах представлены разнообразные модели для женщин всех возрастов, имеющих разный опыт вязания. Здесь вы найдете множество идей, как выглядеть модно и стильно без…
Ampio 2
Native application of smart house Ampio system allows you to control every part of your house. You can control light, temperature, fans, motors and many other things from every place in the world. You can check if you turn off…
Jane Austen’s Regency World
Subscribe to Jane Austen’s Regency World magazine to keep up to date with all that is happening in the world of Jane Austen and the Georgian and Regency eras.
The magazine is published six times a year in Bath, England, and is…
Журнал Лапы
«ЛАПЫ» – это журнал о жизни в стиле эко. Гармония и полнота жизни невозможны без любви и заботы ко всему, что нас окружает. На страницах «ЛАП» мы рассказываем обо всем, что может стать интересным и полезным, будь то…
Волкес
4
Преврати обычную прогулку в увлекательную игру.
Получай баллы за пройденное расстояние каждый день. Чем больше шагов ежедневно, тем больше баллов Волкес.
Современный образ жизни часто вынуждает нас подолгу сидеть на одном…
Badgee
Badgee is a brand new and exciting location-based game which lets you collect and trade badges while you are on the move.
A badge is a unique piece that you create and make your own. The look of the badge can be customised and…
High Holiday Phone Version
The High Holiday Season is a consecrated time. A time designated for personal reflection and spiritual growth. A time for seeking forgiveness and examining shortcomings through intense and focused praying.
Cantor Emanuel…
Reader’s Digest
5
A beautiful redesign for iPad and a new iPhone edition, which includes all the same content as our print and iPad editions, presented in an easy, mobile-friendly reading experience.
iPad users can preview articles from the…
Camden Hills
For Camden Hills residents! Manage tasks, communication, and property information conveniently on your phone. With the app you can get local deals, post to the bulletin board, submit maintenance requests, and more.
Craft Arts International Magazine – Contemporary, Visual and Applied Arts
End of cycle announcement
Sadly Issue 96 is the last issue of Craft Arts International that we will publish. It was a hard decision to make and not without considerable reluctance, but under the present circumstances, an…
Gayatri Mantra-KIPL
5
Gayatri Mantra (the mother of the vedas), the foremost mantra in hinduism and hindu beliefs, inspires wisdom. Its meaning is that «May the Almighty God illuminate our intellect to lead us along the righteous path». The mantra…
Barberia Criniera
Barberia Criniera è l’innovativa app del tuo salone preferito che ti permette di:
* visualizzare tutti i trattamenti disponibili, con i dettagli dei trattamenti
* prenotare GRATUITAMENTE e 24 ore su 24, i tuoi trattamenti…
The Ideal Home & Garden
1
The Ideal Home & Garden — India Edition.
We are house proud. And home loving.And that’s what we are hoping The Ideal Home and Garden will reflect. The happiness, the contentment and the peace we talk about in the magazine are…
CULTURE Magazine
CULTURE Magazine is an English-language monthly magazine featuring articles and photo essays on arts, fashion, travel, lifestyle, food and wine. We offer a broad perspective on areas of interest to our readers who are affluent,…
Linux Format
5
Linux Format is the voice of the Linux and open source community. Its unique style brings you entertaining and essential tutorials, news and reviews for leading distros like Ubuntu, Mint, Debian and Arch, plus help with maker…
TXTcrypt
5
TXTcrypt is a general purpose text encryption application for sms/email/notes etc. focused on ease of use and interoperability between mobile and desktop versions.
You can use it for text in any application , including text…
Oops! (mag)
Oops! (Упс) — ежемесячный журнал для стильных девушек, для тех, кто только открывает для себя гламурный мир глянцевых женских журналов. Oops! — это новые тенденции моды для молодых красавиц, компетентные советы экспертов по…
Ask Billy
Imagine if Siri had a brother, and that brother wasn’t the brightest of the family, his name would be Billy!!
WHO IS BILLY?
Billy is a guy who you can ask any kind of stuff, that doesn’t mean he knows the answer, but he would…
Календарь удачи 2020
Календарь удачи Фэн Шуй на 2020 год, для тех, кто интересуется фэн шуй и хочет активно использовать выбор дат в повседневной жизни.
Не содержит иероглифов, все характеристики дней и часов можно читать в виде описаний. Все…
Pure, анонимные знакомства 18+
5
С Pure твоя личная жизнь остается личной. Никаких ссылок на социальные сети. Мы обеспечиваем сквозное шифрование и автоматически удаляем твои чаты. Загрузи селфи и найди кого-нибудь, кто тебе приглянется. Чат активен на…
Al Buhari Крепость Мусульманина
5
Знаете ли Вы, что сглаз является одним из, ЧТО МОЖЕТ ЛИШИТЬ ВАС ПРЕДОПРЕДЕЛЕНИЯ, ПРЕДПИСАННОГО ВАМ ВСЕВЫШНИМ!
Это приложение предоставляет всю необходимую информацию мусульманину: для увеличения багажа знаний, очищения веры,…
Motorcycle Cruiser Mag
Motorcycle Cruiser is the go-to source for all cruising and touring motorcycle enthusiasts. Have a first look at the newest bikes on the market, ride along with our touring stories, and prepare for your own rides with our tips,…
MNFST — Манифест
5
MNFST [Манифест]: монетизируйте свой аккаунт в социальных сетях.
Приложение MNFST позволяет каждому пользователю соцсетей монетизировать свой социальный актив, сотрудничать с брендами и получать справедливое вознаграждение,…
Senses of Malaysia
is an upmarket travel and tourism magazine, highlighting the best of Malaysia from property to tourism, art to sports, recreation to education, adventure stories to history, lifestyle to information, and much more.
Magazine…
Crafts Beautiful Magazine
1
The UK’s leading craft title featuring papercrafts, cardmaking, soft toy patterns, patchwork, stitching, knitting, home crafts, freebies & prizes, free downloads and templates.
Every monthly issue is packed to the brim with…
Ms Yvonne — AI Face Factory
Потрясающий тест кожи и многое другое.
* Потрясающие функции, которые вы получите*
— Тест кожи и советы
— Прогноз старения
— Этнический анализ
— Лицо иностранца
— Тест эмоций
— Хиромант
…
*Если конкретней*
— Тест кожи
Быстро…
Cross Stitch Saga
5
Мобильная помощница каждой современной вышивальщицы. Создана для удобства чтения и отмечания схем, для ускорения процесса вышивания.
Приложение формирует интерактивную схему вышивки из файлов программ для рисования схем:
•…
C智能
C智能,是你家里的儿童早教师,也是你的智能硬件管理平台。仅通过所连接的智能音箱就可以让你的宝宝轻松学习各种早教内容,并且通过语音唤醒,可以随心所欲的控制住宅中的各种智能电器,与此同行它还集成了电台、娱乐和音乐播放等功能。
Астрология & Baby Maker
3
Greetify – это открытки, оригинальные поздравления и картинки с Днём рождения, пожелания с добрым утром и др.
Радуйте близких по поводу и без. Установите сейчас!
Крупнейшая библиотека крутых открыток и GIF на вашем смартфоне!…
AeraForHome
Aera is home scenting at your fingertips. The AeraForHome app provides smartphone control for up to 20 schedules or devices. Aera is home scenting reinvented with a revolutionary new way of creating exquisite scent effects….
Radio iCDO
Iglesia casa de Oracion, ubicada en presidente adolfo lopez mateo 02411 (esquina el Durazno), Lo Espejo. — Reuniones dias Miercoles a las 19:30 Hrs y Sabados a las 19:00 Hrs
Живые обои 4K: заставки и темы
5
Только в нашем приложении! Уникальная возможность оживить экран своего телефона с помощью потрясающих живых тем и клавиатур! А также новый инструмент – Редактор живых обоев – создайте собственные живые обои и запечатлите. ..
Извлечение секретных чатов из Telegram для iPhone
Telegram – один из самых популярных сервисов для обмена мгновенными сообщениями, которым пользуются более 500 миллионов человек. Хотя Telegram не считается самым безопасным сервисом для обмена мгновенными сообщениями (этот титул по праву принадлежит Signal), история переписки в приложении Telegram для iOS не попадает ни в резервные копии iTunes, ни в iCloud. Более того, секретные чаты Telegram не хранятся даже на серверах Telegram. В результате секретные чаты Telegram можно извлечь исключительно из того устройства, которое участвовало в переписке. О том, как это сделать, мы расскажем в данной статье.
Методы, которые не работают: облако Telegram
Так же, как и Skype, Telegram относится к приложениям, которые хранят историю переписки пользователей на сервере – за единственным исключением. В Telegram есть возможность организовать защищённую переписку, в терминах Telegram — «секретный чат».
По заявлению разработчиков Telegram, секретные чаты используют сквозное шифрование, что позволяет получить доступ к сообщениям только участникам чата. Перехват или расшифровка защищённой таким образом переписки исключены, в том числе для персонала Telegram. Более того, секретные чаты, в отличие от чатов обычных, не сохраняются не только в облаке iCloud или резервных копиях, но и на серверах Telegram. Секретные сообщения могут быть прочитаны только на устройстве, которое участвует в переписке.
Обратите внимание: секретные чаты Telegram не попадают в облако. Обычные чаты хранятся на серверах компании и могут быть получены по запросу от правоохранительных органов (в зависимости от юрисдикции).
iTunes и резервные копии в iCloud
Многие приложения для обмена мгновенными сообщениями сохраняют резервные копии переписки в локальных резервных копиях iTunes или резервных копиях в iCloud. Другие (например, собственное приложение Apple iMessage) могут и синхронизировать сообщения через iCloud (впрочем, в случае с iMessage всё не так просто: если сообщения синхронизируются, то они не попадают в «облачные» резервные копии; в локальные же резервные копии они сохраняются всегда). Telegram относится к классу приложений, которые не сохраняют историю переписки ни в локальных, ни в облачных резервных копиях iCloud. Не используется и встроенный в iCloud механизм синхронизации. Этот подход означает, что ни логический, ни облачный анализ в случае с Telegram не сработают даже для обычных чатов, не говоря о секретных.
Обратите внимание: приложение Telegram для iOS не позволяет данным о переписке попасть ни в локальные, ни в облачные резервные копии.
Анализ образа файловой системы – единственный работоспособный метод
С учётом того, что Telegram для iOS не синхронизирует данные с облаком, не создаёт локальные или облачные резервные копии, единственным способом получить доступ к данным как секретных, так и обычных чатов Telegram является извлечение из iPhone образа файловой системы. Извлечь образ файловой системы можно при помощи Elcomsoft iOS Forensic Toolkit.
В отличие от более безопасного Signal, который шифрует данные на телефоне ключом из Связки ключей, которому назначен высший класс безопасности, базы данных Telegram сохраняются на устройстве в виде обычной, незашифрованной базы данных в формате SQLite. Соответственно, для их анализа достаточно извлечь только образ файловой системы.
Извлечение и анализ переписки и секретных чатов Telegram
Для просмотра истории переписки и секретных чатов Telegram используйте Elcomsoft Phone Viewer 5.0 или более новую версию.
Для анализа переписки в приложении Telegram для iOS проделайте следующие шаги:
- Извлеките образ файловой системы iPhone в формате TAR (используйте приложение Elcomsoft iOS Forensic Toolkit).
- Запустите Elcomsoft Phone Viewer и откройте полученный образ.
- После того, как обработка будет завершена, кликните на иконке Telegram.
- Данные доступны для просмотра и анализа, включая секретные чаты.
Заключение
Из трёх способов анализа (логический, физический и облачный) секретные чаты из приложения Telegram доступны исключительно посредством физического извлечения. Архив переписки пользователя (только обычные чаты) правоохранительные органы могут получить непосредственно у компании Telegram по запросу.
REFERENCES:
Elcomsoft iOS Forensic Toolkit
Elcomsoft iOS Forensic Toolkit – специализированный инструмент для проведения криминалистического анализа устройств, работающих под управлением Apple iOS. Для анализа доступна вся пользовательская и системная информация, а также зашифрованные данные из системного хранилища (связка ключей).
Официальная страница Elcomsoft iOS Forensic Toolkit »
Elcomsoft Phone Viewer
Elcomsoft Phone Viewer – простой и компактный инструмент для просмотра информации, извлечённой из резервных копий устройств под управлением Apple iOS, облачных сервисов iCloud и Microsoft. При работе с данными iOS поддерживается восстановление и просмотр удалённых сообщений SMS и iMessage. Продукт позволяет просматривать контакты, сообщения, список звонков, данные заметок и календаря.
Официальная страница Elcomsoft Phone Viewer »
НОВЫЕ СТАТЬИ
iOS Forensic Toolkit 8.0: извлечение через эксплойт загрузчика для 76 устройств Apple
iOS 16: извлечение файловой системы и связки ключей через эксплойт загрузчика
Ввод в DFU: iPhone 8, 8 Plus и iPhone X
НАШИ НОВОСТИ
- Elcomsoft iOS Forensic Toolkit 8. 0: крупное обновление с криминалистически чистым извлечением через эксплойт загрузчика22 September, 2022
- Elcomsoft iOS Forensic Toolkit 7.60 расширяет поддержку низкоуровневого извлечения файловой системы25 August, 2022
- Elcomsoft Distributed Password Recovery 4.45 с поддержкой LUKS2 и PIN-кодов Windows Hello16 August, 2022
- Elcomsoft System Recovery 8.30: восстановление PIN-кодов Windows 10, определение шифрования LUKS24 August, 2022
- Elcomsoft iOS Forensic Toolkit 8.0 beta 12: улучшена поддержка checkm8 для iPhone 728 July, 2022
ПРЕСС РЕЛИЗЫ
- Выпущен Elcomsoft iOS Forensic Toolkit 8.0: криминалистически чистое извлечение через эксплойт загрузчика22 September, 2022
- Elcomsoft iOS Forensic Toolkit: низкоуровневый анализ iPhone 1329 April, 2022
- Elcomsoft System Recovery 8.20 загрузочный инструмент для поиска цифровых улик с поддержкой Windows 1123 March, 2022
- Elcomsoft iOS Forensic Toolkit 8.0 обеспечит криминалистически чистый анализ iPhone, поддержка iOS 1516 November, 2021
- Elcomsoft System Recovery обеспечит криминалистическую чистоту цифровых улик4 November, 2021
Images — Foundations — Human Interface Guides — Design
Чтобы убедиться, что ваша работа отлично выглядит на всех поддерживаемых вами устройствах, узнайте, как система отображает контент на экране и как доставлять изображения с соответствующими коэффициентами масштабирования.
Масштабные коэффициенты
Все платформы используют систему координат, основанную на измерениях в точках, которые отображаются в пикселях на дисплее. Дисплей со стандартным разрешением имеет плотность пикселей 1:1 (также называемую @1x), где один пиксель равен одной точке. Дисплеи с высоким разрешением имеют более высокую плотность пикселей, например 2:1 или 3:1. Плотность 2:1 (называемая @2x) имеет масштабный коэффициент 2, а плотность 3:1 (называемая @3x) имеет масштабный коэффициент 3. Из-за более высокой плотности пикселей дисплеи с высоким разрешением требуют изображений с большим количеством пикселей. .
Форматы
При создании различных типов изображений учитывайте следующие рекомендации.
Тип изображения | Формат |
---|---|
Растровая или растровая работа | Файлы PNG с деинтерлейсингом |
Графика в формате PNG, не требующая полного 24-битного цвета | 8-битная цветовая палитра |
Фото | файлов JPEG, оптимизированных по мере необходимости, или файлов HEIC |
Плоские значки, значки интерфейса и другие плоские изображения, требующие масштабирования с высоким разрешением | Файлы PDF или SVG |
Передовой опыт
Предоставляйте изображения с высоким разрешением для всех иллюстраций в вашем приложении для каждого поддерживаемого устройства. Это достигается путем умножения количества пикселей в каждом изображении на определенный масштабный коэффициент. Когда вы добавляете каждое изображение в каталог активов вашего проекта, определяйте его коэффициент масштабирования, добавляя «@1x», «@2x» или «@3x» к его имени файла. Используйте следующие значения для руководства; дополнительные коэффициенты масштабирования см. в разделе Макет.
Платформа | Масштабные коэффициенты |
---|---|
iOS | @2x и @3x |
iPadOS | @2x |
macOS, tvOS | @1x и @2x |
watchOS | @2x |
Как правило, создавайте изображения с самым низким разрешением и масштабируйте их для создания ресурсов с высоким разрешением. При использовании векторизованных фигур с изменяемым размером может потребоваться расположить контрольные точки на целых значениях, чтобы они были четко выровнены с увеличением 1x. Такое расположение позволяет точкам оставаться точно выровненными по растровой сетке при более высоких разрешениях, потому что 2x и 3x кратны 1x. Напротив, бывают случаи, когда вы не хотите, чтобы фигура была идеально выровнена по растровой сетке; например, выравнивание круга по сетке может сделать его плоским сверху и снизу.
Добавляйте цветовой профиль к каждому изображению. Цветовые профили помогают обеспечить правильное отображение цветов вашего приложения на разных дисплеях. Руководство см. в разделе Управление цветом.
Всегда тестируйте изображения на ряде реальных устройств. Изображение, которое отлично выглядит во время разработки, может казаться пиксельным, растянутым или сжатым при просмотре на различных устройствах.
Особенности платформы
Никаких дополнительных соображений для iOS, iPadOS или macOS.
tvOS
Многослойные изображения лежат в основе пользовательского опыта Apple TV. Система сочетает в себе многослойные изображения, прозрачность, масштабирование и движение, чтобы создать ощущение реализма и энергии, которые вызывают личную связь, когда люди взаимодействуют с контентом на экране.
Эффект параллакса
Параллакс — это тонкий визуальный эффект, который система использует для передачи глубины и динамики, когда элемент находится в фокусе. Когда элемент попадает в фокус, система выводит его на передний план, слегка покачивая, применяя подсветку, благодаря которой поверхность элемента кажется сияющей. После периода бездействия контент, находящийся не в фокусе, тускнеет, а элемент, находящийся в фокусе, расширяется.
Многослойные изображения необходимы для поддержки эффекта параллакса.
Многослойные изображения
Многослойное изображение состоит из двух-пяти отдельных слоев, которые объединяются в единое изображение. Разделение между слоями, наряду с использованием прозрачности, создает ощущение глубины. Когда кто-то взаимодействует с изображением, слои, расположенные ближе к поверхности, приподнимаются и масштабируются, перекрывая нижние слои, расположенные дальше назад, и создавая трехмерный эффект.
ВАЖНО Значок вашего приложения tvOS должен использовать многослойное изображение. Для других фокусируемых изображений в вашем приложении, включая изображения Top Shelf, многослойные изображения настоятельно рекомендуются, но не являются обязательными.
Используйте стандартные элементы интерфейса для отображения многослойных изображений. Если вы используете стандартные представления и предоставляемые системой API-интерфейсы фокусировки, такие как FocusState, многослойные изображения автоматически обрабатываются параллаксом, когда люди помещают их в фокус.
Определите логические элементы переднего плана, середины и фона. В слоях переднего плана отображайте заметные элементы, такие как персонаж игры или текст на обложке альбома или постере фильма. Средние слои идеально подходят для вторичного контента и эффектов, таких как тени. Фоновые слои — это непрозрачные фоны, которые демонстрируют передний и средний слои, не затмевая их.
Как правило, держите текст на переднем плане. Если вы не хотите скрывать текст, перенесите его на передний план для ясности.
Сохраняйте фоновый слой непрозрачным. Использование различных уровней непрозрачности, чтобы позволить содержимому просвечиваться через более высокие слои, — это нормально, но ваш фоновый слой должен быть непрозрачным — в противном случае вы получите сообщение об ошибке. Непрозрачный фоновый слой гарантирует, что ваша работа будет отлично смотреться с параллаксом, тенями и системным фоном.
Создавайте слои простыми и тонкими. Parallax спроектирован так, чтобы быть почти незаметным. Чрезмерные 3D-эффекты могут показаться нереалистичными и раздражающими. Сохраняйте глубину простой, чтобы оживить контент и добавить удовольствия.
Оставьте безопасную зону вокруг вашего контента. Во время фокусировки и параллакса содержимое по краям некоторых слоев может быть обрезано или плохо видно при масштабировании и перемещении изображения. Чтобы ваш основной контент всегда был виден, не располагайте его слишком близко к краям. Имейте в виду, что безопасная зона может варьироваться в зависимости от размера изображения, глубины слоя и движения, а слои переднего плана обрезаются больше, чем слои фона.
Всегда предварительно просматривать многослойные изображения. Чтобы ваши многослойные изображения выглядели великолепно на Apple TV, предварительно просматривайте их на протяжении всего процесса проектирования с помощью Xcode, приложения Parallax Previewer для macOS или подключаемого модуля Parallax Exporter для Adobe Photoshop. Обратите особое внимание на масштабирование и отсечение, а также корректируйте изображения по мере необходимости, чтобы сохранить важный контент в безопасности. После того, как ваши многослойные изображения будут окончательными, просмотрите их на реальном телевизоре для наиболее точного представления того, что люди увидят. Чтобы загрузить Parallax Previewer и Parallax Exporter, см. Ресурсы.
Используйте как несфокусированное, так и сфокусированное состояния, чтобы определить подходящий размер многослойного изображения. Во время эффекта параллакса система может слегка обрезать фоновые слои, поэтому держите основное содержимое в безопасной зоне и добавляйте дополнительное пространство, чтобы содержимое выглядело хорошо.
Следующие формулы могут помочь вам рассчитать размер многослойного изображения на основе размера изображения, когда оно не в фокусе.
Сторона изображения | Размер целевой/безопасной зоны | Фактический размер |
---|---|---|
Самый длинный | Длина самой длинной несфокусированной стороны + 70 pt | Длина самой длинной сфокусированной стороны x 106% |
Самый короткий | Пропорционально по самой длинной стороне | Пропорционально по самой длинной стороне |
Вы можете встраивать многоуровневые изображения в свое приложение или получать их с сервера содержимого во время выполнения. Чтобы создать многослойные изображения для включения в ваше приложение, используйте один из следующих инструментов:
- Приложение Parallax Previewer для macOS. Parallax Previewer может импортировать файлы PNG для использования в качестве отдельных слоев, многослойных изображений (
.lsr
), созданных с помощью подключаемого модуля Parallax Exporter, и многослойных изображений Photoshop (.psd
). Parallax Previewer может экспортировать файлы LSR, которые можно импортировать непосредственно в проект Xcode. - Плагин Parallax Exporter для Adobe Photoshop. Используйте этот подключаемый модуль для тестирования многослойных изображений в Photoshop и экспорта их в виде файлов LSR, которые можно импортировать непосредственно в проект Xcode.
- Xкод. Перетащите стандартные файлы PNG в каталог активов вашего приложения, чтобы они служили отдельными слоями стека изображений в Xcode. Стеки изображений можно экспортировать в виде файлов LSR. Xcode также может импортировать файлы LSR.
Если ваше приложение извлекает многоуровневые изображения с сервера содержимого во время выполнения, вы должны предоставить эти изображения в формате многоуровневого изображения во время выполнения ( .lcr
). Вы не создаете многоуровневые образы во время выполнения напрямую; вы создаете их из файлов LSR или файлов Photoshop, используя 9Инструмент командной строки 0208 layerutil , предоставляемый Xcode. Многоуровневые изображения во время выполнения предназначены для загрузки — не встраивайте их в свое приложение.
watchOS
В общем, избегайте прозрачности, чтобы файлы изображений были небольшими. Если вы всегда компонуете изображение с одним и тем же сплошным цветом фона, более эффективно включать фон в изображение. Однако прозрачность необходима в изображениях-усложнениях, значках меню и других значках интерфейса, которые служат изображениями-шаблонами, поскольку система использует ее, чтобы определить, где применить цвет.
Используйте автоматически масштабируемые PDF-файлы, чтобы предоставить единый ресурс для всех размеров экрана. Создайте свое изображение для экранов 40 мм и 42 мм с двукратным увеличением. Когда вы загружаете PDF-файл, WatchKit автоматически масштабирует изображение в зависимости от размера экрана устройства, используя значения, показанные ниже:
Размер экрана | Масштаб изображения |
---|---|
38 мм | 90% |
40 мм | 100% |
41 мм | 106% |
42 мм | 100% |
44 мм | 110% |
45 мм | 119% |
49 мм | 119% |
Что такое режим рендеринга изображения в iOS
При использовании изображения в iOS у вас есть возможность контролировать способ рендеринга изображения. Свойство изображения, которое управляет этим, называется режимом рендеринга 9.0056 .
Типы режимов рендеринга
Существует два типа режимов рендеринга.
- Оригинал.
- Шаблон.
Исходный
В режиме исходного рендеринга изображение будет отображаться как есть.
Шаблон
Режим рендеринга по шаблону будет отображать изображение, игнорируя информацию о его цвете, создавая тонируемые изображения, где новый цвет закрашивает все непрозрачные пиксели.
Вот пример одного и того же изображения, отрендеренного в режиме оригинала и шаблона. [1]
Слева: исходный режим рендеринга, справа: шаблонный режим рендеринга.
Как установить режим рендеринга
Вы можете установить режим рендеринга изображения через каталог активов [2] или программно.
Каталог активов
При добавлении нового изображения в Каталог активов Xcode установит режим рендеринга на По умолчанию .
Мы обнаружим режим рендеринга по умолчанию в следующем разделе. Прямо сейчас вы можете думать об этом как об отсутствии предпочтения.
Вы можете изменить режим рендеринга изображения, выбрав его в параметре Render As в разделе Attributed Inspector .
Вы можете легко изменить режим рендеринга изображения в Attributed Inspector.
Программно через UIKit
Мы можем установить режим рендеринга изображения, используя метод экземпляра UIImage
, withRenderingMode(_:)
. Этот метод вернет новый экземпляр UIImage
, который использует указанный режим рендеринга.
let templateImage = UIImage(named: "lamp")?.withRenderingMode(.alwaysTemplate)
Программно через SwiftUI
У нас есть эквивалентный модификатор представления в SwiftUI, который называется renderingMode(_:)
.
Image("lamp")
.renderingMode(. template)
Что такое режим рендеринга шаблона для
Мы узнаем, как установить режим рендеринга, но более важный вопрос — зачем нам нужен режим рендеринга шаблона.
Исходный режим рендеринга визуализирует изображение так, как оно выглядит на исходном исходном изображении. Это может быть то, что мы ожидали от большинства изображений, таких как изображения продуктов и иллюстрации для онбординга.
Пример иллюстраций и изображений статьи.
Не все изображения одинаковы. Некоторые изображения предназначены для использования в качестве масок изображений, например значок кнопки, где мы хотим использовать форму изображения, а не его исходный цвет.
Пример значков кнопок, цвет которых можно изменить во время выполнения.
Каков режим рендеринга по умолчанию
В разделе Как установить режим рендеринга в разделе Каталог активов мы видим, что режим рендеринга по умолчанию установлен на «По умолчанию» . В идеале вы должны установить режим рендеринга для всех ваших изображений в соответствии с назначением этого изображения. Установка значения по умолчанию означает, что изображение не имеет конкретной цели и может быть отображено в либо исходный, либо шаблонный режим .
Как система узнает, в каком режиме рендерить, если мы его не указываем
Если мы не указываем режим рендеринга для изображения, система будет рендерить его на основе режима рендеринга, в котором она использовалась .
Каждое представление или элемент управления имеет собственный режим рендеринга по умолчанию. Этот режим рендеринга нигде не документирован, но он соответствует системному стилю, такому как режим рендеринга шаблона для элемента панели вкладок или элемента панели навигации.
Вот несколько примеров режимов рендеринга по умолчанию для каждого представления и элемента управления.
Просмотр/управление | режим рендеринга |
---|---|
UIImageView | Оригинал |
UIButton (тип: . system) | Шаблон |
UIButton (тип: .custom) | Оригинал |
UITabBarItem | Шаблон |
UIBarButtonItem | Шаблон |
let image = UIImage(имя: "маленькая лампа")let imageView = UIImageView(image: image)
imageView.contentMode = .centerlet systemButton = UIButton(type: .system)
systemButton.setImage (изображение, для: .normal)
systemButton.setTitle("UIButton(тип: .system)", для: .normal)пусть customButton = UIButton(тип: .custom)
customButton.setImage(изображение, для: . обычный)
customButton.setTitle("UIButton(тип: .custom)", для: .normal)let barButtonItem = UIBarButtonItem(image: image, style: .plain, target: nil, action: nil) nil)
self.tabBarItem = tabBarItem
Изображение с режимом рендеринга по умолчанию будет отображаться в зависимости от того, где оно использовалось
Если мы изменим режим рендеринга изображения, система учтет это и проигнорирует режим рендеринга по умолчанию для целевого представления.
let image = UIImage(named: "small-lamp")?.withRenderingMode(.alwaysTemplate)
Изображение с шаблонным режимом рендеринга.
Вот как это выглядит в исходном режиме рендеринга.
let image = UIImage(named: "small-lamp")?.withRenderingMode(.alwaysOriginal)
Изображение с исходным режимом рендеринга.
Заключение
В режиме рендеринга изображения мы можем указать назначение этого изображения, означает ли это использование как есть или в качестве шаблона.
Установка этого для каждого изображения проблематична, поэтому каждый элемент пользовательского интерфейса имеет режим рендеринга по умолчанию, который имеет смысл для этого пользовательского интерфейса, например, исходный режим рендеринга для UIImageView, режим рендеринга шаблона для UITabBarItem.
Таким образом, большую часть времени вы можете оставить режим рендеринга по умолчанию и зависеть от представления, чтобы выбрать правильный для вас, но если у вас есть особые потребности, которые не соответствуют поведению по умолчанию, вы можете управлять им, настройка режима рендеринга.
Иллюстрация Icons 8 от Ouch!. ↩︎
https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_ref-Asset_Catalog_Format/index.html ↩︎
Не стесняйтесь подписываться на меня в Твиттере и задавать вопросы, связанные с этим постом. Спасибо за чтение и увидимся в следующий раз.
Если вам нравится то, что я пишу, зайдите на мой Patreon https://www.patreon.com/sarunw и поддержите меня. Распространение статьи также приветствуется.
Образ системы загрузки Cisco IOS
Lesson Contents
При включении маршрутизатора Cisco IOS выполняются следующие действия:
- Выполните POST (самотестирование при включении), чтобы обнаружить оборудование и проверить, правильно ли оно работает.
- Скопируйте программу начальной загрузки из ПЗУ в ОЗУ, запустите программу начальной загрузки.
- Программа начальной загрузки ищет первый образ IOS во флэш-памяти, извлекает его в ОЗУ и загружает образ IOS. Когда образа IOS нет, он загружается в ROMMON.
- Когда IOS загрузится, она будет искать файл конфигурации запуска в NVRAM. Если его нет, он покажет вам мастер с вопросом, хотите ли вы настроить маршрутизатор.
ROMMON — очень простая ОС с несколькими функциями. Одна из целей, для которой он используется, — копирование образа IOS во флэш-память на случай, если вы его случайно удалили. Вы также можете использовать его для восстановления пароля.
Мы ничего не можем изменить в шагах 1 и 2, но мы можем внести некоторые изменения в шаги 3 и 4. Можно настроить маршрутизатор так, чтобы он искал образ IOS в другом месте, например на TFTP-сервере. в вашей сети. Вы также можете настроить маршрутизатор так, чтобы он искал конфигурацию запуска где-то еще.
Давайте посмотрим, как мы можем настроить маршрутизатор для загрузки другого образа IOS.
Вариант загрузки по умолчанию
Какой образ IOS маршрутизатор хочет использовать, зависит от двух параметров:
- Параметр загрузки с регистрацией конфигурации.
- загрузочная система команда
Значение регистра конфигурации по умолчанию: 0x2101:
Router# show version | включить регистр Регистр конфигурации: 0x2101
Значение битов можно найти в этом документе Cisco. Первые 4 бита определяют, где маршрутизатор будет искать образ IOS. Значение по умолчанию — 0001, что означает, что будет использоваться первый образ IOS, найденный во флэш-памяти.
Посмотрим, что у нас на флешке:
Router# show flash: | включить c2800 12 67926080 2 апр 2015 14:21:46 +00:00 c2800nm-adventerprisek9-mz.151-4.M10.bin 29 67929600 4 ноя 2016 12:11:22 +00:00 c2800nm-adventerprisek9-mz.151-4.M12a.bin
Есть два изображения. Cisco IOS использует номер для каждого имени файла и предпочитает наименьший номер файла. Мы видим, какой образ был загружен:
Router# показать версию | включить изображение Файл образа системы "flash:c2800nm-adventerprisek9-mz. 151-4.M10.bin"
Загрузка образа IOS с флэш-памяти
Давайте посмотрим, как я могу выбрать другой образ. Я могу настроить маршрутизатор для загрузки другого образа IOS на моей флэш-памяти с системой загрузки . Команда :
Router(config)# boot system flash c2800nm-adventerprisek9-mz.151-4.M12a.bin
После перезагрузки маршрутизатора я могу убедиться, что он загрузил более новый образ:
Router# показать версию | включить изображение Файл образа системы "flash:c2800nm-adventerprisek9-mz.151-4.M10.bin"
Загрузка образа IOS из сети
Что делать, если я хочу загрузить образ IOS из сети? Это может быть полезно. Возможно, ваша флэш-память слишком мала для последней версии IOS image или, может быть, вы хотите убедиться, что все маршрутизаторы используют один и тот же образ IOS без ручного копирования образов во флэш-память каждого маршрутизатора
Команда boot system имеет несколько параметров:
Router(config)# boot system ? WORD Имя файла TFTP или URL-адрес flash Загрузка с флэш-памяти ftp Загрузка с сервера через ftp mop Загрузка с сервера Decnet MOP rcp Загрузка с сервера через rcp ПЗУ Загрузка из ПЗУ tftp Загрузка с tftp-сервера
Один из вариантов — сервер TFTP. Давайте посмотрим, сможем ли мы загрузиться с TFTP-сервера:
Router(config)# boot system tftp c2800nm-adventerprisek9-mz.151-4.M12a.bin 192.168.1.2
Это говорит маршрутизатору искать указанный имя файла на TFTP-сервере с IP-адресом 192.168.1.2.
Однако приведенная выше команда — это только половина дела. Регистр конфигурации по умолчанию будет искать только образ IOS во флэш-памяти. Мы должны изменить его, чтобы указать маршрутизатору искать образ IOS в сети:
Router(config)# config-register 0x210F
Указывает маршрутизатору искать образ IOS в сети, а не на локальном флэш-накопителе. Мы также должны убедиться, что маршрутизатор может связаться с нашим TFTP-сервером. Включим интерфейс с IP-адресом, который находится в той же подсети, что и наш TFTP-сервер:
Router(config)# interface FastEthernet 0/0 Маршрутизатор(config-if)# ip адрес 192.168.1.1 255.255.255.0 Роутер(config-if)# no shutdown
Теперь мы можем сохранить нашу конфигурацию и перезагрузить маршрутизатор. Как только вы это сделаете, вы увидите это:
ROMMON только для чтения инициализирован загрузка программы завершена, точка входа: 0x8000f000, размер: 0xcb80 загрузка программы завершена, точка входа: 0x8000f000, размер: 0xcb80 загрузка программы завершена, точка входа: 0x8000f000, размер: 0x40c7678 Самостоятельная распаковка образа: ########################## [OK]
Маршрутизатор выполняет POST, инициализирует ROMMON, а затем загружает образ IOS на флешку как обычно. Как только он загрузится, вместо того, чтобы показывать вам командную строку, вы увидите это:
Загрузка c2800nm-adventerprisek9-mz.151-4.M12a.bin с адреса 192.168.1.2 (через FastEthernet0/0): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [OK - 67929600 bytes]
Он загружает указанный нами образ IOS с TFTP-сервера. После завершения передачи он извлекает и загружает образ:
%SYS-6-BOOT_MESSAGES: сообщения над этой строкой исходят от загрузчика. загрузка программы завершена, точка входа: 0x8000f000, размер: 0x40c8438 Самостоятельная распаковка изображения: ################### [OK]
Теперь ваш маршрутизатор будет запускать образ IOS с TFTP-сервера.
Загрузка образа IOS из сети через ROMMON
Что делать, если ваша флэш-память неисправна, но вы все равно хотите каким-то образом запустить IOS? С помощью ROMMON можно загрузить образ, а затем извлечь и запустить его в оперативной памяти, не касаясь флэш-памяти. Когда маршрутизатор загрузится, нажмите комбинацию CTRL+BREAK, чтобы войти в ROMMON:
System Bootstrap, Version 12.4(13r)T, RELEASE SOFTWARE (fc1) Техническая поддержка: http://www.cisco.com/techsupport Авторские права (c) 2006 г., Cisco Systems, Inc. Инициализация памяти для ECC ... платформа c2811 с 786432 Кбайт оперативной памяти Основная память настроена на 64-битный режим с включенным ECC ROMMON только для чтения инициализирован загрузка программы завершена, точка входа: 0x8000f000, размер: 0xcb80 загрузка программы завершена, точка входа: 0x8000f000, размер: 0xcb80 монитор: команда "boot" прервана из-за прерывания пользователя
Здесь мы должны настроить некоторые переменные. Если ваш TFTP-сервер находится в той же подсети, вы можете пропустить шлюз по умолчанию:
rommon 1 > IP_ADDRESS=192.168.1.1 роммон 2 > IP_SUBNET_MASK=255.255.255.0 rommon 3 > DEFAULT_GATEWAY=192.168.1.254 роммон 4 > TFTP_SERVER=192.168.1.2 rommon 5 > TFTP_FILE=c2800nm-adventerprisek9-mz.151-4.M12a.bin
Когда вы будете готовы, используйте команду tftpdnld с параметром -r. Это указывает маршрутизатору не сохранять образ IOS во флэш-памяти:
rommon 6 > tftpdnld -r
Вы увидите краткий обзор ваших переменных, и маршрутизатор начнет загрузку:
IP_АДРЕС: 192.168.1.1 IP_SUBNET_MASK: 255.255.255.0 ШЛЮЗ ПО УМОЛЧАНИЮ: 192.168.1.254 TFTP_СЕРВЕР: 192.168.1.2 TFTP_FILE: c2800nm-adventerprisek9-mz.151-4.M12a.bin TFTP_VERBOSE: Прогресс TFTP_RETRY_COUNT: 18 TFTP_TIMEOUT: 7200 TFTP_CHECKSUM: Да TFTP_MACADDR: 00:1d:a1:8b:36:d0 FE_PORT: Fast Ethernet 0 FE_SPEED_MODE: Авто Получение c2800nm-adventerprisek9-mz. 151-4.M12a.bin от 192.168.1.2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! Прием файла завершен. Проверка контрольной суммы. загрузка изображения c2800nm-adventerprisek9-mz.151-4.M12a.bin загрузка программы завершена, точка входа: 0x8000f000, размер: 0x40c8438 Самораспаковка изображения: ####################################### [OK]
Когда получил файл, он извлечет его и загрузит образ IOS в ОЗУ. Затем маршрутизатор загрузится в обычном режиме.
Заключение
Теперь вы узнали, как:
- Загружать другой образ IOS во флэш-память.
- Как загрузить образ IOS с TFTP-сервера.
- Как загрузить образ IOS с сервера TFTP с помощью ROMMON.
Свойства изображения и эффективная обработка в iOS, часть 2
В предыдущем посте мы говорили об изображениях и о том, как они представлены в компьютерной графике. Теперь давайте поместим то, что мы узнали, в контекст iOS и эффективности.
Изображение обычно представляется объектом, доступным в библиотеке, выполняющей обработку. Доступно множество библиотек обработки изображений (собственные для iOS, проекты с открытым исходным кодом и собственные). Одни библиотеки рендерятся на CPU, другие на GPU.
Давайте обсудим процесс применения улыбки к изображению с неулыбающимся человеком, как мы это делаем на Facetune. Когда пользователь вводит фотографию человека, приложение распознает лицо и рисует вокруг него метки. Затем пользователь может выбрать простую функцию и контролировать ее влияние на выбранное лицо.
Фейстюнинг улыбки человека
Таким образом, при наличии изображения с лицом и предварительно рассчитанной карты смещения улыбающегося лица (которая определяет смещение каждого пикселя для создания улыбки), применение карты смещения к изображению лица происходит на графический процессор. Теперь мы получаем изображение с улыбающимся лицом. Все, что нам нужно сделать, это нарисовать маркеры лица поверх улыбающегося лица. Это можно сделать, отрисовав CGPath
маркера лица с помощью библиотеки CoreGraphics, которая выполняет рендеринг с использованием ЦП.
Таким образом, наше основное требование к представлению изображения состоит в том, что оно должно быть доступно для ЦП и ГП одновременно (давайте оставим синхронизацию ЦП/ГП для другого поста). Обратите внимание, что мы не хотим копировать содержимое изображения между процессором и графическим процессором, так как это занимает значительное количество времени (12-мегапиксельные изображения в наши дни довольно стандартны и будут только расти) — и это истощает батарея пользователя. Не идеально.
Далее давайте сосредоточимся на некоторых общих объектах, которые мы используем в Lightricks для представления изображения в iOS.
CVPixelBuffer
Apple определяет CVPixelBuffer
как буфер изображения, который содержит пиксели в основной памяти. Это C API, который подходит для хранения плоских и неплоских изображений различных форматов пикселей.
Пиксельные буферы имеют встроенную поддержку синхронизации доступа ЦП (чтение и запись), т. е. когда ЦП обращается к одному и тому же пиксельному буферу из 2 разных потоков. Эта синхронизация выполняется путем вызова CVPixelBufferLockBaseAddress()
и CVPixelBufferUnlockBaseAddress()
с разными флагами блокировки в зависимости от того, читает ли пользователь или читает и записывает пиксельный буфер. После вызова блокировки пользователь может безопасно получить доступ к содержимому буфера пикселей с помощью метода CVPixelBufferGetBaseAddress() . По завершении пользователь должен разблокировать пиксельный буфер, чтобы освободить его для других обращений.
Пиксельный буфер можно создать следующим образом:
- Новый пиксельный буфер создается вызовом
Метод CVPixelBufferCreate()
. - Выделить буфер пикселей с содержимым существующих байтов
CVPixelBufferCreateWithBytes()
. Это важный метод, позволяющий создать пиксельный буфер с исходным содержимым без копирования!
При создании буфера пикселей мы снабжаем словарь атрибутами, определяющими его характеристики. Например, мы можем указать kCVPixelBufferIOSurfacePropertiesKey
для создания пиксельного буфера, поддерживаемого IOS-поверхность
. Мы поговорим о том, почему это важно, чуть позже. Еще одна связанная функция заключается в том, что пиксельный буфер может быть создан с содержимым существующего IOSurface
с использованием метода CVPixelBufferCreateWithIOSurface() . Вы можете получить поддержку IOSurface
пиксельного буфера с помощью метода CVPixelBufferGetIOSurface() . Обратите внимание, что он вернет nil, если пиксельный буфер не поддерживается IOSurface
.
Определяется как ресурс, содержащий форматированные данные изображения , MTLTexture
имеет несколько доступных форматов пикселей и несколько типов текстур, однако может представлять только одну плоскость плоского изображения. Содержимое MTLTexture
всегда доступно для GPU, но не всегда доступно для CPU. Чтобы разрешить доступ к ЦП, текстура должна определять режим хранения MTLStorageModeShared
. Затем ЦП обращается к текстуре через MTLTexture.replace(region:mipmapLevel:withBytes:bytesPerRow:)
для записи содержимого текстуры и MTLTexture.getBytes(_:bytesPerRow:from:mipmapLevel:)
для чтения. Оба метода копируют байты из/в текстуру. Это кажется не очень эффективным.
Итак, как можно создать MLTTexture
с помощью байтов существующего буфера? По-видимому, MTLDevice.makeTexture(descriptor:iosurface:plane:)
делает именно это. (Хм, это снова тот же таинственный IOSurface
…)
(Примечание: это в значительной степени основано на сессии 422 WWDC 2010: Использование нескольких графических процессоров)
IOSurface
— это, по сути, просто хорошая высокоуровневая абстракция вокруг куска системной разделяемой памяти. Таким образом, он разработан для очень эффективного обмена данными между процессами и/или между API, например, для отправки данных из CoreVideo в Metal, когда вы не можете контролировать задействованный контекст.
Самое интересное в IOSurface
с точки зрения разработчика приложения заключается в том, что он скрывает почти все детали перемещения данных с одного GPU на другой или между CPU и GPU и наоборот.
С этого момента давайте сосредоточимся на обмене данными между API и оставим обмен данными между процессами на следующий раз.
Так, например, металлическая текстура может быть привязана к IOSurface
. Это своего рода живое соединение, означающее, что каждый раз, когда изменяется содержимое поверхности, изменения текстуры происходят сразу же, поэтому вам не нужно постоянно копировать данные в текстуру. Кроме того, IOSurface
поддерживает плоский тип изображения, поэтому вы можете привязать текстуру металла к одной плоскости изображения. Теперь, что еще крутого в IOSurface
заключается в том, что не имеет значения, сколько текстур привязано к этому IOSurface
. Все они будут использовать одну и ту же память на графическом процессоре.
Это очень простой пример создания IOSurface
и возможности его использования внутри Metal.
Создание неплоской IOSurface.
Вы указываете словарь всех свойств, которые вы хотите для IOSurface
, и все готово. В этом случае давайте создадим простую 512 на 512 IOSurface
, 4 байта на пиксель, и это почти все, что нам нужно указать для IOSurface
. IOSurfaces
не имеют связанного с ними внутреннего формата. Вы можете дать ему идентификатор формата пикселя OSType
, скажем, kCVPixelFormatType_32RGBA
, но IOSurface
на самом деле не волнует. Единственная причина, по которой это вообще существует, заключается в том, что две стороны (производитель и потребитель) могут выбрать что-то для согласования.
Теперь со стороны Metal все, что нам нужно сделать, это сгенерировать новый объект текстуры и вызвать MTLDevice.makeTexture(descriptor:iosurface:plane:)
для создания объекта текстуры и привязки его к резервному хранилищу этого IOSurface
. На самом деле не имеет значения, что это за данные или их формат, то, что вы указываете здесь в дескрипторе, определяет то, как Metal будет интерпретировать эти данные.
Преимущество IOSurface
в том, что он дает вам прямой доступ к резервной памяти, но вы должны быть осторожны с синхронизацией. Если вы собираетесь писать на IOSurface
напрямую с процессором, а затем использовать его с помощью графического процессора, вы должны заблокировать его с помощью IOSurfaceLock()
, поместить в него свои данные с помощью необработанного указателя IOSurfaceGetBaseAddress()
и, наконец, разблокировать его с помощью IOSurfaceUnlock()
.
В противоположном случае, когда вы потребляете некоторые данные с использованием ЦП после того, как вы использовали ГП для их изменения, вы должны убедиться, что все буферизованные команды ГП зафиксированы и находятся в процессе выполнения. Если нет, часть ядра IOSurface
не может знать, сколько времени ему придется ждать, прежде чем разрешить вам его использовать.
Наконец, поскольку IOSurface
является системным ресурсом (т. е. ОС знает о его существовании), его нельзя инициализировать существующим пулом байтов.
Многие абстракции изображения в iOS можно инициализировать с помощью IOSurface
или произвольного указателя. Чтобы эффективно преобразовать один тип изображения в другой (без копирования фактического содержимого), стратегия довольно проста. Возьмите поддержку IOSurface
из исходного образа (при условии, что он есть) и создайте целевой образ с этим IOSurface
. Этого можно добиться с помощью следующих API:
CoreVideo:
-
CVPixelBufferCreateWithIOSurface()
— используйте этот метод для создания пиксельного буфера изIOSurface
. -
CVPixelBufferGetIOSurface()
— используйте этот метод для полученияIOSurface
из пиксельного буфера.
Металл
-
MTLDevice. makeTexture(descriptor:iosurface:plane:)
— используйте этот метод для создания текстуры Metal изIOSurface
. -
MTLTexture.iosurface
— используйте этот метод для полученияIOSurface
из текстуры Metal.
OpenGL
- —
[EAGLContext texImageIOSurface:target:internalFormat:width:height:format:type:plane:]
— используйте этот метод для привязкиIOSurface
к (текущей) текстуре OpenGL. Нет возможности получитьIOSurface
для текстуры OpenGL.
CoreImage:
-
CIImage.init(ioSurface:options:)
— используйте этот метод для создания образа CoreImage изIOSurface
. Невозможно получитьIOSurface
изCIImage
.
CoreGraphics
-
CGImage
— это неизменяемый объект, чтобы изменить его, вам нужно создатьCGContext
с содержимым изображения, а затем рисовать в этом контексте. Следовательно, используйтеCGBitmapContextCreate()
, гдеIOSurfaceGetBaseAddress()
передается в качестве аргументаvoid *data
в созданный контекст. Невозможно получитьIOSurface
изCGBitmapContext
.
IOSurface
— мощный инструмент, позволяющий эффективно работать с несколькими API. Поэтому при разработке конвейера рендеринга выберите резервный образ IOSurface
, если вам нужно использовать все вышеупомянутые API для рендеринга их содержимого.
IOSurface позволяет нам работать сразу с несколькими библиотеками без копирования данных.
Таким образом, вы исключаете копирование данных из одного типа изображения в другой, что, в свою очередь, повышает скорость отклика приложения и снижает расход заряда батареи — лучше для приложения и лучше для пользователя.
—
Творите волшебство вместе с нами
Мы всегда в поиске новых многообещающих талантов. Если вы заинтересованы в разработке революционных новых инструментов для авторов, мы хотим услышать от вас. От написания кода до исследования новых функций вас будет окружать поддерживающая команда, которая живет и дышит технологиями.
Похоже на тебя? Подать заявку здесь .
Преобразование изображений iOS | Cloudinary
После того как вы или ваши пользователи загрузили изображения в Cloudinary, вы можете доставлять их через динамические URL-адреса. Вы можете включить в свои динамические URL-адреса инструкции, которые сообщат Cloudinary о преобразовании ваших ресурсов с использованием набора параметров преобразования. Все преобразования выполняются автоматически в облаке, и ваши преобразованные активы автоматически оптимизируются, прежде чем они будут направлены через быструю CDN конечному пользователю для оптимального взаимодействия с пользователем.
Например, вы можете изменять размер и кадрировать, добавлять наложенные изображения, размывать или пикселизировать лица, применять множество специальных эффектов и фильтров, а также применять настройки для оптимизации изображений и их отображения.
Библиотека Cloudinary для iOS упрощает создание URL-адресов преобразования для легкого встраивания ресурсов в ваше приложение iOS.
На этой странице:
- Создание URL-адресов изображений
- Добавить трансформации
- Скачать изображения
- Доставка изображений с использованием расширений пользовательского интерфейса
- Применение общих преобразований изображений
- Адаптивные изображения
См. также: Преобразование видео в iOS
Используйте метод createUrl
для создания URL-адреса изображения.
Копировать в буфер обмена
cloudinary.createUrl().generate("sample.jpg") // возвращает: https://res.cloudinary.com/demo/image/upload/sample.jpg
Вы можете добавить преобразования в метод createUrl
, определив объект преобразования
, а затем передать его с помощью метода setTransformation
.
Копировать в буфер обмена
let tr = CLDTransformation(). setWidth(100).setHeight(150).setCrop(.crop) пусть url = cloudinary.createUrl().setTransformation(tr).generate("sample.jpg") // возвращает: https://res.cloudinary.com/demo/image/upload/c_fill,h_150,w_100/sample.jpg
Цепочка преобразований
Вы можете связать преобразования вместе с цепочкой
метод, в котором каждое преобразование применяется к результату предыдущего преобразования:
Копировать в буфер обмена
let tr = CLDTransformation().setWidth(100).setCrop(.fit).chain().setAngle(15) пусть url = cloudinary.createUrl().setTransformation(tr).generate("sample.jpg") // возвращает: https://res.cloudinary.com/demo/image/upload/c_fit,w_10/a_15/sample.jpg
Например, следующий код обрезает изображение до 150×150, скругляет углы, применяет сепию эффект, добавляет текст в центр верхней части изображения с измененным размером, а затем поворачивает весь результат на 20 градусов.
Копировать в буфер обмена
let url = cloudinary. createUrl().setTransformation(CLDTransformation() .setHeight(150).setWidth(150).setCrop(.crop).setEffect(.sepia).setRadius(20).chain() .setOverlayWithLayer (CLDTextLayer () .setFontFamily("Arial").setFontSize(60).setText("Это моя картинка")) .setGravity(.север).setY(20).цепочка() .setAngle(20)) .generate("mypic.jpg")
Дополнительные сведения и примеры преобразования изображений см. в разделе Применение распространенных преобразований изображений.
Используйте метод fetchImage
класса CLDDownloader
для загрузки изображения. Метод принимает параметр url
с расположением загружаемого изображения. Каждый запрос на загрузку возвращает экземпляр CLDFetchImageRequest
, что позволяет отменять, приостанавливать или возобновлять загрузку. Загрузка выполняется асинхронно в отдельном потоке, поэтому вы также должны обеспечить закрытие обратного вызова для обработки результатов загрузки:
Копировать в буфер обмена
позволить загрузчику:CLDDownloader = cloudinary. createDownloader() пусть myImage = downloader.fetchImage(url) { (прогресс) в // Обработка прогресса } завершениеHandler: { (изображение, ошибка) в // Обработать результат }
Кэширование изображений
При первом вызове метода fetchImage
для загрузки определенного ресурса Cloudinary также сохраняет его в кэше устройства. Каждый последующий вызов fetchImage
сначала пытается найти изображение в локальном кеше и извлекает его из кеша, если оно было найдено. Это поведение по умолчанию можно настроить с помощью cachePolicy
, cacheMaxDiskCapacity
и cacheMaxMemoryTotalCost
свойства экземпляра CLDCloudinary
:
свойство | Тип | Описание |
---|---|---|
cachePolicy | CLDImageCachePolicy | Установить политику кэширования загруженных изображений Возможные значения: -CLDImageCachePolicy. none -CLDImageCachePolicy.memory -CLDImageCachePolicy.disk (по умолчанию) |
КэшМаксДискКапасити | Интервал | (актуально, только если для политики выбран параметр диска) Максимальная емкость дискового кэша в байтах. По умолчанию: 150 * 1024 * 1024 |
кешMaxMemoryTotalCost | Интервал | (актуально, только если для политики выбран параметр памяти) Максимальный размер кэша памяти в байтах. По умолчанию: 150 * 1024 * 1024 |
Например, чтобы использовать память устройства для кэширования изображений и ограничить размер дискового кэша до 50 МБ:
Копировать в буфер обмена
cloudinary.cachePolicy = CLDImageCachePolicy.disk cloudinary.cacheMaxDiskCapacity = 50 * 1024 * 1024
Cloudinary SDK предоставляет расширения для трех элементов пользовательского интерфейса iOS для представления изображений. Эти расширения предоставляют метод cldSetImage
, который автоматически извлекает и загружает изображение в фоновом режиме, а также настраивает его отображение в пользовательском интерфейсе. Расширение доступно для:
- UIView
- UIImageView
- UIButton
Например, установка компонента UIImageView с именем «photoImageView» для извлечения и отображения изображения, которое было загружено с общедоступным идентификатором «собака», масштабированного до 400 пикселей в ширину:
Копировать в буфер обмена
let трансформации = CLDTransformation() .setCrop(.scale).setWidth(400) photoImageView.cldSetImage(publicId: "собака", cloudinary: cld, преобразование: преобразование)
В этом разделе представлен обзор и примеры следующих часто используемых функций преобразования изображений, а также ссылки на более подробную документацию по этим функциям:
- Изменение размера и кадрирование
- Преобразование изображения в другой формат
- Применение эффектов изображения и фильтров
- Добавление наложений текста и изображений
- Оптимизация изображений
Имейте в виду, что этот раздел предназначен только для того, чтобы познакомить вас с основами использования преобразований изображений в iOS.
Подробные объяснения того, как реализовать широкий спектр преобразований, см. в разделе Преобразования изображений.
Полный список всех поддерживаемых преобразований изображений и их использование см. в Справочнике по URL-адресу преобразования API.
Изменение размера и кадрирование
Существует множество различных способов изменения размера и/или кадрирования изображений, а также управления областью изображения, сохраняемой при кадрировании.
В следующем примере метод кадрирования fill
используется для создания динамического URL-адреса изображения, которое полностью соответствует запрошенному размеру 250×250, сохраняя при этом исходное соотношение сторон. Он использует гравитацию обнаружения лиц, чтобы гарантировать, что все лица на изображении сохраняются и центрируются при обрезке изображения:
Копировать в буфер обмена
let url = cloudinary.createUrl() .setTransformation(CLDTransformation() .setWidth(250).setHeight(250). setGravity("лица").setCrop("заполнить")) .generate("family_bench.jpg")
Исходное изображение Обрезка заливки с гравитацией «лиц»
Подробную информацию обо всех параметрах изменения размера и обрезки см. в разделе Изменение размера и обрезка изображений.
Преобразование изображения в другой формат
Вы можете доставить любое изображение, загруженное в Cloudinary, практически в любом формате изображения. Существует два основных способа конвертации и доставки в другом формате:
- Укажите общедоступный идентификатор изображения с желаемым расширением.
- Явно задайте нужный формат с помощью параметра
fetchFormat
.
Например:
Сгенерировать динамический URL для изображения в формате GIF, указав расширение файла:
Скопировать в буфер обмена
let url = cloudinary.createUrl().generate("sample.gif")
Сгенерируйте динамический URL для изображения в формате GIF, указав setFormat
параметр:
Копировать в буфер обмена
let url = cloudinary. createUrl() .setTransformation(CLDTransformation() .setWidth(350).setCrop("масштаб").setFormat("gif")) .generate("cloud_castle.jpg")
Дополнительные сведения см. в разделе Поддержка форматов изображений.
Применение эффектов и фильтров к изображениям
Вы можете выбрать один из множества эффектов, улучшений и фильтров для изображения, чтобы применить их к своим изображениям. Доступные эффекты включают различные эффекты цветового баланса и уровня, тонирование, размытие, пикселизацию, повышение резкости, эффекты автоматического улучшения, художественные фильтры, наложения изображений и текста, эффекты искажения и изменения формы, контуры, фон, тени и многое другое.
Например, приведенный ниже код создает динамический URL-адрес для изображения с эффектом мультяшности, эффектом скругления углов и эффектом цвета фона (и затем масштабирует изображение до высоты 300 пикселей).
Копировать в буфер обмена
let url = cloudinary.createUrl() . setTransformation(CLDTransformation() .setEffect("мультфильм").цепочка() .setRadius("макс").цепочка() .setEffect("контур:100").setColor("голубой").цепочка() .setBackground("голубой").цепочка() .setHeight(300).setCrop("масштаб")) .генерировать("актер.jpg")
Дополнительные сведения о доступных эффектах и фильтрах изображения см. в разделе Визуальные эффекты и улучшения изображения.
Добавление наложений текста и изображений
Вы можете добавлять изображения и текст в качестве наложений на основное изображение. Вы можете применять к наложенным изображениям те же типы преобразований, что и к любому изображению, и вы можете использовать настройки гравитации или координаты x и y для управления расположением наложений. Вы также можете применять к тексту различные преобразования, такие как цвет, шрифт, размер, поворот и многое другое.
Например, приведенное ниже преобразование накладывает фотографию пары на изображение кружки. Накладываемая фотография обрезается с помощью распознавания лиц с отрегулированной насыщенностью цвета и применением эффекта виньетки. Слово «любовь» добавлено розовым причудливым шрифтом и повернуто, чтобы соответствовать дизайну. Также добавлена графика с воздушным шаром. Кроме того, конечное изображение обрезается, а углы округляются.
Копировать в буфер обмена
let url = cloudinary.createUrl() .setTransformation(CLDTransformation() .setWidth(400).setHeight(250).setGravity("юг").setCrop("заполнить").chain() .setOverlay («красивая_пара»). setWidth (1.3). setHeight (1.3). setGravity («лица»). setFlags («region_relative»). .setEffect("насыщенность:50").цепочка() .setEffect("виньетка").цепочка() .setFlags("layer_apply").setWidth(100).setRadius("max").setGravity("center").setY(20).setX(-20).setCrop("масштаб").chain() .setOverlay("воздушный шар").setHeight(55).цепочка() .setEffect("оттенок:-20").setAngle(5).цепочка() .setFlags("layer_apply").setX(30).setY(5).chain() .setOverlay("текст:Cookie_40_bold:Love").setEffect("colorize").setColor("#f08").chain() .setAngle(20). setFlags("layer_apply").setX(-45).setY(44).chain() .setWidth(300).setHeight(250).setX(30).setCrop("урожай").цепочка() .setRadius(60)) .генерировать("coffee_cup.jpg")
Оптимизация изображений
По умолчанию Cloudinary автоматически выполняет определенные оптимизации для всех преобразованных изображений. Существует также ряд дополнительных функций, позволяющих дополнительно оптимизировать изображения, которые вы используете в своем приложении для iOS. К ним относятся, среди прочего, оптимизация качества изображения, формата и размера.
Например, можно использовать значение auto
для атрибута качество
, чтобы автоматически доставлять изображение с минимальным размером файла при соблюдении требуемого уровня качества. В приведенном ниже примере применяется автоматический параметр качества, что приводит к уменьшению размера файла на 50 % (1,4 МБ против 784 КБ) без видимого изменения качества.
Копировать в буфер обмена
let url = cloudinary. createUrl() .setTransformation(CLDTransformation() .setQuality("авто")) .generate("pond_reflect.jpg")
Подробный обзор различных способов оптимизации изображений см. в разделе Оптимизация изображений.
Адаптивный дизайн — это метод обеспечения оптимальных условий просмотра для пользователей с учетом их устройства, размера окна, ориентации и разрешения. Разработанное приложение быстро адаптирует свой макет к среде просмотра, динамически изменяя размер и перемещая элементы в зависимости от свойств устройства, на котором отображается приложение.
Когда дело доходит до изображений, адаптивно разработанное приложение не должно просто отправлять изображение с самым высоким разрешением, а затем использовать изменение размера на стороне клиента для отображения изображения на всех различных устройствах: это было бы огромной тратой полосы пропускания для пользователей на маленьких, дисплеи с низким разрешением. Лучшее решение — подготовить изображение с различными разрешениями и размерами, а затем предоставить изображение с наилучшим возможным разрешением, исходя из разрешения устройства и доступных размеров, без ненужной траты полосы пропускания или времени загрузки. Cloudinary может помочь упростить динамическое преобразование изображений. Вы можете просто создавать URL-адреса изображений с любой шириной или высотой изображения в зависимости от разрешения конкретного устройства и размера окна. Это означает, что вам не нужно предварительно создавать изображения, а динамическое изменение размера происходит на лету по мере необходимости.
Для компонента Cloudinary UIImageView
доступен адаптивный метод. Используйте метод cldSetImage
для автоматического извлечения и загрузки оптимального изображения в фоновом режиме, а также настройки его отображения в пользовательском интерфейсе. Чтобы сделать сгенерированный URL-адрес адаптивным, передайте параметры метода 5 cldSetImage
: publicId
изображения, Cloudinary resourceType
, экземпляр Cloudinary, адаптивные параметры и любое преобразование, которое нужно применить к изображению. Отзывчивые параметры передаются как CLDResponsiveParams
объект следующим образом:
-
autoWidth
: логическое значение — настроить в соответствии с доступной шириной -
autoHeight
: логическое значение — настроить в соответствии с доступной высотой -
cropMode
: String — режим обрезки, применяемый при настройке изображения -
гравитация
: Строка — место на изображении, которое будет использоваться в качестве фокуса для преобразования
Вместо указания 5 параметров реагирования по отдельности вы можете добавить один из следующих «предустановленных» методов:
-
autoFill()
: Регулирует высоту и ширину изображения, сохраняя соотношение сторон, чтобы заполнить ImageView, используя автоматическую гравитацию, чтобы определить, какая часть изображения видна, если это необходимо (сокращение для: true, true , «заполнить», «авто»). -
fit()
: Регулирует высоту и ширину изображения, сохраняя соотношение сторон, чтобы оно полностью соответствовало границам ImageView. Будет показано все изображение (сочетание клавиш: true, true, «fit», «center»)
Например, установка компонента UIImageView с именем «photoImageView» для быстрой загрузки и отображения изображения, которое было загружено с общедоступным идентификатором «sample» в формате JPEG и автоматически изменено для заполнения доступной ширины и высоты:
Копировать в буфер обмена
пусть преобразование = CLDTransformation().setFetchFormat("jpg") let params = CLDResponsiveParams(autoWidth: true, autoHeight: true, cropMode: .fill,gravity: .auto) photoImageView.cldSetImage (publicId: «образец», облачный: cld, resourceType: "image", ResponseParams: параметры, преобразование: преобразование)
Что эквивалентно:
Копировать в буфер обмена
let трансформации = CLDTransformation().setFetchFormat("jpg") пусть params = CLDResponsiveParams. autoFill() photoImageView.cldSetImage (publicId: «образец», облачный: cld, resourceType: "image", ResponseParams: параметры, преобразование: преобразование)
Метод cldSetImage
with получает точные доступные размеры для компонента UIImageView, а затем округляет высоту и ширину изображения до ближайшего шага (по умолчанию 100). Например, если точная ширина составляет 284 логических пикселя, запрошенная ширина округляется до 300 пикселей. Это предотвращает создание слишком большого количества версий изображения и уменьшает число попаданий в кэш для последующих запросов от других устройств.
Значения по умолчанию для адаптивного расчета можно переопределить, вызвав методы setStepSize
, setMinDimension
и/или setMaxDimension
из CLDResponsiveParams
и передав новые значения (логические значения по умолчанию — 35, 00 и 50 пикселей соответственно). ).
Например, чтобы установить размер шага на каждые 100 логических пикселей и ограничить размеры от 100 до 300 логических пикселей:
Скопировать в буфер обмена
пусть преобразование = CLDTransformation(). setFetchFormat("jpg") пусть params = CLDResponsiveParams.autoFill() .setMaxDimension(300) .setMinDimension(100) .setStepSize (100) photoImageView.cldSetImage (publicId: «образец», облачный: cld, resourceType: "image", ResponseParams: параметры, преобразование: преобразование)
Управление файлами образов Cisco IOS
Загрузка файлов образов Cisco IOS
Вот блок-схема, наглядно представляющая все, что мы только что обсуждали. Роутер загружается. Какое у нас значение регистра конфигурации по умолчанию? Если не меняли, то это 2102, но это надо проверить. И когда маршрутизатор проверяет его, если он равен 0, что это значит? Загрузите в режим монитора ПЗУ или ROMMON. Если это 2, посмотрите на NVRAM и последовательно изучите команды загрузки системы. Но если 1, сразу смотрим во Flash и находим во Flash самый первый образ IOS и загружаем его.
Допустим, мы прошли этот первый шаг, загрузили первый файл во Flash, отлично. Но что происходит при отсутствии операционной системы, которую мы можем найти на местном шасси? Мы собираемся выполнить эту функцию загрузки на TFTP-сервере. Я не фанат этой функции, но вы можете использовать ее в качестве резервной копии. Мы не будем учить вас, как это настроить. По Cisco есть много официальных документов, я уверен, что они достаточно хорошо задокументированы. И тогда, скорее всего, он перейдет в режим монитора ПЗУ, хорошо. Я думаю об этом следующим образом: «Эй, я не могу найти операционную систему локально, и я не подготовил для нее TFTP-сервер». Затем загружаемся в режим монитора ПЗУ. Таким образом, мы могли бы сказать устройству загрузиться в режим монитора ПЗУ, установив в поле загрузки значение 0. Но мой вывод, как правило, когда я вижу устройство, в котором я управляюсь, я оказываюсь в режиме ROMMON, мой вывод то есть я не смог загрузить операционную систему. Может быть, операционная система была стерта, повреждена, может быть, ее никогда не существовало, или, может быть, она не может ее загрузить по какой-то причине.
Мы окажемся там, а потом подумаем про себя, а, ладно, я должен скопировать свой конфиг. И если вы любитель модемов, если вы когда-нибудь занимались BBS, системами досок объявлений, вы можете X модемить через перевернутый кабель, через терминальную программу в режиме монитора ПЗУ. Вы также можете подготовить такие вещи, как элементарный IP-адрес, маску подсети, шлюз по умолчанию, чтобы выполнить команду копирования. Но теперь есть медленный способ, передача через X-модем и быстрый способ, копирование через IP-адрес. И я на самом деле предпочитаю модем X, потому что это немного проще. Но вам понадобится около 16 часов, я даже не шучу, около 16 часов за ночь, чтобы перенести эту операционную систему.
Наша операционная система обычно представляет собой сжатый двоичный файл. Итак, как только он будет найден во Flash, нам придется распаковать его, что мы и показываем здесь.
Начальная загрузка системы, версия 15.0(1r)M15, ВЫПУСК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (fc1)
Техническая поддержка: http://www.cisco.com/techsupport
Copyright (c) 2011 by cisco Systems, Inc.Общий объем памяти = 512 МБ – Встроенная – 512 МБ, DIMM0 – 0 МБ
Платформа CISCO2901/K9 с 524288 Кбайт основной памяти ЕСС включенROMMON только для чтения инициализирован
загрузка программы завершена, точка входа 0x80803000, размер: 0x1b340
загрузка программы завершена, точка входа 0x80803000, размер: 0x1b340Тест загрузки образа IOS
_________________
Выпуск программного обеспечения с цифровой подписью
Загрузка программы завершена, точка входа: 0x81000000, размер: 0x5d433c0Самостоятельная распаковка образа:
############################################ ############################################
##### ################################################### #################################
################################################## #######################################
############ ################################################### ##########################
######################## ################################################### ##############
#################################### ################################################### ##
##########################[OK]
<выходные данные опущены>
Self распаковывает это изображение, вот что все эти Цифровые знаки уведомляют нас о том, что он выполняет процесс декомпрессии. А куда тогда девать разжатый IOS?
Загружаем в ОЗУ. Таким образом, мы не запускаем операционную систему напрямую из бинарного файла, мы не запускаем ее напрямую из Flash, мы пытаемся запустить ее в оперативной памяти. Итак, мы дали вам новую вещь, которая работает и находится внутри оперативной памяти. Мы рассказали вам о таких вещах, как рабочая конфигурация, таблица маршрутизации, таблица топологии OSPF, но также теперь у нас есть выдержка, у нас есть выражение операционной системы внутри ОЗУ.
Где мы можем проверить значение нашего регистра конфигурации? Ты помнишь? Набрав show version, она справа внизу. Но что еще мы можем почерпнуть из вывода шоу-версии?
Router#show version
Программное обеспечение Cisco IOS, программное обеспечение C2900 (C2900-UNIVERSALK9-M), версия 15.2(4)M1, ВЫПУСК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (fc1)
Техническая поддержка: http://www.cisco.com/techsupport
Copyright (c) 1986-2012, Cisco Systems, Inc.
Составлено, четверг, 26 июля, 20:54, prod_rel_teamПЗУ: системная начальная загрузка, версия 15. 0(1r)M15, ВЫПУСК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (fc1)
Время работы маршрутизатора составляет 42 минуты
Система возвращена в ПЗУ путем перезагрузки в 11:39:24 UTC, воскресенье, 1 марта 2014 г.
Файл образа системы — «flash0:c2900-universalk9-mz.SPA.152-4.M1.bin»
Тип последней перезагрузки: Обычная перезагрузка
Причина последней перезагрузки: Команда перезагрузки
<выходные данные опущены>Cisco CISCO2901/K9 (версия 1.0) с 483328K/40960K байт памяти.
Идентификатор платы процессора FCZ1642C5XJ
2 интерфейса Gigabit Ethernet
1 последовательный (синхронный/асинхронный) интерфейс
1 терминальная линия
Конфигурация DRAM имеет разрядность 64 бита с включенной четностью.
255 КБ энергонезависимой памяти конфигурации.
250880 КБ ATA System CompactFlash 0 (чтение/запись)
<вывод опущен>Регистр конфигурации: 0x2102
Хорошо, я вижу версию своей операционной системы. Итак, в самой верхней строке я вижу активную операционную систему на этом шасси и то, что мне нужно. Ну что за шасси? У меня 2900, это роутер. Я использую iOS 15.2. Мы также поговорим о таких вещах, как новая структура операционных систем и включенный набор функций. Universal — это то, что вы увидите во многих вещах, таких как интегрированный сервисный маршрутизатор 2-го поколения или ISR2. Это вроде как поколение шасси маршрутизатора, 2811 будет ISR1. Итак, я использую iOS 15.2, выглядит хорошо. Я также собираюсь смотреть на такие вещи, как, о, мой бутстрап. Если я имею дело с какой-то несовместимостью, я мог бы посмотреть там. Я вижу файл своей операционной системы, файл образа системы. И не манипулируйте именами этих операционных систем. У них есть имя, которое содержит довольно много информации о вещах, например, о том, какая это версия операционной системы. Так что не говорите: «Эй, это операционная система ветки А». В долгосрочной перспективе это сработает против вас, и я призываю вас не делать этого.
Затем некоторые вещи, которые меня здесь не особо волнуют, но затем количество памяти, это полезно, ладно, это полезно. Понимание того, сколько оперативной памяти работает на шасси, может сказать вам, что вы можете с ней делать, и это то, что нужно сделать. show version — это то место, куда можно прийти, чтобы посмотреть, сколько мегабайт оперативной памяти установлено на шасси. Мы также можем видеть такие вещи, как NVRAM, Flash, также полезные, и, к счастью, в наши дни мы почти не ограничены, но когда мы начинали, мы имели дело с шасси, которое имело около 8 МБ ОЗУ и 8 МБ. МБ Flash. И я скажу вам, что это вызвало у нас некоторую душевную боль, потому что вы, возможно, не смогли установить эту операционную систему ни в ОЗУ, ни во флэш-памяти. Теперь он хранится во флэш-памяти, но у вас может не хватить оперативной памяти для его поддержки. Так что это довольно полезный вывод.
Загрузка файлов конфигурации Cisco IOS
Итак, IOS загружена, пока все выглядит хорошо. А что с этим конфигурационным файлом? Если это совершенно новое устройство, я не буду беспокоиться об этом файле конфигурации, потому что его еще не будет в NVRAM. Но если это маршрутизатор или коммутатор, который находится в нашей производственной сети, определенно в NVRAM должен храниться какой-то файл конфигурации. Итак, это первое место, куда смотрит наше устройство. Это в NVRAM? Да загрузите его, это так просто. Но если это не так, что может произойти оттуда?
Мы уже говорили вам. Мы можем попробовать загрузиться или получить конфигурацию с TFTP-сервера, хорошо. Это возможно, это не обычная конфигурация, поэтому, что более вероятно, ответ на второй прорыв блок-схемы — нет. У нас нет активной ссылки, или мы пытались это сделать, но потерпели неудачу, затем мы делаем начальный диалог конфигурации, также называемый диалогом конфигурации системы. Переключатели также будут делать это, и вы не хотите задавать себе этот ряд вопросов. Мы довели вас до того, что вам не следует использовать его на маршрутизаторе и коммутаторе. Это сомнительно полезно для маршрутизаторов и коммутаторов, но гораздо полезнее для других типов шасси.
Итак, наше устройство нашло файл конфигурации в NVRAM. Что с ним делать сейчас? Мы запускаем его из NVRAM? Нет, совсем нет, мы должны загрузить его в оперативную память. Помните, оперативная память — это то место, где сейчас все происходит на нашем устройстве. NVRAM будет просто резервной копией текущей конфигурации на тот момент времени, когда мы сделали снимок, введя копию running-config startup-config. Итак, мы загружаем его в оперативную память, и он запускается оттуда.
Какой командой можно проверить, что находится в оперативной памяти? показать текущую конфигурацию .
И какой командой мы можем проверить, что находится в NVRAM? показать конфигурацию запуска .
Управление образами Cisco IOS
Собираемся ли мы просто придерживаться того же образа IOS, который поставлялся с нашим устройством, на протяжении всего срока службы нашего устройства? Скорее всего нет. Будут проблемы с этим образом IOS, возможно, ошибки, которые необходимо исправить. Поэтому в какой-то момент нам придется обновить этот образ IOS.
Но давайте убедимся, что мы понимаем здесь правильное мышление. Мы не собираемся делать обратное, когда мы попадаем в ситуацию, когда мы будем обновляться каждый раз, когда Cisco предлагает немного новую версию, даже переходя с IOS 15.0 на 15.1 и 15.2, которые являются основными. релизы, да? Cisco может назвать их второстепенным выпуском, но каждый раз, когда мы переходим от одного десятичного знака к другому, это довольно большое дело. Это огромное изменение, когда мы прыгаем с 12 до 15, хотя мы не воспринимаем большую часть этого внутри операционной системы. Не то чтобы они действительно отличались. Но я не хочу, чтобы вы думали, что мы находимся в том же цикле обновления, что и настольный или даже серверный компьютер, нет.
Например, если вы используете версию 12.4 и она отлично работает, вы не будете искать обновление до версии 15.2 только потому, что она есть. У вас должен быть какой-то триггер, какая-то значимая вещь, как то, что мы упомянули — ошибки, функции, это акцент, чтобы заставить нас делать обновление, хорошо, потому что это будет влияние. И вы должны копировать это, вы копируете это, перезагружаете устройство, вызывая сбои. Вы должны найти время, чтобы сделать это, и вы не делаете это по прихоти.
Расшифровка имен файлов образа Cisco IOS
Итак, как мы говорили ранее, мы найдем наш образ IOS во флэш-памяти. Так что я устраиваю шоу-вспышку и смотрю через вспышку. И мы также заявили, что это двоичный файл, поэтому он будет иметь расширение .bin. Итак, я нашел его и сейчас смотрю на это очень длинное и сложное имя файла. Я собираюсь расшифровать это для вас.
c2900-universalk9-mz.SPA.15.2.M1.bin
У них есть часть информации прямо здесь. Это для Cisco 2900, это роутер. Когда я говорю вам о наборе функций, но набор функций здесь универсален. Другие наборы функций в более ранних поколениях, такие как IOS 12.0, 12.1, 12.2, 12.3, 12.4, имели такие вещи, как расширенный IP, корпоративный IP, сервис-провайдер, IP plus… Затем мы двигаемся дальше, и я вижу k9, который связан с какое-то шифрование. Это не очень важный раздел. Эта страница, например, не очень важна для вашей успешной сдачи экзамена, но я скажу вам: «Укусите пулю прямо сейчас». M работает в оперативной памяти, хорошо. Как мы уже говорили вам, M работает в ОЗУ, вы почти всегда будете обнаруживать это. Z сжато, отлично. Знай эти 2 буквы, они очень важны. Затем справа от него версия IOS 15.2, а затем следует ожидать расширение .bin.
Создание резервной копии образа Cisco IOS
Почему нам может потребоваться создать резервную копию нашего образа Cisco IOS? Действительно ли в этом есть необходимость? Честно говоря, если что-то случится с этим образом IOS, я не смогу просто вернуться к Cisco и взять другой, зачем делать его резервную копию?
Вы могли бы это сделать, если бы ваши учетные данные не изменились и тому подобное, но вот в чем дело. Мы хотим иметь максимально возможную доступность в нашей сети. Доступность зависит от времени безотказной работы. И чтобы поддерживать высокий уровень времени безотказной работы, нам нужно свести к минимуму простои, а когда они все же случаются, нам нужно быстро их устранять. Итак, я хотел бы, чтобы вы поняли, что часть быстрого получения этого решения состоит в том, чтобы точно знать, куда идти, иметь именно ту операционную систему прямо там, а затем вы получаете IP-соединение в ROMMON, копируете его и готовы через полчаса вместо 90 минут. Это большая разница. И причина, по которой мы заботимся об этом, заключается в том, что вы хотите иметь правильную операционную систему.
Если у вас есть испытанная и надежная операционная система, работающая в дикой природе в вашей производственной сети, вы хотите убедиться, что можете вернуться к ней, вместо того, чтобы делать предположения из моря операционных систем, которые могут быть у Cisco. там. А потом вы случайно загружаете другую операционную систему, и это ранний выпуск, и он работает не совсем правильно. Вам нужны операционные системы общего развертывания, получите их, а затем вам нужна общность. Если у вас есть 30 маршрутизаторов одного типа, вам нужна только одна резервная копия, верно? Если они работают под управлением одной и той же операционной системы, возможно, вы поместите несколько мест для простоты доступа, но это большое дело. Устраните проблему быстрее, сократив среднее время ремонта. Таким образом, вы не только хотите создавать резервные копии своих конфигураций, вы хотите создавать резервные копии своих операционных систем.
Итак, давайте удостоверимся, что у нас есть подключение к серверу, на который мы собираемся сделать резервную копию операционной системы. В данном случае это TFTP-сервер. Как мы это делаем? Пингую, отлично. У вас успешное подключение. Теперь нам также нужно убедиться, что на этом TFTP-сервере достаточно места на диске для хранения нашего образа IOS. Надеюсь, у нас есть место на диске. Но мы можем проверить размер образа IOS во флэш-памяти. show flash скажет нам размер этого. А затем также дважды проверьте сервер TFTP, чтобы убедиться, что у вас есть достаточно места для его хранения. И, наконец, мы используем наш скопировать команду . Копировать источник в место назначения — так каждый раз работает команда копирования; скопировать источник в место назначения . Так при чем здесь источник? Что ж, мы хотим создать резервную копию нашего IOS, поэтому наш источник — флэш-память, именно там мы найдем наш образ IOS. И пунктом назначения будет сервер TFTP.
Router#copy flash0: tftp:
Имя исходного файла []? c2900-universalk9-mz.SPA.152-4.M1.bin
Адрес или имя удаленного хоста []? 172.16.1.100
Имя файла назначения []? с2900-universalk9-mz.SPA.152-4.M1.bin
!!!!!!!!!!!!!!!!!!!
<выходные данные опущены>
97794040 байт скопировано за 363,468 с (269058 байт/с)
Итак, скопируйте flash на tftp, а затем он спросит нас, как называется исходный файл? Скопируйте и вставьте это с флешки, вставьте прямо туда. Каков IP-адрес этого TFTP-сервера? Введите его, и все готово. Они скопированы для нас.
Обновление образов Cisco IOS
Итак, давайте поговорим о рабочем процессе установки новой операционной системы на шасси. Это действительно также относится и к шасси Catalyst, просто чтобы мы поняли. Мы делаем то же самое, хотя мы говорим о маршрутизаторе. Итак, первое, что нужно сделать, это получить операционную систему с сайта Cisco.com. Итак, вы собираетесь подняться в центр программного обеспечения, вам нужно будет войти в систему, найти нужную операционную систему, которую вы хотите применить к своему устройству. Вы собираетесь загрузить это, и это позволит вам загрузить его на ваш локальный компьютер. И если ваш локальный ПК работает как TFTP-сервер, отлично. Если ваш TFTP-сервер находится в другом месте, вы должны поместить его в папку TFTP, которая находится на этом TFTP-сервере. Так что это может быть, например, корень C: TFTP, хорошо. Как-нибудь перебери его туда. Теперь вы готовы приступить к рассмотрению возможности передачи данных с этого TFTP-сервера на внешнее шасси. Поэтому вам необходимо IP-соединение между сервером TFTP и рассматриваемым шасси. Таким образом, вы можете пинговать, и вы можете пинговать с помощью IPv4, или, если у вас есть возможность подключения к IPv6, я полагаю, вы также можете использовать это, хорошо. Затем вы хотите убедиться, что на вашем маршрутизаторе достаточно флэш-памяти.
Убедитесь, что у вас есть место для команды show flash. Честно говоря, я иногда пропускаю этот шаг. Он сообщит нам, если у меня недостаточно места. Команда копирования выдаст ошибку, но сделает все правильно. Сделайте вспышку шоу, затем выполните команду копирования. Теперь я хочу, чтобы вы подумали: «Как мне перенести IOS оттуда сюда? Какова основная структура этой команды копирования?». Делаю копию, пытаюсь вытащить с TFTP сервера, поместить во флеш. О каком синтаксисе я должен думать?
место назначения источника копирования . Так что же является источником? Источником является TFTP-сервер. Какова цель? прошить на нашем роутере.
Branch#copy tftp: flash0:
Адрес или имя удаленного хоста []? 2001:DB8:AC10:100::64
Имя исходного файла []? c2900-universalk9-mz.SPA.152-4.M1.bin
Имя файла назначения []? c2900-universalk9-mz.SPA-152-4.M1.bin
Доступ к tftp://2001:DB8:AC10:100::64/c2900-universalk9-mz. SPA.152-4.M1.bin…Загрузка c2900-universalk9-mz.SPA.152-4.M1.bin из 2001:DB8:AC10:100::64
(через GigabitEthernet0/0): !!!!!!!!!!!!!!!! !!!!
<вывод опущен>
[ОК — 97794040 байт]97794040 байт скопировано за 368,128 с (265652 байт/с)
Хорошо. Так вот, собственно, синтаксис, копировать tftp flash . Нажмите Ввод. Нам нужно ввести некоторые параметры, например IP-адрес TFTP-сервера. Я видел, как люди пытались поместить это в саму команду копирования, и я действительно не рекомендую вам это делать. Просто позвольте им задать вам все эти вопросы в этом мастере копирования. И если вы правильно укажете параметры для IP-адреса, вы также увидите такие вещи, как «Привет, какое имя файла?» Так что я, вероятно, попытаюсь скопировать и вставить это, если вы можете, хорошо, потому что неинтересно печатать это и не переименовывать, верно? Таким образом, имя вашего исходного файла и имя файла назначения должны быть одинаковыми, вы не должны их менять, верно? Имя файла назначения совпадает с его именем после копирования во флэш-память. Затем вы нажимаете Enter и ждете момент. А потом вы начинаете видеть эти восклицательные знаки, и это так успокаивает, когда вы видите эти восклицательные знаки. Уйдите, выпейте напиток, вернитесь, и ваша операционная система может быть перенесена. Теперь я добрался до вспышки. Значит ли это, что я запускаю его прямо сейчас? Запускаю ли я эту операционную систему в тот момент, когда она копируется во флэш-память?
Когда загружается наша операционная система? Ты помнишь? Он загружается в процессе загрузки, распаковывается, а затем загружается в оперативную память. Он сейчас в ОЗУ? Нет. Он был распакован? Нет. Он просто находится во флэш-памяти вместе с другими образами IOS, возможно, во флэш-памяти. Так что это значит? Ну, мы должны направить наше устройство на загрузку этого образа при следующей перезагрузке. Как мы можем сделать это? Мы можем использовать команду boot system, мы можем это сделать. boot system указать файл. Затем убедитесь, что мы скопировали нашу текущую конфигурацию в конфигурацию запуска, иначе мы можем стереть все остальные образы IOS, и к чему это приведет? Ну, этот загружается в следующий раз. Но так ли хороша идея стереть все остальные образы IOS?
Нет. Потому что это ваш запасной механизм, хорошо. Это ваш запасной механизм. И даже если вы выбрали постоянную загрузку этой новой операционной системы, вы даже не обязательно хотите избавиться от нее, потому что я видел, как файлы флэш-памяти были повреждены. И эй, если это произойдет, тогда у нас есть что-то локальное для шасси. Гораздо быстрее перенаправить на другой файл во флэш-памяти, чем получить файл во флэш-памяти, хорошо. Поэтому я не удаляю вещи, если могу их сохранить.
Итак, в случае, когда флэш-память не поддерживает 2 образа IOS из-за нехватки места, что нам делать в этом случае? Нам придется удалить один, прежде чем мы добавим новый, верно? У нас действительно нет выбора в этот момент. Сегодня флэш-память обычно достаточно велика, чтобы поддерживать несколько образов IOS. Но если вы используете старое устройство, а во флэш-памяти достаточно места только для одного образа IOS, вам придется стереть данные перед копированием.
На заметку. Теперь у вас есть эти карты Compactflash во многих корпусах, большинство корпусов маршрутизаторов поддерживают карты Compactflash. Что ж, если вам нужно вынуть один из уже загруженного устройства и вставить его, чтобы у вас была рабочая операционная система для загрузки, это тоже возможно, хорошо. Так что просто поймите, что это немного страшно, но вы можете нажать кнопку извлечения на этой карте Compactflash, на этом маршрутизаторе, как только он загрузится, потому что он работает с ОЗУ, и запустить его на другой маршрутизатор. Нажмите выключатель питания, включите этот маршрутизатор, дайте ему загрузиться, вставьте флэш-карту обратно в корпус. Таким образом, вы можете сделать это, чтобы загрузить работающую операционную систему. Поскольку это намного проще, намного проще работать с управлением операционными системами после того, как маршрутизатор загрузил законную Cisco IOS. Работать в режиме ROMMON намного сложнее.
Наши рекомендуемые учебные ресурсы Premium CCNA
Вот лучшие онлайн-ресурсы для обучения CCNA:
Щелкните здесь, чтобы пройти курс Cisco CCNA Gold Bootcamp, самый полный онлайн-курс CCNA с самым высоким рейтингом и рейтингом 4,8 звезды из более чем 30 000 публичных отзывов.