Форум окна нн: Отзывы об оконных компаниях в Нижнем Новгороде

Содержание

Oknas.ru Все о пластиковых окнах, профили пластиковых окон, стеклопакеты, подоконники, откосы

Новости


04.09.2017

Готовые окна от компании Deceuninck («Декёнинк»), производителя ПВХ-профилей, представлены в новом французской сети «Леруа Мерлен», который открылся в Хабаровске. Подробнее…

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

Все новости за 2017 год / за 2016 год / за 2014 год / за 2013 год / за 2012 год / за 2011 год / за 2010 год


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


Каталог оконных компаний


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


Устройство пластикового окна
Окно состоит из 6 основных элементов: 1 — Рама; 2 — Стеклопакет; 3 — Створка; 4 — Фурнитура; 5 — Подоконник; 6 — Откос.

Подробнее…

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

Сегодня на рынке существует довольно много компаний выпускающих оконные профили: Rehau, KBE, Veka, Thyssen, Salamander, Plafen.
Подробнее…


Типы стеклопакетов
Самый крупный элемент пластиковых окон — это стеклопакет, который бывает 1, 2, 3-камерным с обычными, энергосберегающими, солнцезащитными и другими видами стекол. Выбор стеклопакета не менее важен, чем выбор профиля для пластикового окна, поскольку именно он (в большей степени) отвечает за тепло- и шумоизоляцию помещения.
Подробнее…

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

Аргументы и Факты: новости России и мира

Вопрос-ответ

Выражение о пророке в последнее время стало очень популярно.

Узнать Образование

Вопрос-ответ

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

Узнать Личные деньги

Вопрос-ответ

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

Узнать В России

Вопрос-ответ

Маршрутизатор с защитой от кибератак предназначен для применения в небольших компаниях с штатной численностью до 50 человек.

Узнать Сеть

Вопрос-ответ

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

Узнать Персона

Вопрос-ответ

Новый телеканал «Соловьев.Live» будет вещать на частотах Euronews

Узнать Общество

Вопрос-ответ

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

Узнать Армия

Вопрос-ответ

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

Узнать Персона

Вопрос-ответ

В повторный прокат выходит военная драма «Балканский рубеж» с Гошей Куценко, Гойко Митичем и Милошем Биковичем — экранизация одного из эпизодов Косовской войны 1999 года.

Узнать Кино

Вопрос-ответ

Ксения Бородина и Алена Водонаева в который раз не упустили возможности раскритиковать поведение Виктории Бони, объявившей войну «Шанель» из-за русофобии.

Узнать Персона

Вопрос-ответ

Следователи возбудили уголовное дело об изнасиловании. Подозреваемый — 15-летний подросток.

Узнать Общество

Вопрос-ответ

Евродепутат от Италии Франческа Донато призвала ЕС «быть беспристрастным и объективным» при проведении расследований убийств гражданских лиц на Украине.

Узнать В мире

Вопрос-ответ

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

Узнать Право

Из легионеров, уехавших из России, можно составить крутую команду. Что бы ей светило в РПЛ?

Сборная беглецов точно не затерялась бы в борьбе за медали чемпионата России.

ФИФА 7 марта выпустила заявление, что иностранным игрокам и тренерам, работающим в России, разрешается в одностороннем порядке без каких-либо штрафов приостановить контракты и перейти в другой чемпионат. Такие клубы, как «Краснодар», «Рубин» и «Ростов», от этого очень сильно пострадали, а кто-то понес минимальные потери, например, «Зенит» и «Локомотив».

Легионеры имеют право покинуть РПЛ до 7 апреля. Однако уже за два дня до закрытия импровизированного трансферного окна фиксируем, что из России уехало 40 иностранных футболистов. Хватит на три полноценные команды, а символическая сборная беглецов вполне могла бы претендовать на медали Премьер-лиги.

Или не могла бы? Разбираемся.

Главный пострадавший — «Краснодар»

«Быки» попрощались с девятью футболистами, ушли Крыховяк, Кайо, Рамирес, Кордоба, Бутхейм, Вандерсон, Алонсо, Кабелла, Классон. Два последних расторгли контракты.

Горькую пилюлю пришлось принять также «Рубину» и «Ростову», они потеряли по шесть иностранцев. Из Казани уехали Уремович, Дрейер, Хакшабанович, Ин Бом, Бегич и Кварацхелия (расторг контракт), из Ростова-на-Дону — Баштуш, Хаджикадунич, Кнудсен, Гигович, Альмквист и Хашимото.

Остальные клубы потеряли от одного до четырех игроков. Меньше всех досталось «Зениту» и «Локомотиву», уехали Ракицкий и Пабло соответственно. И то, «железнодорожники» оформили полноценный трансфер. У «Динамо» ситуация странная. Клуб не объявлял об уходе Ордеца, но Иван не провел ни минуты на поле.

Наша символическая сборная из покинувших РПЛ легионеров

Сыграем в схему 5-4-1. Вратарь сборной — Ярослав Годзюр. Альтернатив ему нет, так как он единственный голкипер, покинувший Россию. Линия обороны — Айртон, Ракицкий, Пабло, Алонсо, Рамирес. В центре выступят Крыховяк и Кабелла, ближе к флангам — Вандерсон и Кварацхелия. На острие атаки — Кордоба.

Фото: © РИА Новости / Виталий Белоусов, ФК «Зенит», ФК «Локомотив», ФК «Спартак», ФК «Рубин», ФК «Краснодар»

В запасе будут ждать своего шанса Кайо («Краснодар»), Уремович («Рубин»), Болинголи («Уфа»), Ин Бом («Рубин»), Хашимото («Ростов»), Хакшабанович («Рубин»), Классон («Краснодар»), Ларссон («Спартак») и Ламкель Зе («Химки»).

Смогла бы такая команда побороться за самые высокие места в РПЛ? Конечно! Возможно, «Зениту» навязать конкуренцию за золото сбежавшие легионеры бы и не смогли, но как минимум в тройку точно бы целились. Нельзя не отметить, что шесть игроков основного состава — бывшие краснодарцы. Все-таки «быкам» серьезнее всех досталось, а мечта владельца клуба Сергея Галицкого об 11 воспитанниках в старте уже кажется осязаемой.

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

Совместимость IE и NN (HTML-страницы с форумом CSS и JavaScript на Coderanch)

Привет, мне тоже очень не терпится узнать. Ребята, есть ли какой-нибудь инструмент? коллекция (взяла с сайта).

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

~~~~~~~~~~~~~~~ Разница в Netscape и IE~~~~~~~~~~~~~~~
несовместимости между Netscape и Internet Explorer.Внешний вид может существенно отличаться в зависимости от того, в каком браузере вы его просматриваете. Мы просто рассмотрим несколько тегов, которые по-разному влияют на браузеры.
Плавающие фреймы :
Этот тег позволяет размещать фрейм любого размера в любом месте HTML-макета, как изображение. Плавающие фреймы совместимы только с Internet Explorer. Когда вы пытаетесь просмотреть его в Netscape, единственное сообщение, которое появляется в вашем браузере, это

Multi-Column Text :
Чтобы получить абзацы в стиле столбца, такие как в газетных статей можно использовать тег Multi-Column Text.Этот тег позволяет разделить текст на любое количество столбцов. Для этого вы размещаете этот набор тегов вокруг вашего текста.
Например, < multicol cols="3" gutter="25" > Ваш текст
 cols = количество столбцов
 gutter = пробел между столбцами
Этот тег работает в Netscape, но не в Internet Explorer. Internet Explorer просто отобразит текст внутри набора тегов на экране без столбцов.
Marquees < marquee > :
Этот тег прокручивает ваш текст по экрану.Теги выделения совместимы только с Internet Explorer. Netscape просто проигнорирует этот тег и поместит текст внутри как обычный текст. Чрезмерное использование этой функции вызовет раздражение у читателей. Так что подумайте, прежде чем его использовать.

