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

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

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

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

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

Результати пошуку за запитом: принцип открытости*...2...
Застосування мультикласів у CSS

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

Введение в мультиклассы. В данной статье мы познакомимся с так называемыми сложными селекторами, особенностями их применения. Для более простого восприятия материала рекомендуем просмотреть пятый видео урок из курса HTML & CSS. Для начала вспомним, что таблицы стилей собираются из наборов правил, которые содержат один или несколько селекторов и конечно же содержат блок определений. Блок определений ограничен фигурными скобками и содержит в себе перечень свойств и выбранных для них значений. Селектором может быть любой элемент или HTML-тег, для которого возможно задание неких правил форматирования. Принцип определения селекторов довольно простой и имеет следующий синтаксис: Name {Style_rules}. Здесь Name – это имя любого элемента на вашей странице, а Style_rules – описание правил стиля, которые вы собираетесь применить к элементу. Отдельно обратим ваше внимание на универсальный селектор, который используют, когда требуется установить стиль абсолютно для всех элементов, присутствующих в веб-документе. Он имеет следующий синтаксис: <head>     <title>CSS title>     <style> /*Используем универсальный селектор, который обозначается "*" */         * {         color:forestgreen;         }    style> head> <body>     Text1     <p>Text2p>     <div>Text3div>     <br />     <span>Text4span> body> В случае, когда необходимо одновременно задать один стиль для двух и более элементов, их перечисляют через запятую:  <head>     <title>CSStitle>     <style>         /*Используем перечисление селекторов p, div */         p, div {         color:forestgreen;         }     style> head> <body>     Text1     <p>Text2p>     <div>Text3div>     <br />     <span>Text4span> body> В случае, когда необходимо задать уникальное имя для элемента и по нему изменить его стили или обратиться через JavaScript, целесообразно использовать идентификатор, изредка называемый «ID селектором». Поскольку при создании html-документа невозможно отказаться от определенной иерархии вложенности, важно задуматься о том, чтобы стили для вложенных элементов применялись корректно. Целесообразно воспользоваться конструкцией из вложенных селекторов. В самом простом случае получим следующую конструкцию: name1 name2 {Style_rules}, где name1 – родительский элемент, name2 – дочерний (вложенный) тег. При этом подразумевается следующая разметка <name1><name2>...name2>name1>. <head>     <title>CSStitle>     <style>         div p {             background-color: darkgrey;             color: red;             font-size: 20px;         }     style> head> <body>     <p>Параграф 1 p>     <div>         <p>Параграф 2 p>     div> body> Стоит помнить, что стили, предопределенные для тега div, также возымели бы свое действие на содержимое тега p, также допускается произвольный уровень вложенности тегов. Данная конструкция имеет следующий синтаксис: #Name { Style rules }. Стоит помнить, что имена идентификаторов должны быть уникальными, дабы не вызывать коллизий при обращениях, начинаться с латинских символов, в них разрешено включать символы дефиса и нижнего подчеркивания «-», «_». Когда необходимо применить стили из идентификатора определенному тегу, используется атрибут id, которому передается значение – имя идентификатора без решетки. <head>     <title>CSStitle>     <style>         #id1 {             background-color: #ffd800;             color: #ff0000;             font-size: 40px;         }     style> head> <body>     <p id="id1">Параграф 2 p> body> Порой при определении идентификатора используется конструкция name#id_name {Style rules}, где name может обозначать любой тег. Подобная конструкция ограничивает возможность применения стилей, определенных в идентификаторе только к тегам, одноименным указанному в определении. Что касается применения классов, они актуальны  тогда, когда необходимо задать правила форматирования для определенного селектора или же для нескольких элементов. Существуют следующие варианты использования классов: .class_name {Style rules} Класс, определенный таким образом, можно связать с любым тегом, достаточно воспользоваться атрибутом class и передать в его значении имя нашего класса. Name.class_name {Style rules} Таким образом накладываются ограничения на применение правил из класса лишь в одноименных тегах Name. <head>     <title>CSStitle>     <style>         .myFirstClass {             background-color: darkcyan;             color: darkgreen;             font-size: 40px;         }         div.mySecondClass {             background-color: darkcyan;             color: darkgreen;             font-size: 20px;         }     style> head> <body>     <p class="myFirstClass">Параграф 1 p>     <p class="mySecondClass">Параграф 1p>     <div class="mySecondClass">Параграф 1 div> body> Работая с классами, стоит помнить о том, что любому элементу можно добавить сразу несколько классов, просто перечисляя их в атрибуте class без каких-либо знаков пунктуации, через пробел. При этом к текущему элементу будут применятся стили, описанные в каждом из классов в блоке правил.  <head>     <title>CSStitle>     <style>         .myFirstClass {             background-color: darkcyan;         }         .mySecondClass {             color: darkgreen;             font-size: 20px;         }     style> head> <body>     <p class="myFirstClass mySecondClass">Параграф 1 p> body> Прибегая к мультиклассам, стоит помнить об особенности их работы с повторяющимися правилами, т.е. одноименными свойствами, которые описаны в разных классах и имеют различные значения. Укажем несколько одинаковых свойств с разными значениями и посмотрим, какие из них будут применены к элементу: <style>         .myFirstClass {             background-color: darkcyan;             color: darkgreen;             font-size: 40px;         }         .mySecondClass {             background-color: darkgrey;             color: red;             font-size: 20px;         } style> Как видим, значения спорных свойств были взяты из того класса, который был описан в коде ниже. Если сменим их очередность, получим следующий результат: <style>         .mySecondClass {             background-color: darkgrey;             color: red;             font-size: 20px;         }         .myFirstClass {             background-color: darkcyan;             color: darkgreen;             font-size: 40px;         }     --style> Что касается порядка обьявления используемых классов в атрибуте class непосредвенно в самом теге, он не имеет значения: <p class="myFirstClass mySecondClass">Параграф 1p> <p class="mySecondClass myFirstClass">Параграф 1p> Эти две строки возымеют одинаковое воздействие на форматирование параграфа.
Що має знати C# .NET розробник у 2023 році

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

Мова програмування C# ООП Алгоритми та структури даних Шаблони проєктування Бази даних SQL Entity Framework Core LINQ ASP.NET ASP.NET Core Git Основи FrontEnd Англійська мова Підсумки На сьогоднішній день .NET програміст може застосовувати свої навички у різних сферах розроблення програмних продуктів: створення веб-застосунків та веб-сервісів; створення настільних додатків; створення хмарних сервісів; створення ігор; створення мобільних застосунків. Коли говорять про .NET розробників, мають на увазі програмістів, які пишуть мовою C#. Ця мова програмування, як і вся платформа .NET, була створена, розвивається та підтримується компанією Microsoft, котра стабільно вже кілька десятиліть входить до ТОП-10 компаній – світових лідерів ринку інформаційних технологій. Усі продукти компанії Microsoft створено на платформі .NET. Які ж технології необхідно вивчити, щоб стати .NET програмістом? Оскільки левова частка .NET-вакансій припадає саме на веб-сегмент, дана стаття буде охоплювати як фундамент, яким зобов’язані володіти усі розробники цієї платформи, так і основні технології серверної сторони веб-девелопменту. Мова програмування C# (“сі шарп”) Будь-який .NET розробник не може називатися і бути таким, якщо він не вміє гарно програмувати мовою C#. Це універсальна об'єктно-орієнтована мова, яка є потужним інструментом створення програмного забезпечення з широкою сферою застосування. При такій високій функціональності вона досить нескладна у вивченні і відмінно підійде тим, хто збирається зробити перший крок назустріч програмуванню. Завдяки широкому спектру застосування С# є дуже затребуваною мовою. Різні ресурси з пошуку роботи пропонують велику кількість вакансій, причому як на великі проєкти з чітко визначеним консервативним стеком технологій, так і в компанії, які створюють новий програмний продукт із застосуванням найсучасніших інструментів. Компанія Microsoft активно розвиває своє дітище – .NET напрямок, тому C# завжди актуальна, йде розширення функціоналу, додаються нові можливості. Тенденція останніх років - кросплатформність, що реалізується в .NET Core. Безліч навчальних матеріалів, якісна офіційна документація, відео курси та освітні вебінари, дружнє ком’юніті – все це створює максимально комфортні умови для грамотного поетапного вивчення даної мови. ООП Об'єктно-орієнтоване програмування - це методологія розробки програмного забезпечення, в основі якої лежать чотири головні принципи: абстракція, інкапсуляція, наслідування та поліморфізм. Оскільки C# є об'єктно-орієнтованою мовою, необхідність вивчення та повного розуміння ООП парадигм є обов'язковою. Однак, є і приємна новина: всі принципи швидко та легко засвоюються під час вивчення C#. Алгоритми та структури даних Розуміння алгоритмів та структур даних – також обов'язкові знання для будь-якого програміста. Вивчивши структури даних, ви зможете управляти складністю своїх програм, роблячи їх більш доступними для розуміння, а також розробляти високопродуктивні програми, які ефективно працюватимуть з пам'яттю. Знання алгоритмів дозволить вам створювати складні конструкції для ефективного розв'язання широкого спектру завдань. Шаблони проєктування Патерни (вони ж шаблони) являють собою архітектурні конструкції, які описують типові способи вирішення поширених завдань, що виникають у ході проєктування програмного забезпечення. Усього існує понад два десятки шаблонів, проте знати їх усі - це обов'язок архітектора, а не .NET розробника. Зазвичай в одному проєкті використовується невелика кількість патернів, тому вам достатньо пам’ятати лише найпопулярніші з них. Бази даних Кожний додаток оперує даними – від інтернет-магазинів та банківських систем до корпоративних застосунків і соціальних мереж. Реєстрація, авторизація та автентифікація користувача, прийом, зміна та відправлення даних на сервер або навіть просте збереження конфігурації застосунку – все це є даними, які потребують окремого місця для їх збереження. Цим сховищем слугують бази даних (БД), що являють собою організовану структуру для прийому, зберігання та оброблення даних різного формату – від ПІБ та номерів телефону до зображень і відео контенту. Саме тому знання БД є дуже важливими в тому числі і для .NET розробників. Необхідно володіти базовою теорією з БД: основні терміни, реляційні та нереляційні бази даних (ви працюватимете саме з реляційними – такими, які мають реляційну структуру), нормалізація, відношення one-to-one, one-to-many та many-to-many, пошук і впорядкування інформації, робота з таблицями тощо. SQL Structured Query Language – декларативна мова структурованих запитів, яка створена для взаємодії з базами даних. Особливість SQL полягає в тому, що вона лише описує необхідні компоненти та бажані результати, не вказуючи, як саме ці результати мають бути отримані. Вивчення мови запитів дуже тісно пов’язане з вивченням теорії баз даних, тому заглиблюючись в БД ви неодмінно почнете практикуватися та набивати руку і з SQL. Entity Framework Core Entity Framework – спеціальна об'єктно-орієнтована технологія на базі фреймворку .NET, яка дозволяє розробникам отримувати доступ до даних, використовуючи концептуальну об'єктну модель, а не безпосередньо реляційну базу даних. Це дає можливість абстрагуватися від самої БД і працювати з даними на більш високому рівні абстракції, який є зрозумілішим та зручнішим для людини. Завдяки такому підходу зменшується кількість коду, необхідного для отримання доступу до бази, зростає продуктивність та зменшується час на підтримку об'єктів у застосунках, що працюють з даними. У двох словах, ця технологія дозволяє програмісту абстрагуватися від самої бази даних та працювати з даними незалежно від типу сховища. LINQ Language Integrated Query (мова інтегрованих запитів) – це проста та зручна .NET-технологія доступу до даних. Особливість даної мови запитів: можливість застосування до всіх джерел даних (XML-документи, XML-потоки, набори даних ADO.NET, бази даних SQL, масиви та колекції .NET тощо) одного й того ж самого підходу вибірки даних. ASP.NET Active Server Pages для .NET - платформа, що використовує середовище виконання .NET Framework та надає необхідні служби для створення серверних веб-застосунків та веб-сервісів. Є розвитком більш ранньої технології Microsoft ASP. ASP.NET базується на середовищі виконання Common Language Runtime (CLR), яке є основою всіх застосунків Microsoft .NET. Також дана платформа має перевагу у швидкості порівняно зі скриптовими технологіями. ASP.NET MVC є розширенням ASP.NET і представляє собою платформу для створення веб-сервісів за допомогою патерну MVC. Даний шаблон передбачає поділ застосунку на три компоненти: Модель, Представлення, Контролер, завдяки чому реалізується концепція поділу і закріплення відповідальності за кожним компонентом, що спрощує розробку проєктів. ASP.NET Core Фреймворк від компанії Microsoft, який використовує середовище виконання .NET Core, призначений для розроблення якісних сучасних веб-застосунків і є продовженням розвитку платформи ASP.NET. Однак це не просто оновлена ​​технологія. Вихід ASP.NET Core фактично позначив якісну зміну усієї платформи. Остання версія 7.0 була випущена нещодавно – навесні 2022 року. Головні особливості ASP.NET Core: наявність відкритого вихідного коду на GitHub; кросплатформність; модульність; розширюваність; можливість застосування хмарних технологій. Докладнішу інформацію про всі нововведення можна знайти на офіційному сайті Microsoft. Таким чином, платформа .NET Core істотно розширила сфери застосування технології ASP.NET і надала розробникам велику кількість можливостей щодо створення програмного продукту. Git Найбільш популярна система контролю версій, яка дозволяє вести історію розроблення проєкту з можливістю доступу до кожної збереженої версії. Дані системи дозволяють команді програмістів працювати над одним проєктом одночасно, зберігаючи внесені зміни, а також відслідковувати виконання завдань кожним членом групи. Не у всіх вакансіях можна зустріти серед вимог володіння системою контролю версій, проте знання Git або її аналогів дасть вам додаткову перевагу перед рештою кандидатів. Основи FrontEnd У великій кількості вакансій роботодавці очікують, що .NET розробник серверної частини також має бути знайомий і з фронтенд-технологіями, які використовуються на клієнтській стороні під час створення веб-застосунків: HTML & CSS – мови верстання веб-сайтів та веб-сервісів. HTML служить каркасом, який визначає основну архітектуру зовнішнього вигляду, а CSS – каскадні таблиці стилів, котрі допомагають збагатити зовнішній вигляд застосунку. Дуже легкі мови верстання, які вивчаються швидко та без проблем. Основи JavaScript (JS) – це мова програмування, якою створюється програмна логіка клієнтської сторони веб-застосунків, а також різні анімації. JavaScript є однією з найлегших мов програмування, тому якщо ви гарно знатимете C#, розібратися в JS для вас буде дуже швидкою справою. Основи Angular або React. React – фронтенд-бібліотека, яка має відносно невисокий поріг входження і користується великою популярністю завдяки своїй універсальності, в той час як Angular – потужний фреймворк, який є більш складним, але при цьому краще себе проявляє у масивних масштабованих проєктах. Знання FrontEnd-стеку не в усіх вакансіях є обов’язковим, але в багатьох вони відзначені. Відповідно, володіння основами цих інструментів дає великий бонус під час розгляду резюме або на співбесіді. Англійська мова Традиційна вимога для кожного розробника в ІТ. Знання мови на рівні читання технічної документації та коментування коду цілком достатньо. Але чим вищий рівень англійської у вас буде, тим більше шансів отримати job-офер, оскільки англійська може використовуватися як для комунікації з іншими членами команди, так і для взаємодії із замовником. Підведемо підсумки У статті були перераховані основні технології, які повинен знати кожен .NET-програміст. Оскільки веб-розроблення нині є дуже популярним та затребуваним, ми також додали до списку .NET засоби, які використовуються під час створення відповідних серверних веб-рішень. Однак серед усіх пунктів найбільш важливим є знання мови С# - кожен "дотнетчик" зобов'язаний нею володіти на високому рівні. У свою чергу, перелік можна доповнити такими технологіями, як TDD (розробка через тестування), WCF, Unit тестування, рефакторинг додатків. Їхнє знання не є обов'язковим для джуніорів, проте вигідно виділяє вас серед інших кандидатів і показує, що ви приділяєте особливу увагу чистоті, охайності та читабельності коду. Також ви можете ознайомитись зі списком усіх необхідних для вивчення технологій на сторінці спеціальності .NET Developer. Комплексна програма навчання складається із 55 відео курсів загальною тривалістю понад 410 годин. Перейшовши на сторінку, ви знайдете багато корисної інформації як для новачка, так і для розробника, який бажає поглибити та доповнити свої знання. Якщо вас більше цікавить живе онлайн навчання в групі з ментором та іншими студентами, рекомендуємо звернути увагу на формат Live Online навчання. Регулярні заняття в Zoom, виконання і перевірка д/з, розроблення курсових проєктів, спілкування та підтримка в телеграм-групі з ментором та одногрупниками – це та багато іншого сприяє максимально якісному та швидкому опануванню спеціальності .NET Developer на ITVDN. Корисні ресурси для вивчення C# та .NET ви знайдете у нашому вебінарі «Огляд корисних ресурсів для вивчення C# та .NET з нуля». ITVDN бажає вам досягнення ваших цілей та готовий бути надійним помічником у питаннях вивчення програмування.   Залишайтеся з ITVDN!
ТОП-10 найкращих відео з Java від ITVDN

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

