Результати пошуку
ITVDN: курси програмування
Відеокурси з
програмування
Підписка

300+ курсів за популярними IT-напрямками

Вибери свою IT спеціальність

Підписка
Підписка

300+ курсів за популярними IT-напрямками

Результати пошуку за запитом: design pattern
Вступ

Автор: Олександр Шевчук

У даному відео уроці розглядається структура курсу "Шаблони проектування" та проводиться короткий огляд книги "Прийоми об'єктно-орієнтованого проектування". Паттерни проектування” з обговоренням її достоїнств і недоліків. Також автор презентує книгу «Design Patterns via C#», яка у доступному, зрозумілому та спрощеному вигляді пояснює призначення та застосування патернів у створенні програмного забезпечення.
Тема вебинара: "Адаптивный веб-дизайн: типы адаптивных макетов"
Этот вебинар посвящен теме создания адаптивного веб-дизайна для сайтов, показана разница между адаптивным (Adaptive) и отзывчивым веб дизайном (responsive web-design), приведены примеры таких сайтов, рассказано о существующих адаптивных макетах. Так же в вебинаре слушатель найдет примеры создания адаптивных макетов с использованием таких инструментов как медиа-запросы (@media) и фреймворк Bootstrap.
Валідація форм засобами HTML5

Автор: Редакция ITVDN

Введення  Використовуючи форми в HTML5, Ви часто використовуєте методи перевірки (валідації) даних, адже їх ігнорування може призвести: до втрат користувачів, до сміття в базі даних або до взлому сайту. Історично склалося, що створення форм із гарною валідацією – складне завдання. В HTML5 є інструменти оброблення даних для форм, з їх допомогою можна проводити валідацію, що включає в себе спеціальні атрибути і нові типи вхідних даних. Давайте розберемо їх детальніше. 1. Спеціалізовані типи вхідних даних HTML5 містить кілька нових типів введення. Вони використовуються для створення поля введення, що приймає тільки певні типи даних. Нові типи вхідних даних виглядають наступним чином: color date datetime datetime-local email month number range search tel time url week Приклад: <input type="email"/> Якщо браузер не підтримує даний тип введення, поле поводитиметься як звичайне поле введення тексту. 2. Обов’язкові поля для заповнення  Просто додавши атрибут "required"до <input>, <select> або <textarea>, Ви кажете браузеру, що значення має бути заповнене. <input type="checkbox" name="terms" required > 3. Ліміти Ми можемо встановити деякі обмеження та ліміти, наприклад, максимальні та мінімальні значення для числових полів. Щоб обмежити довжину поля введення, треба використовувати атрибут "maxlength". <input type="text" name="name" required  maxlength="15"> Поле <input type="number" /> використовує атрибути "max" та "min", щоб створити діапазон можливо-допустимих значень (у прикладі мінімально допустимий вік – 18). <input type="number" name="age" min="18" required> 4. Стилізування CSS3 псевдо-класи дозволяють прикрасити форму незалежно від її стану. Це: :valid :invalid :required :optional :in-range :out-of-range :read-only :read-write У прикладі ми об'єднали селектори "valid" та "invalid" із псевдо-класом "focus" для зафарбовування поля форми в червоний або зелений, залежно від того, що робить користувач: вибирає або друкує. input:focus:invalid, textarea:focus:invalid{     border:solid 2px #F5192F; } input:focus:valid, textarea:focus:valid{     border:solid 2px #18E109;     background-color:#fff; } 5. Підказки Ви помічали спливаюче вікно з підказкою під час відправлення неправильно заповненої форми? Встановивши атрибут "title" для поля введення, можна додати підказки, що вказують на помилки при порушенні тих чи інших правил валідації. Зверніть увагу, що різні браузери відображають підказки по-різному. У браузері Chrome значення назви атрибуту буде відображатися дрібним шрифтом, під основним повідомленням про помилку. У Firefox інша проблема: використовуючи атрибут “pattern” після того, як він береться в якості шаблону, Ви не отримаєте спливаючу підказку.  <input type="text" name="name" title="Будь ласка, введіть ім’я користувача."> 6. Шаблони Атрибут "pattern" дозволяє розробникам задавати регулярний вираз, який браузер порівнює з даними введення, перш ніж відправити форму заявки. Ось як це можна використати: <input type="email" name="email" required pattern="^\S+@\S+\.\S+$" title="example@mail.com"> З функцією фільтрування вхідних даних ми можемо приймати тільки повну e-mail адресу. Джерело: http://tutorialzine.com/2014/12/quick-tip-easy-form-validation-with-html5/
Новий відео курс – С# Асинхронне програмування

Автор: Редакция ITVDN