Пробел < spacer attribute1="..." attribute2="..." >
Эта функция позволяет создавать пробелы в строке текста. Такой атрибут, как type=block, совместим только с Netscape. Другие атрибуты, которые вы можете разместить внутри этого тега, включают выравнивание, высоту, размер, тип и ширину.Этот тег можно использовать для горизонтального или вертикального интервала. Его также можно использовать как «вкладку» для начала абзаца текста.
Цвет горизонтальной линейки < hr color=color >
Этот тег позволяет указать цвет горизонтальной линейки. Эта функция работает только в Internet Explorer. Цвет не будет отображаться в Netscape.
Table < table attribute1="..." attribute2="..." attribute3="..." >
Вот некоторые атрибуты таблицы, которые не работают в Netscape:
background=url
bordercolorlight= color
bordercolordark=color
frame=type
rules=edges
Эти атрибуты совместимы только с Internet Explorer, но не с Netscape.Фон позволяет выбрать фоновое изображение для размещения в таблице. Bordercolorlight позволяет указать более светлый цвет, используемый при создании трехмерных границ независимо друг от друга. Bordercolordark позволяет отдельно указать более темный цвет, используемый при создании трехмерных границ. Рамка позволяет указать, какая сторона внешней границы таблицы будет отображаться. Правило указывает, какие внутренние границы должны быть показаны.

Важные функции

Между двумя браузерами, Netscape Navigator и Internet Explorer, есть несколько важных функций в каждом из них.Здесь мы упомянем только некоторые из них, потому что, поскольку компании постоянно обновляют оба браузера, позже будет больше различий. Если вы уже знаете все эти функции, тогда ОТЛИЧНО, вы, безусловно, исследователь; но если вы не слишком хорошо знакомы с двумя браузерами, эти функции стоит знать.
Bookmark:
Нам всем нравится функция Bookmark в Internet Explorer и Netscape Navigator. Используя функцию «Закладка», мы можем избежать необходимости вводить длинные адреса веб-сайтов, особенно тех, которые мы часто посещаем.Что бы вы сделали, если бы у вас был адрес веб-сайта, сохраненный в Internet Explorer, но вы хотите просмотреть этот веб-сайт в Netscape Navigator? Обычный способ сделать это — открыть Internet Explorer, найти адрес веб-сайта в закладке, открыть Netscape Navigator, ввести тот же адрес (или использовать копирование и вставку). Это как-то неудобно да? Что ж, функция, которую мы собираемся представить здесь, определенно облегчит вашу жизнь. В Internet Explorer вы можете импортировать или экспортировать сохраненную закладку из или в Netscape Navigator.Однако это можно сделать только в Internet Explorer. Для этого просто выберите «Импорт и экспорт» в меню «Файл» в Internet Explorer (как показано ниже), а затем следуйте инструкциям.

Кодировка языка:
Для большинства жителей США английский является родным языком. Но при изучении иностранного языка может возникнуть желание посетить иностранный веб-сайт, чтобы проверить свое понимание языка, например, китайского, японского, корейского и т. д. Даже если вы можете найти приложение для загрузки в Интернете для кодирования языка веб-сайт, это неудобно и отнимает много времени.Microsoft очень тщательно подошла к этой проблеме и поэтому разработала функцию кодирования языка в Internet Explorer, чтобы избежать проблем с загрузкой и запуском таких приложений. Для этого вы можете перейти в меню «Вид» и выбрать «Кодирование», как показано ниже. Он может кодировать более 30 различных языков!!!

Предварительный просмотр:
Пока не удаляйте Netscape Navigator. Есть одна функция, которую может делать Netscape Navigator, но не Internet Explorer (пока). Это функция предварительного просмотра перед печатью.Когда мы посещаем веб-сайт и решаем, что хотим сохранить печатную копию, мы часто выбираем ее распечатку. Но сколько страниц будет? Кто знает? Благодаря функции предварительного просмотра в Netscape Navigator вы сможете узнать и увидеть точный формат, когда веб-сайт находится в печати. Таким образом, вы всегда можете передумать, если знаете, что это не круто выглядит, когда веб-страница находится в печати. Не забудьте об этой функции в следующий раз, когда решите что-то напечатать. Поверьте мне, вы можете сэкономить много бумаги и денег с картой Husky Card (личный опыт!).Конечно, мы покажем вам, как это можно сделать:
Вы, конечно, можете сделать предварительный просмотр на ОДНОЙ странице……..
Или предварительный просмотр на ДВУХ страницах!

CSS
При написании таблиц стилей CSS вы должны помнить о несовместимости между Netscape и Internet Explorer. В зависимости от того, в каком браузере вы его просматриваете, внешний вид может сильно отличаться. Мы рассмотрим лишь несколько свойств CSS, которые по-разному влияют на разные браузеры. Чтобы просмотреть полный список несовместимостей CSS в разных браузерах, вы можете ознакомиться с основной таблицей совместимости Эрика Мейера.
Свойство высоты
Свойство высоты в таблице стилей CSS позволяет программе задавать единую высоту для всех изображений в одном классе стилей. В приведенном ниже коде свойство height уменьшает размер изображения до 50 пикселей. Свойство height работает в Internet Explorer, но не в Netscape.
Свойство Overline
Свойство overline в CSS помещает строку над помеченными предложениями. Это свойство работает для Internet Explorer и, опять же, не для Netscape.
Bottom-Margin
Свойство Bottom-Margin в CSS задает расстояние между полями внизу страницы.Это свойство работает в Netscape, но не в Internet Explorer. Текст идет прямо вниз в браузере Internet Explorer.
Box Properties
Цвета границ, установленные в ul, создадут сплошную рамку над заключенным содержимым. Это представлено ниже синей рамкой над текстом. Это свойство границы игнорируется Internet Explorer, но работает в Netscape.
Цвета рамки, установленные в h2, создадут рамку вокруг содержимого внутри заголовка. Это даст эффект фиолетового прямоугольника внизу.Границы заголовков работают в браузерах Internet Explorer, но не в Netscape.
Цвета границ, установленные в p, создадут сплошную рамку слева от заключенного содержимого. Это представлено ниже синей рамкой слева от текста. Это свойство границы игнорируется Internet Explorer, но работает в Netscape.
 ул {граница-цвет: синий; ширина верхней границы: 0,5 дюйма;} —> игнорируется Internet Explorer
 h2 {цвет границы: фиолетовый; стиль границы: сплошной;} —> игнорируется Netscape
 p {цвет границы: синий; ширина левой границы: 3em; border-left-width: 3em} —>игнорируется Internet Explorer
. Убедитесь, что порядок тегов в HTML-файле соответствует порядку тегов в файле CSS, потому что браузер, особенно Netscape, может быть не в состоянии признать и следовать.