Вітаємо, друзі!   Сьогодні на вас чекає підбірка класних, наповнених корисним контентом відео від ITVDN за напрямком Java. Топ насичений як теоретичними відеоматеріалами, які допомагають побудувати ефективне навчання, так і практичними вебінарами, орієнтованими на прокачування навичок програмування за допомогою джави та супутніх технологій (фреймворк Spring, Elasticsearch). Отже, які відео увійшли до цього рейтингу?     Карта спеціальності Java розробник   Автор – Андрій Бондаренко, Android Developer & Trainer, Samsung R&D Institute, Ukraine   Java – це популярна об'єктно-орієнтована мова програмування, якою написані програми для більш ніж 3-х мільярдів пристроїв по всій планеті. Сфера її застосування практично безмежна, а ті, хто добре володіють Java, мають великі можливості та завжди будуть забезпечені цікавими завданнями та високооплачуваною роботою.   На вебінарі ви отримаєте відповіді на всі питання, пов'язані з навчанням, набуттям досвіду, розстановкою пріоритетів у виборі технологій та навчальних матеріалів, а також кар'єрою програміста Java-напрямку.   Програма зустрічі:   Хто такий Java розробник? Актуальність спеціальності та затребуваність на IT-ринку. Як стати Java розробником: попередні вимоги; картка спеціальності; огляд обов'язкових та факультативних технологій.         Де та як вивчити мову програмування Java. Як отримати перший практичний досвід Стажування та перша робота - можливості і перспективи. Питання та відповіді.     Створення базового Spring Boot веб-сервісу на Java   Автор – В'ячеслав Аксьонов, Java/Kotlin Software Engineer   Spring Boot – це найпопулярніший фреймворк для розроблення веб-додатків на Java. У вебінарі буде розглянуто, як влаштовані додатки, котрі створені з використанням Spring Boot, на прикладі найпростішого stateless веб-сервісу. Також автор розгляне http взаємодії з використанням REST, побудову масштабованої архітектури бізнес-логіки, взаємодію з базами даних через найбільш популярні та прості прийоми.   План вебінару:   Що таке Spring/Spring Boot та Dependency Injection. Контекст та як його створювати. @Service/@Component/@Repository/@Controller – що все це таке і навіщо потрібно. Створюємо шаблон проєкту Spring Boot. Пишемо веб-сервіс із нуля. Розглядаємо найбільш простий та зручний спосіб роботи з базою даних. Перевіряємо працездатність та відповідаємо на запитання.     3. Як стати Java розробником у 2021?   Автор – Максим Федосов, Java Developer   З цього вебінару ви дізнаєтеся, як почати свій шлях у якості Java розробника – від новачка без досвіду в програмуванні до рівня фахівця, затребуваного на ринку.   У вебінарі будуть розглянуті дві сторони:   Що вчити: автор поділиться своїм баченням того, що потрібно вивчати насамперед як базу, що потрібно опановувати на етапі пошуку першої роботи, і що потрібно підтягнути, коли спеціаліст вже працює (на прикладі Java стеку). Як шукати роботу: з боку побудови кар'єри йтиметься про те, які шляхи можна обрати для побудови кар'єри, про ринок з точки зору роботодавця, курсів, шукачів. Який проєкт краще обрати, як часто змінювати роботу, як розвивати свою кар'єру.   Весь вебінар буде розділено на 2 частини – до першої роботи та під час роботи. В результаті у фахівців-початківців з'явиться конкретний план дій для того, щоб розпочати кар'єру, а у працюючих фахівців — розуміння того, як рости далі.   План вебінару:   Знайомство, трохи про себе та свій шлях у IT-сфері. Що потрібно вчити розробнику-початківцю Java. Напрацювання практики програмування. Портфоліо. Підготовка до пошуку роботи та подальша кар'єра.     4. Elasticsearch - пишемо свій пошуковик на Java   Автор – Федір Яременко, Senior Java Developer   На вебінарі буде розглянуто, як на Java реалізувати повнотекстовий пошук на об'ємному масиві документів з мінімальними затримками за допомогою Elasticsearch.   План вебінару:   Про повнотекстовий пошук та індексацію Огляд Elasticsearch Налаштування проєкту Додавання індексів Пошук за індексом Пошук за кількома полями Пошук у знайденому Агрегація результатів пошуку Пошук запитів з помилками Інші корисні опції пошуку Ранжування результатів Налаштування форматування результатів Пагінація Налаштування індексів для російської та української мов Асинхронні виклики Масштабування за допомогою кластера Візуалізація даних за допомогою Kibana Висновок       5. Створення 2D гри Танчики з Денді на Java з нуля   Автор – Андрій Бондаренко, Android Developer & Trainer, Samsung R&D Institute, Ukraine   Дане відео є захоплюючим онлайн тренінгом із написання графічної гри "Танки", який допоможе легко і швидко познайомитися з практичною стороною розроблення на Java. Нуль теорії – лише практика.   Кому це буде корисно:   Новачкам. Відсутність досвіду у програмуванні не повинна вас зупиняти. Ми даємо вам шанс зробити свою першу програму на Java та отримати досвід практичного застосування цієї мови програмування у створенні справжньої комп'ютерної гри. Розробникам-початківцям Java без досвіду. Ви зможете поглибити і застосувати на практиці знання мови Java під керівництвом тренера.   Чого ви навчитеся:   Писати прості програми та підпрограми з використанням мови Java Працювати з масивами даних Використовувати типи даних та класи Java Застосовувати всі базові навички (змінні, умовні конструкції, цикли, методи) на практиці   Програма тренінгу:   Створення карти поля бою. Робота над пересуванням танка Реалізація стрільби. Навчання танка рухатися у вказаний квадрант. Додавання танка-ворога. Підсумок: танк проходить все поле бою та чистить його. Відповіді на питання. Куди розвиватись далі?     6. Spring для початківців. Огляд можливостей та переваг. Початок роботи зі Spring   Автор – Дзюба Роман, Java Developer   Spring – це один з найбільш популярних та універсальних фреймворків для створення веб-додатків для бізнесу. Він дає Java-розробникам більшу свободу в проєктуванні програм, надаючи засоби вирішення проблем корпоративного масштабу. Spring має велику документацію і досить простий у використанні.   Дане відео є першим відеоуроком з відео курсу “Spring”, який знайомить з однойменним фреймворком.   На самому курсі розглядаються різні способи використання модулів Spring, написання REST додатків, використання MVC моделей та інші теми.   Проходження курсу за даним фреймворком буде корисним як тим, хто тільки познайомився з мовою Java і шукає, що вчити далі, так і тим, хто вже має певні знання і хоче освіжити в пам'яті навички використання SpringCore, SpringWeb, SpringSecurity.   Головні теми цього відео:   Ознайомлення із базовими принципами фреймворку. Переваги Spring, знайомство з основними принципами ООП та поняттям POJO. Області видимості Java Bean.     7. Створення гри Морський Бій на Java з нуля. (Частина 1, Частина 2)   Автор – Антон Кашніков, Java Developer, тренер-консультант CyberBionic Systematics   Відео у форматі онлайн тренінгу з написання консольної гри "Морський бій". З його допомогою ви швидко познайомитеся з Java, відразу ж розпочавши розроблення. Як результат – ви випробуєте джаву у справі, відчуєте її потужність, а також отримаєте на виході власноруч зроблену гру, яка після доопрацювання може стати чудовим проєктом у вашому майбутньому резюме Java розробника.   Програма тренінгу:   Частина 1   Знайомство із засобом розроблення IntelliJ IDEA та мовою програмування Java. Розбивання проєкту на підзавдання. Робота з масивами під час створення поля бою. Створення перших об'єктів. Використання об'єктів з масивами.   Частина 2   Тонкості роботи з консоллю при відображенні ігрових об'єктів. Продумування логіки гри. Створення геймплею. Оброблення винятків. Розбір помилок. Підбиття підсумків.     Що потрібно знати Java розробнику? ➤ Як вивчити Java?   Автор – Дмитро Саєвський, Java Developer   На цьому вебінарі ви дізнаєтеся, чим займається джавіст, які типи розроблення Java найбільш затребувані. Також автор розгляне весь шлях Java розробника з моменту вибору цієї спеціальності до рівня Senior.   План вебінару:   Типи розроблення Java. Якими вміннями повинен володіти Java розробник. Особливості Java. Історія версій Java. З чого розпочати навчання та скільки потрібно вчитися? Складання плану навчання. Кар'єрний шлях розробника. Рекомендовані посилання. Рекомендована література.     9. Підготовка до співбесіди з позицією Junior Java Developer   Авторка – Вікторія Силенко, Java розробниця desktop та web додатків.   Незважаючи на дату випуску даного вебінару, він досі залишається актуальним для тих, хто вирішив пов'язати свою кар'єру з розробленням Java і при цьому прагне з успіхом пройти співбесіду на позицію Junior Java Developer.   На цьому вебінарі ви дізнаєтесь, як правильно складати резюме, які популярні питання на співбесіді (+ відповіді), теми під час перевірки рівня англійської мови, як добре зарекомендувати себе у перші місяці роботи.     10. Створення багатопотокового клієнт-серверного додатку на Java   Автор – Євген Волосатов, професійний програміст, викладач мови Java у коледжі, автор відео курсів з мов C#, Java, PHP; має більше 20 років досвіду у якості провідного програміста в різних фірмах, має значний викладацький досвід; 6 років досвіду у проведенні вебінарів та створенні відео курсів   Євген Волосатов – справжній метр в області алгоритмів і структур даних на C#, Java, PHP — в даному вебінарі демонструє, як необхідно створювати багатопоточний клієнт-серверний додаток мовою Java.   На цьому вебінарі на вас чекає практика, котра зачіпає сокети та потоки. За допомогою Java буде написано невелику клієнт-серверну програму на сокетах. Для цього автор створить дві різні програми, які запускаються на різних комп'ютерах, але при цьому працюють спільно, надсилаючи одна одній дані.   Для зв'язку програм одна з одною буде створено універсальний клас Phone – він використовуватиметься як на сервері, так і на клієнті в JAR файлі. Наприкінці вебінару автор додасть багатопоточність до серверної частини, щоб сервер міг обробляти кілька клієнтів одночасно.   План вебінару:   Найпростіший сервер – Автовідповідач. Найпростіший клієнт – Вміти читати. Клієнт-серверний діалог. Універсальний сокет – Телефон. Серверна багатопоточність.   Для успішного засвоєння матеріалу необхідні базові навички роботи з Java у середовищі IntelliJ IDEA.   Вивчайте Java розроблення на ITVDN!
Як правильно працювати з REST API

Автор: Zell Liew