Друзі, привіт! Ми підготували приємні новини для тих, хто хоче поглибити свої знання мови C# та навчитися створювати код, який ефективно оброблятиме декілька операцій водночас – новий відео курс “C# Асинхронне програмування” вже на сайті в повному обсязі! Асинхронний підхід до програмування дозволяє створювати код, виконання якого не буде блокувати виконання іншого коду. Завдяки такому підходу, наприклад, одночасно може бути виконано багато різних задач. На курсі ви познайомитесь із засобами асинхронного та паралельного програмування, а також розглянете: шаблон асинхронного програмування TAP (Task-based Asynchronous Pattern) та його співставлення з шаблонами APM та EAP; ключові слова async/await; механізми Thread і ThreadPool; налаштування продовження задачі (TaskContinuation), планувальник задач (TaskScheduler) та контекст синхронізації; приклади роботи з великою кількістю задач, теорію блокування та синхронізації в багатопоточному середовищі й реалізацію цих засобів в .NET (як-от монітор, семафор, м’ютекс та інші). Окремо будуть розглянуті потокобезпечні колекції, їх призначення та будова, розподілене програмування, види багатозадачності, засоби класу Parallel та методи PLINQ, різні шаблони паралельної та асинхронної обробки даних. Автор курсу – Ганна Сичова, .NET Developer із комерційним досвідом в ІТ понад 7 років. Курс складається з 8 відео уроків загальною тривалістю 5 годин 52 хвилини. Структура курсу: Початок роботи з асинхронністю в С#. Task-based Asynchronous Pattern (TAP). Ключові слова async/await. Технічна реалізація. Робота з асинхронним кодом. Блокування. Виключення. Потокобезпечні колекції. Планувальник задач (TaskScheduler). Вкладені та дочірні задачі. Паралельне програмування. Чого ви навчитеся на даному курсі: Писати асинхронний код мовою C#. Краще розуміти, як працюють ключові слова async/await. Обирати найбільш відповідні засоби синхронізації та блокування ресурсів. Розбиратися в засобах паралелізації, які існують в C#, та в яких випадках їх краще використовувати. Краще розуміти, які проблеми можуть вирішити паралельне та асинхронне програмування. Використовувати шаблони асинхронного та паралельного програмування. Попередні вимоги Цей курс підійде як новачкам у програмуванні, так і досвідченим .NET розробникам, які хочуть покращити свої знання із асинхронного та паралельного програмування в C#. Для розуміння розглянутих на курсі тем знадобиться знання мови C# на рівні курсу “C# Поглиблений”. Дивіться перший урок у вільному доступі. Курс вже доступний на нашому сайті в повному обсязі – до кожного уроку є практичні завдання та опорний конспект. Якщо у вас є активна підписка, ви можете дивитися його прямо зараз. Курс входить до комплексних програм підготовки за спеціальностями: C#/.NET Developer; ASP.NET Core розробник; ASP.NET MVC розробник.       
Вивчай Асинхронне програмування в С# безкоштовно

Автор: Редакция ITVDN

С 10 по 17 сентября 2020 года на ITVDN проходит акция — вы можете пройти обучение по курсу “Асинхронное программирование в C#” бесплатно! Зачем изучать асинхронное программирование? В основе асинхронности лежит концепция эффективного использования имеющихся вычислительных ресурсов. Она позволяет вынести определенные задачи из основного потока в асинхронные методы или блоки программного кода. Без такого подхода тяжело обойтись в графических программах, где продолжительные задачи могут создавать проблемы пользовательскому интерфейсу попросту блокируя его.  Также, асинхронность активно используется в веб-приложениях, когда необходимо обрабатывать пользовательские запросы, взаимодействовать с базами данных или сетевыми ресурсами, сохраняя при этом доступность приложения для выполнения других задач. О курсе Автор - Гнатюк Владислав, .NET Developer, сертифицированный специалист Microsoft и тренер-консультант по специальности .NET Developer в CyberBionicSystematics. Курс состоит из 9 видео уроков общей продолжительностью более 19 часов. В курсе подробно рассматривается само понятие асинхронности и современные приемы организации асинхронного выполнения участков кода на языке C# в различных программных шаблонах. По окончании курса вы будете владеть навыками работы с задачами в связке с ключевыми словами async await. При выполнении практических заданий и тестов вы получите первый опыт, который поможет раз и навсегда запомнить методику применения шаблона TAP в языке C#. Программа курса: Введение в асинхронное программирование Асинхронный шаблон программирования Task-based Asynchronous Pattern Планировщик задач. Дочерние задачи Ключевые слова async await. Техническая реализация Работа контекста синхронизации с async await. Роль async await в ASP.NET Асинхронное программирование с async await Исключения в асинхронном коде. Скоординированная отмена. Блокировки Потокобезопасные коллекции. Producer-Consumer Pattern. Класс Parallel ConcurrentDictionary. PLINQ Для кого этот курс Курс «Асинхронное программирование в C#» будет полезен как начинающим .NET разработчикам, так и опытным программистам, желающим улучшить уже имеющиеся знания об актуальных на сегодня технологиях создания асинхронного кода. Курс входит в комплексную программу обучения по специальности .NET Developer. Чему вы научитесь на этом курсе: Использовать класс Task из библиотеки TPL для асинхронного выполнения методов. Создавать продолжения (Continuation) для логического завершения асинхронных задач. Управлять выполнением задач, создавая пользовательский планировщик задач. Понимать внутреннюю логику выполнения команд на основе ключевых слов async/await. Создавать асинхронные методы с использованием ключевых слов async/await. Ловить и обрабатывать исключения, полученные при выполнении асинхронного кода. Организовывать корректную отмену выполняемых задач. Работать с потокобезопасными коллекциями, написанными по шаблону Producer-Consumer. Работать с потокобезопасным словарем ConcurrentDictionary. Сроки акции Акция проходит с 10 по 17 сентября 2020 года включительно. Доступ к курсу открывается на 10 дней.
Шаблони проектування

Автор: Олександр Шевчук