TagsnetscapeInternet Explorer
Плавающие чердаки
Мульти столбец TEXTYESNO
MARQUEESNOYES
SpaceryEsno
Цвет горизонтальных руленов
Фон для Tablesoyes
BordeColorlight для Tablesoyes
Bordlecolordark для Tablesoyes
Рамка для Tablesoyes
Правила Tablesoyes
на секции CSS, мы накрыли несколько из свойств, это свойство высоты, свойство надчеркивания, нижнее поле и свойства поля. В ходе проведенного нами тестирования мы поняли, что оба браузера пытаются работать в тесном контакте с CSS, но Internet Explorer работает лучше по большинству свойств.В CSS есть много тестов, и они бесконечны. Вместо того, чтобы показывать вам каждый тест, мы предлагаем вам то, что уже сделано в Интернете. Это основная таблица совместимости Эрика Мейера. Однако здесь мы хотели бы подчеркнуть, что диаграмма Эрика Мейера не является полностью надежной, потому что CSS зависит от множества других факторов, в том числе от того, как человек упорядочивает и вставляет свои коды. Опять же, таблица ТОЛЬКО для справки!
И Netscape Navigator, и Internet Explorer являются хорошими браузерами только для серфинга в Интернете и просмотра веб-страниц.На самом деле не имеет значения, какой из них вы используете. Однако у каждого есть преимущества перед другим. Netscape Navigator имеет некоторые преимущества перед Internet Explorer. Самым большим преимуществом является то, что Netscape Navigator поддерживает больше платформ и операционных систем, чем Internet Explorer. Internet Explorer будет работать только в Windows 95/98, Windows NT и определенной версии Mac OS. Netscape Navigator работает на обеих этих платформах, а также на Windows 3.1, Macintosh и некоторых платформах Unix. И Netscape Navigator, и Internet Explorer поддерживают более популярные расширения HTML.Кроме того, Netscape Navigator может запускать все подключаемые модули Netscape, тогда как Internet Explorer может запускать только некоторые из них. Однако Internet Explorer представил новую технологию, называемую ActiveX, для замены подключаемых модулей Netscape. Хотя эта технология проще в использовании, подключаемые модули более широко используются и более доступны.
Причина, по которой Internet Explorer кажется более выдающимся, чем Netscape Navigator, заключается в том, что он имеет лучший пользовательский интерфейс и более прост в использовании. Netscape Navigator, с другой стороны, имеет лучшую систему новостей и электронной почты.Говоря о производительности, Netscape Navigator быстрее загружает страницы, но Internet Explorer может перезагружать веб-страницы, хранящиеся в памяти компьютера, и быстрее отображать большие изображения. С другой стороны, Internet Explorer быстрее работает с Java, языком, используемым для анимации веб-страниц. Несмотря на то, что уровень безопасности Internet Explorer для отправки информации через Интернет может быть не таким хорошим, как у Netscape, он приличный, а также имеет опции, облегчающие родителям просмотр того, что они видят.

Другое различие между Netscape и Internet Explorer заключается в реализации позиционирования содержимого. Netscape использует тег LAYER, в то время как Microsoft основывает свой подход на комбинации каскадных таблиц стилей (теги DIV и SPAN), Active X и собственной объектной модели документа.
 Не используйте свойство WORD-SPACING, так как оно полностью игнорируется в Internet Explorer.
 Internet Explorer не принимает модификатор PRE для WHITE-SPACE (что лишает смысла его использование).
 Netscape Navigator 6.0 не понимает значение NONE для свойства CLEAR, хотя понимает все остальное.
 Хотя Internet Explorer 5.5 успешно проходит все стандартные тесты для свойства FLOAT, он не проходит печально известный «кислотный тест» FLOAT, который как часть набора тестов CSS1 можно найти по адресу http:// www.w3.org/Style/CSS/Test/current/sec5526c.htm — так что будьте осторожны при его широком использовании.
 LIST-STYLE-TYPE вызывает проблемы в Opera 5.0.1. То же самое со свойством WORD-SPACING.
 В Internet Explorer 5.5 возникают проблемы с определением правильного каскадного порядка при использовании нескольких операторов @IMPORT.
 При использовании идентификатора в качестве селектора убедитесь, что вы используете тот же регистр для его указания, поскольку Netscape Navigator 6.0 будет интерпретировать его по-разному (когда не следует).
 Остерегайтесь использования больших изображений с LIST-STYLE-IMAGE, так как они могут быть обрезаны на полях браузера, отображаемых в Netscape Navigator 6.0 и Opera 5.01.
 BORDER-STYLE работает во всех основных браузерах, но обратите внимание, что BORDER-STYLE: DOTTED создает квадратные «точки» в Netscape Navigator 6.0 и Opera 5.01 и закрашенные кружки в Internet Explorer 5.5.
 Все основные браузеры имеют проблемы со свойством FONT-WEIGHT. Начертания от 100 до 300 отображаются одинаково, а FONT-WEIGHT: BOLDER не работает в Netscape Navigator 6.0 или Internet Explorer 5.5 (хотя работает в Opera 5.01).

T
Разница между двумя основными браузерами носит философский характер (по сути), поэтому вполне вероятно, что оба браузера сохранятся в обозримом будущем. Это разница во взглядах между «черепахой и зайцем».
Две основные характеристики, по которым мы можем классифицировать браузер:
 Покрытие
 Скорость
Под охватом я подразумеваю «Какие возможные типы веб-страниц может отображать браузер?»
Здесь Internet Explorer легко побеждает. Я «дожал» возможности каждого до предела и обнаружил, что Netscape «выдыхается» задолго до выхода IE 3.02. Он будет отображать вещи (особенно в кадрах), которыми Netscape задыхается. Ясно, что Microsoft решила быть «более тщательной». Он поддерживает логику html в гораздо более строгой степени и поэтому может сделать «лишнюю милю».
Internet Explorer — это черепаха.
Скорость — другое дело. Netscape уверенно побеждает. Если он вообще может отображать страницу… он будет отображать ее быстрее, чем IE3. Очевидно, сотрудники Netscape готовы пожертвовать некоторой степенью функциональности в обмен на быстрое отображение преобладающего количества страниц, предлагаемых в Интернете.
Netscape Navigator — заяц.
Internet Explorer 3.0 долго загружается с диска. Требуется вечность, чтобы «решить», что делать со страницей фрейма, с которой она сталкивается.Netscape Navigator 3.0 загружается быстро и выдает простой кадр за пару секунд, как будто не придумывая, что с ним делать, просто полагая, что это будет несложно. У меня сложилось впечатление, что Microsoft приказала своим программистам использовать больше возможностей, чем Netscape, и поэтому требует больше кода для загрузки и проверки.
Если вы хотите разместить на странице много или большие анимации, лучше всего просматривать их в IE 3.+, а не в Netscape. Недавно мне пришлось переделать мою самую большую страницу (~ 320 КБ с GIF-файлами), чтобы разместить пользователей Netscape, потому что анимация, работающая за экраном просмотра на этой странице, вызывала проблемы Netscape (запись на жесткий диск, подкачка и т.). Однако с моей копией IE3.02 проблем не было.
Я всегда пытался оставаться в рамках Netscape, но не IE.
Опять же, различие является законным философским. Netscape хочет максимальной скорости для большинства пользователей. Internet Explorer хочет получить максимальный охват «веб-страниц, которые еще не написаны», а также тех, которые уже существуют.
Обе точки зрения важны, и цели одинаково достойны похвалы. По этой причине они оба, вероятно, будут рядом еще долгое время.Так что, если вам нужна скорость, выбирайте Netscape. Если вы хотите делать большие и сложные вещи… используйте Internet Explorer.
Я лично пользуюсь обоими одинаково в зависимости от чего…
Вообще-то я часто пользуюсь тремя браузерами одновременно.
 Netscape Navigator 3.0
 Internet Explorer 3.02
 И эта штука AOL
Я должен использовать штуку AOL для отправки электронной почты, так как AOL не поддерживает электронную почту из-за пределов своего «усеченного» окна. Однако они упрощают использование другого браузера.Вы просто «открываете его отдельно» и уходите.
Пример:
В IE вы можете раскрасить . В Netscape вы не можете.
Чтобы получить некоторое представление о браузерах и их способах, см., например, «Профессиональный JavaScript» ISBN 1-861002-70-X.

Первые шаги с DepthAI — документация по DepthAI

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

Подключение камеры OAK (USB)

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

Кабель USB3 окрашен в синий цвет

внутри разъема USB-A кабеля USB-C.

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

В Ubuntu вы можете проверить, было ли обнаружено новое USB-устройство, запустив

 $ lsusb | grep MyriadX
Шина 003 Устройство 002: ID 03e7:2485 Intel Movidius MyriadX
 

Примечание

Если вы используете ОС, отличную от Ubuntu, или считаете, что что-то пошло не так, у нас есть подробные руководства по установке для конкретных ОС. здесь.

Использовать установщик Windows

Если вы предпочитаете, мы инкапсулировали все процедуры установки в один файл .exe , который вы можете скачать здесь и пропустить раздел «Настройка».

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

.

Настройка

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

Скачать демонстрационный скрипт

Чтобы загрузить демо-скрипт, вы можете либо использовать git , либо напрямую загрузить zip-файл

Из архива

