По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
С помощью групповых политик можно устанавливать различные параметры, применяемые к компьютеру и пользователю. Рассмотрим Предпочтение групповой политики "Ярлыки". С помощью этого предпочтения можно создать (удалить) или изменить (обновить) ярлык, установить клавиши быстрого вызова, изменить иконку ярлыка. Указать как должно быть открыто окно, т.е. в обычном размере или свернутым/развёрнутом на весь экран. Можно указать URL, путь к любому файлу или папке, общедоступному сетевому ресурсу, сделать ссылку на элемент панели управления. Удобство развертывания ярлыка через политики в том, что, если пользователь удалит ярлык, ему достаточно будет сделать "Выход из системы" или перезагрузить компьютер, и ярлык вновь появится. Если приложение "переедет" на другой сервер, то достаточно будет изменить путь в политике и все. Тем самым снижается нагрузка на первую-вторую линию службы технической поддержки. > Рассмотрим пример создания ярлыка Панели управления на рабочий стол. Для этого нужно запустить оснастку Group Policy Management, это можно сделать на контроллере домена, либо на компьютере с установленными оснастками управления (GPMC). Запустить оснастку можно несколькими способами: через меню "Пуск" открыв AdministrativeTools -> GroupPolicyManagement. Из "ServerManager" выбрав в меню Tools-> GroupPolicyManagement или через "Выполнить" (Win+R) набрав gpmc.msc В открытой консоли GPMC развернем узел Domain. Затем правой кнопкой мыши и выберем Create a GPO in this domain, and Link it here. В открывшемся окне задайте имя политики, желательно называть ее так, чтобы сразу было понятно, что она делает. В правой части окна можно увидеть различные параметры данной политики. К какой OU прилинкована, используются ли фильтры безопасности, можно посмотреть, не открывая саму политику какие в ней выполнены настройки и каким пользователям или группам безопасности можно редактировать ее. Редактирование политики происходит нажатием правой кнопки мыши и выбора Edit. Создадим ярлык Панели управления на Рабочем столе. Для этого в редакторе политики раскроем User Configuration -> Preferences -> Windows Settings -> Shortcuts. Правой кнопкой мыши на Shortcuts -> New -> Shortcut. В Свойствах нового ярлыка из возможных действий укажем Create, дадим понятное имя, ниже выберем ShellObject и Location Desktop. Через Обзор укажем Target object Control Panel. Также можно указывать и другие места для создания ярлыка, доступно 15 расположений, можно установить ярлык сразу для всех пользователей. Если делать ярлык на программу, нужно будет выбрать Объект файловой системы (FileSystemObject), в этом случае появится дополнительное поле Arguments, в него прописываются параметры, которые будут использоваться при открытии созданного ярлыка. Для того, чтобы добавить Быстрый запуск с помощью сочетаний клавиш Ctrl+Alt, просто нажмите на эту клавишу. При наведении мышки на ярлык можно установить подсказку. Поле, отвечающее за это, называется Comment. Просто введите свой текст в это поле. Вкладка Common содержит в себе общие параметры элемента и различные типы запуска, к примеру, можно "Применить один раз и больше не применять повторно". Кнопка Targeting позволяет устанавливать условия, при которых политика должна будет примениться и активируется при установке соответствующей галочки Item-leveltargeting. Выполним команду gpupdate и увидим, что на Рабочем столе появился ярлык на Панель управления. В этой статье рассмотрели создание ярлыка используя средства групповых политик.
img
Сложная терминология в некоторых темах, касающихся IT, иногда заводит в тупик. Простой и понятный процесс может быть описан очень комплексным языком, из-за чего, даже после изучения темы, могут остаться вопросы. Это касается и контейнеризации. В рамках этой темы ответим на вопрос - в чем разница между LXC, LXD и LXCFS. О LXC LXC (Linux Containers) представляет собой интерфейс в пользовательской среде, функция которого - сдерживать ядро Linux. Имея в активе эффективный API и набор простых инструментов, LXC дает пользователю возможность администрировать любые использующиеся контейнеры. Важные характеристики Текущая версия LXC задействует ряд функций ядра, чтобы обеспечить контейнеризацию следующих процессов: namespaces (ipc, uts, mount, pid); профиль AppArmor (та же SELinux); правила Seccomp; Chroots (задействуя pivot _root); потенциал ядра; группы контроля (CGroups). Как правило, контейнеры LXC обычно воспринимаются пользователями как нечто усредненное между Chroot и VM. Эта технология нацелена на то, чтобы создать среду, аналогичную стандартно установленной Linux, но сделать это без необходимости в дополнительном ядре. Компоненты Ниже в списке, несколько актуальных компонентов LXC: liblxc; языковые привязки для AP (Python (2 и 3 ), Lua, Go, Ruby, Haskell); стандартные инструменты администрирования контейнеров; готовые варианты контейнеров; LXD - решение для LXC LXD (Linux Container Daemon) является базирующимся на LXC гипервизором контейнеров. Основные части LXD: системный daemon (lxd); клиент LXC; плагин (nova-compute-lxd); REST API предоставляется демоном в локальном или сетевом режиме. Эффективная утилита управления, клиент командной строки, отличается своей интуитивностью и простотой. Именно с помощью него реализовано управление каждым контейнером. Клиент обрабатывает подключение одновременно к разному количеству контейнеров, отображает уже созданные и создает новые. Есть возможность их перемещения в процессе функционирования. Упомянутый плагин “превращает” все LXD-host в вычислительные узлы, которые работают для поддержки контейнеров, а не VM. Преимущества Основные преимущества LXD: обеспечение безопасности (контейнеры не обладают привилегированностью, ресурсы ограничиваются и так далее.) любой масштаб использования; интуитивность (простое управление через ввод в командной строке); образ-ориентированность (использование надежных образов, вместо шаблонов); возможность активной миграции; Связь с LXC LXD не является новой версией LXC, скорее, он использует ее как базу. Чтобы администрирование контейнеров стало еще проще, LXD задействует LXC, влияя на библиотеку последней. Также во взаимодействии участвует прослойка, написанная на Go. Таким образом, LXD является, по сути, альтернативой LXC с расширенными возможностями (отличный пример - управление через сеть). LXCFS: настройка контейнеризации LXCFS - это небольшая архитектура файлов в среде пользователя, которая способна оптимизировать работу ядра Linux. LXCFS включает в себя: файлы, которые монтируются над оригинальными аналогами и предоставляют CGroup-совместимые значения; дерево cgroupfs, функционирующее в независимости от контейнеров. Архитектура представляет из себя простой код, созданный в C. Задача, которую необходимо было решить - запуск контейнера systemdпод базовым пользователем с параллельным запуском systemd внутри контейнера, с целью взаимодействовать с cgroups. Если говорить простым языком, цель создания этой архитектуры - ощущение активного контейнера, как независимой системы. Так в чем же разница? Сравнивать LXC, LXD, LXCFS не имеет смысла, так как они не представляют из себя 3 разных продукта с одинаковым функционалом. Грубо можно описать их как программу, дополнение к ней и патч, который позволяет среде пользователя адаптироваться под ее нужды.
img
Основная цель любого проекта по разработке ПО – получить прибыль за счет автоматизации бизнес-процессов. Чем быстрее вы начнете выпускать новые версии, тем лучше для компании. Но как же научиться выпускать новые версии максимально быстро? Конечно же, все можно делать вручную. Например, подключить удаленный сервер через SSH, клонировать клонировать репозиторий с новым кодом, собрать его и запустить через командную строку. Да, такой способ работает, но он малоэффективен. Сегодня мы поговорим об автоматизации процесса разработки и выхода новых версий. CI и CD – это два сокращения, которые означают Continuous Integration (Непрерывная интеграция) и Continuous Delivery (Непрерывное развертывание). CI CI описывает процесс добавления изменений в репозиторий. Ниже схематически представлен простой пример коллективной разработки. Одновременно может работать целая группа людей, но все изменения передаются в главную ветку master поэтапно. Хотя даже в такой простой схеме возникает несколько вопросов. Как мы узнаем, что код, который идет в ветку master, компилируется? Мы хотим, чтобы разработчики писали тесты для кода. Как быть уверенными в том, что тестовое покрытие не уменьшится? Все сотрудники команды должны форматировать код в соответствие с определенным стилем. Как отследить возможные нарушения? Конечно же, все это можно проверить вручную. Но такой подход весьма хаотичен. Кроме того, по мере разрастания команды выполнять подобные проверки становится сложнее. CI используется для автоматизации выше обозначенных пунктов. Начнем с первого пункта. Как можно проверить, что новые изменения не сломают сборку? Для этого нам потребуется еще один блок в схеме. Большинство CI-процессов можно описать по следующему алгоритму. При открытии каждого Pull Request (запроса на включение изменений) и отправке новых изменений, Git-сервер отправляет уведомление CI-серверу. CI-сервер клонирует репозиторий, проверяет исходную ветку (например bugfix/wrong-sorting) и сливает ее с основной веткой master. Затем запускается скрипт сборки. Например ./gradlew build. Если команда возвращает код «0», то сборка прошла успешно. Все остальные значения считаются ошибкой. CI-сервер отправляет запрос на Git-сервер с результатом сборки. Если сборка прошла без ошибок, то Pull Request разрешается слить. В противном случае он блокируется. Данный процесс гарантирует, что код, попадающий в ветку master, не сломает дальнейшие сборки. Проверка тестового покрытия Давайте немного усложним задачу. Предположим, нам захотелось установить минимальный охват тестового покрытия. Это означает, что в любой момент времени покрытие ветки master должно быть не менее 50%. Плагин Jacoco идеально справляется с этой задачей. Вы просто настраиваете его так, чтобы при охвате тестового покрытия ниже допустимого, сборка уходила в ошибку. Реализовать такой подход проще некуда. Но есть небольшая оговорка. Этот метод работает только при условии, что плагин настраивался на старте проекта. Представим ситуацию: вы работаете над проектом, которому уже 5 лет. С момента первого коммита никто не проверял тестовое покрытие. Разработчики добавляли тесты в случайном порядке и без какой-либо организации. Но вот однажды вы решаете увеличить количество тестов. Вы настраиваете плагин Jacoco на минимальную планку в 60%. Спустя какое-то время разработчик открывает новый Pull Request. Затем разработчики вдруг понимают, что покрытие – всего лишь 30%. Так что для успешного закрытия задачи нужно покрыть не менее 30% кода продукта. Как вы можете догадаться, для проекта 5-летней давности – это практически неразрешимая проблема. Но что, если будут проверяться только будущие изменения в коде, а не весь продукт? Если в Pull Request разработчик изменит 200 строк, то нужно будет охватить не менее 120 из них (при тестовом покрытии в 60%). Тогда не придется проходить по множеству модулей, которые не относятся к задаче. В принципе, проблема решаема. Но как применить все это к проекту? К счастью, есть решение. Отчет Jacoco отправляется на сервер тестового покрытия. Одно из самых популярных решений – SonarCloud. Сервер хранит статистику по предыдущим вычислениям. Это очень удобно: вычислять тестовое покрытие не только всего кода, но и будущих изменений. Затем результат анализа отправляется на CI-сервер, который перенаправляет его на Git-сервер. Такая рабочая модель позволяет применять культуру обязательного тестирования на любой стадии развития продукта, поскольку проверяется лишь часть изменений. Если говорить о стиле оформления кода, то отличий практически нет. Можете попробовать плагин Checkstyle. Он автоматически отклоняет сборку, которая нарушает любое из заявленных требований. Например, в коде есть неиспользованный импорт. Кроме того, вы можете присмотреться к облачным сервисам, которые выполняют анализ кода и визуально отображают результаты в виде графиков (SonarCloud это тоже умеет). CD CD описывает процесс автоматического развертывания новой версии продукта. Давайте еще немного подкорректируем схему CI. Вот так конвейерный процесс CI/CD мог бы выглядеть в реальном проекте. Первое отличие – теперь CI-сервер называется CI/CD-сервером. Дело в том, что зачастую оба процесса (CI и CD) выполняются одним и тем же диспетчером задач. Так что мы будем рассматривать именно этот случай. Но так бывает не всегда. Например, задачи по интеграции могут делегироваться на GitLab CI, а задачи по доставке – отдаваться в Jenkins. Правая часть схемы изображает CI. Мы обсудили ее выше. Слева показана CD. Задача по CD создает проект (или повторно использует артефакты, полученные на стадии CI) и развертывает его на конечном сервере. Стоит отметить, что сервер в нашем случае – это понятие абстрактное. Например, развертывание может выполняться в кластер Kubernetes. Так что самих серверов может быть несколько. Обычно после стадии развертывания на почту приходят сообщения о выполнении. Например, CD-сервер может уведомлять подписчиков об успешном развертывании/ошибках. В любом случае, возникает важный вопрос. В какой момент мы должны запускать задачи по CD? Триггеры могут быть разными. Развертывание после каждого слияния Pull Request. Развертывание по расписанию. Развертывание после каждого слияния Pull Request с определенной веткой. Сочетание нескольких вариантов. В первом пункте процесс выстроен так, что задачи по CI и CD всегда выполняются последовательно. Данный подход весьма популярен при разработке программ с исходным кодом. Библиотека Semantic Release помогает настроить проект для прозрачной интеграции данной модели. Важно помнить о трактовке понятия deploy (развертывание). Это не всегда «что-то где-то запустить». Например, при разработке библиотеки, нет никакого запуска. В данном случае процесс развертывания означает выпуск новой версии библиотеки. Второй пункт не зависит от процесса CI, ведь проект развертывается по определенному расписанию. Например, ежедневно в 01:00. Третий пункт аналогичен первому, но с небольшими отличиями. Предположим, в репозитории у нас есть 2 основные ветки: develop и master. В develop содержатся самые последние изменения, а в master – только релизы версий. Если мы хотим развертывать только ветку master, то не нужно вызывать CD-задачу по слиянию в develop. Последний пункт – это сочетание подходов. Например, ветку develop можно развертывать по расписанию в среду разработки. А ветку master – в реальную среду по каждому слиянию Pull Request. Инструменты На рынке доступно множество решений по автоматизации процессов CI/CD. Ниже представлено несколько продуктов. Jenkins. Один из самых востребованных инструментов CI/CD в мире. Свою популярность он заслужил, благодаря политике открытого кода (open-source). То есть вам не нужно ни за что платить. В Jenkins вы можете императивно описывать конвейеры сборки с помощью Groovy. С одной стороны это достаточно гибкое решение, но с другой – требует более высокого уровня квалификации. GitHub Actions. Этот инструмент для CI/CD доступен для GitHub и GitHub Enterprise. В отличие от Jenkins, GitHub Actions предлагает декларативные сценарии сборки с YAML-конфигурацией. Кроме того, в данном решении доступна интеграция с различными системами обеспечения качества (например SonarCube). Таким образом, сборку можно описать в нескольких текстовых строках. GitLab CI. Во многом похож на GitHub Actions, но со своими особенностями. Например, GitLab CI может указывать на определенные тесты, вызывающие ошибку в сборке. Travis CI. Облачный CI/CD-сервис. Предлагает множество возможностей, не требующих сложных настроек. Например, шифрование данных, которые следует скрыть в публичном репозитории. Есть и приятный бонус в том, что Travis CI можно совершенно бесплатно использовать в публичных open-source проектах на GitHub, GitLab и BitBucket.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59