Програмне забезпечення, створене за допомогою різних мов програмування, спрощує наше життя - сьогодні без нього неможливо уявити сучасний світ. Подібні досягнення багато в чому завдячують шаблонам (патернам) проектування - архітектурним конструкціям, які описують типові способи вирішення найпоширеніших проблем при проектуванні програм. У відео курсі будуть детально розглянуті понад 20 патернів, які спрощують життя розробникам та допомагають створювати якісний продукт. Як додатковий матеріал до цього курсу ви можете завантажити книгу Олександра Шевчука “Design Patterns via C#”
Предисловие к курсу "Шаблоны проектирования"
<p>Объектно-ориентированная программная система состоит из множества объектов, что находятся в определенных отношeниях и связях друг с другом. Данный курс научит Вас как прaвильно проeктировать свои прогрaммные системы для плaтформы .Net, прaвильно подбирать и использовать порождающие, структурные и поведенческие шаблоны проектирования, описанные в труде &laquo;Приемы объектно-ориентированного проектирования. Цели, которые перед собой стaвили aвторы книги &laquo;Design Patterns via C#&raquo;: рaзъяснить и в хорошем смысле более &laquo;просторечиво&raquo; прeдоставить опрeделения и положeния, предстaвленные в книгe &laquo;Приeмы объектно-ориeнтированного проeктирования. Паттeрны проeктирования&raquo;.</p>
Валідація AngularJS

Автор: Редакция ITVDN

Введение Валидация достаточно часто вызывает затруднения с работой в веб-приложениях. Во многих случаях фреймворки должны быть использованы для валидации значений формы. Кроме того, эти фреймворки часто не работают во всех браузерах. AngularJS приходит с проверкой, построенной так, что теперь гораздо легче создать валидацию, которая работает во всех браузерах. На практике Использование angular-message Чтобы использовать angular-message, нужно внести в ваш проект модуль:  angular.module("realestateApp", ["ngMessages"]); Теперь ng-message будет доступен для использования. Формы Для инициализации процесса валидации, Вы должны начать с формы контейнера: <form name="tenantForm"> Теперь внутри тега можно добавить управление и логику на их проверку. В сценариях валидации, как правило, есть несколько основных атрибутов. Те, которые стоит использовать: Required, Minimum, Maximum, Pattern, Email, Number, и URL. Required Этот атрибут заставляет form быть недействительным, если обязательное поле не вводится. <input type="text" required /> Minimum Length Этот атрибут указывает минимум символов для ввода до того, как значение будет принято. <input type="text" ng-minlength=5 /> Maximum Length Этот атрибут указывает максимальную длину или проверка будет неверна. <input type="text" ng-maxlength=20 /> Pattern Matching Эта функция позволяет согласовать совпадения при использовании Regex. <input type="text" ng-pattern="[a-zA-Z]" /> Email Matching Angular обеспечивает пользовательские функции по электронной почте. <input type="email" name="email" ng-model="user.email" /> Number Этот требует ввода в цифровом формате перед проверкой. <input type="number" name="age" ng-model="user.age" /> URL Этот требует ввода в ссылочном формате перед проверкой. <input type="url" name="homepage" ng-model="user.url" /> Сообщение об ошибке Ранее использовался error-container, но теперь можно использовать директиву ng-message: <div ng-messages="tenantForm.Email.$error" ng-messages-include="messages.html" class="errors"></div> Также нужен файл messages.html для хранения сообщений об ошибках: <div class="messages"> <div ng-message="required">Required</div> <div ng-message="minlength">Too short</div> <div ng-message="maxlength">Too long</div> <div ng-message="email">Invalid email address</div> <div ng-message="compareTo">Must match the previous entry</div> <div ng-message="number">Must be a number</div> <div ng-message="url">Must be in URL format</div> </div> Сообщение об отмене ошибки Иногда Вы должны иметь пользовательские сообщения об ошибках, не охватываемых messages.html. Вы можете сделать это, добавив тег span в диапазон для любого сообщения об ошибке. То, что должно отобразиться: <div ng-messages="tenantForm.FirstName.$error" ng-messages-include="messages.html" class="errors"> <span class="messages" ng-message="minlength">Must be more than 3 characters</span> <span class="messages" ng-message="maxlength">Must be more than 20 characters</span> </div> Собираем всё вместе Теперь, объединив messages.html с index.html. <form name="tenantForm" novalidate style="width: 500px">     <div class="row">         <div ng-repeat="tenant in tenant">             <div class="form-group">                 <label>First Name: label>                 <input type="text"                        placeholder="First Name"                        name="FirstName"                        ng-model="tenant.FirstName"                        ng-minlength=3                        ng-maxlength=20 required />                 <div ng-messages="tenantForm.FirstName.$error"                      ng-messages-include="messages.html" class="errors">                     <span class="messages"                     ng-message="minlength">Must be more than 3 charactersspan>                     <span class="messages"                     ng-message="maxlength">Must be more than 20 charactersspan>                 div>             div>             <div class="form-group">                 <label>Home Phone: label>                 <input type="number"                        placeholder="Phone Number"                        name="HomePhone"                        ng-model="tenant.HomePhone"                        ng-minlength=7                        ng-maxlength=10 required />                 <div ng-messages="tenantForm.HomePhone.$error"                      ng-messages-include="messages.html" class="errors">                     <span class="messages"                     ng-message="minlength">Must be more than 7 digitsspan>                     <span class="messages"                     ng-message="maxlength">Must be less than 11 digitsspan>                  div>             div>             <div class="form-group">                 <label>Email: label>                 <input type="email"                        placeholder="Email"                        name="Email"                        ng-model="tenant.Email"                        required />                 <div ng-messages="tenantForm.Email.$error"                      ng-messages-include="messages.html" class="errors">div>             div>             <div class="form-group">                 <label>Webpage: label>                 <input type="url"                        placeholder="Webpage"                        name="Webpage"                        ng-model="tenant.Webpage"                        required />                 <div ng-messages="tenantForm.Webpage.$error"                      ng-messages-include="messages.html" class="errors">                 div>             div>         div>     div>               form> Этот подход кажется чище, чем использование директивы ng-show. Кроме того, это уменьшит дублирование кода путем центрального места хранения ваших сообщений об ошибках, но в то же время используется для пользовательских сообщений. Источник: http://www.codeproject.com/Articles/992545/AngularJS-Validation
Кар'єра в IT: хто такий Embedded-розробник, завдання та обов'язки