Сначала загрузите пакет репозитория отсюда а затем распакуйте архив в нужную директорию.Затем откройте сеанс терминала в этом каталоге.

Из git

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

.
$ git клон https://github.com/luxonis/depthai.git
 

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

Создать виртуальную среду Python (необязательно)

Чтобы создать и использовать virtualenv, вы можете следовать официальному руководству по python для virtualenvs или следуйте руководствам для конкретных ОС в Интернете, например «Как создать виртуальную среду Python 3 в Ubuntu 20.04”

Это гарантирует, что вы используете новую среду и что Python 3 является интерпретатором по умолчанию — это может помочь предотвратить возможные проблемы.

Обычно я создаю и использую virtualenvs, запуская

 $ python3 -m venv myvenv
$ источник myvenv/bin/активировать
$ пип установить -U пип
 

И это может потребовать установки этих пакетов до

 $ apt-get установить python3-pip python3-venv
 

Требования к установке

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

Чтобы установить эти пакеты, запустите сценарий install_requirements.py

 $ python3 install_requirements.py
 

Предупреждение

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

 $ echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666"' | sudo tee /etc/udev/rules.d/80-movidius.rules
$ sudo udevadm control --reload-rules && триггер sudo udevadm
 

Теперь вы сможете начать использовать демо-скрипт, что мы сейчас и сделаем

Запустить демо-скрипт

Когда все настроено, мы готовы использовать демо-скрипт, запустив

 $ python3 depthai_demo.пи
 

Запуск по умолчанию

Запустив демонстрацию в первый раз, скрипт скомпилирует и загрузит стандартную модель mobilenet-ssd , настройте камеру OAK, а затем отобразите предварительный просмотр цветов по умолчанию, который будет содержать масштабированный предварительный просмотр с камеры RGB с вашего устройства.

Изменить предварительный просмотр

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

.
Доступные превью

Имя

Описание

Ограничения

цвет

Предварительный просмотр с цветной камеры

nnInput

Предварительный просмотр с правой монокамеры

Отключено, если модель ИИ не запущена

слева

Предварительный просмотр с левой монокамеры

ДУБ-Д необходимо

справа

Предварительный просмотр с правой монокамеры

ДУБ-Д необходимо

глубина

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

ДУБ-Д необходимо

depthRaw

Показывает необработанную карту глубины. Лучше всего подходит для расчетов по глубине

ДУБ-Д необходимо

несоответствие

Показывает карту несоответствий, созданную на устройстве

ДУБ-Д необходимо

disparityColor

Показывает карту несоответствий, созданную на устройстве и окрашенную JET.Должен быть таким же, как предварительный просмотр depth , но созданный на устройстве.

ДУБ-Д необходимо

исправленный Левый

Ректифицированные рамки левой камеры

ДУБ-Д необходимо

исправленныйПраво

Ректифицированные рамки правой камеры

ДУБ-Д необходимо

Модель по умолчанию

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

Модель, которая используется по умолчанию, представляет собой детектор объектов MobileNetv2 SSD, обученный классам PASCAL 2007 VOC, а именно:

  • Лицо: лицо

  • Животные: птица, кошка, корова, собака, лошадь, овца

  • Транспортное средство: самолет, велосипед, лодка, автобус, автомобиль, мотоцикл, поезд

  • В помещении: бутылка, стул, обеденный стол, растение в горшке, диван, телевизор/монитор

Попробуйте обнаружить разные объекты, например, бутылки или яблоки

Или даже кошки

Использование других моделей

Мы подготовили другие модели, которые вы можете легко попробовать и оценить.Чтобы запустить демонстрационный скрипт, например. face-detection-retail-0004 , нажмите на поле со списком CNN Model и выберите указанную модель

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

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

.
 $ python3 depthai_demo.py -cnn-обнаружение лица-розничная-0004
 

Ниже приведен список моделей, которые вы можете использовать, скачав демо-скрипт

Доступные модели

Имя

Назначение

кадров в секунду

Звенья

deeplabv3p_person

Сегментация людей

22.1

Применение

распознавание лиц-adas-0001

Распознавание лиц

13,4

Применение

распознавание лиц-розничная-0004

Распознавание лиц

30,0

Применение

мобильная сеть-ssd

Обнаружение объектов (20 классов)

30.0

Применение

обнаружение пешеходов-adas-0002

Обнаружение людей

13.1

Применение

обнаружение человека-розничная торговля-0013

Обнаружение людей

10,7

Применение

обнаружение человека-автомобиля-велосипеда-перекресток-1016

Обнаружение людей, транспортных средств и велосипедов

6.2

Применение

йоло-в3

Обнаружение объектов (80 классов)

1,9

Применение

крошечный-йоло-v3

Обнаружение объектов (80 классов)

29,9

Применение

обнаружение транспортных средств-adas-0002

Обнаружение транспортных средств

14.0

Применение

барьер для обнаружения номерного знака автомобиля-0106

Распознавание номерного знака

30,0

Применение

открытый2

Оценка позы (открытая)

6,5

Применение

оценка позы человека-0001

Оценка позы (информация)

7.3

Применение

Все данные, которые мы используем для загрузки и компиляции модели, можно найти здесь.

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

В этом разделе мы рассмотрим параметры конфигурации, доступные в демонстрационном сценарии, что позволит вам опробовать различные конфигурации

Свойства ИИ

Переключатели:

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

Основные свойства:

  • Модель CNN : выберите модель для запуска на DepthAI, подробнее см. Использование других моделей

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

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

  • Полное поле зрения : Если включено, изображение с камеры будет уменьшено, чтобы соответствовать входному размеру nn.Если отключено, перед масштабированием изображение будет обрезано, чтобы соответствовать соотношению сторон NN

Дополнительно:

  • Версия OpenVINO : укажите версию OpenVINO, которая будет использоваться для компиляции большого двоичного объекта MyriadX и запуска конвейера. В большинстве случаев рекомендуется использовать последнюю версию

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

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

  • Масштабный коэффициент SBB : Определяет размер пространственной ограничивающей рамки по сравнению с ограничивающей рамкой обнаружения.

Свойства глубины

Переключатели:

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

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

Основные свойства:

  • Медианная фильтрация : Указывает тип медианного фильтра для удаления шума, применяемого к карте глубины

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

  • Проверка слева направо : Включает проверку слева направо, которая используется для удаления неправильно рассчитанных пикселей диспаратности из-за окклюзии на границах объекта

  • Расширенное несоответствие : Включает режим расширенного несоответствия, который позволяет приблизить минимальное расстояние для заданной базовой линии

  • Диапазон глубины : Указывает минимальное и максимальное расстояние, рассчитанное устройством

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

Свойства камеры

Основные свойства:

Дополнительно:

  • ISO : Управляет светосилой камеры

  • Экспозиция : Управляет временем экспозиции камеры

  • Насыщенность : Управляет интенсивностью цветов в кадре

  • Контрастность : Управляет визуальным соотношением различных тонов в кадре

  • Яркость : Управляет темными или светлыми цветами в кадре

  • Резкость : Управляет четкостью деталей в кадре

Разное

Запись:

  • Переключатели : включить запись с указанной камеры

  • Ввод FPS : определяет FPS записи (по умолчанию 30)

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

Отчетность:

Использование пользовательских моделей

Предупреждение

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

Предположим, вы хотите запустить пользовательскую модель, которую вы загрузили из зоопарка моделей или обучили сами (или и то, и другое). Чтобы подготовить вашу модель к запуску в DepthAI, ее необходимо скомпилировать в формат BLOB-объектов MyriadX, который — это оптимизированная версия вашей модели, способная использовать чип MyriadX в качестве процессора.

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

Скомпилировать большой двоичный объект MyriadX

Чтобы получить BLOB-объект MyriadX, сеть должна быть уже в формате OpenVINO IR (состоит из .xml и .bin файлы), которые будут использоваться для компиляции.Мы не будем здесь фокусироваться на том, как получить это представление для вашей модели, но обязательно чтобы проверить официальное руководство по конвертации OpenVINO.