Коротко про мене Мене звати Зел, я розробник-фрілансер із Сінгапуру. У вільний від роботи час я люблю розбиратися в коді і принагідно публікувати у своєму блозі ті цікавості, які я виявив чи вивчив. Вступ Швидше за все вам уже доводилося чути про такий термін, як REST API, особливо якщо ви стикалися з необхідністю отримання даних з іншого джерела (такого як Twitter або GitHub). Але що ж все-таки це таке? Що ми можемо робити з цим і як ми можемо це використовувати? У цій статті ви дізнаєтеся все про REST API для того, щоб працювати з ними та читати пов'язану з ними документацію. Що ж таке REST API? Давайте уявимо, що ви намагаєтеся знайти фільми про Бетмена на YouTube. Ви відкриваєте сайт, вбиваєте у форму пошуку слово «Бетмен», тиснете «Окей» і бачите список фільмів про супергероя. Так само працює і WEB API. Ви шукаєте щось і отримуєте список результатів від ресурсу, до якого здійснюєте запит. Дослівно API розшифровується як Application Programming Interface. Це набір правил, що дозволяє програмам спілкуватися одна з одною. Розробник створює API на сервері та дозволяє клієнтам звертатися до нього. REST – це архітектурний підхід, що визначає, як API мають виглядати. Читається як "Representational State Transfer". Цьому набору правил і слідує розробник під час створення свого застосунку. Одне з цих правил каже, що при зверненні до певної адреси ви повинні отримувати певний набір даних (ресурс). Кожна адреса - маршрут, пакет даних - запит, у той час як результуючий ресурс – відповідь. Анатомія запиту Важливо розуміти структуру запиту: Маршрут відправки. Тип методу. Заголовки. Тіло (або дані). Маршрут – це адреса, за якою надсилається ваш запит. Його структура приблизно така: Root-endpoint - це точка прийому запиту на стороні сервера (API). Наприклад, кінцева точка GitHub - https://api.github.com. Шлях визначає ресурс, до якого здійснюється запит. Це щось на кшталт автовідповідача, який просить вас натиснути 1 для одного сервісу, 2 для іншого і так далі. Для розуміння того, які саме шляхи вам доступні, вам слід переглянути документацію. Наприклад, припустимо, ви хочете отримати список репозиторіїв для конкретного користувача на Git. Згідно з документацією, ви можете використати наступний шлях для цього: Вам слід підставити під пропуск ім'я користувача. Наприклад, щоб знайти список моїх репозиторіїв, ви можете використати маршрут: Остання частина маршруту – це параметри запиту. Технічно запити не є частиною REST-архітектури, але на практиці зараз все ґрунтується на них. Тож давайте поговоримо про них детальніше. Параметри запиту дозволяють використовувати у запиті набори пар «ключ-значення». Вони завжди починаються знаком питання. Кожна пара параметрів після чого розділяється амперсандом (щось подібне до цього): Як тільки ви намагаєтеся отримати список репозиторіїв для користувача, ви додаєте ці три опціональні параметри і після чого отримуєте наступний результат: Якщо ж ви бажаєте отримати список моїх недавно запушених репозиторіїв, вам слід ввести наступне: Отже, як же зрозуміти, що маршрути робочі? Що ж, настав час перевірити їх на практиці! Тестування за допомогою Curl Ви можете надіслати запит за допомогою будь-якої мови програмування. JavaScript може використовувати методи на кшталт Fetch API або JQuery`s Ajax Method. Рубі використовує інше. І так далі. У цій статті я використовуватиму таку утилітку, як Curl. Справа в тому, що вона вказана в офіційній документації для веб-сервісів. Якщо ви зрозумієте, як використовувати цю утиліту, ви зрозумієте, як працювати з API. Після чого ви можете робити запити будь-якою зручною для вас мовою. Перед тим, як продовжити, слід переконатися, що Curl встановлений на вашій машині. Якщо ж він не встановлений, саме час встановити. У такому разі ви отримаєте помилку "command not found". Для того щоб використовувати утиліту, необхідно ввести наступне (за прикладом): І як тільки ви підтверджуєте введення, ви отримуєте відповідь (на зразок цього): Щоб отримати список користувацьких репозиторіїв, вам слід змінити запит за тим же принципом, який був обговорений раніше. Наприклад, щоб отримати список моїх репозиторіїв, вам слід ввести наступне: Якщо ж ви бажаєте включити параметри запитів, переконайтеся, що ви їх екрануєте. Справа в тому, що без екранування знаки питання і рівності розцінюються системою як спецсимволи і виконання команди відбудеться з помилкою. Також спробуйте інші команди та зробіть запити! В результаті ви отримуєте схожі відповіді. JSON JSON – JavaScript Object Notation – загальний формат для надсилання та прийому даних за допомогою REST API. Відповідь, що відправляється Github, також міститься у форматі JSON. Зміст об'єкту цього формату приблизно наступний: Повертаємось до анатомії запиту. Ви вивчили, що запит складається із чотирьох частин: Маршрут відправки. Тип методу. Заголовки. Тіло (або дані). Тепер давайте спробуємо розібратися з рештою. Тип методу Метод позначає тип запиту, який здійснюється; де-факто він є специфікацією операції, яку повинен здійснити сервер. Усього існує п'ять типів запитів: GET POST PUT PATCH DELETE GET – використовується для отримання з боку серверу певного ресурсу. Якщо ви здійснюєте цей запит, сервер шукає інформацію та відправляє її вам назад. По суті, він здійснює операцію читання на сервері. Дефолтний тип запитів. POST – необхідний для створення певного ресурсу на сервері. Сервер створює в базі даних нову сутність та сповіщує вас, чи був процес створення успішним. По суті, це операція створення. PUT та PATCH – використовуються для оновлення певної інформації на сервері. У такому разі сервер просто змінює інформацію існуючих сутностей у базі даних та повідомляє про успіх виконання операції. DELETE – як і випливає з назви, видаляє вказану сутність із бази чи сигналізує про помилку, якщо такої сутності в базі не було. Сам же API дозволяє вказати, який метод має бути використаний у певних контекстних ситуаціях. GET запит у цьому випадку необхідний, щоб одержати список всіх репозиторіїв зазначеного користувача. Також можна використовувати curl: Спробуйте надіслати цей запит. Як відповідь ви отримаєте вимогу про аутентифікацію. Заголовки Заголовки використовуються для надання інформації як клієнту, так і серверу. Взагалі, їх можна використовувати для багато чого; наприклад, та сама автентифікація та авторизація. На офіційній сторінці MDN можна знайти список доступних заголовків. Заголовки являють собою пари ключів-значень. Приклад: Також приклад із використанням curl: (Примітка: заголовок Content-Type у випадку Github для роботи не є обов'язковим. Це всього лише приклад використання заголовка в запиті, нічого більше). Для перегляду надісланих заголовком даних можна використовувати наступне: Тут зірочка відноситься до додаткової інформації, наданої за допомогою curl. > відноситься до заголовків запиту, а <, відповідно, - до заголовків відповіді. Щоб надіслати інформацію з curl, використовуйте наступне: Для відправки множинних полів ми можемо використати декілька подібних конструкцій: Також, якщо необхідно, ви можете розбити ваш запит на декілька ліній для забезпечення більшої читабельності: Якщо ви знаєте, як розгорнути сервер, ви можете створити власний API та протестувати свої запити. Якщо ж ні, обов'язково спробуйте. Існує безліч інформації, присвяченої цьому. Якщо ж бажання розгортати свій сервер немає, спробуйте безкоштовну опцію Request bin. Після чого ви отримаєте адресу, яку спокійно зможете тестувати. Переконайтеся, що ви створюєте власний request bin, якщо ви хочете протестувати саме ваш запит. Зважайте на те, що дефолтний час існування request bin – 48 годин. Тому ті приклади адрес, які я тут наводжу, на момент прочитання статті давно застаріли. Тепер спробуйте надіслати деяку інформацію, після чого оновіть свою сторінку. Якщо все пройде успішно, ви побачите наступне: За замовчуванням curl відправляє дані так, ніби вони були відправлені за допомогою полів форм. Якщо ви бажаєте надіслати дані через JSON, ваш Content-Type повинен дорівнювати application\json, внаслідок чого вам необхідно відформатувати дані у вигляді JSON-об'єкту. По суті, це все, що вам необхідно знати про структуру запиту. Тепер давайте згадаємо про аутентифікацію. Що ж це таке і навіщо вона потрібна? Аутентифікація Ви б не дозволили нікому чужому отримати доступ до вашого банківського рахунку без спеціального дозволу, чи не так? За таким же принципом розробники не дозволяють неавторизованим користувачам робити на сервері все, що їм заманеться. Оскільки POST, PUT, PATCH, DELETE запити змінюють базу даних, розробники повинні завжди бути на варті неавторизованого доступу до них. Проте іноді GET запити також вимагають аутентифікації (наприклад, коли ви хочете переглянути стан вашого банківського рахунку). У випадку з вебом існує два способи представитися системі: Через нік і пароль (базова автентифікація) Через секретний токен Секретний токен дозволяє представити вас системі через соцмережі на кшталт Github, Google, Twitter і так далі. Тут же я розгляну лише базову автентифікацію. Для виконання базової аутентифікації ви можете використовувати наступне: Спробуйте залогінитися під свій профіль за запитом, вказаним вище. Як тільки ви успішно увійдете у свій профіль, ви побачите відповідь "problems parsing JSON". Чому? Все просто: системі ви представилися, але - от біда - нічого корисного їй не надали. Усі типи запитів потребують певної інформації. Тепер же давайте поговоримо про статус-коди та можливі помилки. Статус-коди та можливі помилки Деякі з повідомлень, наведених вище, якраз і належать до кодів помилок. Логічно, що вони з'являються лише тоді, коли щось іде не зовсім так, як було заплановано. Що ж до статусу кодів, вони дозволяють вам пізнати успіх (або невдачу) під час виконання певного запиту. Бувають статус-коди від 100 до 500+. Загалом їх можна поділити на такі групи: 200+: запит успішний 300+: запит перенаправлений на інший маршрут 400+: помилка на стороні клієнта 500+: помилка на стороні сервера Ви можете відлагодити статус відповіді за допомогою –v або –verbose. Наприклад, я спробував отримати доступ до певного ресурсу без авторизації. Відповідно, я спіймав помилку: У випадку ж, коли запит невірний через помилку в самій інформації, що передається, ви отримуєте статус-код 400: Версії API Час від часу розробники оновлюють свої API. Іноді оновлення можуть бути такими сильними, що розробник бажає здійснити реліз нової версії. У такому випадку, якщо ваш застосунок ламається, це відбувається через те, що ви писали код з урахуванням старого компонента, тоді як новий дещо відрізняється в плані реалізації. Запросити поточну версію API можна двома шляхами. Через маршурт Через заголовок Наприклад Твіттер використовує перший спосіб. На момент написання версія Twitter API була 1.1. Водночас GitHub використовує інший спосіб: На закінчення У цій статті ми розглянули, що таке REST API і як його можна використовувати спільно з curl. Крім того, ви також вивчили, як залогінитись за допомогою запиту і що таке статус-код. Я щиро сподіваюся, що ця стаття дозволила вам підвищити свій рівень загальних і не дуже знань щодо такого важливого аспекту веб-розробки. Буду радий будь-яким вашим коментарям тут. Автор перекладу: Євген Лукашук Джерело Ще більше матеріалів на цю тему: ASP.NET Core Web API. Практичний курс ASP.NET WEB API 2 REST API в Node.js  JAX-RS Client API. Asynchronous REST Створення API на PHP та JavaScirpt
500+ питань на співбесіді щодо Ruby

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

Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 14 июня 2021 года. Оригинальная версия на украинском языке доступна по ссылке. Junior Ruby Developer Middle Ruby Developer Senior Ruby Developer Что нужно знать, когда проходишь техническое собеседование по Ruby? Конечно, ко всем вопросам готовым не будешь, но мы попросили интервьюеров-практиков прислать свои списки вопросов, а затем обобщили их в одном материале. Junior Общие вопросы 1. Какие принципы программирования вы знаете и какие из них вы пытаетесь соблюдать чаще всего? 2. Что такое парадигма ООП? Какие основные составляющие парадигмы? 3. Зачем нужна инкапсуляция? Что может произойти и не произойти, если все методы будут иметь модификатор доступа public? 4. Что такое наследование? Назовите пример(ы) плохого наследования (такое наследование, которое не стоило бы реализовывать). 5. Что такое полиморфизм? Приведите пример использования полиморфизма. 6. Что такое паттерн/шаблон проектирования? Какие шаблоны знаете? 7. Что такое клиент и сервер? Какая механика их взаимодействия? 8. Опишите путь, который проходит запрос после того, как в браузер ввести URL любого ресурса. 9. Что такое протокол HTTP? Какая разница между HTTP и HTTPS? 10. Что такое API? Может ли веб-приложение использовать более одного API? 11. Что такое REST API? Какие действия чаще всего выполняются над ресурсами? 12. Что такое сессия? Что такое cookies? Какая разница между ними? 13. Какие веб-уязвимости знаете? Как от них защититься? Какие есть инструменты, чтобы автоматически контролировать защиту от веб-уязвимостей? 14. Какими критериям пользуетесь для выбора библиотеки? 15. Что такое рефакторинг? Какие должны быть условия для выполнения рефакторинга? 16. Знаете ли вы семейство UNIX-подобных операционных систем (Linux, MacOS)? Назовите команды, которые чаще всего используете в терминале. 17. Что такое аутентификация? 18. Что такое авторизация? 19. Из каких частей состоит HTTP Request и HTTP Response? 20. Какие HTTP-статусы (HTTP-коды) знаете? На какие группы вы могли бы их разделить? 21. Какие HTTP-методы знаете? Зачем используется каждый из них? Git 22. Знакомы ли вы с системой Git? 23. Для чего нужны ветки в Git? Как сделать ветку? 24. Как скопировать с Git-хостинга (GitHub / GitLab / Bitbucket / другие) проект? 25. Что такое флаг -f? Для чего он и какие минусы использования? 26. Что такое Pull Request? Зачем ветви соединяют через Pull Request? 27. Какие еще команды чаще всего применяете, когда пользуетесь Git? Ruby 28. Как вы контролируете версии Ruby на своей локальной машине? 29. Что такое метапрограммирование? Какие плюсы и минусы при использовании метапрограммирования? 30. Какой менеджер библиотек для Ruby знаете? Как добавлять библиотеки? Как контролировать версии библиотек? Style guide 31. Что такое style guide и зачем его используют? 32. Какой популярный линтер контролирует выполнение большей части пунктов с Ruby Style Guide? Основы Ruby 33. Какие типы переменных есть в Ruby? 34. Что вернётся в результате сложения 10.5 и 10? 35. Чем отличаются переменные, начинающиеся с @, @@ и $? 36. Что такое attr_reader, attr_writer, attr_accessor и зачем они? 37. Что такое метод? 38. Что значит "?" в конце названия методов? Что означает "!" в конце названия методов? 39. Чем отличается энумератор map от each? 40. Что такое модуль? Какие есть варианты подключения модулей в класс? 41. Что такое класс и зачем он нужен? 42. Что такое модуль и зачем его используют? Чем модуль отличается от класса? 43. Что такое константа? 44. Что такое блок? Что такое yield? Можно ли передавать блоки в методы? Каким образом? 45. Что такое proc? 46. Что такое lambda? 47. В чем разница между proc и lambda? 48. Что такое eigenclass? 49. Какие виды условных операторов есть в Ruby? (if, unless, ternary, case) 50. Есть ли разница между операторами && и and? 51. Какие виды циклов есть в Ruby? (loop, while, until, for, each(), times(), upto()) Типы данных 52. Какие типы данных есть в Ruby? 53. Что такое интерполяция? 54. Что такое конкатенация? 55. Что такое массив в Ruby? 56. Что такое Hash в Ruby? Чем Hash отличается от массива? 57. Что такое символ и зачем он нужен? 58. Что такое Range и зачем его используют? 59. Что такое Time и Date? 60. Что такое Struct? 61. Что такое File? Структура классов и объектов 62. Что такое BasicObject? 63. Что такое Numeric? 64. Что такое Enumerable? 65. Что такое Struct? 66. Что такое OpenStruct? 67. Что такое Set? 68. Что такое Queue? 69. Что такое Object? 70. Что такое Kernel? ООП на Ruby 71. Есть ли интерфейсы в Ruby? 72. Что такое getter и setter в Ruby? Как их создавать? 73. Что такое инстансная переменная? 74. Что такое константа класса? 75. Какая разница между методом класса и методом объекта? 76. Какие есть области видимости? 77. Какие есть модификаторы доступа? Как private отличается от protected? 78. Поддерживает ли Ruby множественное наследование? 79. Как наследуются методы? Можно ли переопределить метод? 80. Зачем метод super? 81. Что такое Singleton-метод? 82. Что такое миксины? Зачем они и чем отличаются от декоратора? 83. Что такое include и extend и в чем разница между ними? 84. Какой путь поиска метода в иерархии классов? 85. Какая разница между последовательными и именуемыми аргументами метода? 86. Что такое exception? Когда они применяются? Как вызвать exception? Как отловить exception? Метапрограммирование 87. Что означает open class? 88. Что такое monkey patching? 89. Возможно ли создать класс динамически? Если да, то как именно? 90. Какие есть способы динамического управления методами, переменными и классами (define_method(), class_eval(), module_eval())? 91. Как происходит поиск метода в иерархии? Как можно обработать отсутствие метода (method_missing())? 92. Что такое алиас метода? Для чего нужны алиасы? 93. Как получить значение инстансной переменной? Как задать значение? Как проверить существование инстансной переменной (instance_variable_get(), instance_variable_set(), instance_variable_defined())? 94. Какие методы интроспекции есть в Ruby (class(), ancestors(), methods(), private_methods(), instance_variables(), singleton_methods(), local_variables())? 95. Что такое хуки и зачем их используют (inherited(), included(), method_added(), singleton_method_added(), method_missing())? RubyGems 96. Что такое gem? Что такое RubyGems? 97. С какой целью используют RVM? Что такое gemset? 98. Что такое Bundler и зачем он? 99. Что такое Gemfile и для чего его используют? 100. За что отвечает каждый из gem`ов? Если знаете нюансы в работе какого-либо из них — обязательно озвучьте. active_admin active_model_serializers bundle audit bcrypt devise jwt cancancan / pundit draper kaminari sidekiq rspec shoulda-matchers faker factory_bot simplecov rubocop (with extensions) pry Ruby on Rails 101. Что такое MVC? Является ли Rails MVC-фреймворком? 102. Что такое миграция? Для чего она нужна? Какие правила создания миграций? 103. Что такое роуты? Что такое resource и resources в роутах? 104. Чем отличается has_many through от has_and_belongs_to_many? 105. Зачем используют concerns? 106. Как работать с sensitive-данными в Rails-приложениях (токены, ключи и т. д.)? Как работает механизм credentials в Rails? 107. С какой целью используют локалы (locals)? Style guide 108. Знакомы ли вы с RoR style guide? Структура файлов в Rails 109. Из чего состоит Rails-приложение? Какая архитектура директорий? Зачем нужна каждая из них? 110. Чем отличается lib от vendor? 111. Как создать background job в Rails? 112. Какие способы загрузки ассоциаций в Rails? Модели и ActiveRecord 113. Зачем нужны модели? Что представляет собою модель? 114. Что такое ORM? Что такое ActiveRecord? 115. Какие есть правила наименования моделей и таблиц в базе данных? 116. Что такое миграции и зачем нужен этот механизм? Как создавать миграции? 117. Какие виды валидаций есть в AR? 118. Как можно вызвать валидацию? Когда валидация вызывается автоматически? Как можно отключить валидацию при сохранении? 119. Что такое callback в Rails? 120. Какие есть виды колбеков в AR? 121. Какие виды ассоциаций есть в AR? 122. Что такое has_one и belongs_to? 123. Что такое has_many? 124. Что такое has_many: through? 125. Что такое has_one: through? 126. Что такое has_and_belongs_to_many? 127. Что такое полиморфная ассоциация? 128. Что такое STI? 129. Каким образом можно получить данные из базы данных? Как получить один объект и коллекцию? Как задать условия выборки? 130. Что такое скоупы? Какова их функция? 131. Як выполнить произвольный SQL-запрос? 132. Как посмотреть информацию о том, как выполнялся запрос, какие использовались ключи и т. п.? Контроллеры 133. Что такое контроллер? Какую задачу выполняет? 134. Что такое action? Что такое CRUD action? 135. Что такое permit params? 136. Что такое ActiveRecord? Как он реализован в Rails-фреймворке? 137. Что такое параметры? Как они попадают в контроллер? Что такое дефолтные параметры (в роутах)? Что такое стронг-параметры? 138. Что такое cookies и зачем они? Где хранятся cookies? Как получить доступ к cookies? 139. Что такое сессии и в чем их задача? Где хранятся сессии? Как получить доступ к сессии? 140. Какие виды фильтров есть в Rails? (Before / after / around actions) 141. Зачем нужен объект Request? Какую информацию он содержит? 142. Для чего нужен объект Response? Какую информацию он содержит? 143. Что такое стриминг? Каким образом можно отдать файл на загрузку (Send_data, send_file)? 144. Что такое Rescue в контроллерах и для чего применяется? 145. Как принудительно включить использование HTTPS-протокола? Маршрутизация 146. Что такое роуты и в чем их функция? 147. Что означает аббревиатура CRUD? 148. Если нужно сделать новый CRUD для определенного ресурса, какие классы вы создадите и какие файлы измените? 149. Что такое ресурсы? 150. Что такое Singular ресурсы и что отличает их от обычных ресурсов? 151. Что делают неймспейсы в роутах? 152. Что такое вложенные ресурсы? 153. Что такое shallow nesting? 154. Что означает RESTful роуты? 155. Что такое нересурсные роуты? 156. Что такое actions в роутах? View 157. Что такое view и для чего он нужен? 158. Что такое layout? Чем отличается от view? 159. Что такое шаблонизатор и с какими шаблонизаторами приходилось работать? 160. Зачем нужен метод render? Что рендерить с его помощью? 161. Как передаются переменные во view? 162. Что такое partial? Когда стоит его применять? 163. Что такое хелпер и зачем его используют? 164. Какие есть хелперы для генерации роутов? 165. Какие есть хелперы для генерации форм? 166. Как создавать собственные хелперы? Интернационализация Rails 167. Что такое i18n? Зачем нужна i18n? Как она устроена в RoR? В каком виде можно хранить переводы? ActionMailer 168. Что такое ActionMailer и какие задачи он решает? AssetsPipeline 169. Что такое AssetsPipeline и какие задачи он выполняет? Инструменты консоли и rake-таски 170. Какие есть консольные команды для работы с RoR? Что такое rake-таски? Безопасность 171. Знаете ли вы какие-то уязвимые места, защиту от которых Rails предоставляет out of the box? 172. Какие атаки могут быть при неправильном использовании сессий? Почему нельзя хранить важные данные в сессиях? 173. Что такое CSRF? Как правильно защититься от CSRF? 174. В чем уязвимость Open Redirect? Как защититься от возможных атак, связанных с Open Redirect? 175. Какие уязвимости связаны с загрузкой файлов? Почему важно фильтровать имена и расширения файлов? Как защититься от опасности? 176. Почему нельзя загружать файлы в каталог, доступный снаружи? Что будет, если злоумышленник загрузит файл с кодом? 177. Какие уязвимости связаны с управлением пользователями (ссылка активации, пароли в чистом виде)? Как защититься? 178. Что такое инъекции и как происходит такая атака? Как их избежать? 179. Как организовать безопасную генерацию приглашений? Что такое deep_munge? Конфигурация 180. Где располагается основная конфигурация программы? 181. Что такое initializers? Зачем они? 182. Что такое окружение? Каково его назначение? 183. Как и где настраивается взаимодействие с базой данных? 184. Как и где настраивается Assets, генераторы, мидлвары, i18n? 185. Можно ли указывать произвольные настройки? Если да, то где и каким образом? Кэширование 186. Что такое кэш и зачем нужен этот механизм? 187. Какие виды кэширования есть в Rails? 188. Где может храниться кэш? 189. Зачем использовать кэширование страниц? 190. Зачем использовать кэширование экшенов? 191. Зачем использовать кэширование фрагментов? 192. Что такое Memcached? 193. Зачем и как реализуется низкоуровневое кэширование? 194. Как и когда кэшируется SQL? 195. Как тестировать кэширования в режиме разработки? Реляционные базы данных Теория реляционных баз данных 196. Что такое СУБД? 197. Что такое реляционная база данных? 198. Что такое нормализация базы данных? 199. Что такое нормальная форма? 200. Сколько есть нормальных форм баз данных? 201. Опишите первые три нормальные формы баз данных. 202. Что такое денормализация баз данных? 203. В чем разница между Primary Key, Foreign Key? Зачем они? 204. Какая разница между LEFT JOIN, INNER JOIN, RIGHT JOIN? 205. Как добавить запись в таблицу без ORM? 206. Как обновить запись в таблице без ORM? 207. Как удалить запись из таблицы без ORM? 208. Как прочитать записи в таблице без ORM? 209. Какие правила группировки данных в таблице вы знаете? SQL 210. Что такое DML (Data Manipulation Language)? 211. Что такое DDL (Data Definition Language)? 212. Что такое DCL (Data Control Language)? 213. Что такое TCL (Transaction Control Language)? 214. Как выбрать данные из нескольких таблиц? Какие виды JOIN вы знаете? 215. Какие агрегированные показатели можно использовать во время выборки из таблицы? 216. Что такое таблица в базе данных? 217. Как создать таблицу? 218. Как выбрать записи из таблицы? 219. Как вставить запись в таблицу? 220. Как изменить запись в таблице? 221. Как удалить запись из таблицы? 222. Как объединить выборку из разных таблиц? 223. Что такое группировка или агрегирование? 224. Каким образом можно задавать условия агрегирования? Индексы баз данных 225. Что такое индексы в базе данных? 226. Для чего нужны индексы? 227. Какие виды индексов существуют? 228. Что такое первичный ключ? 229. Что такое внешний ключ? 230. Что такое составной ключ? Полнотекстовый индекс в базах данных 231. Что такое полнотекстовый поиск и в чем его задача? 232. Что такое полнотекстовый индекс? 233. Что такое ts_vector? 234. Что такое ts_query? PostgreSQL 235. Что такое select distinct и какова его функция? 236. Каким образом можно сортировать результаты выборки? 237. Как ограничить количество результатов выборки? 238. Как проводить поиск по подстрокам? 239. Какие виды объединений (JOIN) есть в PostgreSQL? 240. Что такое подзапросы и в чем их задача? 241. Какие типы данных есть в PostgreSQL? 242. Какие есть виды символьных типов данных? 243. Какие есть виды типов данных для работы с датой и временем? 244. Что такое тип enum? Когда он используется? 245. Как можно создавать таблицы в базе данных? 246. Как изменять структуру таблицы? 247. Как удалять таблицы? 248. Как очистить таблицу? 249. Возможно ли задавать значения по умолчанию для полей? Если да, то как именно? 250. Возможно ли контролировать уникальность значений при вставке? Если да, то каким образом? 251. Что такое функции в PostgreSQL? 252. Какие операторы есть в PostgreSQL? Базы данных NoSQL Redis 253. Что такое Redis и зачем используют этот инструмент? Elasticsearch 254. Что такое Elasticsearch и зачем его используют? Статический анализ кода 255. Что такое Overcommit и зачем нужен? 256. Что такое Danger и для чего используется? 257. Что такое статические анализаторы кода? Зачем их используют? 258. Какие анализаторы для Ruby / Ruby on Rails знаете? 259. Какие статические анализаторы кода для JavaScript знаете? Тестирование 260. Какие виды тестирования знаете? Какие из них вы практиковали при использовании Rails? 261. Какой фреймворк для тестирования используете? 262. Какие показатели качества для своих тестов можете назвать? 263. С помощью какой библиотеки вы контролируете процент покрытия тестами? 264. Расскажите об основах тестирования в Ruby. Что такое RSpec? Какая разница между describe, context и it? 265. Какая разница между юнит-тестами и интеграционными? 266. Что проверяют приёмным тестированием? 267. Что проверяют интеграционным тестированием? 268. Что тестируют в моделях? 269. Что тестируют в контроллерах? 270. Что тестируют в сериалайзерах? 271. Как тестировать API? 272. Как тестировать различные Service Objects? 273. Что такое RSpec? Какие задачи выполняет этот инструмент? 274. В чем разница между let и let! в RSpec? 275. Какие хуки в RSpec знаете? 276. Что выполняется раньше: let! или хук before (:all) ? 277. Что такое Capybara? Какие задачи решает Capybara? 278. Что такое стабы? 279. Что такое моки? 280. Что такое матчер? 281. Какую задачу выполняет гем Shoulda Matchers? 282. Какую задачу выполняет Faker? 283. Зачем нужны Webmock и VCR? Чем они отличаются? 284. Что такое WebKit и PhantomJS? В чем разница между ними? Какие еще есть драйверы? 285. Как работать с базой данных в тестах? Как работает gem database_cleaner? Дополнительные RubyGems и Rails плагины 286. Какую задачу выполняет Devise? 287. Какую задачу выполняет Rake? 288. Какую задачу выполняет Cancancan и Pundit? 289. Какую задачу выполняет Kaminari и Will_paginate? 290. Какую задачу выполняет Carrierwave? 291. Какую задачу выполняет MiniMagick? 292. Какую задачу выполняет Aasm? 293. Какую задачу выполняет ActiveAdmin? 294. Какую задачу выполняет Nokogiri? 295. Какую задачу выполняет Formtastic и SimpleForm? 296. Какую задачу выполняет Omniauth? 297. Какую задачу выполняет Draper? 298. Какую задачу выполняет Faye? 299. Какую задачу выполняет Pusher? 300. Какую задачу выполняет Sidekiq, Resque? 301. Какую задачу выполняет Mongoid? Управление, сервисы и DevOps 302. Что такое SSH? Как и для чего используется? 303. Каким образом можно настроить аутентификацию на хосте без пароля? 304. Какие задачи выполняет Heroku? В чем его особенность? 305. Какие задачи выполняет Digitalocean? 306. Какие задачи выполняет Docker? Мониторинг 307. Какие задачи выполняют Airbrake, DataDog, NewRelic? 308. С какой целью используют Monit? Ruby Web Tools 309. Какие есть веб-серверы, написанные на Ruby? 310. Что такое Sinatra? 311. Что такое API? Для чего используется? Что такое сериалайзеры и зачем они нужны? 312. Что такое клиент-серверная модель? 313. Какая разница между GET- и POST-запросами? 314. Что такое HTTParty и какие задачи он выполняет? 315. Что такое Faraday и какие задачи он выполняет? 316. Что такое Rack? Что такое Rack-application? Что такое Rack middleware? 317. Что такое push-технология? Интеграции 318. Есть ли опыт интеграции с Facebook? Если да, то на каком проекте? 319. Есть ли опыт интеграции с Twitter? Если да, то на каком проекте? 320. Есть ли опыт интеграции с LinkedIn? Если да, то на каком проекте? 321. Есть ли опыт интеграции с Google? Если да, то на каком проекте? Практические задания 322. Описать в ООП-стиле: один из предметов интерьера в контексте конкретного бизнеса. Например, кресло, на котором сидит кандидат, теперь надо продавать в магазине. 323. Написать консольную версию игры «крестики-нолики», где входные данные передаются через gets, а выводят через puts. Два пользователя на одной машине должны иметь возможность сыграть партию. 324. Отсортировать массив. 325. Написать функцию, которая вернет уникальные элементы массива, не используя функцию uniq или set, to_set со стандартной библиотеки. Middle Общее 1. Что такое SOLID? Приведите примеры на каждую из букв. 2. Что такое микросервисная архитектура? Какие плюсы и минусы вы видите во время её использования? 3. Знаете ли вы шаблоны проектирования Singleton / Factory / Facade / Decorator / Template Method / Strategy? 4. Можно ли измерить скорость выполнения алгоритма? Какие факторы влияют на скорость? Какие виды зависимостей вы знаете? 5. Что такое методология Scrum? На каких активностях / встречах может присутствовать / быть полезным Software Developer? 6. Какие инструменты для логирования используете в работе? 7. Какие инструменты для мониторинга веб-приложений используете? 8. С помощью какого/каких инструментов вы деплоили приложения на staging / production? Опишите процесс. 9. Если один из ендпоинтов в приложении отрабатывает очень долго, что делать, чтобы улучшить скорость? 10. Чем отличается библиотека от фреймворка? 11. Что такое трехзвенная архитектура? Зачем и когда ее используют? Приведите примеры. 12. Что такое кэширование? Зачем и когда его используют? Приведите примеры. 13. Что такое функциональное разделение? Зачем и когда его используют? Приведите примеры. 14. Что такое Comet-сервер? Зачем и когда его используют? Приведите примеры. 15. Что такое денормализация? Зачем и когда ее используют? Приведите примеры. 16. Что такое деградация функциональности? Зачем она и в каких случаях используется? Приведите примеры. 17. Что такое сервис-ориентированная архитектура? Зачем и когда ее используют? Приведите примеры. 18. Что такое монолитное приложение? Зачем и когда его используют? Приведите примеры. 19. Что такое асинхронная обработка? Зачем и когда ее применяют? Приведите примеры. 20. Что такое ленивые вычисления? Зачем и когда их используют? Приведите примеры. Предметно-ориентированное проектирование 21. Что такое DDD? В чем преимущества перед классическим MVC? 22. Что такое домен? 23. Что такое модель? 24. Что такое контекст? 25. Что такое сущность? 26. Что такое value object? 27. Что такое агрегирование? Git и code review 28. Что делают команды cherry-pick, log, stash, reset, squash? 29. Что такое Gitflow? Какие правила использования Git на вашем прошлом проекте? 30. Каких правил именования комитов / ветвей / Pull Request`ов вы придерживаетесь? 31. На что обращаете внимание при code review? 32. Что бы вы могли назвать плохо проведенным code review? Базы данных 33. Для чего нужны индексы? 34. Какие есть виды индексов? 35. Ускоряют ли индексы все операции с базами? 36. Что такое DB view? 37. Чем отличаются materialized db view от non-materialized db view? 38. Как можно сохранить данные в различные таблицы и гарантировать, что все они или запишутся, или нет? 39. Можно ли строить индексы по нескольким полям? Важен ли порядок этих полей в индексе? 40. Какие вы знаете constraints при создании столбцов? 41. В чем разница между SQL и NoSQL базами данных? 42. Как бы вы импортировали большие массивы данных в БД (1-2 миллиона строк в CSV-файл)? 43. Что такое N+1 и как избегать? Реляционные базы данных 44. Какие различия между джоинами FULL OUTER JOIN, CROSS JOIN, NATURAL JOIN, INTERSECT и EXPECT? 45. Какие специфические типы данных есть в PostgreSQL? 46. Что такое view? С какой целью используется? 47. Что такое materialized view? 48. Что такое recursive view? 49. Что такое хранимая процедура и зачем она нужна? 50. Что такое партиционирование и какую проблему оно решает? 51. Умеете ли вы работать с чистыми SQL-запросами? 52. Каким образом можно работать с геолокацией в PostgreSQL? 53. Какие способы резервного копирования данных? Что такое pg_dump? В каком виде можно создавать резервные копии? NoSQL базы данных Redis 54. Что такое Redis? Какие задачи он выполняет? 55. Какие типы данных есть в Redis и для чего нужен каждый из них? 56. Что такое pub / sub? 57. Что такое транзакции? 58. Что такое mass insertion? 59. Что такое партиционирование? 60. Умеете ли работать с Redis в консоли? 61. Умеете ли настраивать Redis? Elasticsearch 62. Что такое Elasticsearch и какие задачи он выполняет? 63. Что такое кластер? 64. Что такое нода? 65. Что такое индекс? 66. Что такое тип? 67. Что такое документ? 68. Что такое шарды и реплики? 69. Что такое Query DSL? 70. Что такое мапинг? Статический анализ кода 71. Что такое overcommit и зачем нужна эта утилита? 72. Что такое danger и для чего используют эту утилиту? 73. Какую задачу выполняет каждый из нижеперечисленных гемов? Rubocop; Reek; Rails Best Practices; Brakeman; RubyCritic; SimpleCov; Bundle Audit; Bundle Leak; Traceroute. 74. Какие задачи выполняет каждый из нижеперечисленных модулей? Eslint; Stylelint; Prettier. Ruby 75. Какие проблемы в Ruby (как в языке программирования) вы видите? Какие, по вашему мнению, нужно решать как можно быстрее? 76. Какими библиотеками, кроме фреймворка Rails, пользовались для создания структуры проекта? 77. Как можно в Ruby запросить сторонний API? Какой встроенный класс позволяет это сделать? 78. Что такое Thread? Чем он отличается от Process? 79. Есть ли в Ruby возможность создать абстрактный класс? Есть ли способ искусственно создать абстрактный класс? 80. Есть ли в Ruby возможность множественного наследования? Есть ли способ искусственно заменить множественное наследование? 81. Назвать максимально точный путь поиска методов в Ruby 82. Какие минусы использования method_missing знаете? 83. Можно ли узнать идентификатор объекта в памяти, если да, то каким образом? 84. Какие виды enumerator для массива вы знаете? 85. Что такое мемоизация методов? Зачем ее используют? 86. С помощью какого хука можно посчитать количество потомков определенного класса? 87. В чем разница запуска rspec и bundle exec rspec? 88. Создавали ли вы гем в Ruby? Какая механика / последовательность действий для создания гема? 89. Что такое Rack middleware? 90. Есть такой код:             users = User.where (id: [1,3,4])             users.where (name: "Alex")             users.inspect После какой строчки кода ActiveRecord выполняет запрос в базу? Ruby on Rails 91. Что такое ActiveSupport? Зачем нужен? Какие задачи выполняет? Приведите пример методов, которые добавляет ActiveSupport. 92. Что такое Action Cable? Зачем используют этот фреймворк? 93. Как создать функциональность для отправки имейла в Rails-приложении? 94. Какие библиотеки для background jobs использовали? Какая механика работы таких библиотек? 95. Какие и виды кэша в Rails знаете? Где можно хранить кэш? 96. Какие библиотеки / подходы для создания API документации знаете / используете? 97. Что такое Swagger? Какие преимущества создания API документации в Swagger-формате? 98. Что такое Query Objects? Когда и как их можно использовать? 99. Что такое Decorators? Когда и как их можно использовать? 100. Что такое Form Objects / Contract? Когда и как их можно использовать? 101. Где и как вы рекомендуете держать бизнес-логику в Rails-приложении? 102. Что такое JSON API формат? Использовали ли вы библиотеки для сериализации объектов в JSON API формате? Тестирование 103. Работали ли вы с feature-тестами? Что такое capybara? 104. Что такое TDD? Какие преимущества / недостатки использования TDD-подхода видите? 105. Что такое BDD? В чем отличие между TDD и BDD? 106. Что может быть причиной того, что тесты на проекте выполняются очень долго? 107. Что такое принцип тестирования FIRST? 108. Как порекомендуете писать тесты на код, в котором посылается запрос на сторонний сервис (API)? 109. Какие инструменты помогают контролировать качество тестов? 110. Какие составляющие response`a вы тестируете, когда пишете тест на определенный эндпоинт? 111. Является ли 100% code coverage на проекте залогом низкой вероятности что-то «сломать» во время багфиксинга / имплементации новой функциональности? Объясните свой ответ. Управления, сервисы и DevOps 112. Опишите CI / CD-подход на своем последнем проекте? Как бы вы его изменили? 113. Какие в целом Continuous strategies знаете? Чем отличается Continuous Deployment от Continuous Delivery? 114. Что такое Docker? Чем отличается Docker от виртуальной машины? 115. Для чего используют docker-compose? 116. Умеете ли вы работать с Docker? 117. Что такое image в Docker? Как работать с ним в Docker? 118. Что такое container в Docker? Как работать с контейнерами? Как запускать и останавливать контейнеры? Как узнать список рабочих контейнеров? 119. Что такое Docker Daemon? 120. Что такое Docker Client? 121. Что такое Docker Hub? 122. Что такое Docker Compose? Практические задания 123. Написать клиент для открытого API ресурса с использованием только низкоуровневых библиотек: Net::HTTP, HTTP.rb, Faraday, etc. 124. Как бы вы посчитали количество пассажиров, которые заходят или выходят на определенной станции метро? 125. Посчитать количество автомобилей в пробке. 126. Организовать автомобильную стоянку. 127. Написать функцию, которая вернет уникальные элементы массива, не используя uniq или set, to_set со стандартной библиотеки. Ожидается вариант с применением хеш-таблицы, где ключами будут уникальные элементы из массива, а значениями true. Senior Общие вопросы 1. Опишите основные способы аутентификации в API. 2. Назовите основные принципы построения REST API. 3. Вам нужно спроектировать API, какие основные вопросы будете задавать клиенту? 4. Какие основные преимущества и недостатки монолитной архитектуры? 5. Какие основные преимущества и недостатки микросервисной архитектуры? 6. Что такое SOLID? Какие из принципов, по вашему мнению, чаще всего нарушаются, какие являются наиболее критичными? 7. Опишите Singleton-паттерн. Где и когда вы его использовали? 8. Опишите принцип работы DNS? 9. Что такое code smells? Каковы основные признаки плохого кода? 10. Что такое reverse proxy, для чего он нужен? 11. Что такое load balancer, основные разновидности? 12. Что такое MVC и как не попасть с ним в беду? 13. Опишите процесс обработки HTTP-запроса на примере любого веб-фреймворка в Ruby (Rails, Hanami, Sinatra, Roda, etc). 14. Чем отличается refactoring от оптимизации? Как и когда нужно выполнять каждый из вышеназванных процессов? 15. Знаете ли вы GraphQL? Какие плюсы и минусы вы видите по сравнению с REST? 16. Что такое multi-tenant architecture? Когда рекомендуете ее использовать? 17. Чем отличается понятие Dependency Inversion от Dependency Injection и от Inversion of Control? 18. Что такое GDPR? Назовите правила, которые использовали, чтобы быть GDPR compliant? Метапрограммирование и DSL 19. Параллельное выполнения кода через Thread, Fiber, Ractor. Объясните на примерах. 20. Дизайн-паттерны: Service, Form, Value, Policy, Guard, etc. Объясните на примерах. 21. Расскажите об архитектурных паттернах: Monolith, Microservices, Distributed app, etc. 22. Как организовать бизнес-логику, когда в проект уже 1000+ бизнес-операций? 23. Что такое Sidekiq? Как правильно организовывать очереди? 24. Расскажите об оптимизации быстродействия через benchmark, lineprof и flamegraph. 25. Работали ли вы с Garbage collector? Расскажите. 26. Расскажите о собственных примерах решений, которыми гордитесь и почему. Ruby / Rails 27. Что такое Thread? Какие особенности использования тредов в разработке? 28. Что такое Process? Какие особенности использования процессов в разработке? 29. Что такое Mutex? Приведите примеры использования мьютексов в разработке? 30. Если нужно определить, сколько выполняется тот или иной код, как порекомендуете это сделать? 31. Какие недостатки видите в Ruby? Когда и как они могут себя проявить во время разработки? 32. Можно ли передать контекст выполнения одного метода в другой метод? Если да, то как это сделать? 33. Какие callback-s знаете в Ruby? 34. Как реализовать Singlethon-класс Ruby? Опишите базовые концепты. 35. Как работает Garbage collection в Ruby? Опишите базовые концепты. 36. Что такое Ractor? Какая разница между классической моделью работы с тред и работой с помощью Ractor? 37. Как работают Lazy Enumerators? Чем они отличаются от классических Enumerators? Как и когда они могут помочь? 38. Назвать примеры использования Fiber`ов 39. Как include добавляет метод модуля в класс? Что происходит на уровне MRI? В чем разница по сравнению с extend и prepend? 40. У вас есть задача импортировать пользователей в базу Rails-приложения. Пользователи записаны в CSV-файле, где каждая строка - это данные. Опишите ваш подход к решению проблемы. Как изменится решение, если файл станет очень большим (> 300000 строк)? 41. Если в модели User у вас есть callback, то какие могут возникнуть проблемы при решении предыдущей задачи? 42. Как мы можем отслеживать прогресс Background Job? 43. Опишите жизненный цикл Request - Response в Rails. Через какие основные компоненты фреймворка проходит запрос и для чего они нужны? 44. Какие основные типы тестов используете и с какой целью? 45. Как вы относитесь к интеграционным тестам? 46. Что такое полиморфные ассоциации в ActiveRecord? 47. Как бы вы порекомендовали построить semantic versioning для Rails API, работающего с мобильными приложениями (iOS, Android, Web)? Поверхностно опишите стратегию. 48. Если необходимо, чтобы каждый запрос, пришедший к Rails app независимо от роута, возвращал 403 статус как можно быстрее, как бы вы порекомендовали реализовать код для этой задачи? 49. Какие, по вашему мнению, пять основных минусов Rails? Что бы вы порекомендовали изменить, чтобы нейтрализовать эти минусы? 50. Можно ли в Rails работать с несколькими базами, если да, то как это сделать? Базы данных 51. Что такое транзакция? Какие основные свойства транзакций? 52. Что такое database lock и чем он отличается от транзакций? 53. Что такое Pessimistic и Optimistic locking? 54. У нас есть таблица Users. Мы добавили к ней индекс в трех полях: first_name, last_name, email. Именно в таком порядке. Теперь делаем запрос SELECT * FROM users WHERE first_name = "Alex" AND email = "<a href="mailto:test@mail.com"> test@mail.com </a>". Поможет ли нам индекс ускорить такой запрос, и почему? 55. Что такое Database View? Какие виды есть? 56. Что такое Database trigger? 57. Что такое партицирование? Опишите кейсы, когда партицирование было бы полезным? 58. Поверхностно опишите шаги для реализации партицирования на примере любой СУБД. 59. Что такое триггеры? Как и когда их можно использовать? Какие плюсы и минусы вы видите в сравнении с тем, чтобы использовать триггеры / колбеки на уровне бэкенд? 60. Что такое WAL? Какую роль он играет? 61. Была ли у вас возможность / необходимость использовать шардинг? Чем отличается шардинг от партицирования? 62. Опишите принципы, преимущества и недостатки работы с primary / secondary (master / slave) репликацией? 63. Знакомы ли вы с CAP-теоремой? Если да, объясните основную идею. 64. Знаете ли вы ACID? Как вы понимаете букву "I" в этой аббревиатуре? 65. Представьте ситуацию, когда ваш сервер, на котором размещен redis, по неизвестным причинам перезапустился. Что рекомендуете сделать заранее, чтобы такие ситуации не нанесли большой вред? Тестирование 66. Знаете ли вы, что такое Load Testing? Чем может помочь разработчик при Load Testing? 67. Какие инструменты используют для того, чтобы собрать как можно больше метрик при Load Testing? 68. Какие подходы вы бы порекомендовали использовать, чтобы ускорить тесты на CI? 69. Как внедрить процесс написания тестов, если проект (Rails API) их совсем не имеет? Практические задания 70. Написать реализацию структуры данных Set. Объяснить алгоритмическую сложность добавления элементов к сету. 71. Спроектировать реферальную систему (то есть, пользователь может пригласить других пользователей, которые становятся его рефералами, они приглашают своих рефералов, и так формируется древовидная структура). Есть модель: class Users <ActiveRecord :: Base             end Как бы вы связали ее с рефералами? 72. Добавьте метод: class Users <ActiveRecord :: Base             end который возвращает рефералы пользователя поуровнево. Например, user имеет рефералы user1, user2. user1 имеет реферала user3, user2 имеет рефералов user4 и user5. Должны получить результат: {0 => [user]             1 => [user1, user2],             2 => [user3, user4, user5} Спасибо за вопросы Денису Земляному, Николаю Воронину, Сергею Гнилицкому, Владимиру Свередюку, Михаилу Одинюку, Виктору Нову, Александру Шестопалу, Андрею Зеленцу, Кириллу Шевченко, Виктору Новицкому.
Як стати тестувальником, QA, QC у 2023 році? Що варто знати та вміти, аби отримати роботу в ІТ-компанії?

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

Хто такий тестувальник, QC Engineer, QA Engineer? Напрямки QA Стек технологій для Manual QA інженера Англійська мова та Soft Skills (гнучкі навички) Стек технологій для Automation QA Як стати тестувальником у 2023 році? Що потрібно знати тестувальнику? Кар'єра QA спеціаліста Зарплати QA Підсумки Всім привіт! Ви знаєте, як створюються програми та інформаційні сервіси, якими всі ми користуємось? Які фахівці потрібні, щоб з'явився новий Фейсбук, Вайбер, Інстаграм, новий Windows чи якась крута гра? За розробленням програмного забезпечення (ПЗ) стоїть ціла команда професіоналів – і далеко не всі з них вміють програмувати. Типова команда буде включати наступних фахівців: бізнес-аналітик – проводить аналіз бізнес-проблеми, формує вимоги до продукту, що розробляється; PM (Project Manager) – управляє всіма, хто залучений до роботи над проєктом; тимлід (Team Leader) – управляє командою розробників; UX/UI дизайнер – створює приємний дизайн застосунку (UI) з гарним користувацьким досвідом (UX); розробники/програмісти – займаються написанням коду, становлять ядро команди; QA спеціаліст – тестує застосунок на кожному етапі його розроблення для забезпечення високої якості продукту. Якщо ПЗ не призначене для використання тільки всередині компанії, а націлене на зовнішню аудиторію, то ще додається маркетинг-команда, яка працює з цільовими споживачами: досліджує ринок, визначає клієнтуру, привертає її увагу, підігріває інтерес до продукту та багато іншого. Таким чином, в ІТ знайдеться гарна робота навіть для тих, хто не любить програмувати. І сьогодні йтиметься про такого фахівця, як QA. Трохи вище ви вже дізналися, що це фактично тестувальник, який стежить за якістю ПЗ на кожному етапі його розроблення. У чому специфіка даної професії, чим займаються ці фахівці, наскільки легко опанувати спеціальність тестувальник QA і які технології має знати потенційний претендент на цю посаду – це ми і розкриємо в нашій статті. Влаштовуйтесь зручніше, ми починаємо! Хто такий тестувальник, QC Engineer, QA Engineer Дуже часто термін "тестувальник" застосовується до всіх фахівців, які так чи інакше пов'язані з перевіркою ПЗ на якість. Тим не менш, у цій сфері існує формальний поділ професій на три гілки: Tester, QC та QA. Давайте з'ясуємо, що означає кожна з них. Тестувальник – спеціаліст, який фокусується на проведенні безпосередніх тестів над уже створеним ПЗ (складання тест-кейсів та баг-репортів, локалізація дефектів тощо). Фахівець перевіряє, чи все працює згідно із заявленими вимогами, проводить збір статистичних даних та фіксує їх у відповідних документах. Тестувальник уважно користується розробленим ПЗ, відтворює всі можливі дії користувача, працює із застосунком на різних операційних системах, у різних браузерах (якщо це веб-застосунок), на різних мобільних платформах (якщо це мобільний застосунок); крім помилок він шукає ще й вразливості. Щось на кшталт техогляду транспортного засобу. Звіти про помилки потім надсилаються розробникам, які відповідальні за подальше виправлення багів. QC (Quality Control) Engineer — фахівець, який забезпечує не тільки відповідність ПЗ, що розробляється, заявленим вимогам, але і його відповідність заздалегідь визначеним критеріям якості продукту в цілому. Також він відповідальний за визначення готовності продукту до випуску в продакшн. Мета Quality Control спеціаліста – формування об'єктивної картини стану якості ПЗ на різних етапах розроблення. Можна сказати, що спеціальність тестувальника є підмножиною спеціальності QC Engineer. QA (Quality Assurance) Engineer — спеціаліст, який забезпечує контроль якості ПЗ, що розробляється, на всіх етапах його планування, проєктування та створення. Робота на цій посаді є проактивною і носить превентивний характер, оскільки QA інженер приділяє увагу якості продукту ще до того, як той буде створений. Тут на перший план виходять комплекси заходів, процеси та засоби забезпечення якості ПЗ на кожному витку розроблення. Безпосередньо тестування системи займає вже друге місце. Головне завдання QA — вибудувати систему так, щоб вона мала якнайменше зон, де можна припуститися помилки, відповідала всім показникам якості, а також, щоб її можна було легко тестувати. Спеціальність QC Engineer є підмножиною спеціальності QA Engineer. Щоб вас не плутати, у цій статті ми прирівняємо поняття “тестувальник” та “QA інженер” на користь другого. Будемо розписувати стек технологій і шлях становлення саме QA спеціаліста. Таким чином ми зможемо торкнутися максимальної кількості інформації стосовно напряму тестування. Напрямки QA Почнемо з того, що QA має два основних напрямки — Manual та Automation. Фахівці кожного з них називаються мануальний (ручний) тестувальник та тестувальник-автоматизатор, відповідно. Їхня різниця в тому, що перший стежить за якістю продукту і проводить усі тести вручну, а другий автоматизує тестування шляхом написання скриптів. Automation QA використовує певну мову програмування та фреймворк для того, щоб створювати програми, які будуть проводити тестування продукту замість самого фахівця. Такий підхід дає змогу скоротити час на тести. До обов'язків мануального QA інженера входять: аналіз та з'ясування вимог у замовника чи бізнес-аналітиків; планування процесу тестування; написання сценаріїв тестування; безпосередньо тестування програмного продукту; визначення проблемних місць, їхнє документування; використання систем відстеження багів (баг-трекінги); обговорення виправлень із розробниками, активна взаємодія з ними; відстеження життєвого циклу помилок; повторний тест виправлених дефектів; аналіз тестування; планування ідей щодо оптимізації якості програмного забезпечення; ведення тестової документації; перевірка вимог до програмного забезпечення; оцінка ризиків; участь у стендапах та інших мітингах. Тим часом на плечі Automation QA також покладаються наступні обов'язки: написання нових автотестів на основі розроблених вручну; оновлення поламаних/застарілих автотестів; прогін автотестів; аналіз результатів тестових прогонів; налаштування тестового оточення; рев'ю коду; оформлення автотестової документації Насправді і мануальний, і автоматизований напрямки мають багато спільних вимог, оскільки їхній фундамент однаковий. Давайте почнемо з розгляду Manual QA, а потім плавно доповнимо його інструментами Automation QA. Що має знати тестувальник у 2023 році – стек технологій Manual QA Engineer Загальна теорія з IT Якщо років 15 тому в тестувальники брали мало не з вулиці, то зараз до претендентів з кожним роком висувають все більше і більше вимог. Тому потенційний претендент на посаду насамперед зобов'язаний гарно розуміти IТ-індустрію. Отже, цей пункт передбачає такі теми, як: веб-технології (HTTP, HTTPS, DOM, JSON, cookie, session), клієнт-серверна архітектура; бази даних; комп'ютерні мережі; операційні системи (звернути особливу увагу на Unix); дрібні підтеми, як, наприклад, системи числення і т. д. Теорія тестування та тестова документація Як стати тестувальником з нуля? Безумовно, будь-який QA інженер першочергово повинен знати, з чим він взагалі має справу. Якщо на зорі розроблення саме тестування було чимось інтуїтивним, то сьогодні воно набуло чітких форм, отримало свої методики, інструментарій та спеціалізоване програмне забезпечення. Вивчивши теорію тестування, ви зможете орієнтуватися в даному напрямку, розуміти принципи, типи та методи тестування, тест-дизайну, етапи життєвого циклу ПЗ; дізнаєтеся, як правильно складати тестову документацію (тест кейс, баг-репорт, чек-лист тощо) і багато іншого. Основні теми: Тестування, основні стандарти ISTQB. SDLC та STLC. Методології розроблення ПЗ. Вимоги. Аналіз та складання вимог. Тестова документація. Рівні, типи, методи та види тестування. Техніки тестування. Тест-дизайн. Баги та баг-трекінгові системи. Системи контролю тестів. Основи програмування + HTML/CSS Основи програмування мануальному QA потрібні не для того, щоб займатися безпосереднім кодингом, а щоб вміти читати код розробника і розуміти, що в ньому відбувається. Тут важлива не сама мова програмування, а банальне розуміння того, як створюються програми, що таке змінні, функції, методи, класи, які є методології програмування, як вони реалізуються і т. д. Для вивчення основ добре підійде C# або Java. Можливо, сюди варто було б включити і Python, але він, мабуть, занадто легкий для вивчення і при роботі з іншими мовами вам доведеться щось доучувати. C# з Java більш фундаментальні, і знаючи основи однієї з них, ви зможете легко розбиратися з кодом будь-яких інших популярних мов. Фактично, володіння основами програмування необхідне читання чужого коду і виявлення можливих багів прямо на місці. Окремо виділяємо мови верстання HTML та CSS. Якщо ви працюватимете з веб-застосунками (а як показує практика – проєктів багато, – черга і до тестування "вебу" рано чи пізно дійде), то вам буде корисно знати, з чого складається FrontEnd частина веб-застосунку. Також ви працюватимете з інструментами розробника в браузері і там теж треба буде взаємодіяти з HTML/CSS кодом. Правила оформлення документації. Модель CMMI Якщо згадувати три спеціальності, про які ми говорили на початку (QA, QC і тестувальник), то цей пункт для тестувальника як такого є непотрібним. А от для QA інженера він невід'ємний. У процесі проєктування ПЗ та стеження за його якістю необхідно проводити відповідне документування. Щоб робити це правильно, треба знати стандарти оформлення таких документів. Важливо приділити увагу серії ISO 9000. CMM / CMMI – це набір методологій (моделей) удосконалення процесів розроблення ПЗ. Знання CMMI дозволяє QA інженеру грамотно оцінювати проєкт та планувати необхідні процеси по забезпеченню якості. SQL SQL — це мова запитів, яка використовується для взаємодії з даними в реляційних базах даних. Тестувальнику вона стане у нагоді для того, щоб виконувати бекенд-тестування для перевірки тестових даних, вставлення, видалення, оновлення їх значень у БД. Сказати точний рівень володіння SQL нелегко, оскільки це залежить від складності проєкту. Десь знадобиться базовий рівень SQL, а десь потрібно бути дуже підкованим. А якщо тестування не пов'язане з бекендом, знання мови запитів зовсім не знадобляться. Загалом, тестувальник QA повинен мати наступні знання та вміння при роботі з БД та SQL: вміння розпізнавати різні типи БД; здатність реалізувати підключення до БД, використовуючи різні клієнти SQL-з’єднань; розуміння таблиць БД, ключів, індексів, типів відношень між таблицями; вміння створювати прості запити; розуміння та вміння розбирати по поличках складні запити. Веб-сервіси Веб-служба (або веб-сервіс) – це програмна система зі стандартизованими інтерфейсами, яка ідентифікується веб-адресою. Даний термін описує стандартизований спосіб інтеграції веб-застосунків з використанням різних протоколів, наприклад XML, TCP/IP, SOAP, WSDL та UDDI. Веб-служба являє собою спосіб зв'язку між двома електронними пристроями по мережі, такими веб-сервісами можна користуватися незалежно від комп'ютера, браузера або місця доступу до Інтернету (пошук, веб-пошта, зберігання документів, файлів, закладок тощо). До переваг веб-сервісів можна віднести: можливість створення необхідних кондицій для взаємозв'язку програмних компонентів, які не будуть залежати від платформ, що використовуються; веб-сервіси використовують відкриті стандартні протоколи; завдяки XML забезпечується легкість у формуванні та налаштуванні веб-сервісів; використання HTTP гарантує успішний взаємозв'язок систем через міжмережевий доступ. Веб-сервіси повинні знати розробники для коректної реалізації ПЗ, а тестувальникам вони потрібні, щоб розуміти, як працює та чи інша веб-система. Jira Система баг-трекінгу, яка допомагає виявляти, реєструвати і контролювати баги, знайдені в ПЗ, що розробляється, а також відстежувати процес усунення цих помилок. Є командним інструментом, що спрощує процес взаємодії розробників та тестувальників, а також різну баг-трекінгову діяльність в принципі. Окрім прямого призначення допомагає команді ефективніше працювати, розставляти пріоритети та обирати подальші кроки оптимізації програмного забезпечення. Postman Популярний і водночас потужний набір інструментів для тестування API (у середовищі розробників вимовляється як “а́пі”). API – це прикладний програмний інтерфейс; він вказує, як слід звертатися до програми та які відповіді вона зобов’язана надавати користувачам. Postman відносно простий у використанні, має багатий інтуїтивний інтерфейс. Він перевіряє запити з клієнтської сторони на серверну, а також відгук зі сторони бекенду. Таким чином можна переконатися, що на стороні сервера все працює, навіть якщо фронтенд сторона ще не готова. API можна тестувати і за допомогою безлічі інших програмних засобів (наприклад JMeter), однак на сьогоднішній день саме Postman є найбільш компромісним інструментом тестування запитів, що поєднує в собі простоту і високу ефективність. Git Git – це популярна система контролю версій, яка дозволяє вести історію розроблення проєкту з можливістю доступу до кожної збереженої версії. Одним із найвідоміших антагоністів Git є SVN — централізована система, на відміну від децентралізованої Git. Також у роботі вам стане в нагоді і сервіс онлайн-хостингу проєктів, що використовує систему контролю версій. У цьому випадку це GitHub. У парі з Git він дозволяє розробникам зберігати свій код онлайн, а потім взаємодіяти з іншими розробниками в різних проєктах. Git потрібен скоріше Automation QA, оскільки дозволяє у зручному вигляді зберігати код тестів із можливістю повернутися до робочої версії тестів. Також тестувальник зможе: мати доступ до коду розробників; організувати список тестів та відстежувати його виконання; тестувати код із різних пристроїв (при цьому сам код лежить на віддаленому репозиторії Git); зберігати різні налаштування для застосунку; виконувати інші взаємодії. Методологія розроблення Agile/Scrum Методології розроблення – це своєрідні путівники процесами ефективного розроблення ПЗ. Їх застосування допомагає організувати максимально продуктивну роботу всіх учасників, які безпосередньо чи опосередковано задіяні у розробленні продукту відповідно до обраної стратегії. Agile – сімейство гнучких методологій розроблення програмного забезпечення, яке дозволяє випускати продукт невеликими частинами, постійно доповнюючи його і вдосконалюючи. При такому підході технічні та бізнес-підрозділи працюють спільно, ПЗ постійно оновлюється, забезпечується швидке прийняття рішень та виявлення неправильних підходів, застосунок простіше обслуговувати, а якість коду готового продукту вища. Agile має власний маніфест, який докладно описує основні принципи, на яких будується гнучке розроблення. Scrum є однією з найпопулярніших реалізацій agile-підходу. Його використовують багато команд, тому знання особливостей роботи зі scrum-моделлю для QA інженера є не менш важливим, ніж для будь-якого розробника. Англійська мова Знання англійської — природна вимога для багатьох професій в IT, оскільки більшість нових відомостей про технології, курси, навчальні та довідкові матеріали з'являються насамперед англійською. Для роботи в команді знань мови на рівні читання технічної документації, коментування коду та складання баг-репортів зазвичай цілком достатньо, проте, якщо виникне необхідність вести переговори та/або листування з іноземним замовником, або ж ви будете в міжнародному колективі, ваш рівень має бути вище (тут вже дуже бажано мати рівень не нижче за Upper Intermediate). Soft Skills Так звані “гнучкі (м'які) навички” – це внутрішні якості спеціаліста, які допомагають йому виконувати роботу максимально якісно і без зайвої напруги. Наприклад, для слідчого-криміналіста прекрасними софт скіллами будуть об'єктивність, уважність, вміння відчувати свого співрозмовника, прекрасне дедуктивне мислення і невгамовне прагнення докопуватися до правди. Для працівника на ресепшені критично важливими м'якими навичками є комунікабельність, дисциплінованість, пунктуальність, ввічливість, тактовність та інші. Які soft skills стануть у нагоді тестувальнику? Спеціалісту, який стежить за якістю ПЗ і перевіряє його на міцність, слід володіти наступними навичками: уважність, вміння концентруватися на задачі; ініціативність; посидючість; організованість, проактивність, націленість на результат; стресостійкість; емпатія до користувача та разом із тим розуміння бізнес-процесів; адаптивність; комунікабельність; вміння працювати в команді; володіння логічним, системним, упорядкованим мисленням; вміння правильно здійснювати декомпозицію (по відношенню до систем, завдань, проблем тощо); наявність шостого чуття + трохи винахідливості; прагнення вчитися та вміння передавати свої знання іншим; Користувацький досвід (не обов'язково, але дуже зручно) Було б непогано, якби перед тестуванням програми ви вже стикалися з чимось подібним у звичайному житті. Якщо працювати належить у сфері ігробудування, то ваш величезний геймерський досвід буде дуже доречним. Робота з проєктами із веб-індустрії? Досвід серфінгу в інтернеті (соцмережі, інтернет-магазини, онлайн-сервіси) полегшить розуміння логіки користувачів, їх очікувань та точок інтересу. Automation QA Автоматизований QA технічно є надмножиною позиції Manual QA — він повинен знати все те саме, що й мануальний колега плюс декілька нових інструментів. Ці інструменти ми зараз і перерахуємо. Мова програмування Якщо в розділі Manual QA ми говорили про основи програмування, то автоматизатору знадобиться саме впевнене володіння конкретною мовою. Зазвичай вибирають серед Java та Python, але це не межа. У тестуванні можна застосовувати такі мови, як JavaScript, C#, Ruby, PHP, SmashTest тощо. За допомогою обраної мови ви писатимете автотести, які виконуватимуть тестування за людину. Програма працює – тестувальник аналізує результати. Це спрощує роботу, підвищує швидкість проведення тестів та знімає частину завдань із людини. Фреймворк для тестування Для створення автотестів найчастіше використовується спеціальне програмне забезпечення — фреймворки. Одним із найпопулярніших вважається Selenium. Він мультиплатформний, орієнтований на роботу з веб-застосунками і підтримує велику кількість популярних мов програмування. Більше того, Selenium є основною технологією для багатьох інших інструментів автоматизації браузерів, API та фреймворків. Інструменти навантажувального тестування Цей пункт є необов'язковим, але дуже бажаним. Навантажувальне тестування – це вид тестування, при якому проводиться тест продуктивності цільового ПЗ при різних навантаженнях від дій певної кількості користувачів. Найбільш відомими інструментами проведення тестування навантаження є Gatling і JMeter. Як стати тестувальником у 2023 році? Що потрібно знати тестувальнику? Перетворюємо список наведених вище технологій на туторіал. Починаємо з шляху Manual QA. Ви можете навчатися самостійно – за книгами або відео курсами, а можете записатися на курси тестування для максимально ефективного навчання. У будь-якому випадку спочатку потрібно дуже добре вивчити теорію тестування і базові теми в IT: веб-технології, API, клієнт-серверна архітектура, бази даних, комп'ютерні мережі, операційні системи (звернути особливу увагу на Unix), дрібні підтеми, як, наприклад, системи числення і т. д. Конкретні теми з тестування ми розписали в одному з перших розділів. Потім вам слід опанувати написання тестової документації (для чистого тестувальника), а для QA знадобиться ще й знання стандартів забезпечення якісного ПЗ (ISO 9000) для додаткового документування, модель CMMI. Аби безпроблемно читати код розробників і розуміти, що в ньому відбувається, слід володіти основами програмування. Для цього краще вибрати або Java, або C# — документація за даними мовами є дуже інформативною, наявне велике ком'юніті. Більше того, безліч програм навчання за цими мовами має прекрасний бекграунд (історія програмування, як працюють обчислювальні системи і як вони обробляють інформацію), який закладає міцний фундамент програмування. Також варто опанувати мови верстання HTML і CSS – вони дуже прості і використовуються в усіх веб-застосунках. Для роботи із забезпеченням, яке використовує бази даних, необхідно вивчити основи SQL. Далі приступаємо до вивчення веб-сервісів, а потім – популярної баг-трекінгової системи Jira і потужного набору інструментів для тестування API – Postman. Створення програмного продукту зазвичай ведеться у команді, тому знання методології командного розроблення є не менш важливим, ніж попередні технології. Приділіть час вивченню принципів Agile/Scrum — з їх допомогою ефективно розробляється сучасне програмне забезпечення. Методологія гнучкого розроблення є дуже важливою для тестувальника, оскільки він бере участь у виробничому циклі так само, як і розробники. Також не забудьте підтягнути вашу англійську як мінімум до рівня Intermediate. Вона потрібна для комфортного пошуку потрібної інформації в інтернеті, читання технічної документації, роботи з іноземними колегами, а також для можливої взаємодії із замовником. Все ж таки англійська в IT ще нікому не заважала, ба навіть давала нові кар'єрні можливості та вищу зарплату. Щоб ваша робота приносила вам задоволення і ви себе не змушували працювати, вам слід володіти наступними софт скілами: уважність, вміння концентруватися на задачі; ініціативність; посидючість; організованість, проактивність, націленість на результат; стресостійкість; емпатія до користувача, разом із тим – розуміння бізнес-процесів; комунікабельність; інші якості, які ми зазначили у відповідному розділі. З цими навичками та знаннями ви зможете приступати до практики. Вивчіть Git, почніть працювати над будь-яким проєктом: покрийте його тестами, напишіть тест-документацію. Опублікуйте напрацювання на GitHub – це дасть вам цінний досвід роботи з розподіленою системою керування версіями та дозволить перевірити свої навички у вирішенні реальної задачі. Декілька гарних проєктів, і повноцінне портфоліо готове, а з ним ви можете впевнено подавати резюме на вакансію мануального QA інженера.   Якщо вас цікавить автоматизоване тестування, додатково вивчіть Python або Java + фреймворк для тестування (Selenium, PyTest, Robot Framework або інший). Це дозволить вам створювати скрипти, які автоматично виконуватимуть тестування, позбавляючи вас зайвої рутини. Дуже бажано мати досвід роботи з інструментами навантаженого тестування. Це може бути JMeter, Gatling чи будь-який інший популярний аналог. Такий досвід дасть вам додаткову вагу в очах роботодавця, що зіграє вам на руку, оскільки конкуренція за місце тестувальника дуже висока. Величезною перевагою буде наявність наставника, який міг би стежити за вашим прогресом, відповідати на питання, що виникають, давати корисні поради і направляти в потрібне русло - тоді у вас буде чіткий план того, як стати тестувальником з нуля. Кар'єра QA спеціаліста Які перспективи кар'єрного розвитку у тестувальника після отримання першої роботи? Шлях QA дуже нагадує самурайський шлях розробника: Intern/Trainee, Junior, Middle, Senior, Team/Tech Lead. Найбільш коректний шлях кар'єрного зростання передбачає наступне: Робота над hard skills. Поглиблення знань та навичок у межах технологічного стеку, який ви використовуєте, а також розширення цього стеку. Дуже перспективним вважається саме автоматизоване тестування, тому на короткій дистанції найбільший успіх чекає на тих тестерів, які рухатимуться у бік програмування. Прокачування soft skills. Дуже важливо не припиняти роботу над внутрішнім стрижнем. Сюди входить безліч моментів: вміння відстоювати свої позиції, чітко аргументувати свою думку, бути приємним комунікатором, уважно та відповідально ставитися до своєї роботи, займати проактивну, ініціативну позицію в команді, працювати над підвищенням власної продуктивності тощо. Позаробочі активності. Сюди можна віднести читання технічної літератури та актуальної інформації з вашої спеціалізації, відвідування тренінгів, проходження курсів, застосування нових знань на практиці, наприклад, у створенні pet-проектів або безпосередньо на роботі. Також важливо працювати в різних компаніях, змінюючи їх приблизно раз на 1,5-3,5 роки. Це дозволяє, з одного боку, не "закостеніти" на поточній роботі, а з іншого – залишатися в тонусі, отримувати цінний досвід роботи з різними командами та проєктами, збагачувати професійний кругозір, опановувати нові та розвивати вже наявні hard та soft навички. Крім цього, зміна місця роботи раз на 2-3 роки дає відчутний приріст у зарплаті, оскільки грошова оцінка ваших знань та навичок у різних конторах може істотно відрізнятися. Говорячи про кар'єрні перспективи, ви також можете піти шляхом суттєвого розвитку hard skills і, опанувавши програмування та супутні технології, поповнити ряди розробників. Якщо ж ваша сильна сторона – це soft skills і ви плануєте зробити наголос саме на них, можете розвиватися в напрямку бізнес-аналізу або менеджменту. Зарплати QA Скористаємося літньою зарплатною аналітикою за 2023 рік від DOU – спільноти професійних українських розробників, та дізнаємось, скільки заробляють наші тестувальники. Медіанні зарплати станом на червень 2023 року: Junior QA Engineer – 800 USD Middle QA Engineer – 1800 USD Senior QA Engineer – 3300 USD QA Team Lead – 3400 USD QA Tech Lead – 4000 USD Найвищі медіанні заробітні плати у Automation QA, найнижчі – у Manual QA, причому різниця на рівнях Middle та Senior може сягати більш ніж 1000 USD на користь автоматизованих тестерів. Найбільш оплачуваними мовами програмування у QA фахівців є: TypeScript – 3350 USD. Kotlin – 3300 USD. Java – 2838 USD. C# – 2750 USD. Ruby – 2652 USD. Python – 2500 USD. JavaScript – 2220 USD. SQL – 1661 USD. Інші мови – 1955 USD. Вище наведено саме медіанні зарплати. Англійська також впливає на грошову винагороду як новачків, так і досвідчених фахівців QA. Логіка залишається незмінною – що краще знаєш англійську, то більше отримуєш. Підсумки У цій статті ми постаралися зробити максимальне охоплення теми тестування. Була розглянута не лише спеціальність тестувальник, а й дві її надмножини — QC та QA. Зараз лінії розмежування між цими трьома професіями за великим рахунком стерті і простежуються лише у серйозних компаніях. У більш дрібних тестувальник, QA можуть запросто бути синонімами. Тим не менш, у нашій статті висвітлено ті технології та галузі знань, які підійдуть як тестувальнику, так і QA інженеру. Також, ми розглянули відгалуження Manual QA та Automation QA. Як з'ясувалося, без знання мануального тестування вам не стати автоматизованим тестером. Адже як можна писати автотести, якщо ти в принципі не розумієш, що, де і як досліджувати на предмет багів? Незважаючи на високу конкуренцію за місце тестувальника, кількість вакансій залишається однією з найбільших на ринку праці в IT. Перегляньте популярні ресурси з працевлаштування в IT і ви самі в цьому переконаєтеся. Тому нами й були вказані деякі необов'язкові технології — ми хочемо озброїти наших читачів максимально промовистим стеком, щоб ви були на голову вищими за конкурентів. Якщо вас цікавить цей напрямок і ви хочете стати QA інженером, пропонуємо до вашої уваги добірку курсів та вебінарів ITVDN, які ви знайдете на сторінці спеціальності Quality Assurance. Бажаємо успіхів у вивченні IT! Залишайтеся з ITVDN!
Як стати Android розробником

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

Операционная система Android Языки программирования Java и Kotlin. Принципы ООП Среда Android Studio и набор инструментов Android SDK Формат обмена данными JSON Архитектура REST API Реактивное программирование Библиотека Retrofit 2 Фреймворк Dagger 2 Данные и СУБД SQLite UI/UX дизайн Шаблоны проектирования Алгоритмы и структуры данных Unit тестирование Архитектурные шаблоны Git & GitHub Google Play Английский язык Как стать Android разработчиком? Итоги   Всем привет! С каждым годом смартфоны, планшеты и другие гаджеты приобретают все большую популярность. Нам уже трудно представить хотя бы один день без них. Каким образом мы так сильно приявязались к ним? Все дело в программном обеспечении, которое находит ключ к каждому из нас: общение (телефонная связь, видеозвонки, социальные сети), просмотр мультимедийного контента, прослушивание музыки, фото- и видеосъемка, игры на любой вкус и цвет, обучающие приложения и т. д. За всем этим стоят девелоперы, разрабатывающие программы, от которых тяжело оторваться. Каждое мобильное устройство работает с использованием одной из мобильных операционных систем. Cамыми популярными из них являются Android и iOS. В контексте данной статьи нас интересует именно первая ОС. Мы расскажем вам, какие инструменты используют разработчики в создании таких увлекательных приложений на Android и как стать специалистом в этой сфере. Но прежде хотим познакомить вас поближе с данной операционной системой. Уверены, что практически каждый ее использовал (а может, и сейчас ею пользуется), однако сейчас вы узнаете некоторые интересные факты об Android: Изначально Android разрабатывалась как ОС для фотоаппаратов. ОС Android основана на ядре Linux. Компания Samsung имела возможность приобрести стартап-компанию Android Inc. в 2004-м году, однако корейцы поставили под сомнение выгодность этого предложения. Через год корпорация Google купила Android Inc. не менее чем за $50 миллионов и смогла направить полученный потенциал в нужное русло. Число активированных устройств, использующих Android, более 2 миллиардов. Первая версия Android, как и первый пакет разработчика (SDK 1.0), вышла осенью 2008 года. Тогда эту ОС многие критиковали и не верили в успешность проекта. Google Карты вычисляют дорожные пробки на основе концентрации и скорости перемещения Android устройств. Android используется не только в смартфонах и планшетах, но также и в электронных книгах, наручных часах, фитнес-браслетах, игровых приставках, ноутбуках, нетбуках, смартбуках, очках Google Glass, телевизорах, бытовых роботах, научных аппаратах, компонентах исследовательских систем на базе гаджетов, компонентах IoT (Internet of Things — “интернет вещей”) и других устройствах.     Теперь перейдем ближе к сути. Андроид разработчик — это IT-специалист, который создает, поддерживает и совершенствует программное обеспечение для мобильных устройств, использующих популярную ОС Android. Вместе с этим он задействован в процессах поддержки, улучшения и обновления разрабатываемых продуктов. Если посмотреть на количество устройств, которые используют данную ОС, можно прийти к выводу, что разработчик под платформу Андроид — очень востребован в IT, а также имеет высокие доходы. Какие технологии использует в своей работе этот специалист?     Какие языки программирования и технологии используют Android разработчики Android Каждый Android девелопер обязан знать операционную систему, под которую разрабатывает софт, а также понимать назначение и жизненный цикл Android-компонентов. Чтобы создавать эффективные мобильные приложения, вы должны понимать все аспекты устройства и работы данной ОС. Java + ООП Java — это объектно-ориентированный язык программирования со строгой типизацией. Безусловно, в создании приложений под Андроид можно использовать другие языки (C#, C/C++, Python и прочие), однако, именно Java считается флагманским в Android разработке. Поэтому в данной статье мы будем делать уклон в Java-стек. Что являет собою этот язык? Не будем углубляться в его устройство, а скажем лишь, что все Java-приложения транслируются в специальный байт-код, выполняемый виртуальной машиной JVM (Java Virtual Machine), которая может быть установлена практически на любое устройство. Это делает программы, разработанные на Java, кроссплатформенными. Какими знаниями необходимо обладать? Прежде всего необходимо знать Java и владеть методологией объектно-ориентированного программирования (ООП). Если конкретизировать: Машинная математика, переменные и типы данных, условные конструкции, логические операции, циклические конструкции, методы, рекурсия, массивы, списки, обработка исключений, суперкласс Object, обобщения (Generics, дженерики), работа с памятью. Понимание и применение пакетов (Packages) в Java; ООП, понятия объектов и классов; Механизмы наследования, умение работать с интерфейсами; Коллекции и работа с ними; Параллелизм. Помимо теоретических знаний, новичок должен сформировать необходимые навыки написания кода. Для этого мы советуем вам как можно чаще практиковаться и решать прикладные задачки из интернета либо составленные самолично. Также, советуем использовать онлайн-тренажеры, например, интерактивный тренажер от ITVDN. С его помощью вы сможете потренироваться в кодинге на Java и проверить свои знания. Kotlin Молодой и перспективный язык программирования, который поддерживает как объектно-ориентированное, так и процедурное программирование. Отличается своей простотой, гибкостью, лаконичностью, и являет собой следующий этап развития Java. Kotlin-приложения компилируются в уже упомянутый JVM байт-код, что делает этот язык полностью совместимым с Java.  На конференции для разработчиков I/O 2017 компания Google расставила акценты в Android разработке, заявив, что язык программирования Kotlin отныне позиционируется как приоритетный язык для разработчиков приложений под ОС Android. Подкреплено это было тем, что теперь новые API и библиотеки будут выпускаться сперва под Котлин. Несмотря на возрастающую популярность данного языка и поддержку со стороны Google, Java не собирается уходить из мобильной разработки, удерживая там уверенные позиции и по сей день. Так что знание обоих языков будет предпочтительным для всех, кто собирается заниматься Андроид разработкой. В любом случае, зная Java, вы безпроблемно освоите и Kotlin. Все-таки классику надо знать и уважать. Среда Android Studio и набор инструментов Android SDK Android Studio — это интегрированная среда разработки (IDE) приложений под Android. В ней вы будете создавать проекты и работать над ними. В свою очередь, студия вам предоставит всевозможные удобности для облегчения разработки софта. Android Software Development Kit — кроссплатформенный комплект средств Android разработки, включающий в себя: отладчик, набор библиотек, телефонный эмулятор, набор документации по работе в данной среде и примеры приложений. Особенно интересен в этом перечне эмулятор — программа, которая создает виртуальный мобильный девайс, где можно тестировать написанные приложения и смотреть, как они будут выглядеть на том или ином Андроид-устройстве. JSON JSON (JavaScript Object Notation) — это общий формат обмена данными. Позволяет совершать обмен информацией между программными продуктами, написанными на разных языках. Таким образом, клиент, использующий Java, может легко передавать данные на сервер, который реализован с помощью Ruby/Java/PHP. REST API REST — популярный архитектурный стиль, содержащий определенные принципы организации взаимодействия приложения либо сайта с сервером через протокол HTTP. API — это прикладной программный интерфейс. С его помощью происходит определение, каким образом следует обращаться к программе и какие ответы она обязана предоставлять пользователям. К примеру, оплачиваете футболку в интернет-магазине или покупаете билет в кино — как только вы нажимаете соответствующую кнопку, подтверждающую ваши намерения на оплату, сайт соединяет вас с платежной системой с использованием API этой системы. Но даже если система не имеет никакой интеграции с другими, API все равно используется — для общения внутри системы.  RxJava Библиотека, которая позволяет реализовать принципы реактивного программирования для JVM. Используется для оперирования событиями и потоками данных, комбинируя лучшие идеи шаблонов проектирования Observer (Наблюдатель), Iterator (Итератор) и функционального программирования. В реальной жизни влияние реактивного подхода мы ощущаем, когда на нашем смартфоне высвечивается сообщение о новом посте человека, которого мы фолловим в социальных сетях или когда нам приходит уведомление о новом сообщении из мессенджера. То есть, вместо того, чтобы каждые 10 секунд лично перезагружать страничку объекта фолловинга или свой мессенджер, мы просто ожидаем уведомления о новом посте, занимаясь своими делами. Это очень полезная опция, позволяющая не только экономить наше время, но и упрощающая нагрузку на сервер. Куда без RxJava в мобильную разработку на Java? Retrofit 2 Популярная библиотека для сетевого взаимодействия — типобезопасный HTTP-клиент для Android и Java. Позволяет легко получить и загрузить JSON (либо иные структурированные данные) через веб-сервис на основе REST. Для работы с HTTP-запросами в Retrofit используется библиотека OkHTTP. Dagger 2 Фреймворк для работы с зависимостями в Java и Android. Позволяет уменьшить количество шаблонного кода, структурировать зависимости, упрощает работу при большом количестве зависимостей, а также позволяет делать код более читабельным. SQLite Structured Query Language (SQL) — декларативный язык структурированных запросов, разработанный для взаимодействия с базами данных. Особенностью SQL является то, что он лишь описывает необходимые компоненты и желаемые результаты, не указывая, как именно эти результаты должны быть получены. Любое ПО подразумевает работу с данными, будь то обыкновенная процедура приема данных от сервера (например, скачивание файлов) либо внесение в БД информации о новом пользователе, который только зарегистрировался — умение работать с данными одинаково важно во всех сферах разработки. Исключением является только FrontEnd. Также, изучите одну из систем управления базами данных (СУБД). В Андроид разработке по умолчанию используется SQLite. Благодаря своей компактности, легкости и надежности, эта СУБД идеально подходит для разработки в электронных устройствах и программах, где стратегическое значение имеет оперативная память. XML Extensible Markup Language - расширяемый язык разметки, с помощью которого можно структурировать и хранить данные для удобства их дальнейшей обработки. XML хорошо масштабируем, сочетает в себе простой и удобный синтаксис, а также базируется на кодировках Юникод для представления содержания документов. Также, в Андроид разработке XML используется для создания интерфейса посредством объявления элементов пользовательского интерфейса и задания их расположения. UI/UX дизайн UI/UX (User Interface — “интерфейс пользователя”, User eXperience — “опыт пользователя”) дизайн — это проектирование различных пользовательских интерфейсов, в которых удобство использования (UX) настолько же важно, как и внешний вид (UI). Android девелопер в ходе создания приложений также занимается и разработкой внешнего вида приложения, а потому, должен знать, как реализовывать интерфейс, который принесет юзеру максимальный комфорт во всех аспектах использования. Обычно в UI/UX разработке под Андроид используют Material Design — стиль графического дизайна интерфейсов программного обеспечения и приложений, разработанный компанией Google, делающий уклон на естественность графической составляющей. Для работы необходимо использовать инструменты Material Components for Android.  Шаблоны проектирования Паттерны (они же шаблоны) являют собой архитектурные конструкции, описывающие общепринятые способы решения задач, которые часто возникают в ходе проектирования программного обеспечения. Всего существует более двух десятков шаблонов, однако разработчику нет необходимости владеть ими всеми. Достаточно изучить самые популярные. Алгоритмы и структуры данных Понимание алгоритмов и структур данных — обязательное требование, которому должен соответствовать каждый программист. Это необходимый фундамент, который учит разработчика писать хороший исходный код через подбор оптимальных формы представления информации и последовательности действий. Изучив структуры данных, вы будете уметь управлять уровнем сложности своих программ, делая их более доступными для понимания, а также разрабатывать приложения с высокой производительностью, которые будут рациональнее взаимодействовать с памятью. Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач на Java и Kotlin. Unit тестирование Вид тестирования, который берет на себя программист, а не тестировщик. Его основная идея заключена в написании тестов под каждую нетривиальную функцию либо метод. Цель Unit (модульного) тестирования — изоляция отдельных частей программы, чтобы продемонстрировать, что по отдельности они являются работоспособными. Таким образом происходит проверка кода на регрессию, а вместе с этим — соответствующее обнаружение ошибок. Архитектурные шаблоны В зависимости от предпочтений работодателя, от вас могут потребовать знание одного или нескольких архитектурных паттернов. Это шаблоны наивысшего уровня, которые определяют архитектуру всей программной системы. Самыми популярными являются MVC (Model-View-Controller), MVVM (Model-View-ViewModel), MVP (Model-View-Presenter), Clean Architecture. Git & GitHub Git — это популярная система контроля версий, позволяющая вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Одним из самых известных антагонистов Git является SVN — централизованная система, в отличие от децентрализованной Git. Также, в работе вам пригодится и сервис онлайн-хостинга проектов, использующий систему контроля версий. В данном случае это GitHub. В паре с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах. Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы. Google Play Магазин приложений, в котором можно размещать и скачивать приложения под Андроид. Умение его использовать — обязательно. Google Play имеет очень строгий набор политик, которым должно соответствовать ваше приложение. К слову, за аккаунт Android разработчика необходимо один раз раскошелиться на $25. Зато это дешевле, чем за аккаунт iOS девелопера — там с вас будут брать дань каждый год денежную сумму в размере $99.  Английский язык Наверное, единственный язык, которым обязаны владеть все разработчики без исключения. Его вы будете использовать во время поиска ответов как во время учебы, так и во время работы, ведь большинство новых сведений о технологиях, курсы, учебные и справочные материалы появляются в первую очередь на английском. Для работы в команде разработчиков обычно знаний языка на уровне чтения технической документации и комментирования кода вполне достаточно, однако если вы планируете вести переговоры и переписку с иностранным заказчиком, ваш уровень должен быть выше.   Как стать Android разработчиком   Как вы заметили, Android девелоперы должны знать множество различных технологий. Сейчас очень много разработчиков данного направления, но действительно хороших очень мало. Поэтому и требования к кандидатам высоки. Если вы пройдетесь по ресурсам поиска работы, то наверняка отметите, что вакансий Android Developer уровня Junior не так много, как хотелось бы, а потому за место под солнцем придется побороться. Давайте перейдем к советам касательно того, как сделать старт в Андроид разработке и начать “набирать массу”. В университетах никто не обучит вас искусству разработки на Android, поэтому вы можете: Учиться самостоятельно — по книгам или видео курсам. Записаться на соответствующие курсы для максимально эффективного обучения специальности. Второй вариант является лучшим, поскольку предусматривает более высокий уровень дисциплинированности на всем пути обучения, а также структурированную подачу необходимой информации, которой удобно пользоваться и которая отвечает современным требованиям рынка. Если вы выбираете обучение по видео курсам, то прежде всего определите подходящую для вас образовательную онлайн-платформу. Мы рекомендуем сделать выбор в пользу ITVDN. Почему именно эта платформа? Давайте мы познакомим вас с преимуществами обучения на ITVDN. ITVDN — образовательная онлайн-платформа, содержащая полноценные программы обучения по 12 самым популярным специальностям. В каталоге ITVDN свыше 180 видео курсов по различным языкам программирования и информационным технологиям. Учебная программа каждой специальности содержит:  тщательно подобранный пакет видео курсов; план обучения с нуля до уровня специалиста, который вы можете адаптировать под свой уровень; Интерактивный Тренажер навыков для формирования навыков написания кода; учебные материалы, исходники программного кода, опорный конспект, презентации к урокам; доступ к Форуму, где каждый учащийся может общаться с другими студентами, тренерами и единомышленниками; возможность персональной консультации с тренером согласно выбранному пакету подписки; возможность проходить тестирование для подтверждения знаний, полученных в результате прохождения видео курса; электронный сертификат об окончании курса после успешного завершения тестирования. Все видео курсы записываются опытными разработчиками, которые проходят соответствующую сертификацию, чем подтверждают свое мастерство владения той или иной технологией. Наши преподаватели работают в IT и в курсе всех современных тенденций в своей сфере разработки. Знакомство со специальностью мы рекомендуем начать с просмотра бесплатных вебинаров по специальности Android Developer, в частности, с одноименного вебинара Евгения Мыцы Как стать Android разработчиком, в котором отражены все самые актуальные тренды и требования. Если вы заинтересованы в изучении специальности Android Developer на ITVDN, у нас есть отличное предложение для вас. Наш образовательный портал содержит полноценную программу обучения Android разработке. Переходите по ссылке и делайте шаг навстречу желаемой профессии!  Какой бы способ обучения вы не выбрали — вначале нужно изучить язык программирования Java и довести владение им до высокого уровня. После каждой пройденной темы нужно решать практические задачи, чтобы закрепить полученные знания. В этом вам может помочь интерактивный тренажер от ITVDN, с помощью которого вы сможете проверить ваше владение навыками написания кода на Java. Продолжайте обучение и изучайте те технологии, которые мы перечислили в данной статье. Очень желательно, чтобы у вас был наставник, который мог бы следить за вашим прогрессом, отвечать на возникающие вопросы, давать полезные советы. Это может быть как преподаватель на ITVDN, так и один из ваших знакомых, который занимается Андроид разработкой и готов взять под свое крыло юного протеже. Знание английского на уровне не ниже Intermediate обязательно. Оно вам понадобится для комфортного поиска информации по Java, Kotlin и другим технологиям в интернете. Если ваши знания английского недостаточны как минимум для чтения технической литературы — обязательно подтяните их при помощи различных курсов либо интернет-материалов свободного пользования. Изучите Git, начните делать свой небольшой проект и опубликуйте его на GitHub — это даст вам ценный опыт работы с распределенной системой управления версиями и позволит проверить свои навыки в решении реальной задачи. Несколько хороших проектов, и полноценное портфолио готово. Не забывайте о Google Play, ведь именно сюда Android разработчики выкладывают готовый к использованию продукт. Актуальную информацию касательно языков и технологий, которыми необходимо владеть Android разработчику, вы можете узнать из нашего вебинара “Как стать Android разработчиком”, перейдя по ссылке. Резюмируя Android разработчик — специалист, который занимается созданием ПО под различные устройства — смартфоны, планшеты, ноутбуки, нетбуки и прочие девайсы, в основе которых лежит ОС Android. Востребованность этого разработчика очень высока, а на настоящих профессионалов то и дело ведут охоту HR-ы и рекрутеры. Изучайте все необходимые языки и технологии, практикуйтесь, а также всегда подпитывайте интерес к вашей будущей профессиональной деятельности. Не забывайте следить за новостями в мире Android. Просматривайте в YouTube видео, посвященные данной сфере разработки и впитывайте новую информацию. Для дополнительных очков мотивации подпишитесь на известных Андроид девелоперов. Пробуйте посещать различные мероприятия, посвященные разработке под Андроид, находите единомышленников и поддерживайте активность в их среде. Главное — быть целеустремленным и иметь желание развиваться в IT-сфере. Не останавливайтесь ни перед чем и тогда вас обязательно настигнет успех! Желаем вам побед в обучении! Обогащайтесь новыми знаниями и скиллами на ITVDN!
Як стати React розробником. Що потрібно знати та вміти – з нуля до рівня спеціаліста

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

Що таке React Хто такий React розробник Що має знати React розробник Основні технології Технології з екосистеми реакту Додаткові технології Як вивчити Реакт з нуля Загальний Roadmap Три способи вивчення реакту Поради Висновки   Вітаємо! В даній статті ми поговоримо про одну з найпопулярніших спеціальностей на світовому ринку ІТ-розроблення – React Developer. Ви дізнаєтеся, в чому заключається робота даного спеціаліста, переваги його основного інструменту створення ПЗ, який ще арсенал він тримає при собі, а також як стати реакт розробником і максимізувати шанси на успішне працевлаштування. Що таке React React (інколи React.js, ReactJS) – це JavaScript-бібліотека для створення гнучких та сучасних користувацьких інтерфейсів (UI) для вебзастосунків. Вона дозволяє розробити все те, з чим користувач вебресурсу може взаємодіяти напряму: привабливе оформлення сайту, ефектні анімації, адаптивний дизайн, який підлаштовується під різні девайси тощо. Додатково реакт дозволяє створювати не тільки UI, а й клієнтську логіку: авторизація на сайті, чати для спілкування з менеджерами та інша взаємодія. Зазвичай вона виноситься в окремі модулі, а також застосовуються так звані хуки (hooks). Відповідно до опитування Stack Overflow Developer Survey 2023 (90+ тисяч респондентів з усього світу), бібліотека React є найпопулярнішим інструментом для веброзробки на FrontEnd стороні. Це ж підтверджують дані від Statista – глобальної платформи даних та бізнес-аналітики. Підтримують та розвивають бібліотеку реакт девелопери з Meta (Facebook). Вона має відкритий вихідний код, а її рішеннями послуговуються такі відомі компанії, як Airbnb, Netflix, Yahoo, Atlassian, Sony, Instagram, Reddit та багато інших. Сильні сторони реакту ми висвітили в наступній таблиці: Переваги React Короткий опис Легкість Реакт проста, швидка та зручна як у вивченні, так і в роботі (легша, ніж Angular, але дещо складніша за Vue.js) Компонентна архітектура Сприяє зручному перевикористанню компонентів у різних ділянках проєкту Віртуальна DOM (Document Object Model) Дозволяє оновлювати та рендерити лише ті компоненти, які зазнали змін – це підвищує швидкодію застосунків Проста інтеграція з BackEnd Бібліотека легко інтегрується з BackEnd-інструментами на базі мови JavaScript, яку також використовує React Об’ємна екосистема Існує велика кількість додаткових інструментів та бібліотек, які спрощують і пришвидшують розроблення Дружність по відношенню до SEO Легкість оптимізації вебінтерфейсів під SEO-вимоги для кращої індексації в пошукових системах Потужна спільнота Ком’юніті реакт розробників багаточисельне та є рушієм постійного вдосконалення, а також швидкого вирішення проблем під час розроблення Для чого використовують React? Дана бібліотека гарно підходить для побудови користувацьких вебінтерфейсів, які відзначаються високими показниками динамічності та продуктивності. Компонентна архітектура дозволяє створювати такі компоненти інтерфейсу, котрі можна з легкістю використовувати повторно. Віртуальна DOM підвищує продуктивність, мінімізуючи ресурсозатратні прямі маніпуляції з реальною DOM, що робить реакт ідеальною для застосунків з високою частотою оновлень та високим ступенем інтерактивності. Хто такий React розробник React розробник – це ІТ-спеціаліст, який створює клієнтську сторону вебзастосунків за допомогою бібліотеки React. Він є фахівцем напрямку FrontEnd, і серед його основних задач – реалізація зовнішнього вигляду вебсервісів, а також створення відповідної користувацької логіки. Що робить реакт розробник? Його типові задачі: верстання клієнтської сторони вебсервісу згідно з дизайнерськими макетами; створення ефективних компонентів застосунку, які є головними будівельними блоками в реакті; написання FrontEnd-логіки; реалізація прийому-передачі даних з BackEnd-стороною та сторонніми API; створення unit-тестів для забезпечення коректної роботи кожної ділянки коду; підтримка та оновлення існуючого коду для забезпечення сумісності з новими версіями ReactJS та інших технологій; створення та підтримка проєктної документації; участь у код-рев’ю; рефакторинг написаного коду; взаємодія з іншими членами команди: FrontEnd та BackEnd розробники, Project Manager (або замовник), UX/UI дизайнери тощо. Що має знати React розробник З кожним роком очікування працедавця від Junior React Developer зростають. Це природний процес, на який впливає збільшення кількості розробницьких інструментів. Також прохідну планку підвищують нещодавня пандемія коронавірусу й повномасштабне вторгнення. Основні технології Якими технологіями необхідно володіти сьогодні, аби отримати першу роботу як реакт розробник? Головні інструменти: HTML & CSS – це основні структурні блоки вебресурсу, які відображають інформацію користувачеві. HTML як мова розмітки формує каркас і дає текст, а CSS – оформлення, стилізацію, прості анімації. Також буде важливим опанувати семантичне верстання та верстання під мобільні пристрої.   Flexbox, Grid – технології гнучкого верстання, що дозволяють створювати адаптивні вебінтерфейси, пристосовані до різних екранів: варіації моніторів, смартфони, планшети тощо.   JavaScript – ключова мова програмування, яка тримає фронтенд. Важливо володіти нею на високому рівні, адже реакт за замовчуванням використовує саме джаваскрипт. Все більшої популярності набирає TypeScript в комбінації з React JS, але про нього поговоримо згодом.   Git – інструмент керування версіями, обов’язковий для вивчення багатьом розробникам різних напрямків. Переходьте до нього якомога раніше, в ідеалі – одразу після опанування основ HTML & CSS.   GitHub / GitLab – вебсервіси для розміщення ваших проєктів з метою ведення командного розроблення та формування вашого портфоліо. Можете обирати той, який вам до вподоби: GitHub найпопулярніший у світі, а GitLab створений українцями)   REST API – архітектурний стиль для реалізації взаємодії між вебзастосунками. Маст-хев для всіх розробників, дотичних до вебу.   React – головна бібліотека героя цієї статті. Часто використовується для створення складних, інтерактивних вебзастосунків, й особливо добре підходить для односторінкових вебдодатків (SPA). Також додамо до списку володіння принципами написання чистого коду (SOLID, KISS, DRY), вміння проводити рефакторинг свого коду, а також англійську мову на рівні мінімум B1 (для зручного читання технічної документації). Але чим краще ви знаєте інгліш, тим більше шансів ви матимете на працевлаштування та більш високу ЗП. Технології з екосистеми React Окрім класичних реактівських тем, як-от віртуальний DOM, стани, хуки, запити до сервера, оптимізація пам’яті тощо, треба опанувати низку додаткових інструментів з її екосистеми, а саме: Redux / Redux Toolkit – бібліотека для управління станами на клієнті.   React Router – допомагає в реалізації клієнтської маршрутизації, що дозволяє легко керувати навігацією на стороні FrontEnd.   React Hook Form – бібліотека для ефективної та простої роботи з користувацькими даними у формах.   React Testing Library або Jest – інструменти для unit-тестування коду. Додаткові технології Інструменти вище являють мінімум, необхідний для успішного працевлаштування. Однак реалії поточного ринку ІТ такі, що аби зафіксувати увагу працедавця на собі, треба знати й уміти більше. Розглянемо найпоширеніші додаткові технології, які часто зустрічаються у вакансіях на Djinni, DOU.ua, у телеграм-пабліках, LinkedIn тощо. Інструменти стилізації. Сюди відносяться бібліотеки та фреймворки, які впливають на продуктивність верстання, наприклад Tailwind CSS, Material UI, Chakra UI, Bootstrap тощо. Також популярні CSS-препроцесори, як-от SASS, SCSS, Stylus, LESS. Все вчити необов’язково, просто оберіть із першого та другого переліку найбільш популярні інструменти й зверстайте ними декілька проєктів.   Алгоритми та структури даних (ADS) – тема, через яку має пройти кожен програміст. Як початківцю React JS, немає потреби глибоко закопуватися в ADS, але треба обов’язково знати теорію, мати розуміння щодо застосування тієї чи іншої структури даних, здатність оцінити складність алгоритму та вміти реалізовувати популярні алгоритми сортування та пошуку.   Патерни проєктування – загальноприйняті принципи вирішення популярних задач у програмуванні. Допомагають підтримувати зрозумілість, чистоту, масштабованість і читабельність коду.   Webpack – збирач модулів, котрий дозволяє скомпілювати в один файл різні складові проєкту і таким чином полегшити розроблення.   TypeScript – мова програмування, котра являє собою синтаксичний цукор для JavaScript. Все частіше у вакансіях з’являються вимоги до знання TS, особливо цю тенденцію підкреслює лютневий рейтинг мов програмування від DOU.   Figma – дизайнерський інструмент для створення UI вебсервісів. Володіння основами фігми є важливим для React FrontEnd розробників – дозволяє оперативно верстати вебсторінки з дизайнерського Figma-макету.   Next.js є фреймворком, що дозволяє вебзастосункам на базі реакт використовувати технології рендерингу на серверній стороні (SSR) та статичного генерування сайту (SSG), що позитивно впливає на продуктивність і SEO-параметри. Гарний вибір для розробників, які створюють FrontEnd, але прагнуть мати доступ до певних BackEnd-можливостей.   React Native – фреймворк з екосистеми реакту, який дозволяє створювати мобільні застосунки під iOS та Android, а також десктопні рішення. Досить часто з’являється у вакансіях, тому знання React Native може стати вашою ключовою перевагою.   Node.js – платформа для серверного розроблення, яка дозволяє створювати BackEnd-частину вебзастосунку тією ж JavaScript і таким чином перейти у FullStack. Все частіше розробники додатково вчать ноду, аби збільшити свою привабливість для роботодавця. Як вивчити React з нуля Процес вивчення Реакт технологій може бути досить заплутаним для новачків. Нижче ми розрубуємо цей гордіїв вузол. Загальний Roadmap Отже, з чого почати опанування професії Trainee / Junior React Developer та як рухатися: Знайомство з вебом. Як майбутній розробник, який створює FrontEnd-сторону для вебзастосунків, ви маєте розуміти дану предметну область: що таке інтернет і як він функціонує, як працює браузер, що таке протоколи HTTP/HTTPS, DNS, доменне ім’я, хостинг тощо.   Вивчення верстання – HTML & CSS. База, фундамент, ґрунт фронтенду. Обов’язково підкріплюйте знання верстанням вебсторінок – в інтернеті багато сервісів із безкоштовними макетами.   Поглиблені техніки: адаптивне, семантичне верстання. Реакт розробник повинен підлаштовувати свої вебрішення під екрани різних розмірів, а також враховувати вимоги сучасних пошуковиків до HTML-семантики. Курси “CSS Flexbox” та “Верстка на Grid” швидко і легко навчать вас створювати адаптивні рішення.   Вивчення Git & GitHub. Після опанування основ верстання можете переходити до Git і GitHub / GitLab. Зверстайте декілька вебсайтів і опублікуйте на віддаленому репозиторії для практики.   JavaScript. Головна мова програмування для реакт розробника. Паралельно з її вивченням регулярно практикуйтеся на Codewars та LeetCode, в ідеалі – щодня.   React. Гарний фундамент у JS відкриває двері до вирішення питання як вивчити реакт з нуля. А найкраще це робити за допомогою курсів “React Базовий” та “React Поглиблений”, котрі розкривають усі необхідні теми. Вивчайте екосистему реакту, створюйте реакт-проєкти і публікуйте їх на GitHub / GitLab. З одного боку, ви відточуватимете свої навички, а з іншого – будете формувати своє портфоліо. З огляду на стрімкий ріст популярності TypeScript, радимо вивчити й цю мову. Якщо ви знаєте JS, багато часу тайпскрипт у вас не забере. Найголовнішу, чітку та структуровану інформацію ви знайдете у нашому однойменному курсі. Три способи вивчення React Існує три головні підходи до вивчення ІТ-спеціальностей – реакту в тому числі: самостійне вивчення за безкоштовними ресурсами; навчання за платними відео курсами; навчання у форматі живих уроків онлайн або офлайн. Самостійне навчання дозволяє зекономити кошти, натомість ви самостійно шукатимете всю інформацію: навчальні ресурси, матеріали, приклади коду, поради тощо. Цей варіант підходить невеликому відсотку людей, які мають гарну самодисципліну, незмінно високу мотивацію та справжній вогонь в очах. Це дійсно самурайський шлях React розробника – не кожен зможе витримати даний темп і осилити всю дорогу. Навчання за платними відео курсами – це золота середина між вашим темпом життя та опануванням сучасної ІТ-професії. Ви одразу отримуєте структуровані та актуальні навчальні матеріали, конспекти, приклади коду, можливість консультації і т. д. Вам не потрібно шукати це все в інтернеті. При цьому ви зберігаєте гнучкість у навчанні – займайтеся вивченням спеціальності тоді, коли вам зручно. З мінусів – немає чіткого важіля впливу на вашу мотивацію та дисципліну. Ви можете тиждень позайматися й закинути відео курси на місяць, і всі ваші досягнення будуть марними. Навчання у форматі живих онлайн або офлайн занять – найефективніша форма опанування спеціальності, зокрема напрямку React Developer. Ви займаєтеся в групі (а це підтримує мотивацію та здорову конкуренцію), отримуєте інформацію в режимі реального часу від досвідченого ментора, який дає вам найважливіші знання та відповіді на всі ваші питання. Регулярні д/з з перевірками та фідбеком, курсові роботи і тестування, відповідальність перед ментором та групою – таке середовище максимально сприяє вашій концентрації на навчанні. Це найдорожчий формат навчання, але результати того варті. Поради, які працюють Які поради з вивчення реакту будуть ефективними?   Використовуйте ШІ для навчання. Штучний інтелект не повинен писати за вас код, однак його доцільно використовувати для пояснення теми, частини коду, консультації щодо покращення коду або наштовхування вас на правильне рішення задачі тощо.   Практикуйтеся якомога частіше. Стати гарним програмістом можна виключно шляхом регулярного кодингу, оскільки цей напрям дуже зав’язаний на практиці. В ідеалі писати код щодня по декілька годин (мінімум 2).   Покращуйте володіння англійською мовою. Український ринок ІТ дуже перегрітий новачками, тому вимоги до англійської зростають все більше – компанії прагнуть відібрати найкращих кандидатів. Також гарний English дозволяє претендувати на вищі ЗП, відповідно до зарплатного опитування DOU (січень 2024).   Знайдіть собі ментора. Ідеальний варіант для вивчення React напрямку – наставництво досвідченого спеціаліста. Ментор надасть вам корисні лайфхаки зі спеціальності, прискорить ваш прогрес, підтримуватиме мотивацію, а також – є певна ймовірність – може забрати до себе в компанію (або порекомендує комусь). Найкращі майданчики пошуку менторів – LinkedIn, університетські спільноти технічних ВНЗ тощо.   Долучайтеся до спільнот однодумців. Рухатися у вивченні чогось нового завжди легше, коли робиш це разом із іншими. Вже згаданий LinkedIn та Telegram мають велику кількість спільнот за інтересами. Повноцінну збірку українських ІТ-спільнот ви можете знайти на сайті Ukrainian IT Communities.   Відвідуйте онлайн та офлайн події. Це можливість знайти корисні знайомства, які можуть призвести до менторингу, працевлаштування та іншим вигодам.   Пробне інтерв’ю з розробником. Не запрошують на співбесіди? Не біда! Ви можете пройти пробне інтерв’ю зі справжнім розробником за донат. Таким чином ви отримаєте корисний зворотний зв’язок і зрозумієте свої слабкі сторони, визначите напрямок подальшого розвитку в напрямку Реакт.   Пробне інтерв’ю з рекрутером. Якщо співбесіда з розробником більше сфокусована на перевірці ваших hard навичок, то рекрутер дозволяє проаналізувати soft скіли, ваше резюме та робочі акаунти, вміння правильно підсвітити свої переваги.  Зважаючи на велику конкуренцію на ринку праці, радимо не зупинятися на Реакті. Чим більше знань та навичок у вас є, тим привабливіші ви для працедавця. Як тільки надійно опануєте даний FrontEnd-напрямок, потроху рухайтеся до BackEnd або Mobile розроблення. Для створення серверної частини вивчайте Node.js і відповідну інфраструктуру, а якщо вас більше цікавить ПЗ під гаджети – React Native. Ми якраз маємо новий курс із нейтіву українською. І новий відео курс із Node.js також!   Якщо ви зацікавлені в якомога швидшому працевлаштуванні після вивчення ІТ-спеціальності, зверніть увагу на Live Online навчання в групі з ментором на ITVDN – він має низку вагомих переваг. Кожному, хто навчається в даному форматі, з першого дня і до моменту отримання job-оферу доступна безкоштовна допомога від нашого HR-спеціаліста: визначення ваших цілей на персональній консультації; асистенція під час складання резюме (CV) та супровідного листа (Cover Letter); асистенція з оформлення LinkedIn-акаунту; тестове інтерв’ю з нашим спеціалістом + визначення ваших сильних та слабких сторін; розроблення job-search стратегії; надання додаткових корисних матеріалів. Висновки В поточних реаліях стати реакт розробником складно, але можливо. Ринок ІТ переповнений джунами, які хочуть “увійти в ІТ” швидко й без клопоту. Аби відсіяти таких кандидатів і зібрати найкращих, компанії виставляють все більше вимог. Саме тому до навчання, портфоліо, резюме та інших елементів потрібно ставитися з особливою відповідальністю. Якщо вас цікавить навчання за відео курсами, переходьте за посиланням на сторінку спеціальності React Developer. Там ви знайдете цілу збірку відео курсів, яка допоможе вам опанувати найважливіші аспекти спеціальності. Якщо ж ви надаєте перевагу максимально ефективній формі навчання, пропонуємо розглянути можливість навчання у форматі Live Online з ментором у групі за спеціальністю FrontEnd Developer на ITVDN. Успіхів у вашому вивченні react js! Залишайтеся з ITVDN!
З чого розпочинається створення сайтів? Спеціальність верстальник

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

Кто такой верстальщик? Языки верстки HTML & CSS Техники верстки Препроцессоры Графический редактор и векторная графика Инструмент упрощения верстки Bootstrap 4 Язык программирования JavaScript Библиотека jQuery Методология БЭМ Вспомогательные инструменты Система управления версиями Git Английский язык Итоги   Всем привет! Вы когда-либо задумывались о том, как происходит полный цикл разработки современного веб-сайта? С чего все начинается и как мы приходим к такому сервису, который имеет привлекательный и гармоничный внешний вид, а также богатый функционал? Давайте разберемся с этим вопросом, а заодно поближе познакомимся с героем данной статьи. Прежде всего стоит знать, что сегодня человек-оркестр, который мог бы осуществить полный цикл создания веб-сайта — очень редкое явление. Процесс реализации одной только клиентской стороны уже является трудом целой команды специалистов. Если говорить о профессиональной веб-студии, то разработка несложного корпоративного веб-сайта осуществляется следующим образом. Вначале за заказчика сайта берется менеджер по продажам. Он общается с клиентом через телефон, электронную почту, при личной встрече. Обсуждает все детали возможного сотрудничества. Задача менеджера по продажам — решить все финансовые и юридические нюансы, связанные с созданием сайта. После заключения договора и оплаты услуг наступает звездный час PM`а (менеджер проекта), который и управляет проектом. Он ответственен за координацию действий команды разработчиков: проектирование и расстановка приоритетов, планирование выполнения задач, контроль, своевременное решение проблем, согласование промежуточных и конечных этапов создания и продвижения сайта. PM является связующим звеном между заказчиком и разработчиками: он плотно сотрудничает с клиентом, выясняет его требования, желания, предпочтения, затем конвертирует всю информацию в понятный команде девелоперов вид. После определения требований за работу берется веб-дизайнер. Данный специалист занимается графической и художественной составляющими сайта. В этой секции веб-кухни происходит создание красивого и приятного интерфейса с удобным размещением кнопок, меню и других элементов веб-сайта. На выходе получаются макеты, которые учитывают различные платформы потенциальных посетителей (стандартные и широкоформатные экраны ПК, планшеты, мобильные устройства и т. д.). Результат работы веб-дизайнера — графическая схема с указанием оттенков, отступов и других параметров веб-сайта в статическом виде, которая максимально точно отображает внешний вид будущего сайта. Фактически, это точный рисунок сайта. Готовый макет передается в руки верстальщика. Теперь при помощи различных элементов языка разметки веб-страницы графические элементы дизайна (рисунки, шрифты, таблицы и т. д.) будут переведены в понятный для браузера формат. Можно сказать, что он создает текстовый макет того, что придумал дизайнер. После того, как страница сверстана и проверена в различных браузерах на правильность отображения, она передается в работу специалисту, который подключает необходимый клиентский функционал, используя JavaScript-фреймворки, библиотеки и сопутствующие технологии. Как правило это FrontEnd разработчик. Затем начинается работа BackEnd разработчика, который занимается реализацией серверной стороны веб-сайта (базы данных, серверная архитектура, программная логика). Обработка пользовательских запросов, хранение и оперирование пользовательскими данными, аутентификация, оптимизация функциональных возможностей сайта и многое другое — обязанности бэкендщика. С уже готовым сайтом работают те специалисты, которые ответственны за его наполнение и продвижение в поисковых системах: контент-менеджер, специалист по контекстной рекламе, SEO-специалист, копирайтер и другие. Сегодня же нас интересует именно тот, кто превращает графику в узнаваемый браузером формат — верстальщик. Разберемся в специфике его работы и навыках, которыми должен обладать потенциальный кандидат на данную должность.   Кто такой верстальщик? Сразу дадим определение терминам, которые важны для составления целостной картины. Верстальщик — это специалист, который занимается версткой интернет-страниц. Верстка — процесс создания визуальной составляющей сайта. Структура самого сайта задается языком гипертекстовой разметки HTML, а каскадная таблица стилей CSS описывает его внешний вид. Проще говоря, HTML задает каркас страницы, а CSS занимается его облагораживанием (цвет, шрифты, стили, расположение, отображение блоков и т. д.). Если говорить о профессиональной верстке, то она происходит согласно заранее разработанному макету, который обычно создает веб-дизайнер, знающий тонкости своего ремесла. После получения графического документа от дизайнера верстальщик использует Photoshop или другие аналоги для извлечения необходимой информации (Illustrator, Sketch, Figma и другие): используемые шрифты, иконки, картинки, точные кодировки цветов, размеры элементов в пикселях, их точное расположение. Только после такой подготовительной работы герой нашей статьи может открыть среду написания кода и приступить к верстке. Давайте узнаем, каков арсенал инструментов использует верстальщик в своей работе.   Какие языки / технологии / инструменты применяет верстальщик?   HTML & CSS Языки верстки, которые мы уже упоминали. Являются главными инструментами верстальщика. Без них не обходится создание ни одного веб-сайта. HTML определяет его структуру (костяк), а CSS — внешний вид (вся остальная надстройка).   Техники верстки Для создания качественных веб-сайтов необходимо использовать специальные техники, которые упрощают верстку, делая код понятным и легко масштабируемым. Таким образом, выделяют три вида верстки:   фиксированная; резиновая; адаптивная. Фиксированную верстку применяли еще при создании самых первых сайтов. Тогда они были простые, не требовали какой-либо оптимизации и кроссбраузерности, а потому не было потребности в разработке новых сайтостроительных техник. При фиксированной верстке ширина сайта всегда одинаковая вне зависимости от разрешения экрана. Это самый простой подход к реализации верстки, но при этом самый непопулярный, поскольку сегодня пользователи используют множество моделей компьютеров, ноутбуков, телефонов и планшетов для выхода в сеть. В связи с этим, разрешение экранов варьируется от 200 до 3000 пикселей. Резиновая верстка способна менять размеры сайта в зависимости от размерности экрана. Таким образом, проблемы фиксированного вида решаются, однако сама процедура набора страницы усложняется. Верстальщику приходится думать о том, как растянуть картинки, чтобы они не потеряли в качестве и корректно отображались на всевозможных девайсах. Ну и о производительности не забывать. Кому нужен сайт, который будет прогружаться вечность? Адаптивная верстка является самой сложной. Сайт помимо размеров меняет свой внешний вид в зависимости от размеров устройства, на котором воспроизводится. Ориентирована в первую очередь на мобильные устройства, оттого и имеет сегодня большой спрос. Также, качественная верстка должна обладать следующими свойствами: семантичность; кроссбраузерность; валидность. Семантика в верстке означает соответствие тегов информации, которая находится внутри них. С ее использованием код становится чище, читабельнее и лаконичнее. Более того, поисковые системы начинают лучше воспринимать такие сайты, повышая их позиции при ранжировке.    Кроссбраузерность означает, что разработанный сайт должен качественно отображаться во всех популярных браузерах (Mozilla Firefox, Opera, Google Chrome, Safari, IE). Почему она так важна? Все дело в том, что один и тот же сайт может по-разному отображаться в разных браузерах. Не будем заглядывать за кулисы этого явления — просто подчеркнем, что современные сайты обязаны отвечать требованию кроссбраузерности. Валидность веб-сайта означает соответствие его HTML-кода стандартам W3C (Консорциум Всемирной паутины). Валидация предусматривает соблюдение корректности кода страниц, отсутствие синтаксических ошибок, наличие вложенности тегов и т. д. Проверка HTML-кода выполняется при помощи специальной программы — валидатора кода. Она находит и фиксирует все несоответствия со стандартом, указывая на их местонахождение и формулируя, где проблемный участок и почему он должен быть исправлен. Естественно, важным является и тот нюанс, что ваш код должен быть минимален, а интернет-страница, созданная с его помощью, должна быстро прогружаться. Ниже мы также рассмотрим вспомогательные инструменты, которые обеспечивают выполнение этих условий.   Sass/SCSS Препроцессор, который является расширением CSS. Если современный CSS сам по себе простой и мощный инструмент, то в комбинации с препроцессором это вовсе боевая машина для качественного оформления контента на интернет-страницах. Польза Sass/SCSS особенно отчетливо ощущается в больших проектах, когда количество строчек кода кажется бесконечным. Препроцессор позволяет использовать функции, недоступные в самом CSS. Например, переменные, вложенности, миксины, наследование и другие вещи, которые упрощают и делают удобным написание CSS-кода.   Photoshop / Illustrator / Sketch / Figma / Avocode Графический редактор, как мы уже упоминали, необходим верстальщику для извлечения необходимой информации из предварительно подготовленного макета: используемые шрифты, иконки, картинки, точные кодировки цветов, размеры элементов в пикселях, их точное расположение. Какой редактор был использован для создания макета, такой следует использовать и для изъятия необходимых данных.   SVG Вдогонку за графическими редакторами упомянем об SVG. Это язык разметки масштабируемой векторной графики. Изображения на странице, сделанные с помощью SVG, корректно отображаются на экранах с различным разрешением не теряя при этом своего качества, в отличии от традиционных растровых .jpeg, .png и других. Верстальщик должен уметь работать с SVG, поскольку он важен для оптимизации и быстродействия сайта, а также используется для реализации анимации векторных изображений, разработки прелоадеров и других интерактивностей.   Bootstrap 4 Это HTML, CSS, JS фреймворк для разработки кроссбраузерных веб ориентированных интерфейсов. Bootstrap являет собой набор инструментов от Twitter, созданный для облегчения разработки веб-приложений и сайтов. Он использует CSS и HTML для типографии, форм, кнопок, таблиц, сеток, навигации и т. д., а также дополнительные расширения JavaScript, упрощающие работу веб-разработчика. Данные свойства позволяют коду, написанному с применением Bootstrap, быть переиспользуемым, понятным и компактным. Основные преимущества фреймворка: высокая скорость верстки; кроссбраузерность и кроссплатформенность; наличие хорошей документации, большого сообщества и огромного количества разнообразных обучающих материалов; низкий порог вхождения (необходимо знать лишь основы HTML, CSS, JavaScript и jQuery).    JavaScript Язык программирования, который повсеместно используется в создании сайтов, даже в реализации их серверной стороны. Становиться ниндзя JavaScript верстальщику не нужно — это задача FrontEnd разработчика, который прорабатывает логику клиентской стороны веб-приложений. Герою статьи JS необходим для реализации различных динамических элементов на странице: анимации, слайдеры, калькуляторы и т. д. Также, этот язык применяется для подключения различных библиотек и определенных взаимодействий с ними. Знание базы JavaScript необходимо для комфортного использования библиотеки jQuery, подробнее о которой пойдет далее речь.     jQuery Небольшая, быстрая и многофункциональная JavaScript-библиотека, для работы с которой необходимо владеть HTML, CSS и JavaScript на базовом уровне. Она упрощает процесс программирования на JS и представляет объемные решения распространенных задач в виде методов, которые вызываются одной строчкой кода. Этой особенностью jQuery приносит ощутимую пользу верстальщикам. Вместо углубления в JavaScript и написания тонны кода, можно просто использовать уже готовые решения в различных задачах.   Методология БЭМ “Блок, Элемент, Модификатор” — методология, предусматривающая компонентный подход к разработке веб-страниц, в основе которого лежит принцип разделения интерфейса на независимые блоки. Подход БЭМ позволяет повторно использовать существующий код в создании других страниц с сохранением всех его свойств (размеры, шрифт, цвет и т. д.). Таким образом обеспечивается расширяемость и повторная используемость компонентов интерфейса. Соблюдение принципов БЭМ повышает качество, читаемость кода, увеличивает производительность и упрощает командную работу.   CMS (Wordpress / Opencart / Joomla / Bitrix) Content Management System — система управления контентом, являющая собой движок для обеспечения и организации процесса создания, редактирования и управления контентом. В случае отсутствия CMS разработчики были бы обязаны реализовывать дополнительную функциональность для каждой новой страницы, вносить новый контент самостоятельно программным путем и т. д. Ниже приведем пример для наглядности. Допустим, вы ведете собственный блог на специализированной платформе и у вас появилась необходимость сделать новую рубрику. Вы же не будете просить целую команду разработчиков создать новую интернет-страницу с нуля со всей функциональностью либо дорабатывать уже существующую под каждый новый пост? А в случае с интернет-магазином вы были бы вынуждены проделывать такие манипуляции для каждого нового товара. Вот для этого и существуют CMS. Они предоставляют удобную администраторскую панель вашему сайту, с которой в дальнейшем работает контент-менеджер. В профессиональной среде процесс настройки взаимодействия движка и готового шаблона сайта называется “натяжкой” шаблона на CMS. Основные функции CMS: предоставление инструментария для работы над контентом; управление контентом — хранение, управление потоком документов, соблюдение режима доступа, контроль версий; публикация контента; представление необходимой информации в удобном для навигации и поиска виде.        Gulp / Webpack Gulp — система сборки, которая автоматизирует рутинные задачи верстальщика. В число ее обязанностей входят: минимизация кода, оптимизация изображений, тестирование, анализ качества кода и прочее. Другими словами, она используется для сбора верстки. Webpack по сравнению с Gulp обладает более широкими настройками и функционалом. Предназначенный для удобной разработки одностраничных веб-приложений с использованием JavaScript.   Git Самая популярная распределенная система управления версиями, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Таким образом, если в процессе создания программный продукт стал неправильно функционировать, есть возможность вернуться к предыдущей рабочей версии вместо длительных поисков ошибок. Также системы управления версиями являются неотъемлемым инструментом командной разработки, который дает возможность девелоперам работать над одним проектом одновременно, сохраняя внесенные изменения. Заодно удобно отслеживать выполнение задач каждым членом команды. Очень важный инструмент для любого IT-разработчика.   Английский язык Знание английского языка является одним из основных требований к верстальщику, поскольку большое количество полезной информации находится именно на англоязычных сайтах. Уровень чтения технической документации будет достаточным для комфортного пользования иностранными ресурсами.    Итоги Верстальщик — это специалист по верстке веб-страниц. Несмотря на довольно лаконичное определение, список требуемых от него знаний и навыков гораздо красноречивее. Верстальщик в 2020-м году должен владеть неплохим стеком технологий. Более того, мы привели лишь общий список инструментов. В реальности он может немного отличаться согласно направлению деятельности компании/веб-студии. Если к перечисленному добавить углубленные познания JavaScript и хорошее владение одним из фреймворков (Angular, Vue.js, React) + парочка смежных технологий, получится полноценный FrontEnd разработчик.  Отдельно отметим портфолио верстальщика. Оно должно быть в наличии у данного специалиста в обязательном порядке, иначе шансы получить job-оффер ничтожно малы (не забывайте и о конкуренции). В портфолио вам необходимо продемонстрировать все свои навыки и умения. Это может быть десяток проектов с использованием по крупице различных технологий в каждом, либо пара-тройка, но с концентрированием всех ваших умений и познаний в верстке. В этом случае пригодятся специальные ресурсы с опубликованными бесплатными макетами, которые можно брать и верстать, набивая руку и набираясь опыта. Также, если вы заинтересованы в изучении ремесла верстальщика, ITVDN имеет для вас хорошие новости. На нашем образовательном ресурсе вы сможете освоить данную специальность за 4 месяца. Учебная программа каждой специальности, в том числе и верстальщика, содержит: тщательно подобранный пакет видео курсов; план обучения с нуля до уровня специалиста, который вы можете адаптировать под свой уровень; Интерактивный Тренажер навыков для формирования навыков написания кода; учебные материалы, исходники программного кода, опорный конспект, презентации к урокам; доступ к Форуму, где каждый учащийся может общаться с другими студентами, тренерами и единомышленниками; возможность персональной консультации с тренером согласно выбранному пакету подписки; возможность проходить тестирование для подтверждения знаний, полученных в результате прохождения видео курса; электронный сертификат об окончании курса после успешного завершения тестирования. Все видео курсы записываются опытными разработчиками, которые проходят соответствующую сертификацию, чем подтверждают свое мастерство владения той или иной технологией. Наши преподаватели работают в IT и в курсе всех современных тенденций в своей сфере разработки. Знакомство со специальностью мы рекомендуем начать с просмотра бесплатных вебинаров по специальности верстальщик, в частности, с вебинара Елены Хижняк “Как стать верстальщиком?”, в котором отражены все самые актуальные тренды и требования. Возможно, нас читают практикующие верстальщики? С удовольствием прочтем вашу точку зрения на позиции, изложенные в данной статье. Также, будем рады любым вопросам и замечаниям от всех читателей! Ну а тем, кто решил выбрать профессию верстальщик мы желаем быть упрямыми, оптимистичными и с неугасаемым огоньком жажды знаний в глазах.Успехов и вдохновения на вашем пути!
ТОП-10 найкращих відео з Python

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