Автор: Влад Сверчков

Хто такий Embedded-розробник? Сфери застосування Embedded-розробки. Що має знати Embedded-розробник. Як стати Embedded-розробником. Де отримати знання. М’які навички. Ключові тренди в Embedded. Кар’єрні перспективи та заробітна плата Embedded Engineer. Кількість вакансій. Конкуренція. Заробітна плата. Кар’єрні можливості. Висновки. Переважна більшість новачків в Україні обирає тестування або розробку із залученням C#./NET, Java, Python, JavaScript (фронтенд та Node.js). Ці напрямки мають найбільшу кількість вакансій в ІТ, низькі вимоги до вищої освіти, потужну розпіареність майже в усіх навчальних центрах, а також відносно простий перехід в ІТ з будь-якої не айтішної професії. Спеціальність, яку ми сьогодні розглядатимемо, не є настільки популярною, трендовою. Однак вона є не менш важливою за інші ІТ-напрямки. Герой нашої статті займається розробленням вбудованих (embedded) систем, і його іменують Embedded-розробник. Що це за спеціальність, наскільки вона важлива і де використовується, що потрібно вчити для її опанування, як виглядає день Embedded-ера, які кар’єрні перспективи та зарплати у фахівців цього напрямку – розбір цих та інших інтригуючих питань читайте нижче. Хто такий Embedded-розробник? Почнемо з поняття “Embedded система”. Трактування в різних джерелах відрізняється, але якщо звести все під один знаменник – це комп’ютеризована система, яка вбудована у механічну або електронну систему і виконує певну функціональність. Тобто, це система, в якій комп’ютер (як правило мікроконтролер або мікропроцесор) є невід’ємною частиною іншої системи. Як приклад: мікроконтролер у вашій кавовій машині, мікрохвильовці або пральній машинці; пристрій, який забезпечує спрацювання подушок безпеки в автомобілі, контролер у літаку, який збирає певні дані про політ – навіть Bluetooth-навушники містять свою власну вбудовану систему. Відповідно, Embedded-розробник – це спеціаліст, який займається розробкою подібних вбудованих систем, використовуючи програмування (software) та навички роботи із “залізом” (hardware). Життєвий цикл продукту дуже тісно зав’язаний на розробнику вбудованих систем. Обов’язки Embedded-розробника можуть різнитися в залежності від мікроконтролерів / мікросхем / пристроїв тощо, з якими він працює, але основні фази, де відчутна роль цього спеціаліста, наступні: Аналіз вимог. Комунікація з клієнтами, дизайнерами та інженерними командами для визначення функціональних і технічних вимог до вбудованої системи. Проєктування системи. Розроблення архітектури та дизайну вбудованої системи, вибір апаратних та програмних компонентів. Перевірка базової працездатності. Перед початком роботи Embedded розробник повинен перевірити функціонування плати, оновити драйвери за потреби і переконатися, що “залізо” справне. Програмування. Написання програмного коду, вбудованих програм і системних протоколів. Тестування та налагодження. Проведення тестів для перевірки працездатності embedded-системи. Інтеграція. Забезпечення взаємодії вбудованої системи з апаратурою, зовнішніми пристроями та іншими складовими системи. Оптимізація продуктивності. Вдосконалення ефективності та продуктивності вбудованої системи, враховуючи обмежені ресурси. Документація. Формування діагностичних звітів, технічних інструкцій та документації щодо розроблення ПЗ. Також читання форумів, статей та інструкцій до плат та компонентів, з якими ведеться робота. Співпраця з іншими командами. Взаємодія з hardware та software розробниками, участь в різних мітингах, обговореннях, комунікація з замовником тощо. Безпека та надійність. Забезпечення високого рівня безпеки, надійності та працездатності вбудованої системи. Типовий робочий день Embedded-розробника складається з усього потроху: написання та налагодження коду, пошук багів; робота з апаратною начинкою – інколи доводиться і паяльником почаклувати, і щось мультиметром виміряти, і осцилограф застосувати тощо; читання документації, пошук інформації на форумах; тестування вбудованих систем та їхніх складових; код-рев’ю; рефакторинг; взаємодія з командою, керівництвом: мітинги, ділова переписка, зідзвони з певних питань (або живе спілкування) і т. д. Сфери застосування Embedded-розробки Embedded у XXI столітті має гарний приріст затребуваності у зв’язку з розвитком ІТ-індустрії, в особливості – мережевих технологій, операційних систем, мов програмування та внаслідок модернізації “заліза”. Наразі сфера застосування вбудованих систем досить об’ємна: Побутова електроніка. Вбудовані системи є невід’ємними атрибутами затишного житла: це смарт-телевізори, холодильники, мультиварки та інша кухонна електроніка, пристрої безпеки, смарт-девайси для будинку. Машинобудівна промисловість. Embedded технології є ключовими для сучасних транспортних засобів, починаючи від цивільного автопрому і закінчуючи потужними будівельними гуліверами. Вони входять до складу двигунів, навігаційних систем, клімат-контролю, розважальних блоків тощо. Медицина. Сучасна медицина неможлива без комплексного цифрового обладнання, включаючи пристрої моніторингу пацієнтів, системи візуалізації, діагностичні інструменти тощо. Промислова автоматизація. Вбудовані системи використовуються в промислових системах керування, програмованих логічних контролерах (PLC) і робототехніці для автоматизації та керування процесами. Телекомунікації. Вбудовані системи – невід’ємна частина мережевого обладнання, маршрутизаторів, комутаторів і комунікаційних пристроїв для ефективної передачі даних. Аерокосмічна промисловість. Сучасна авіоніка використовує ембедед для керування функціями літака, системами навігації та зв’язку. Якщо хтось хоче тераформувати Марс – без Embedded-у буде дуже важко. Військова галузь. Вбудовані системи відіграють вирішальну роль у оборонних програмах як у мирний час (спостереження, аналіз, прогнозування, наведення тощо), так і під час війни (згадайте ті ж джавеліни, дрони, хаймарси, петріоти і т. д. – там дуже багато електроніки). Розумні мережі. Розвиток розумних мереж (smart grid) підвищує ефективність і надійність розподілу електроенергії. IoT (Інтернет речей). Пристрої IoT значною мірою залежать від вбудованих систем для збору, обробки та передачі даних для різних програм. Приклади: розумний будинок, автоматизовані системи поливу, розумні міста тощо. Що має знати Embedded-розробник В Embedded-і ціла палітра спеціальностей. Наприклад, приставки “Software”, “Firmware” вказують на фокус саме на створенні ПЗ, а "Hardware" та "Hardware Design" – на апаратній частині. Тайтл на кшталт "Embedded Systems Engineer" говорить про необхідність мати однаково гарні hardware та software знання. Також треба розуміти, що в різних компаніях один і той же тайтл може мати під капотом зовсім різні технології в залежності від апаратної начинки, різновиду вбудованої системи абощо. Наш опис необхідних технологій буде охоплювати і апаратне, і програмне крило вимог, що робить його ближчим до тайтлу "Embedded Systems Engineer". Якщо ви хочете більше в software, вивчайте глибше технології, спрямовані на розроблення софту; якщо ж у hardware – більше уваги приділяйте апаратним навичкам. Отже, ми проаналізували тематичні статті, думки популяризаторів ембедеду та вакансії українського ринку, і на виході отримали наступний технологічний стек Embedded девелопера. Математика, фізика, електроніка Найперше ембедед-розробники повинні гарно знати математику та фізику – особливо теми, пов’язані з електротехнічним напрямком, аби гарно розуміти принципи функціонування hardware: розбиратися в начинці плат, вміти  правильно розводити всі сигнали на платі, правильно рахувати всі доріжки, перекриття сигналів, їхню цілісність тощо. Ці знання важливі як під час розроблення, так і на моменті проєктування, тестування, комунікування з іншими колегами і не тільки. Які розділи потрібно знати: базова математика та обчислення; дискретна математика; електричні кола; основи електроніки; цифрова та аналогова мікросхемотехніка; цифрові та логічні схеми; комп’ютерна архітектура. Тестове обладнання Перераховане нижче обладнання ви будете широко використовувати для перевірки працездатності мікросхем, пошуку несправностей тощо. Вам знадобляться наступні інструменти: мультиметр; логічний аналізатор; осцилограф. Мультиметр є досить відомим приладом серед “електротехнарів” – ним вимірюють низку фізичних величин, як-от сила струму, опір, напруга та інші. Логічний аналізатор використовується для роботи з цифровими сигналами в електронних системах, а осцилограф – для візуалізації та дослідження електричних сигналів, а також відображення їхніх параметрів в режимі реального часу. Мікроконтролери Одні з головних об’єктів зацікавленості Embedded-розробників. Під них і пишеться код мовами C/C++ і не тільки. МК являє собою невеликий електронний пристрій з великою кількістю “ніжок”, якими відправляються/приймаються відповідні електричні сигнали. Що важливо знати з цієї теми: GPIO ADC DAC Таймери PWM Переривання Сторожовий таймер (watchdog) Керування тактовою системою (clock management) Кожна модель МК має свої особливості, з якими вам треба буде знайомитися через відповідну документацію. Також вам треба знати периферію обраного вами мікроконтролеру і бібліотеки для керування нею. Найпопулярнішим сімейством МК наразі є STM32. Досвід роботи з Arduino також вітається. RTOS Real Time OS – операційна система реального часу. Надає середовище виконання для програм, які мають строгий графік виконання завдань. Embedded-розробники використовують RTOS для обробки завдань з високою точністю і низькими затримками. Linux Якщо ви плануєте працювати з вбудованими пристроями на базі Linux (а їх зараз дуже багато), вам слід гарно знати і цю операційну систему. Вона має відкритий вихідний код і є безкоштовною. Говорячи про приклади проєктів, лінукс використовує велика кількість систем IoT, промисловий, мережевий, автомобільний, медичний Embedded тощо. Паяльник Так, в даній професії необхідно інколи й паяльником попрацювати. Якісь компоненти можуть потребувати пайки – десь щось вилучити/додати/замінити, поекспериментувати з макетом, зібрати проєкт тощо. Може виникнути будь-яка ситуація на “залізі”, і ембедед-фахівець має бути готовим до цього. Основи програмування Фундамент, який зробить ваш процес програмування продуктивним. Сюди віднесемо наступні теми: алгоритми та структури даних – ембедерам потрібні сильні знання з алгоритміки; шаблони проєктування – так, в ембедеді є свої патерни, які полегшують життя девелоперам, наприклад Opaque Pointer pattern; UML (діаграма стану, state machine) – для моделювання та аналізу поведінки системи. Програмування на C/C++ C/C++ – це потужні мастодонти у світі програмування. В порівнянні з іншими мовами є складнішими у вивченні, натомість дають можливість писати низькорівневий код з високим ступенем контролю “заліза”. Також C/C++ дозволяють напряму керувати пам’яттю (а це дуже важливо при роботі з hard-елементами, які мають досить обмежений ресурс), контролювати велику кількість low-level процесів, а також підходять для програмування широкого спектру “заліза”. Обов’язковий інструмент в скарбничці Embedded-девелопера – можна вивчити або C, або C++, або обидві мови. Інтерфейси та протоколи Обмін інформацією між Embedded-елементами та їхніми складовими здійснюється через спеціальні інтерфейси та протоколи: UART, I2C, SPI – базові, їх треба знати обов’язково; Ethernet, USB – для роботи на високих швидкостях; Bluetooth – дуже відома безпровідна технологія; TCP/IP, UDP – для роботи з мережею; CAN – система, яка використовується в транспортних засобах; Modbus – для роботи на промислових об’єктах. Git Git – система керування версіями проєкту, дуже популярний інструмент під час написання будь-якого коду, оскільки дозволяє відслідковувати зміни в коді, створювати гілки для роботи над різними функціями, ділитися своїм кодом з іншими колегами і навпаки тощо. Agile/Scrum Agile – це сімейство гнучких (agile) методологій розроблення ПЗ, яке сприяє випуску продукту порціями, крок за кроком розширюючи та покращуючи його. Як результат – команда здійснює розроблення відносно невеликими інтервалами, сам продукт постійно покращується, якість коду – підвищується. Познайомитися з Agile вам допоможе відповідний маніфест з детальним описом основних принципів. Scrum є однією з найпопулярніших реалізацій даного підходу, яка часто використовується в багатьох ІТ-командах, в тому числі і під час роботи з вбудованими пристроями. Англійська мова English на рівні вільного читання документації має бути у кожного Embedder-а, оскільки левова частка роботи припадає саме на вичитування матеріалів до тих чи інших мікроконтролерів та супутніх пристроїв. Якщо ж ви будете працювати в команді з іноземцями, то треба підтягнути ще й розмовну англійську. Як стати Embedded-розробником Де отримати знання Є декілька опцій для вивчення розробки вбудованих пристроїв: Можна вчитися самостійно за допомогою безкоштовних ресурсів у вільному доступі: YouTube, roadmap-и з посиланнями на GitHub-і, статті, тематичні форуми, безкоштовні курси та матеріали (MIT OpenCourseWare, embedded.com) тощо. На плати Arduino, паяльник, мультиметр і т. д., звісно, таки доведеться розщедритися. Проходження відео курсів (платно) на Udemy, Coursera, edX, Pluralsight та інших платформах, придбання спеціалізованих книг. Менторинг з боку діючого розробника – найефективніший спосіб навчання, оскільки у вас завжди буде допомога, наставництво, поради, чіткий напрямок руху та необхідні навчальні матеріали. Проходження онлайн/офлайн навчання при компаніях. Такий формат пропонують, наприклад, GlobalLogic, Ajax Systems тощо. Мінуси: потрібна певна база знань перед стартом навчання, а головний плюс – можливість стажування і повноцінного працевлаштування в компанії. Вища освіта в цій спеціальності не завадить, хоч і не є обов’язковою. Потрібну базу ви можете отримати у школі та вищих навчальних закладах на відповідних технічних спеціальностях – там же є і можливість потрапити на стажування, якщо кафедра таке практикує або має відповідні зв’язки з компаніями. Soft skills Вимоги до Embedded-розробників можуть різнитися в плані стеку, але що 100% знадобиться кожному, це наступні “м’які” навички: критичне, алгоритмічне, аналітичне мислення; навички problem-solving; комунікативність, вміння працювати в команді; організованість, зібраність, вміння ефективно розпоряджатися часом; самомотивація; увага до деталей; терпіння та адаптивність; пристрасть до Embedded; бажання постійно розвиватися та вдосконалюватися. Останні три пункти дуже важливі в професії, оскільки ембедед – це непроста галузь, і за 3-6 місяців “увійти в ІТ” не вийде. Потрібно більше зусиль, часу та витримки. Ключові тренди в Embedded ІТ-індустрія рухається вперед, і ембедед не відстає. Проаналізувавши низку ресурсів, ми визначили наступні тренди: Інтеграція штучного інтелекту та машинного навчання в Embedded-системах стає все більш привабливою, що сприяє використанню вбудованими системами інтелектуальних алгоритмів та ML. Ця синергія дозволяє системам адаптуватися до змін в реальному часі, підвищуючи їхню ефективність. Розвиток безпровідних технологій відкриває нові перспективи для вбудованих систем, особливо в областях Інтернету речей (IoT) та безпілотних систем, які керуються віддалено або за допомогою AI. System-on-chip рішення. Інтеграція всіх ключових компонентів системи на одному чіпі (SoC) продовжує набирати оберти та використовуватися різними бізнесами. Їхня компактність в сукупності з високою продуктивністю, дешевизною, енергоефективністю та інтегральними мікросхемами спеціального призначення (ASIC), наприклад, вже успішно застосовується в гаджетах, які збирають та аналізують різні параметри здоров’я. Більше уваги безпеці. Зростання кількості вбудованих систем, які мають вихід в Інтернет, призводить до збільшення кількості кіберзагроз, що підкреслює важливість удосконалення заходів безпеки для ембедед-пристроїв. Оптимізація споживання енергії embedded-системами стає актуальною – на це впливають ідеї сталого розвитку, що сприяє поширенню більш енергоефективних рішень. Розвиток AR та VR (доповнена та віртуальна реальності). Інтеграція вбудованих систем у AR та VR відкриває нові горизонти для інтерактивних інтерфейсів та розважальних застосунків. Embedded-розробники активно працюють над цими технологіями для створення вражаючого досвіду та візуальних ефектів. Окремо зазначимо і розвиток вбудованих пристроїв у військовій сфері. Наразі зростає попит на ембеддерів, які здатні працювати з дронами (повітряними та морськими), БПЛА тощо. Сьогодні саме ці роботизовані системи дозволяють ефективно виявляти та ліквідовувати ворога, здійснювати розвідку, наводити та корегувати вогонь і – що найважливіше – берегти життя та здоров’я особового складу. Сьогодні це один з трендових напрямків конкретно в нашій державі. Кар’єрні можливості в ІТ та заробітна плата Embedded Engineer Кількість вакансій Для визначення цього параметру використаємо дані з найвідоміших українських ресурсів для пошуку роботи в ІТ – DOU та Djinni – і порівняємо результати з найпопулярнішими спеціальностями. Почнемо з DOU: Embedded – 44 вакансії; QA – 167; FrontEnd – 160; DevOps – 158; PHP – 140; Python – 138; Java – 108; .NET – 104; Node.js – 101. На Djinni пошук роботи кандидатами здійснюється анонімно. Кількість вакансій наступна: C / C++ / Embedded – 170 вакансій; JavaScript / FrontEnd – 354; PHP – 295; DevOps – 273; Python – 208; Node.js – 191; C#/.NET – 166; Java – 161; QA Automation – 139; QA Manual – 128. Конкуренція Для визначення конкуренції ембедерів на нашому ринку ІТ скористаємося співвідношенням кількості відгуків до кількості вакансій на DOU за листопад 2023 року (беремо найбільш відомі спеціальності). Ось що маємо: Конкуренція у ембеддерів (від новачків до професіоналів) дуже низька: на 1 вакансію припадає приблизно 5 претендентів, що є дуже гарним результатом під час нинішньої ситуації на ринку ІТ. Справжні “голодні ігри” традиційно у QA та FrontEnd: за 1 вакансією полюють в середньому 120.9 та 100.5 кандидатів відповідно. Відповідно до ринкової статистики Djinni, для новачків конкуренція посилюється: Зазначимо, що тут демонструється кількість кандидатів на вакансію, котрі зараз перебувають в “онлайні”. На Джині так позначаються ті кандидати, які знаходяться в активному пошуку роботи. Бачимо, що в категорії “C / C++ / Embedded” без досвіду 27.75 шукачів на вакансію (окремої категорії для Embedded немає). Багатенько, але подивіться на аналогічну ситуацію в більш популярних напрямках: JavaScript / FrontEnd – 426.55 C#/.NET – 200.5 Python – 185.6 Manual QA – 132.83 Node.js – 98 DevOps та FullStack – 83.5 Заробітна плата Спершу розглянемо зарплатну статистику на Djinni для “C / C++ / Embedded” (за останні 6 місяців). Картина наступна: Зарплатні вилки досить високі – 2300-4700 USD. При цьому зарплатні очікування кандидатів скромніші – від 700 USD до 4500 USD. А скільки отримують Embedded за межами України? Звернімося до аналітики Stack Overflow Developer Survey 2023 (більше 90 000 респондентів із США, Індії, Німеччини, Сполученого Королівства, Канади тощо). Деякі несуттєві для нашої статті спеціальності були прибрані з діаграми задля більшої компактності зображення. Отже, медіанна зарплата Embedded-спеціалістів з різних країн складає 77 104 USD на рік, а це приблизно 6425 USD на місяць. Що цікаво, розробники вебу (FrontEnd, BackEnd, FullStack), ігор, мобільних та десктопних застосунків отримують меншу ЗП, хоча ці спеціальності більш поширені, а веб взагалі є найпопулярнішим в ІТ.  Вищу винагороду отримують ті, хто спеціалізується на базах даних, DevOps-процесах, великих даних, апаратній частині, блокчейні, безпеці тощо. Кар’єрні перспективи Embedded розробник – поняття досить розмите і обширне, оскільки фахівець цієї спеціалізації може працювати над: створенням робототехнічних систем; медичною апаратурою; автомобільними системами; аерокосмічними апаратами; IoT-екосистемою; AR та VR індустрією; мережевими системами; гаджетами для цивільних потреб; безпекою embedded-пристроїв; промисловими системами; військовими розробками; тощо. В кожній із цих сфер будуть свої технологічні стеки, мікроконтролери, плати, інтерфейси, протоколи і т. д. Ще не забувайте про ембедерський “фронтенд”, “бекенд” і “фулстек” – в кожній галузі ви можете концентруватися більше на програмній частині, апаратній, або ж на обох одразу. Звісно, кожен напрямок може мати власну “кухню”, і щоб “скуштувати страву” в кожному із цих “ресторанів” цілого життя може не вистачити, але погодьтеся – список для самореалізації скромним не назвати. Також ви можете в будь-який момент заглибитися в Software розробку і займатися написанням програмного коду (найпопулярніші стеки в Embedded-і – C/C++, Java, Python, Go), а можете піти у Hardware і більше уваги приділяти “залізу”. Якщо трохи підкачати знання, то можна перекваліфікуватися і в тестувальники, і в спеціаліста з безпеки, мережевого спеціаліста тощо. Можливості дуже широкі та дуже різноманітні. Якщо ж говорити про вертикальний потенціал професії, розробник вбудованих систем стартує зі стандартної Intern/Trainee/Junior позиції. Далі – зі збільшенням досвіду, навичок та знань – отримує підвищення до Middle та Senior, а вище – керівні позиції на кшталт Team/Tech Lead, архітектор і т. д. Висновки Embedded – дуже цікава, незвична та багатогранна ІТ спеціалізація. Вона дозволяє відчути себе Архітектором, котрий вдихає життя в пристрої, дає їм все необхідне для їхнього руху, думок, аналізу навколишнього середовища, спілкування один з одним тощо. Так, для цього потрібно мати багато знань, але хто сказав, що бути Творцем – це так просто?) Цей напрямок дає дуже важливий фундамент для інших ІТ-галузей, які сьогодні в зеніті популярності. Завдяки вбудованим системам ми можемо насолоджуватися безліччю автоматизованих процесів, починаючи ранковою свіжомеленою кавою та оглядом нашого сну у health-трекері, і закінчуючи автомобільною та медичною апаратурою. Ембедед створений для справжніх любителів “заліза” та його програмування. При цьому він має багато нішевих розгалужень і щороку зростаючий попит. Сьогодні в Україні розробники вбудованих пристроїв мають великі можливості для реалізації, а в решті світу – тим більше. Професія непроста, але вона щедро винагороджує сміливих, терплячих та цілеспрямованих, котрі не бояться складнощів та перешкод і готові на все, аби досягнути бажаного. Бажаємо успіхів та натхнення всім, хто прагне розвиватися в напрямку Embedded!
Svitla Ruby Conference-2016