Для преобразования custom_model.xml и custom_model.bin мы будем использовать blobconverter cli — наш инструмент, который использует онлайн-конвертер больших двоичных объектов MyriadX для выполнения преобразования. В этом случае локальная установка OpenVINO не требуется, так как все зависимости уже установлены на сервере. Если ваша модель в формате TensorFlow или Caffe, вы все равно можете использовать наш инструмент для преобразования, просто обратите внимание, что вам придется использовать разные входные флаги и иногда предоставлять собственные аргументы оптимизатора модели (Подробнее)

Во-первых, давайте установим blobconverter из PyPi

 $ python3 -m pip install -U blobconverter
 

Теперь, установив blobconverter , мы можем скомпилировать наши IR-файлы с помощью следующей команды

 $ python3 -m blobconverter --openvino-xml /path/to/custom_model.xml --openvino-bin /path/to/custom_model.bin
 

При выполнении этой команды blobconverter отправляет запрос в API BlobConverter для выполнения компиляция модели на предоставленных файлах. После компиляции API отвечает файлом .blob и удаляет все исходные файлы, отправленные с запросом.

После успешной компиляции blobconverter возвращает путь к загруженному файлу большого двоичного объекта. Поскольку этот блоб требуется для репозитория depthai , давайте переместим его туда

.
 $ mkdir /resources/nn/custom_model
$ mv  /resources/nn/custom_model
 

Конфигурация

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

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

Вы можете использовать эти примеры конфигурации для настройки вашего custom_model.json внутри каталога resources/nn/custom_model

 {
    "nn_config":
    {
        "output_format": "обнаружение",
        "NN_family": "мобильная сеть",
        «порог_доверия»: 0,5,
        "input_size": "300x300"
    },
    "отображения":
    {
        "метки":
        [
            "неизвестный",
            "лицо"
        ]
    }
}
 
 {
    "nn_config":
    {
        "output_format": "обнаружение",
        "NN_family": "ЙОЛО",
        "input_size": "416x416",
        "NN_специфические_метаданные":
        {
            "классы": 80,
            "координаты": 4,
            «якоря»: [10,14, 23,27, 37,58, 81,82, 135,169, 344,319],
            "якорные_маски":
            {
                "сторона26": [1,2,3],
                "сторона13": [3,4,5]
            },
            "iou_threshold": 0.5,
            "порог_доверия" : 0,5
        }
    },
    "отображения":
    {
        "метки":
        [
              "неизвестный",
              "лицо"
        ]
    }
}
 
 {
    "nn_config": {
        "output_format": "сырой",
        "input_size": "300x300"
    },
    "обработчик": "handler.py"
}
 

Запустить демо-скрипт

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

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

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

Пользовательский обработчик

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

Файл handler.py должен содержать два метода — decode(nn_manager, packet) и draw(nn_manager, данные, кадры)

 определение декодирования (nn_manager, пакет):
  проходят

def draw(nn_manager, данные, кадры):
  проходят
 

Первый метод, decode , вызывается всякий раз, когда из конвейера поступает пакет NN (хранится как параметр пакета ) также предоставление объекта nn_manager , который содержит всю информацию, связанную с nn, которая использовалась сценарием (например, размер ввода и т. д.).). Цель этой функции — декодировать полученные пакеты из BLOB-объекта NN в осмысленные результаты, которые впоследствии можно отобразить.

Второй, draw , вызывается с результатами NN (возвращено из decode ), nn_manager объект и кадров массив, содержащий [(, ), (, ), ...] элементов. Этот массив будет содержат кадры, указанные параметром -s/--show .Цель этой функции — перенести декодированные результаты на полученные кадры.

Ниже вы можете найти пример файла handle.py , который декодирует и отображает результаты на основе MobilenetSSD.

 импорт cv2
импортировать numpy как np
из depthai_helpers.utils импортировать frame_norm