Вітаємо! Друзі, цього разу ми підготували для вас підбірку найкращих вебінарів від ITVDN за напрямком Python. До рейтингу увійшли як пізнавальні вебінари з актуальною інформацією, так і вебінари, орієнтовані на прокачування ваших навичок створення коду. Давайте приступимо до їх розгляду.     Пишемо API додаток на Python за допомогою FastAPI та Docker   Автор – Антон Козаченко, Python Back-end Developer з Латвії   На вебінарі автор розбирає приклад написання API додатку на Python за допомогою фреймворку FastAPI та інструменту Docker. Розглядається фреймворк FastAPI, також створюється декілька методів API. Автор розглядає Docker, пише свою конфігурацію та запускає контейнери. Додатково відбувається покриття API додатку тестами.   План вебінару:   Ознайомлення із фреймворком FastAPI. Написання кількох endpoint-ів API. Написання тестів для цих endpoint-ів. Написання конфігурації для Docker. Запуск додатку в Docker containers. Запуск тестів.     2. Підготовка до технічної співбесіди з Python ➤ Як пройти співбесіду на Junior Python?   Авторка – Людмила Міщенко, Python розробниця   Вебінар присвячений ключовим моментам технічної співбесіди на позицію Junior Python Developer. Розглядаються найчастіші питання, логічні та технічні завдання. Ви дізнаєтесь, як правильно готуватися до співбесіди. Приділено увагу тому, як отримати користь від проходження технічного інтерв'ю та як залишити приємне враження про себе у спеціалістів компанії. Також автор порушує теми важливості роботи над помилками та аналізу співбесіди.   План вебінару:   Як готуватися до технічної співбесіди? На які запитання має знати відповідь Junior Python Developer? На що у відповідях кандидатів найбільше звертають увагу? Чи потрібні (і яку роль грають) pet-projects для фахівця-початківця? Як не розгубитися під час кодингу на співбесіді? (+ поради та лайфхаки) Робота над помилками та аналіз фідбеку після співбесіди.     3. Що краще: Django, Flask чи FastAPI? Огляд фреймворків для веб-розроблення на Python.   Автор – Максим Кузнєцов, Senior Python Developer   В даному вебінарі розглядаються декілька популярних веб-фреймворків на Python (Django, Flask, FastAPI). Автор порівнює їхню продуктивність і пояснює, для яких цілей який фреймворк більше підійде.   План вебінару:   Огляд Django та його фічі. Огляд Flask та його фічі. Огляд FastAPI та його фічі. Порівняння продуктивності. Коли який фреймворк вигідно застосовувати. Відповіді на питання.   Даний вебінар буде цікавий Python розробникам-початківцям, і тим, хто збирається перейти на Python і хоче спланувати своє навчання з урахуванням особливостей різних інструментів.     4. Створення гри BlackJack на Python з нуля (Частина 1 та Частина 2)   Автор – Артем Мураховський, Python Developer, тренер-консультант CyberBionic Systematics   "Створення гри BlackJack на Python" – це дводенний інтенсивний тренінг зі створення відомої карткової гри. Вебінар покликаний у захоплюючій формі познайомити новачків з Python та попрактикуватися у написанні коду цією мовою. Мінімум теорії та максимум практики – що ще потрібно для швидкого старту в програмуванні?   Чому можна навчитися, вивчивши відео матеріали тренінгу та випробувавши отримані знання на практиці:   Писати просту програму мовою Python Розбивати завдання на дрібні підзадачі та успішно їх вирішувати Проєктувати архітектуру програм Писати програми на рівні класів Розв'язувати алгоритмічні задачі Розуміти призначення патернів проєктування   План першого відео (першої частини):   Знайомство із середовищем розроблення PyCharm та мовою програмування Python. Розбір основних елементів мови. Створення архітектури програми на рівні класів. Поліпшення архітектури з використанням патернів. Створення перших об'єктів.   План другого відео (другої частини):   Створення структури проєкту. Наслідування та композиція. Створення спеціальних типів даних. Зв'язок компонентів між собою. Тестування. Підбиття підсумків.     5. Об'єктно-орієнтоване програмування в Python ➤ Що таке ООП та як воно працює.   Автор – Бондаренко Кирило, Data Scientist / Python Developer, "CreatorIQ"   Об'єктно-орієнтоване програмування (ООП) – дуже важлива парадигма у сучасному програмуванні. Цей вебінар розкриває основні принципи ООП і показує, як вони реалізовані у мові Python.   Наскільки важливим є знання ООП для Python розробника? Як часто доводиться використовувати ООП у роботі? У яких проєктах, у яких завданнях? Чи візьмуть вас працювати без знання ООП? Ці та інші питання будуть поставлені в даному вебінарі.   Теми, що розкриваються:   Що таке ООП і як це працює у Python. Приклади розв'язання задач через ООП. Підбиття підсумків. Відповіді на питання.     6. Створення чат-бота "прогноз погоди" на Python   Автор – Артем Мураховський, Python Developer, тренер-консультант CyberBionic Systematics   Якщо ви хочете випробувати свої сили в програмуванні на Python і створити власного Telegram-бота, який сповіщатиме вас про актуальну погоду, цей відеоролик буде дуже доречним.   Підійде як новачкам, які ніколи не програмували, так і розробникам-початківцям, які бажають поглибити і застосувати на практиці свої знання Python.   План:   Рівні моделі мережі Інтернет. Що таке бібліотеки на Python. Що таке API. Telegram API. Бібліотеки для Telegram API. Робота з чистим API.   Чого ви навчитеся:   Реалізовувати нескладну програму мовою Python, яка прогнозуватиме погоду. Основам базового синтаксису мови Python. Теоретичним основам API – зрозумієте, як він працює. Працювати із запитами. Створювати роботів для месенджеру Telegram. Використовувати існуючі сервіси для прив'язки до вашої програми.     Автоматизація парсингу сайтів на Python   Автор – Артем Мураховський, Python Developer, тренер-консультант CyberBionic Systematics   В епоху машинного навчання інформація стає нафтою XXI століття. Проєкти, пов'язані зі збором та аналізом даних, виходять на перші позиції у глобальних компаніях та в стартапах.   Як збирати та обробляти інформацію? Залежно від цілей проєкту, дані можуть збиратися абсолютно різні. На вебінарі ми розглянемо один із найпоширеніших підходів – парсинг сайтів.   Ми візьмемо один із популярних сайтів з робочими вакансіями та на його прикладі розберемо бібліотеки для парсингу веб-сайтів, бібліотеки для роботи із запитами. Розберемо види популярних баз даних і зрозуміємо, де і яку потрібно використовувати.   План вебінару:   Що таке парсинг веб-сайтів? Бібліотеки для парсингу веб-сайтів. Бібліотеки для роботи із мережею. Написання коду парсерів. SQL та NoSQL – за яких завдань який тип використовується. Написання коду менеджерів баз даних.     8. Створення простої казуальної гри на Python   Авторка – Людмила Міщенко, Python розробниця   На вебінарі буде розглянуто реалізацію простої гри на Python. Суть гри полягає у навчанні людей, особливо дітей, вести еко-дружній спосіб життя – правильно сортувати сміття. Тобто, користь буде не тільки для вас у отриманні нових знань у програмуванні, а й у спробі виявити більше турботи про нашу планету.   План вебінару:   1. Постановка задачі.   а) Мета вебінару – створити свою гру на Python, яка вчить сортувати сміття; б) правила гри – обирати правильний кошик для різного типу сміття; закінчення гри за таймером; наприкінці гри користувач отримує суму зароблених балів за правильно обрані кошики.   2. Реалізація програми:   а) встановлення модулів; б) завантаження потрібних зображень; в) написання логіки влучення сміття в кошик (поведінка кошика); г) оголошення та опис елементів сміття (органіка, пластик, папір) – клас поведінки сміття; д) виклик написаних класів та запуск гри.   3. Отримання результатів:   а) запуск та тестування коду; б) проходження гри; в) аналіз виконаної роботи – додавання та зміна умов гри, оптимізація коду, майбутні доопрацювання.       9. Структури даних у Python. Рівень Advanced   Автор – Бондаренко Кирило, Data Scientist / Python Developer, "CreatorIQ"   Якщо ви маєте труднощі з розумінням документованих структур мови Python, таких як list, tuple, dict, set, цей вебінар для вас. Ми розбиратимемося з тим, як написати такі структури даних, як черги (queues), дерева (trees), розглянемо роботу зі вкладеними словниками (nested dicts), а також застосування ООП для розширення можливостей існуючих структур даних.   Матеріал цієї зустрічі буде корисний Python розробникам із різних областей, зокрема Data Science спеціалістам та web-розробникам.   План вебінару:   Робота з розширенням структур даних мови через наслідування та ООП. Робота з комбінованими структурами, такими як nested dict, defaultdict, named tuple і т. д. Написання незадокументованих структур даних, таких як дерева, черги, зв'язані списки та інші.   Цей вебінар буде цікавий розробникам, які добре знайомі з Python, знають про імпорт бібліотек і хочуть заглибитися в роботу зі структурами даних для більшої ефективності роботи з ними.     10. Як стати Python розробником у 2021 році?   Автор – Артем Мураховський, Python Developer, тренер-консультант CyberBionic Systematics   В останні роки мова програмування Python стрімко набирає популярність. За даними Stack Overflow Developer Survey 2019, в якому взяли участь понад 87 тисяч IT-фахівців з різних країн, Python випередила навіть таких постійних та безперечних лідерів, як Java, С# та С++.   Зараз вона широко використовується в Data Science (машинне навчання, аналіз даних, візуалізація), розробленні вбудованого програмного забезпечення та реалізації серверної частини веб-додатків. Також за допомогою Python можна створювати ігри, десктопні та мобільні програми, писати тести для ПЗ та спрощувати адміністрування ОС.   Програма зустрічі:   Хто такий Python розробник і що він робить? Які знання, вміння та навички потрібні Python розробнику? Вимоги до розробників рівня Junior. З чого розпочати вивчення мови Python? Складання плану навчання. Рекомендована література. Відповіді на питання.   Вивчайте Python розроблення на ITVDN!
Notification success