Автор: Редакция ITVDN

Svitla Ruby Conference (aka RubyC) — самая большая украинская конференция, посвященная Ruby, Ruby on Rails и сопутствующим технологиям. В этом году организатор, компания Svitla Systems, приглашает Ruby разработчиков собраться в Киеве 4 и 5 июня и провести первый летний уикенд в компании самых ярких Ruby-экспертов!   Полная информация обо всех спикерах и расписание их выступлений уже на сайте. В рамках конференции выступят 13 спикеров из Украины и Европы, и в отличие от прошлых лет, все доклады будут озвучены на английском языке. Кроме того в начале второго дня, будет организована открытая сессия вопросов-ответов, Open Talk, чтобы все успели задать вопросы спикерам, и обсудить последние новости. Итак, полный состав спикеров RubyC-2016! Aaron Cruz (Австрия) — “Ruby Alternatives” Adam Niedzielski (Польша) — “Responsible gem collector” Bozhidar Batsov (Болгария) — “The Master Rubyist” Yorick Peterse (Нидерланды) — “Making GitLab Faster” Robert Pankowezki (Польша) — “The Saga Pattern” Andy Pike (Великобритания) — “Building maintainable Rails apps for the long term” Ben Lovell (Великобритания) — “FOSS like a BOSS!” Andrey Savchenko (Украина) — “KISS me gently” Michael Serdyuk (Украина) — “For whom is the code written or why every programmer has to be a designer” Elena Morgun (Украина) — “Service oriented vs Microservice architecture” Мichael Bortnik (Украина) — “Ruby in unusual environments” Alex Simonov (Украина) — “Technology mess” Dmitriy Zimin (Украина) — “How I build stand-alone Cucumber Rocket for testing none Rails application” Как всегда всех участников ждут вкусные кофе-брейки от отеля «Русь», подарки от наших спонсоров DataArt, Global Logic и N-iX, сюрпризы от организаторов и много вкусного пива на вечеринке в конце первого дня! Организаторы напоминают: билеты продаются только на сайте конференции, и их количество ограничено! Следите за нашими новостями на Twitter или Facebook. Ждем вас на RubyC-2016!
Notification success