декодирование декодирования (nn_manager, пакет):
    bboxes = np.array(packet.getFirstLayerFp16())
    bboxes = bboxes.reshape((bboxes.size // 7, 7))
    bboxes = bboxes[bboxes[:, 2] > 0,5]
    метки = bboxes[:, 1].тип (целое число)
    уверенности = bboxes[:, 2]
    bboxes = bboxes[:, 3:7]
    возврат {
        "этикетки": этикетки,
        «уверенность»: уверенность,
        "ббоксы": ббоксы
    }


расшифровано = ["неизвестно", "лицо"]


def draw(nn_manager, данные, кадры):
    для имени, рамка в рамках:
        если имя == nn_manager.source:
            для label, conf, raw_bbox в zip(*data.values()):
                bbox = frame_norm (кадр, raw_bbox)
                cv2.rectangle (кадр, (bbox [0], bbox [1]), (bbox [2], bbox [3]), (255, 0, 0), 2)
                cv2.putText(frame, decoded[label], (bbox[0] + 10, bbox[1] + 20), cv2.FONT_HERSHEY_TRIPLEX, 0,5, 255)
                cv2.putText(frame, f"{int(conf * 100)}%", (bbox[0] + 10, bbox[1] + 40), cv2.FONT_HERSHEY_TRIPLEX, 0.5, 255)
 

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

Мы уже используем этот механизм обработчика для декодирования deeplabv3p_person, это одна из доступных сетей в демо-скрипте для использования

Компиляция по запросу

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

Этот файл используется загрузчиком модели OpenVINO. который используется для загрузки необходимых файлов для компиляции. В нашем демонстрационном сценарии мы используем эти файлы для укажите URL-адрес исходных файлов NN вместо их загрузки вместе с исходным кодом. Это также полезно, потому что компиляция по запросу позволяет нам использовать одну и ту же конфигурацию при запросе другого количества ядер MyriadX SHAVE.

Чтобы загрузить большой двоичный объект с помощью файла model.yml , запустите

.
 $ python3 -m blobconverter --raw-config /path/to/model.yml --raw-name custom_model
 

Вы также можете оставить файл model.yml в каталоге resources/nn/ . Это заставит демонстрационный скрипт работать преобразование для вас и запустить полученный блоб

 $ python3 depthai_demo.py -cnn <имя>
 

Настройте демо-код

Файл обратных вызовов

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

Пример файла обратных вызовов, доступного в репозитории, ниже

.
 по определению следует выполнить():
  pass # Вызывается, чтобы определить, должна ли быть запущена демонстрация


def onNewFrame (кадр, источник):
  pass # Вызывается, когда доступен новый кадр


def onShowFrame (кадр, источник):
    pass # Вызывается перед отображением кадра


защита на Nn (nn_packet):
    pass # Вызывается, когда доступен новый пакет NN


def onReport (отчет):
    pass # Вызывается, когда доступен новый отчет


def onSetup(*args, **kwargs):
    pass # Вызывается при настройке демо-скрипта


def onTeardown(*args, **kwargs):
    pass # Вызывается, когда демонстрационный скрипт завершает работу


def onIter(*args, **kwargs):
    pass # Вызывается при каждой итерации демо-скрипта (внутренний цикл)
 

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

По умолчанию демо-скрипт будет использовать файл callbacks.py в репозитории, но этот путь можно изменить с помощью -cb <путь> / --callback <путь> флаги

Импорт демо как класса

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

.
 из deepai_demo импорт Демо
от depthai_helpers.arg_manager импортировать parseArgs
из depthai_helpers.config_manager импортировать ConfigManager

аргументы = parseArgs()
conf = ConfigManager (аргументы)
demo = Demo(onNewFrame=, onShowFrame=, onNn=, onReport=, onSetup=, onTeardown=, onIter=) # все параметры необязательный
demo.run_all(conf)
 

Помните, что переменная env PYTHONPATH должна содержать путь к репозиторию depthai, чтобы импорт работал. В качестве альтернативы вы можете разместить скрипт по адресу depthai_demo.ру в репозитории

gluon.nn — документация Apache MXNet

Активация (активация, **kwargs)

Применяет функцию активации к входу.

AvgPool1D ([pool_size, шаги, заполнение, …])

Средняя операция объединения временных данных.

AvgPool2D ([pool_size, шаги, заполнение, …])

Усредненная операция объединения пространственных данных.

AvgPool3D ([pool_size, шаги, заполнение, …])

Усредненная операция объединения трехмерных данных (пространственных или пространственно-временных).

BatchNorm ([ось, импульс, эпсилон, центр, …])

Слой пакетной нормализации (Иоффе и Сегеди, 2014).

Блок ([префикс, параметры])

Базовый класс для всех слоев и моделей нейронной сети.

Conv1D (каналы, размер_ядра[, шаги, …])

Одномерный слой свертки (например, временная свертка).

Conv1DTranspose (каналы, kernel_size[, …])

Транспонированный слой одномерной свертки (иногда называемый деконволюцией).

Conv2D (каналы, размер ядра [, шаги, …])

2D сверточный слой (например,грамм. пространственная свертка над изображениями).

Conv2DTranspose (каналы, kernel_size[, …])

Транспонированный слой свертки 2D (иногда называемый деконволюцией).

Conv3D (каналы, размер ядра [, шаги, …])

Слой трехмерной свертки (например, пространственная свертка по объемам).

Conv3DTranspose (каналы, kernel_size[, …])

Транспонированный трехмерный сверточный слой (иногда называемый деконволюцией).

Плотность (единицы [, активация, use_bias, …])

Просто ваш обычный плотносвязный слой NN.

Отсев (скорость[, оси])

Применяет Dropout ко входу.

ELU ([альфа])

Экспоненциальная линейная единица (ELU)

Встраивание (input_dim, output_dim[, dtype, …])

Превращает неотрицательные целые числа (индексы/токены) в плотные векторы фиксированного размера.

Сплющить (**kwargs)

Выравнивает ввод до двухмерного.

GELU (**kwargs)

Гауссова экспоненциальная линейная единица (GELU)

GlobalAvgPool1D ([макет])

Операция объединения глобальных средних временных данных.

GlobalAvgPool2D ([макет])

Операция объединения глобальных средних пространственных данных.

GlobalAvgPool3D ([макет])

Операция объединения глобальных средних 3D-данных (пространственных или пространственно-временных).

GlobalMaxPool1D ([макет])

Операция максимального объединения Gloabl для одномерных (временных) данных.

GlobalMaxPool2D ([макет])

Операция глобального максимального объединения двумерных (пространственных) данных.

GlobalMaxPool3D ([макет])

Операция глобального максимального объединения трехмерных данных (пространственных или пространственно-временных).

GroupNorm ([число_групп, эпсилон, центр, …])

Применяет групповую нормализацию к n-мерному входному массиву.

HybridBlock ([префикс, параметры])

HybridBlock поддерживает пересылку как с символом, так и с NDArray.

HybridLambda (функция [, префикс])

Обертывает оператор или выражение как объект HybridBlock.

HybridSequential ([префикс, параметры])

Последовательно укладывает HybridBlocks.

InstanceNorm ([ось, эпсилон, центр, масштаб, …])

Применяет нормализацию экземпляра к n-мерному входному массиву.

Лямбда (функция [, префикс])

Обертывает оператор или выражение как объект Block.

LayerNorm ([ось, эпсилон, центр, масштаб, …])

Применяет нормализацию слоя к n-мерному входному массиву.

LeakyReLU (альфа, **kwargs)

Негерметичная версия выпрямленного линейного блока.

MaxPool1D ([pool_size, шаги, заполнение, …])

Макс. операция объединения для одномерных данных.

MaxPool2D ([pool_size, шаги, заполнение, …])

Максимальная операция объединения двумерных (пространственных) данных.

MaxPool3D ([pool_size, шаги, заполнение, …])

Максимальная операция объединения трехмерных данных (пространственных или пространственно-временных).

PReLU ([alpha_initializer])

Параметрическая негерметичная версия выпрямленного линейного блока.

ReflectionPad2D ([подкладка])

Дополняет входной тензор, используя отражение входной границы.

SELU (**kwargs)

Масштабированная экспоненциальная линейная единица (SELU)

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

Укладка Блоки последовательно.

Swish ([бета])

Функция активации Swish

SymbolBlock (выходы, входы [, параметры])

Создать блок из символа.

Мастера: определение и рекомендации по дизайну

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

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

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

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

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

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

Динамическая форма или мастер?

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

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

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

Live.com: форма создания учетной записи динамически отображает встроенные сообщения об ошибках и пояснения к полям.

Мастера отображают меньше информации на странице

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

  • Пользователи меньше перегружены процессом. Длинная форма часто утомительна, и пользователи могут переоценить объем работы, связанный с ее заполнением.
  • На завершение процесса тратится меньше когнитивных усилий. Большая часть информации в форме может оказаться неактуальной, но людям придется тратить ресурсы внимания, чтобы просмотреть ее и в конечном итоге отфильтровать. С мастером отображаемые поля зависят от предыдущего ввода пользователей и имеют больше шансов быть действительно важными, а не просто отвлекать.
  • Пользователи делают меньше ошибок. В слишком сложной форме пользователи могут игнорировать определенные части и с большей вероятностью вызвать ошибки при отправке формы.Или они могут пропустить что-то важное для них.
  • Для каждого шага доступно больше экранного пространства. Когда сложный процесс разбит на более простые этапы, и каждому этапу отведена отдельная страница, просто остается больше места для каждого элемента управления на этапе. Цели могут быть больше и менее переполнены, информация может умещаться на одном экране (поэтому прокрутка не потребуется), а пояснения могут отображаться рядом с полями.

Кратчайший путь для каждого пользователя

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

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

Недостатки Wizards

Какими бы полезными ни были волшебники, они подходят не для всех ситуаций.Вот некоторые распространенные проблемы, связанные с мастерами:

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

Microsoft Word: использование мастера, такого как Диспетчер исходного кода Microsoft Word (вверху), для ввода каждой ссылки в длинный список библиографии может быть намного более утомительным, чем просто ввод ее в таблицу, электронную таблицу или даже в текстовое программное обеспечение для набора текста, такое как как латекс (внизу). Mint.com: Этот мастер для определения лучшей кредитной карты для пользователя заблокировал доступ к кредитному рейтингу, доступному в другой области приложения. К счастью, участница нашего исследования смогла вспомнить свой счет, не выходя из мастера. (В лучшем дизайне этот шаг был бы полностью пропущен и использовалась бы информация о кредитном рейтинге, уже доступная приложению.)
  • Мастерам может потребоваться более высокая стоимость взаимодействия (больше кликов), чем другим шаблонам ввода .Особенно, если мастера необходимо вызывать многократно, утомительное нажатие на каждый из шагов может свести на нет преимущества разделения процесса на небольшие разделы.
  • Мастера могут не позволять пользователям легко передавать или сравнивать информацию с разных шагов. Когда пользователи видят один шаг за раз, может быть сложно перемещать информацию между шагами или ссылаться на информацию, введенную или представленную на предыдущем шаге. (И иногда просмотр большего количества шагов за один раз может дать пользователям некоторый дополнительный контекст, чтобы лучше понять информацию, запрашиваемую на каждом шаге.)
  • Мастера нельзя корректно прерывать . Если пользователи прервут процесс на полпути, они могут не только потерять свою работу, но, возможно, им придется снова щелкнуть предыдущие шаги. Даже если мастер поддерживает сохранение состояния и возобновление процесса позднее, пользователям может быть трудно вспомнить, что они делали, и восстановить свой контекст и мысленную модель процесса.

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

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

Рекомендации по разработке полезных мастеров

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

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

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

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

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

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

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

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

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

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

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

  5. Разрешить пользователям выходить из мастера на полпути и сохранять состояние. Позвольте им возобновить процесс позже.

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

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

    Мастер

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

  6. Шаги мастера должны быть самодостаточными и не требовать информации, доступной где-либо еще в приложении (или на предыдущем шаге). Убедитесь, что пользователи могут легко получить доступ ко всей необходимой им информации при использовании мастера. Приведенный выше пример Mint нарушает это правило, требуя, чтобы пользователи получали свои кредитные баллы откуда-то еще. Expensify.com: когда пользователь пытался добавить квитанцию ​​к расходу, мастер скрывал сведения о расходе. Пользователь должен был помнить, какой расход он вводил и для какого поставщика, чтобы иметь возможность идентифицировать квитанцию ​​​​для этого расхода.
  7. Справка и пояснения должны отображаться в окне рядом с мастером и не должны закрывать мастер. Любые описания терминов или полей в мастере должны отображаться рядом с мастером и не должны закрывать поля в мастере.Таким образом, пользователи смогут применить информацию в окне объяснения к контексту мастера. Miniusa.com: Каждый из параметров, которые можно добавить (см. предыдущий снимок экрана), является кликабельным и открывает лайтбокс с дополнительной информацией. К сожалению, лайтбокс также закрывает контент на заднем плане, что затрудняет просмотр опции в контексте.
  8. Рассмотрите возможность повторного использования выбора пользователя из предыдущего использования в качестве значений по умолчанию для следующего использования мастера. Для многих задач пользователи выиграют, если система запомнит их выбор и введенные значения от одного использования мастера до следующего. В самый первый раз, когда пользователь использует мастер, разработчик должен выбрать соответствующие значения по умолчанию, и есть некоторые приложения, в которых эти стандартные значения должны быть значениями по умолчанию каждый раз.

Заключение

Мастера

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

Узнайте больше о мастерах в нашем курсе Application Design for Web and Desktop.

команда ipconfig для Mac — сообщество Apple

> ifconfig

lo0: flags=8049 mtu 16384

варианты=3

inet6 ::1 префикслен 128

инет 127.0.0.1 сетевая маска 0xff000000

inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1

nd6 options=1

gif0: flags=8010 mtu 1280

stf0: флаги=0<> mtu 1280

en0: flags=8863 mtu 1500

варианты=10b

эфир nn:nn:nn:nn:nn:nn

nd6 options=1

носитель: автоматический выбор (нет)

статус: неактивен

en1: flags=8863 mtu 1500

эфир nn:nn:nn:nn:nn:nn

inet6 nnnn::nnnn:nnnn:nnnn:nnnn%en1 prefixlen 64 scopeid 0x5

инет 172.16.1.61 сетевая маска 0xffffff00 широковещательная рассылка 172.16.1.255

nd6 options=1

носитель: автовыбор

статус: активен

fw0: flags=8863 mtu 4078

лладдр nn:nn:nn:nn:nn:nn:nn:nn

nd6 options=1

носитель: автовыбор <полный дуплекс>

статус: неактивен

en2: flags=8863 mtu 1500

опции=60

эфир nn:nn:nn:nn:nn:nn

nd6 options=1

носитель: автовыбор <полный дуплекс>

статус: неактивен

bridge0: flags=8863 mtu 1500

варианты=63

эфир nn:nn:nn:nn:nn:nn

Конфигурация:

идентификатор 0:0:0:0:0:0 приоритет 0 hellotime 0 fwddelay 0

maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200

идентификатор корня 0:0:0:0:0:0 приоритет 0 ifcost 0 порт 0

флаги отключения ipfilter 0x2

nd6 options=1

носитель: <неизвестный тип>

статус: неактивен

p2p0: flags=8843 mtu 2304

эфир nn:nn:nn:nn:nn:nn

носитель: автовыбор

Состояние

: неактивно

Как создать библиотеку Arm CMSIS-NN для создания и развертывания кода Deep Learning C++? —

Чтобы сгенерировать и запустить код C для глубоких нейронных сетей на оборудовании Cortex-M, у вас должна быть библиотека CMSIS-NN (стандарт программного интерфейса микроконтроллера Cortex — нейронные сети).Ниже описаны этапы сборки CMSIS-NN на платформах Windows и Linux, использующих цепочку инструментов кросс-компилятора.

Требования

Чтобы создать статическую библиотеку CMSIS-NN, необходимо сначала создать make-файл. Скопируйте следующий фрагмент кода в файл и сохраните его как Makefile.mk. Этот пример make-файла создает библиотеку CMSIS-NN для ядра Cortex-M7. Чтобы создать библиотеку для других целей, измените переменную CFLAGS в соответствии с вашим целевым оборудованием.

STATIC_LIB_FILE_NAME = libcmsisnn.a

CFLAGS= -fPIC -c -mcpu=cortex-m7 -Ofast -DNDEBUG

INC = -I../Core/Include -I../DSP/PrivateInclude -I../DSP/Include -I. ./NN/Include

rwildcard=$(foreach d,$(подстановочный знак $(1:=/*)),$(вызов rwildcard,$d,$2) $(filter $(subst *,%,$2), $d))

SOURCE_FILES = $(вызов rwildcard,Source,*.c)

OBJECT_FILES = $(patsubst %.c,%.o,$(шаблон $(SOURCE_FILES)))

$(STATIC_LIB_FILE_NAME): $(OBJECT_FILES)

ar -r -o $(STATIC_LIB_DIR)/[email protected] $^

#Компиляция всех *.c to *.o

arm-none-eabi-gcc -c $(INC) $(CFLAGS) -o [email protected] $<

@mkdir -p $(STATIC_LIB_DIR)

rm -f $(OBJECT_FILES) $ (STATIC_LIB_DIR)/$(STATIC_LIB_FILE_NAME)

Примечание. Убедитесь, что Makefile написан правильно, с использованием приведенного выше кода и в соответствии с правилами отступов makefile.

Мы проверили описанный ниже процесс сборки библиотеки CMSIS-NN, используя:

  • Платформа Windows: GNU Arm Embedded Toolchain версии 10.3.1
  • Платформа Linux: GNU Arm Embedded Toolchain версии 8.3.0

Платформа Linux

3. Разархивируйте исходный код в папку и выполните следующие действия для сборки и создания статической библиотеки:

  • Откройте терминал Linux.
  • Измените каталог на исходную папку CMSIS-NN, выполнив эту команду. Здесь <Корневая папка CMSIS> указывает на извлеченную папку CMSIS.

cd <Корневая папка CMSIS>/CMSIS/NN

  • Скопируйте созданный файл Makefile.mk в текущий каталог.
  • Запустите make-файл с помощью команды make.
  • Запуск makefile создает статическую библиотеку libcmsisnn.a в папке ./lib.

4. Настройте среду MATLAB для генерации кода, использующего библиотеку CMSIS-NN:

  • В /usr/local создайте папку с именем cmsisnn.
  • Скопируйте файлы заголовков, расположенные в <корневой папке CMSIS>/CMSIS/DSP/Include и <корневой папке CMSIS>/CMSIS/NN/Include, в папку /usr/local/cmsisnn/include.
  • Скопируйте сгенерированную статическую библиотеку, расположенную в папке <Корневая папка CMSIS>/CMSIS/NN/Include, в папку /usr/local/cmsisnn/lib.
  • В командном окне MATLAB задайте для переменной среды MATLAB CMSISNN_PATH расположение папки установки CMSIS-NN.

setenv(‘CMSISNN_PATH’, ‘/usr/local/cmsisnn’)

Платформа Windows

2. Загрузите и установите инструменты «сборка системы (make.exe)» и «архивирование (ar.exe)». . Мы протестировали этот шаг с помощью Cygwin (доступен по адресу https://www.cygwin.com/) для запуска make-файла.

4. Разархивируйте исходный код в папку и выполните следующие действия для сборки и создания статической библиотеки:

  • Откройте командную строку Windows.
  • Измените каталог на исходную папку CMSIS-NN, выполнив эту команду. Здесь <Корневая папка CMSIS> указывает на извлеченную папку CMSIS.

cd <Корневая папка CMSIS>\CMSIS\NN

  • Скопируйте созданный файл Makefile.mk в текущий каталог.
  • Запустите make-файл с помощью команды make.
  • Запуск makefile создает статическую библиотеку libcmsisnn.a в папке .\lib.

5. Настройте среду MATLAB для генерации кода, использующего библиотеку CMSIS-NN:

  • В C:\Program Files создайте папку с именем cmsisnn.
  • Скопируйте файлы заголовков, расположенные в <корневой папке CMSIS>\CMSIS\DSP\Include и <корневой папке CMSIS>\CMSIS\NN\Include, в папку C:\Program Files\cmsisnn\include.
  • Скопируйте созданную статическую библиотеку, расположенную в папке <Корневая папка CMSIS>\CMSIS\NN\Include, в папку C:\Program Files\cmsisnn\lib.
  • В командном окне MATLAB задайте для переменной среды MATLAB CMSISNN_PATH расположение папки установки CMSIS-NN.

setenv(‘CMSISNN_PATH’, ‘C:\Program Files\cmsisnn’)

Git Credential Manager: аутентификация для всех

Универсальная аутентификация Git

«Аутентификация затруднена.Трудно отлаживать, трудно тестировать, трудно сделать правильно». – Я

Эти слова были правдой, когда я написал их в июле 2020 года, и они остаются правдой и сегодня. Цель Git Credential Manager (GCM) — сделать задачу аутентификации в ваших удаленных репозиториях Git простой и безопасной, независимо от того, где хранится ваш код или как вы решили работать. Короче говоря, GCM хочет стать универсальной аутентификацией Git.

В своем последнем сообщении в блоге я говорил о риске распространения «универсальных стандартов» и о том, что внедрение Git Credential Manager Core (GCM Core) будет означать появление еще одного помощника по учетным данным.Поэтому я рад сообщить, что нам удалось успешно заменить GCM для Windows и GCM для Mac и Linux новым GCM! Исходный код старых проектов был заархивирован, и они больше не поставляются с такими дистрибутивами, как Git для Windows!

Чтобы отпраздновать и отразить это успешное объединение, мы решили отказаться от прозвища «Core» из названия проекта, чтобы стать просто Git Credential Manager или сокращенно GCM.

Если вы внимательно следили за развитием GCM, вы могли также заметить, что у нас появился новый дом на GitHub в нашей собственной организации, github.com/GitCredentialManager!

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

Взаимодействие с удаленными HTTP-серверами без помощь помощника по учетным данным, такого как GCM, становится более сложной с удалением аутентификации по имени пользователя и паролю в GitHub и Bitbucket.Использование GCM упрощает эту задачу, а благодаря захватывающим разработкам, таким как использование GitHub Mobile для двухфакторной аутентификации и поддержка потока кода устройства OAuth, мы делаем аутентификацию более удобной.

Привет, Linux!

Стремясь стать универсальным решением для аутентификации Git, мы усердно работали над тем, чтобы GCM хорошо работал в различных дистрибутивах Linux, уделяя основное внимание дистрибутивам на основе Debian.

Сегодня у нас есть пакеты Debian, которые можно загрузить с нашей страницы выпусков GitHub, а также tar-архивы для других дистрибутивов (только для 64-разрядной версии Intel).Построение на платформе .NET означает сокращение усилий по сборке и запуску везде, где работает среда выполнения .NET. Со временем мы надеемся расширить нашу матрицу поддержки дистрибутивов и архитектур ЦП (например, добавив поддержку ARM64).

Из-за широкого и разнообразного характера дистрибутивов Linux важно, чтобы GCM предлагал множество различных вариантов хранения учетных данных. В дополнение к файлам, зашифрованным GPG, мы добавили поддержку API секретной службы через libsecret (см. также связку ключей GNOME), что обеспечивает возможности, аналогичные тем, которые мы предоставляем сегодня в GCM для Windows и macOS.

Подсистема Windows для Linux

В дополнение к дистрибутивам Linux у нас также есть специальная поддержка использования GCM с подсистемой Windows для Linux (WSL). Использование GCM с WSL означает, что все ваши установки WSL могут совместно использовать учетные данные Git друг с другом и хостом Windows, что позволяет вам легко смешивать и сопоставлять свои среды разработки.

Подробнее об использовании GCM внутри ваших установок WSL можно прочитать здесь.

Привет, GitLab

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

В связи с этим я рад сообщить, что благодаря вкладу сообщества GCM теперь поддерживает GitLab. Добро пожаловать в семью!

Смотри, Ма, никаких терминалов!

Мы любим терминал и GCM тоже. Однако мы знаем, что не всем удобно вводить команды и отвечать на подсказки с помощью клавиатуры. Кроме того, многие популярные инструменты и IDE, которые предлагают интеграцию с Git, делают это путем запуска исполняемого файла git , что означает, что GCM может быть вызван для выполнения аутентификации из приложения с графическим интерфейсом, где нет терминала (!)

GCM всегда предлагал полные графические подсказки аутентификации в Windows, но благодаря принятию нами проекта Avalonia, который обеспечивает кроссплатформенный .NET XAML, теперь мы можем отображать графические подсказки в macOS и Linux.

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

Обеспечение безопасности цепочки поставок программного обеспечения

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

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

Хранить

ВСЕ учетные данные

Git Credential Manager создает и сохраняет учетные данные для доступа к репозиториям Git на множестве платформ.Мы высоко ценим необходимость обеспечения безопасности ваших учетных данных и доступа. Вот почему мы всегда храним ваши учетные данные, используя стандартные для отрасли API-интерфейсы шифрования и хранения.

GCM использует диспетчер учетных данных Windows в Windows и связку ключей для входа в macOS.

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

GCM теперь также может использовать помощник Git git-credential-cache , который обычно создается и доступен во многих дистрибутивах Git. Это отличный вариант для облачных оболочек или эфемерных сред, когда вы не хотите постоянно сохранять учетные данные на диске, но хотите избежать запроса на каждый git fetch или git push .

Современная проверка подлинности Windows (экспериментальная)

Еще один способ защитить ваши учетные данные при хранении — это поддержка на уровне оборудования с помощью таких технологий, как Trusted Platform Module (TPM) или Secure Enclave.Кроме того, предприятия, желающие убедиться, что ваше устройство или учетные данные не были скомпрометированы, могут захотеть применить политики условного доступа.

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

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

Я рад сообщить, что GCM получил экспериментальную поддержку аутентификации через посредника (на данный момент только для Windows)!

В Windows брокер проверки подлинности — это компонент, впервые представленный в Windows 10 и известный как веб-менеджер учетных записей (WAM). WAM позволяет таким приложениям, как GCM, поддерживать современные способы проверки подлинности, такие как Windows Hello, и применять политики условного доступа, установленные вашей работой или учебным заведением.

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

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

Что такое условный доступ?

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

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

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

Еще больше улучшений

За последние 18 месяцев

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

.
  • Автоматическое обнаружение локальных/самостоятельных экземпляров
  • GitHub Enterprise Server и GitHub AE поддерживают
  • Общие кэши маркеров Microsoft Identity с другими инструментами разработчика
  • Улучшенная поддержка сетевого прокси
  • Поддержка пользовательских корневых сертификатов TLS/SSL
  • Установщик Windows без администратора
  • Улучшена обработка и вывод командной строки
  • Поддержка корпоративных настроек по умолчанию в Windows
  • Многопользовательская поддержка
  • Улучшенная диагностика

Спасибо!

Команда GCM также хотела бы лично поблагодарить всех людей, которые внесли большой и малый вклад в проект:

@vtbassmatt, @kyle-rader, @mminns, @ldennington, @hickford, @vdye, @AlexanderLanin, @derrickstolee, @NN, @johnemau, @karlhorky, @garvit-joshi, @jeschu1, @WormJim, @nimatt, @parasychic, @cjsimon, @czipperz, @jamill, @jessehouwing, @shegox, @dscho, @dmodena, @geirivarjerstad, @jrbriggs, @Molkree, @4brunu, @julescubtree, @kzu, @sivaraam, @mastercoms, @nightowlengineer

Будущая работа

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

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