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

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

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

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

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

Результати пошуку за запитом: Курс - Практикум по frontend разработке*
Огляд основних SQL запитів

Автор: Армен Маїлян

Види SQL запитів Типи SQL запитів за їх видами Створення та налаштування бази даних Приклади простих запитів SQL до баз даних SELECT INSERT UPDATE DELETE DROP Приклади складних запитів до бази даних MS SQL Висновки Кожен сайт в Інтернеті, будь-який проєкт, який обробляє значний обсяг інформації, змушений зберігати цю інформацію у тих чи інших базах даних (БД). Переважна більшість проєктів інформацію зберігають у БД реляційного типу, роблячи записи в різних подобах таблиць. Як внесення нових записів, так і звернення до наявних здійснюється завдяки використанню запитів, що складаються конструкціями SQL (structured query language) – непроцедурної декларативної мови структурованих запитів. У нашому випадку це означає, що, використовуючи конструкції SQL ми будемо звертатися до БД, повідомляючи, що потрібно зробити з даними, але не вказуючи яким саме способом це потрібно зробити. Фактично SQL є набором стандартів для написання запитів до БД. Остання чинна редакція стандартів мови SQL - ISO/IEC 9075:2016. Ґрунтуючись на вказаних стандартах мови SQL, ряд організацій випустили свої розширені версії стандартів зазначеної мови. Подібні версії іноді називають діалектами SQL. Варіанти специфікацій SQL розробляються компаніями та співтовариствами і служать, відповідно, для роботи з різними СУБД (Системами Управління Базами Даних) – системами програм, заточених під роботу з продуктами зі своєї інфраструктури. Найбільш застосовувані сьогодні СУБД, що використовують свої стандарти (розширення) SQL: MySQL — СУБД, що належить компанії Oracle. PostgreSQL — вільна СУБД, що підтримується та розвивається спільнотою. Microsoft SQL Server — СУБД, що належить компанії Microsoft. Застосовує діалект Transact-SQL (T-SQL). Діалекти SQL, які створюються, специфікуються і використовуються різними організаціями, мають як спільні риси, так і ряд відмінностей у можливостях розширень. Загальними рисами діалектів є основні конструкції, які застосовуються практично без відмінностей у багатьох реляційних БД. Основні відмінності діалектів полягають у відмінностях використаних типів даних, кількості, реалізації та детальних можливостей команд. Різні діалекти застосовують як різні набори зарезервованих слів, так і різні набори команд. Тут ми розглядатимемо запити, застосовуючи конструкції зі специфікацій діалекту T-SQL. Торкнемося класифікації SQL запитів. Виділяють такі види SQL запитів: DDL (Data Definition Language) – мова визначення даних. Завданням DDL-запитів є створення БД та опис її структури. Запитами такого виду встановлюються правила того, в якому вигляді різні дані будуть розміщуватися в БД. DML (Data Manipulation Language) – мова маніпулювання даними. До запитів цього типу входять різні команди, використовуючи які безпосередньо здійснюються деякі маніпуляції з даними. DML-запити потрібні для додавання змін до вже внесених даних, для отримання даних з БД, для їх збереження, для оновлення різних записів і для їх видалення з БД. До елементів DML-звернень входить основна частина SQL операторів. DCL (Data Control Language) – мова управління даними. Включає запити та команди, що стосуються дозволів, прав та інших налаштувань СУБД. TCL (Transaction Control Language) – мова управління транзакціями. Конструкції такого типу застосовують для керування змінами, які здійснюються з використанням DML-запитів. Конструкції TCL дозволяють нам проводити об'єднання DML запитів у набори транзакцій.   Основні типи SQL запитів за їх видами: Нижче ми розглянемо практичні приклади застосування SQL запитів для взаємодії з БД, використовуючи запити двох категорій – DDL та DML.   Створення та налаштування бази даних Нам потрібна буде для прикладів БД MS SQL Server 2017 та MS SQL Server Management Studio 2017. Розглянемо послідовність дій того, як створити запит SQL. Скориставшись Management Studio, спочатку створимо новий редактор скриптів. Щоб це зробити, на стандартній панелі інструментів оберемо «Створити запит», або скористаємось клавіатурною комбінацією Ctrl+N. Натискаючи кнопку «Створити запит» у Management Studio, ми відкриваємо тестовий редактор, використовуючи який можна виконувати написання SQL запитів, зберігати їх і запускати. Використовуємо для початку прості запити SQL, завдяки яким можна створити та налаштувати нову БД, щоб отримати можливість надалі з нею працювати. Створимо нову БД з ім'ям “b_library” для бібліотеки книг. Щоб це зробити, наберемо в редакторі такий SQL запит: CREATE DATABASE b_library; Далі виділимо введений текст і натиснемо F5 або кнопку "Виконати". У нас створиться БД "b_library". Усі подальші маніпуляції ми можемо провести із цією створеною нами БД. Для цього спочатку підключимося до цієї бази: USE b_library; У БД "b_library" створимо таблицю авторів "tAuthors" з такими стовпцями: AuthorId, AuthorFirstName, AuthorLastName, AuthorAge: CREATE TABLE tAuthors ( AuthorId                      INT                  IDENTITY (1, 1) NOT NULL, AuthorFirstName        NVARCHAR (20)        NOT NULL, AuthorLastName         NVARCHAR (20)    NOT NULL, AuthorAge                   INT                              NOT NULL ); Заповнимо нашу таблицю такими авторами: Олександр Пушкін, Сергій Єсенін, Джек Лондон, Шота Руставелі та Рабіндранат Тагор. Для цього використовуємо такий SQL запит: INSERT tAuthors VALUES ('Александр', 'Пушкин', '37'), ('Сергей', 'Есенин', '30'), ('Джек', 'Лондон', '40'), ('Шота', 'Руставели', '44'), ('Рабиндранат', 'Тагор', '80'); Ми можемо подивитися в «tAuthors» записи шляхом відправлення до СУБД простого SQL запиту: SELECT * FROM tAuthors; У нашій БД «b_library» ми створили першу таблицю «tAuthors», заповнили «tAuthors» авторами книг і тепер можемо розглянути різні приклади запитів SQL, якими ми зможемо взаємодіяти з БД. Приклади простих запитів SQL до баз даних. Розглянемо основні запити SQL. SELECT 1) Виведемо всі наявні у нас БД: SELECT name, database_id, create_date FROM sys.databases; 2) Виведемо всі таблиці у створеній нами раніше БД «b_library»: SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' 3) Виводимо ще раз наявні у нас записи за авторами книг зі створеної вище «tAuthors»: SELECT * FROM tAuthors; 4) Виведемо інформацію про те, скільки у нас є записів рядків у «tAuthors»: SELECT count(*) FROM tAuthors; 5) Виведемо з «tAuthors» два записи, починаючи з четвертого. Використовуючи ключове слово OFFSET, пропустимо перші три записи, а завдяки використанню ключового слова FETCH – позначимо вибірку наступних 2 рядків (ONLY): SELECT * FROM tAuthors ORDER BY AuthorId OFFSET 3 ROWS    FETCH NEXT 2 ROWS ONLY; 6) Виведемо з «tAuthors» всі записи із сортуванням в алфавітному порядку за першою літерою імені автора: SELECT * FROM tAuthors ORDER BY AuthorFirstName; 7) Виведемо з «tAuthors» дані, попередньо по AuthorId відсортувавши їх за спаданням: SELECT * FROM tAuthors ORDER BY AuthorId DESC; 8) Виберемо записи з "tAuthors", значення AuthorFirstName у яких відповідає імені "Александр": SELECT * FROM tAuthors WHERE AuthorFirstName='Александр'; 9) Виберемо з "tAuthors" записи, де ім'я автора AuthorFirstName починається з "се": SELECT * FROM tAuthors WHERE AuthorFirstName LIKE 'се%'; 10) Виберемо з "tAuthors" записи, в яких ім'я автора (AuthorFirstName) закінчується на "ат": SELECT * FROM tAuthors WHERE AuthorFirstName LIKE '%ат' ORDER BY AuthorId; 11) Зробимо вибірку всіх рядків із «tAuthors», значення AuthorId у яких дорівнює 2 або 4: SELECT * FROM tAuthors WHERE AuthorId IN (2,4); 12) Виберемо в "tAuthors" такий запис AuthorAge, значення якого - найбільше: SELECT max(AuthorAge) FROM tAuthors; 13) Проведемо вибірку з "tAuthors" по стовпцях AuthorFirstName та AuthorLastName: SELECT AuthorFirstName, AuthorLastName FROM tAuthors; 14) Отримаємо з "tAuthors" всі рядки, у яких AuthorId не дорівнює трьом: SELECT AuthorId, AuthorFirstName, AuthorLastName  FROM tAuthors WHERE AuthorId!='3'; INSERT INSERT – це вид запиту SQL, у разі застосування якого СУБД виконує додавання нових записів у БД. Додамо до «tAuthors» нового автора – Вільяма Шекспіра, 51 рік. Відповідно, у полі AuthorFirstName додасться Вільям, в AuthorLastName додасться Шекспір, в AuthorAge – 51. До AuthorId, у нашому випадку, автоматично додасться значення, інкрементоване відносно попереднього на 1. INSERT INTO tAuthors VALUES ('Уильям', 'Шекспир', '51'); Перевіримо: SELECT * FROM tAuthors;   UPDATE UPDATE – SQL запит, який дозволяє внести зміни або дописувати нову інформацію до тих записів, які вже існують. Внесемо коригування до шостого запису (AuthorId = 6). Значення змінимо для полів імені, прізвища та віку автора. UPDATE tAuthors SET AuthorFirstName = 'Лев', AuthorLastName='Толстой', AuthorAge = '82' WHERE AuthorId = '6'; Потім звернімося до БД, щоб вивести всі наявні записи: SELECT * FROM tAuthors; Ми бачимо зміни інформації в записі автора під номером 6. DELETE DELETE – SQL запит, виконуючи який у СУБД проводиться операція видалення певного рядка з таблиці в БД. Звернемося до "tAuthors" з командою на видалення рядка, де AuthorId = 5: DELETE FROM tAuthors WHERE AuthorId = '5'; Щоб побачити зміни, знову звернемося до бази для виведення всіх записів: SELECT * FROM tAuthors; Ми бачимо, що запис автора під номером 5 тепер відсутній у tAuthors і, відповідно, не виводиться з іншими записами. DROP DROP – ключове слово в SQL, яке використовується для видалення даних за допомогою запиту. Наприклад, видалення деякої таблиці з БД. Після розгляду ряду простих запитів до БД ми можемо повністю видалити нашу таблицю tAuthors, виконавши простий SQL запит: DROP TABLE tAuthors;    Далі розглянемо складні запити SQL. Приклади складних запитів до бази даних MS SQL Складні запити SQL представляють собою комбінації простих запитів. Виконуючись, прості запити повертають згруповані в проміжні таблиці набори даних. А складний запит уже маніпулює даними, отриманими завдяки простим «підзапитам». Складні запити отримуються такими способами: Переміщенням одного запиту в інший. В цьому випадку зовнішній вираз називатиметься основним запитом, а вкладений вираз - підзапитом. Застосування з SQL запитами різних операторів об'єднання результатів виконання підзапитів. Такі оператори називають реляційними. Розглянемо у SQL приклади складних запитів. Скористаємося нашою попередньою таблицею tAuthors та створимо додатково ще одну таблицю з книгами цих авторів – tBooks. У якості ідентифікатора авторів книг використовуємо значення AuthorId з "tAuthors", а назва книги - BookTitle. CREATE TABLE tBooks ( BookId             INT                  IDENTITY (1, 1) NOT NULL, BookTitle        NVARCHAR (20)        NOT NULL, Author             INT                     NOT NULL ); Заповнимо «tBooks» такими книгами: INSERT tBooks VALUES ('Руслан и Людмила', '1'), ('Кавказский пленник', '1'), ('Евгений Онегин ', '1'), ('Радуница', '2'), ('Преображение', '2'), ('Мартин Иден', '3'), ('Морской волк', '3'), ('Белый Клык', '3'); 1) Зробимо вибірку з БД усіх книг, у яких ім'я автора – «Александр»: SELECT BookId, BookTitle FROM tBooks WHERE Author = (SELECT AuthorId FROM tAuthors WHERE AuthorFirstName = 'Александр'); Отримаємо: 2) Зробимо вибірку даних із «tBooks» усіх книг, авторами яких є люди з іменами «Александр» або «Сергей»: SELECT BookTitle FROM tBooks WHERE Author = SOME(SELECT AuthorId FROM tAuthors WHERE AuthorFirstName IN ('Александр', 'Сергей')); 3) Зробимо вибірку за книгами з таблиці «tBooks», у яких імена авторів НЕ «Сергій» та НЕ «Олександр»: SELECT * FROM tBooks WHERE Author != ALL(SELECT AuthorId FROM tAuthors WHERE AuthorFirstName IN ('Александр', 'Сергей')); 4) Візьмемо таблицю «tBooks» і зробимо з неї вибірку всіх книг із зазначенням як імен, так і прізвищ авторів цих книг із «tAuthors»: SELECT tBooks.BookId, tBooks.BookTitle, tAuthors.AuthorFirstName, tAuthors.AuthorLastName FROM tBooks JOIN tAuthors ON tAuthors.AuthorId = tBooks.Author; Висновки Ми з вами розглянули декілька варіантів найпростіших і найскладніших SQL запитів. Звичайно цю статтю не варто розглядати ні як навчальний посібник, ні як вичерпний перелік можливостей запитів у T-SQL та інших діалектах. Її швидше за все можна вважати прикладом SQL запитів для початківців. Однак вона може бути для Вас відправною точкою. Існує набагато більше різних SQL запитів. Це і запити з циклічними конструкціями, і рекурсивні, і різна робота зі змінними, і інші види запитів та підзапитів. Якщо Ви хочете вивчити цю дуже важливу специфічну мову складання запитів до БД – можете пройти відповідні курси на нашому порталі ITVDN.com, обравши відповідний Вам діалект: Transact-SQL - https://itvdn.com/ru/video/ssms_tsql SQL Essential - https://itvdn.com/ru/video/sql-essential SQL Практикум - https://itvdn.com/ru/video/sql-workshop MySQL - https://itvdn.com/ru/video/mysql-essential PostgreSQL - https://itvdn.com/ru/video/postgresql
Вибір IT-спеціальності. Добірка матеріалів ITVDN за 2020 рік

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

Привет, друзья! IT — одна из сфер деятельности, которая продолжает расти и развиваться, несмотря на кризис 2020. Все больше людей хотят перейти в IT, но как это сделать, если ты до конца не понимаешь, в чем разница между специальностями, языками программирования, что перспективно, что тебе под силу, а что будет сложно? Чтобы облегчить путь новичков в IT, команда ITVDN регулярно создает много видео уроков, вебинаров, статей, планов обучения, привлекая для этого экспертов с большим опытом в подготовке специалистов.  Огромной популярностью среди новичков пользуется рубрика Выбор IT специальности на YouTube канале ITVDN. Сегодня мы вам расскажем о том, какие наиболее интересные вебинары и статьи были в 2020 году. Смотрите, читайте и учитесь на ITVDN! Вебинары ITVDN по выбору специальности Вебинары по теме “Как стать ...” — это отличный источник важной информации из уст профессиональных разработчиков. В них вы найдете самые актуальные ведомости касательно желаемой IT-специальности: специфика профессии, какие технологии и языки стоит учить, эффективный подход к обучению, его длительность и т. д. Вам могут быть полезны следующие вебинары за текущий год: Кто есть кто в IT компании. Структуры и роли Как стать C# разработчиком в 2021 году. .NET или .NET Core? Как стать программистом? Frontend, Java, Python или .NET - что выбрать? Как прокачать английский для собеседования в IT компанию Как стать веб-дизайнером с нуля Как стать Android разработчиком Как стать FrontEnd разработчиком? Как стать Java разработчиком? Как стать Python разработчиком? Как стать C# / .NET разработчиком? Статьи ITVDN по выбору специальности Приведенные ниже статьи позволят вам сформировать целостное понимание популярных на сегодняшний день специальностей, а также разобраться с языками программирования и технологиями, которые требуются для успешного старта в выбранном направлении. Что должен знать C# / .NET разработчик? С чего начинается создание сайтов? Специальность верстальщик Кто такой Full Stack разработчик? Какую IT-специальность выбрать в 2021 году? Что должен знать FrontEnd разработчик в 2019 году? Что должен знать Python разработчик в 2020 году? Что должен знать Java разработчик в 2020 году? Как стать разработчиком игр? Как стать Android разработчиком? Java vs Python. Что выбрать? Также приведем статьи, которые подойдут любому начинающему разработчику. Они ориентированы на расширение вашего IT-кругозора, а также вы найдете в них множество полезных советов по обучению и развитию себя как профессионала.  FAQ начинающего программиста Онлайн обучение программированию: подводные камни и советы Идеальное резюме программиста: что писать в резюме? Как не провалить своё IT-обучение? Нужно ли программисту высшее образование?   C наилучшими пожеланиями, команда ITVDN Оставайтесь с нами и приводите друзей!
Коротко про GIT, node.js, npm, Grunt, Bower на прикладі офіційного AngularJS програми angular-phonecat

Автор: Антон Гончаров

Введение Эта статья предназначена для начинающего разработчика, который впервые столкнулся с изучением AngularJS и сопутствующими технологиями, такими как GIT, node.js, Grunt, Bower. Вы могли много читать литературы по поводу перечисленных выше технологий, в этой статье мы лишь вкратце опишем, чем по сути является каждая из них, и как с ней работать. 1. Проходим по ссылке: https://docs.angularjs.org/tutorial и следуем всем инструкциям по установке. Не бойтесь, мы Вам в этом поможем! И постараемся вместе разобраться в основных понятиях современного Frontend Development'a :) Для начала нам следует установить git на свою ЭВМ :)       Коротко о git. Git — система для контроля версий файлов. Более обширное определение - это  ресурс, который позволяет разработчику или команде разработчиков контролировать версии своих приложений. Подробнее тут: https://ru.wikipedia.org/wiki/Git  Идем по ссылке в новой вкладке: http://git-scm.com/ и выбираем ту версию git, которая нас интересует, в соответствии с нашей операционной системой. Скачиваем файл для установки, с расширением .exe и устанавливаем в папку Program files. 2. Идем по ссылке в новой вкладке браузера https://github.com/ и регистрируемся. Github – самый крупный веб-сервер для хостинга (размещения) проектов разработчиков. Итак, мы это все сделали, далее скачиваем приложение из репозитория angular-phonecat, размещенного на Github. То есть, нашей задачей теперь будет взять и скачать готовое приложение себе на жесткий диск. 3. AngularJS – это JavaScript фреймфорк, который заточен под разработку одностраничных приложений. Официальный сайт AngularJS https://angularjs.org/ Основной идеей AngularJS является убеждение создателей оного, что декларативное программирование (парадигма программирования - описание программы, какая она по сути, а не то, как ее создать) находит применение в разработке внешнего вида приложения, а императивное программирование (парадигма программирования – в отличие от декларативного программирования, описывает процесс вычисления в виде инструкций, по сути, пошагово изменяет инструкции программы, похоже на приказы) используется для описания бизнес логики. AngularJS – расширяет HTML, чтобы создать двустороннюю привязку данных для динамического контента. Цели AngularJS: DOM-манипуляции не зависят от логики приложения. Параллельная разработка путем разделения клиентской части и серверной части приложения. Планирование разработчиком всех приложений – интерфейс, бизнес-логика, тестирование. Открываем терминал/консоль и перемещаемся в ту папку, в которую хотим сохранить проект с помощью команды cd Documents/ (эта команда означает - cd – change derictory на Documents) и нажимаем Enter  мы переместились в папку, где хранятся документы (просто потому, что мне так удобней, можно этого не делать и остаться в корне диска). Копируем следующую строку  git clone --depth=14 https://github.com/angular/angular-phonecat.git вставляем в терминал/консоль и нажимаем Enter. Эта строка создает папку angular-phonecat и копирует приложение с Git с последними 14 коммитами (изменениями). Ждем окончания копирования проекта. Далее переходим в директорию с нашим приложением командой     cd Documents/angular-phonecat  или cd angular-phonecat/   после жмем Enter и оказываемся в папке с приложением 4. У нас на жестком диске есть наше приложение, теперь нам следует установить node.js. Node.js – что такое node.js? Есть много статей, определений и объяснений. В общем и коротко: Node.js – это интерпретатор JavaScript. Приложение node.js получает js код и выполняет его. Нам надо установить node.js в папку с нашим приложением. Переходим по ссылке: http://nodejs.org/download/ качаем приложение и устанавливаем. 5. Вместе с node.js устанавливается и npm. Что такое npm? Npm – это node package manager. Npm устанавливает пакеты, которые прописаны в файле package.json перед установкой npm нам следует проверить, какая версия node.js установлена у нас. Это мы делаем командой в терминале: node –-version есть :) Теперь в терминале набираем следующее: npm install На выходе получаем такую структуру нашего проекта: Файл  package.json содержит в себе информацию о приложении, название, версию, установленные пакеты в приложении. Возможна установка пакетов как через файл package.json, так и через терминал. 6. Это не обязательно, но в будущем этот пакет Вам пригодится. Grunt – это Task Runner – автоматизатор процессов, позволяет проводить минификацию кода, сборку кода(компиляцию), тестирование. В терминале вводим следующее: npm install -g grunt-cli (-d   - говорит о том, что мы устанавливаем grunt глобально.) Дополнительно устанавливаем в директорию с приложением npm install grunt-cli теперь обновляем npm:  sudo npm update npm -g sudo - (substitute user and do – подменить пользователя и выполнить) – в Unix системах позволяет пользователям выполнять команды от имени суперпользователя root. В директории с приложением требуется создать файл Gruntfile.js, вложим в него код из официального примера http://gruntjs.com/sample-gruntfile в конце страницы - конечная версия файла, копируем код себе в файл. Или копируем отсюда: module.exports = function (grunt) {     grunt.initConfig({         pkg: grunt.file.readJSON('package.json'),         concat: {             options: {                 separator: ';'             },             dist: {                 src: ['src/**/*.js'],                 dest: 'dist/<%= pkg.name %>.js'             }         },         uglify: {             options: {                 banner: '/! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> /\n'             },             dist: {                 files: {                     'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']                 }             }         },         qunit: {             files: ['test/**/*.html']         },         jshint: {             files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'],             options: {                 // options here to override JSHint defaults                 globals: {                     jQuery: true,                     console: true,                     module: true,                     document: true                 }             }         },         watch: {             files: ['<%= jshint.files %>'],             tasks: ['jshint', 'qunit']         }     });     grunt.loadNpmTasks('grunt-contrib-uglify');     grunt.loadNpmTasks('grunt-contrib-jshint');     grunt.loadNpmTasks('grunt-contrib-qunit');     grunt.loadNpmTasks('grunt-contrib-watch');     grunt.loadNpmTasks('grunt-contrib-concat');     grunt.registerTask('test', ['jshint', 'qunit']);     grunt.registerTask('default', ['jshint', 'qunit', 'concat', 'uglify']); }; Пакеты, которые мы прописали в Gruntfile.js, следует установить через npm следующими командами: npm install grunt-contrib-uglify --save-dev npm install grunt-contrib-qunit --save-dev npm install grunt-contrib-concat --save-dev npm install grunt-contrib-jshint --save-dev Подробнее об установленных пакетах можно прочитать тут: https://github.com/gruntjs/grunt-contrib-uglify https://github.com/gruntjs/grunt-contrib-qunit https://github.com/gruntjs/grunt-contrib-concat https://github.com/gruntjs/grunt-contrib-jshint https://github.com/gruntjs/grunt-contrib-watch 7. Установка Bower и что это такое. Bower – менеджер пакетов для клиентской стороны приложения JS. Отличием Bower от Npm есть то, что Bower, если возникнет конфликт, не позволит Вам поставить несовместимый пакет(библиотеку), которая уже установлена, Bower ставит одну версию пакета. В терминале ставим глобально bower и пишем: npm install -g bower  и конечно ставим в директорию с проектом  bower install 8. Сongrats !!! Теперь у нас установлено приложение и мы можем запускать его, из файловой системы заходим в папку с приложением, потом в папку – app, находим файл и тапаем (двойной клик) по нему index.html или (что будет правильным) нужно зайти в терминал и ввести: npm start (запускаем сервер) и в браузере в омнибоксе (адресной строке) ввести: http://localhost:8000/app/index.html Wuala – наше приложение запускается и работает. Подробнее об AngularJS и как с ним работать вы можете узнать из курса AngularJS в учебном центре CyberBionic Systematics. Всем спасибо и удачного кода. 
Що таке адаптивна верстка і навіщо вона потрібна

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

Что такое адаптивная верстка? Преимущества мобильного адаптивного дизайна Почему адаптивный дизайн важен для бизнеса Как создать адаптивный дизайн Плавающая Сетка (Fluid Grid) Гибкий текст и изображения Медиа-запросы Пользовательское тестирование адаптивных сайтов Браузерное и устройство-зависимое тестирование на адаптивный дизайн Вдохновение от других адаптивных сайтов Будущее адаптивного дизайна для мобильных устройств Является ли ваш сайт Mobile-Friendly? Подводя итоги От редакции ITVDN Еще в 2015 году Google внедрил изменения в алгоритмы своей поисковой системы, которые теперь учитывают адаптированность сайта под мобильные устройства как важный пункт при ранжировании сайта. Дата была удачно названа Мобилгеддон (Mobilegeddon), как сравнение с Армагеддоном. Одно только такое введение требований от поисковиков к наличию мобильной версии сайта может оправдать важность адаптивного дизайна. Проще говоря, веб-сайт должен быть удобным для просмотра на смартфоне. Требования к адаптивной верстке включают в себя такие элементы дизайна, как: читаемый текст без необходимости его увеличения; достаточное количество места для целей касания (tap targets); отсутствие горизонтальной прокрутки. На сегодня уже почти 4 миллиарда пользователей используют смартфоны для серфинга в Интернете. Веб-сайты, не оптимизированные для всех небольших экранов смартфонов, имеют рейтинг в поисковых системах ниже тех, что выполнены адаптивно. Более 50% поисковых запросов в Интернете теперь происходит с мобильного устройства. Чтобы ваш веб-сайт мог работать с карманными устройствами (не создавая отдельное приложение), вам для начала стоит признать – адаптивная вёрстка важна для пользователей смартфонов. Давайте рассмотрим более детально, почему и как это происходит. Прежде всего ... а что такое адаптивная верстка и мобильный дизайн, и почему вы вообще должны о них заботиться?   Что такое адаптивная верстка? Адаптивный веб-дизайн (RWD - Responsive web design) создает систему, позволяющую одному сайту (с одним URL-адресом и одним источником контента) реагировать и адаптироваться к размерам устройства пользователя. Адаптивный веб-сайт создан с использованием верстки с гибким макетом, который подстраивается под размеры экрана устройства. По-сути, благодаря адаптивной верстке, ваш веб-сайт будет отлично выглядеть и хорошо работать как на настольном компьютере (или ноутбуке), так и на планшете, и в браузере мобильного телефона. В прошлом разработчики создавали более одного сайта, для соответствия страниц экранам разных размеров. С учетом того, что на рынке сегодня представлено много типов устройств, это кажется совершенно неэффективным… верно? Сам термин «адаптивная верстка» был фактически придуман в 2010 году веб-дизайнером Итаном Маркоттом. Сегодня адаптивная верстка в веб-дизайне уже не новая тенденция, а скорее проверенный временем способ мышления, стоящий за созданием сайтов. На сегодня наличие адаптивного веб-сайта больше не является еще одной возможностью для развития вашей инфраструктуры — это уже необходимость! Преимущества мобильного адаптивного дизайна Преимущество адаптивного макета номер один— это получение гарантии того, что любой пользователь на любом устройстве будет иметь наилучшие возможности взаимодействия с контентом на вашем сайте. Адаптивная верстка веб-сайта также является отличным способом улучшить контент на вашем сайте. Вы сможете убедиться, что те, кто использует мобильное устройство, видят всю важную информацию. Благодаря особенностям алгоритма Google, адаптивный веб-дизайн повышает видимость сайта в поисковых системах, поскольку он удобен для просмотра на мобильных устройствах. Сайт с качественным представлением контента на мобильном устройстве будет находиться в результатах поиска выше, чем сайт, хорошо отображающий контент только на десктопах.   Почему адаптивный дизайн важен для бизнеса Расширяется охват клиентов благодаря захвату пользователей небольших устройств (планшетов и смартфонов); Постоянный опыт работы с широкой аудиторией, который может увеличить количество потенциальных клиентов, продажи и конверсии; Аналитика, отслеживание и отчетность по версиям сайтов для десктопов и мобильных устройств могут быть в одном месте; Затраты времени и стоимость управления контентом снижается; Более 60 % запросов в Google на конец первого квартала 2019 делаются с мобильных устройств. Обратите внимание, что есть еще два способа, с помощью которых можно обеспечить взаимодействие пользователя с сайтом через мобильные приложения. Первый называется динамическим показом (Dynamic Serving), в котором используется один и тот же URL-адрес, но разные коды HTML и CSS. Страницы распознают устройство, на котором они просматриваются, и предоставляют соответствующий код. Второй способ — это вообще отдельный мобильный сайт. Когда пользователи посещают сайт с мобильного устройства, они отправляются на другой - мобильный URL-адрес. Вам следует выяснить, какой вариант лучше всего подходит для вашего присутствия в Интернете, прежде чем остановиться на одном. Учтите, что на Google ежедневно приходится более 5,6 миллиардов поисковых запросов. Рекомендуемая Google конфигурация для сайтов, оптимизированных для смартфонов, - это сайты с адаптивным веб-дизайном. Google даже предлагает тест на адаптивность сайта под мобильные устройства, чтобы вы могли увидеть, насколько легко посетитель может использовать вашу страницу на мобильном устройстве. Вы просто вводите URL страницы и получаете оценку. Как создать адаптивный дизайн Как сделать адаптивную верстку? Есть несколько моментов, о которых стоит подумать при создании адаптивного макета. Это процесс, который требует определенной системы проектирования и иерархии контента среди различных устройств. Три основных компонента адаптивного веб-дизайна включают в себя: Гибкая (плавающая) сетка - fluid grid; Гибкий текст и изображения; Медиа-запросы. Рассмотрим каждый из этих элементов детальнее.   Плавающая Сетка (Fluid Grid) Сетка является ключевым элементом для создания адаптивного макета. На сегодня сетки уже не являются чем-то новым. Веб-дизайнеры использовали сетки для создания веб-сайтов с самого начала. Однако в прошлом эти сетки имели фиксированную ширину и не позволяли поддерживать плавную компоновку. Гибкая сетка, используемая для адаптивных веб-сайтов, обеспечит вам гибкость и масштабируемость дизайна. Элементы будут иметь постоянный интервал, пропорции и смогут настраиваться на определенную ширину экрана в процентах. Гибкий текст и изображения Способ отображения текста зависит от того, на каком устройстве пользователь просматривает ваш сайт. Однако текст должен оставаться читаемым, несмотря ни на что. На адаптивных веб-сайтах есть возможность увеличить размер шрифта и высоту строки (расстояние между каждой строкой текста) для удобочитаемости. Гибкий текст и изображения настраиваются в пределах ширины макета, в соответствии с иерархией содержимого, заданной с помощью CSS (таблицы стилей). Текст на сайте с адаптивной версткой теперь может быть разборчивым независимо от устройства конечного пользователя. Благодаря гибкому контейнеру (внутри сетки) текст может переноситься с увеличением размера шрифта на небольших устройствах. Гибкие изображения могут оказаться более сложными из-за времени загрузки в небольших браузерах устройств. Но эти изображения могут масштабироваться, обрезаться или исчезать в зависимости от того, какой контент необходим для мобильных устройств. Медиа-запросы Медиа-запросы - это код, который обеспечивает гибкость макета на адаптивных веб-сайтах. Медиа-запросы определяют код CSS, который будет применен соответственно, в зависимости от размеров и ориентации устройства (например, книжная ориентация iPhone или альбомная ориентация iPad и т. д.). Медиа-запросы допускают существование несколько макетов дизайна, которые будут использовать одну и ту же HTML-кодированную веб-страницу. Все три указанных элемента являются основой адаптивной верстки. Однако есть и другие важные средства, которые могут помочь определить акценты и усовершенствовать адаптивный веб-дизайн ваших сайтов для мобильных устройств. Обратите внимание на: Пользовательское тестирование адаптивных сайтов Информация о том, как пользователи взаимодействуют с вашим сайтом, - бесценна и точно стоит того, чтобы заплатить за ее получение. Существует множество способов провести пользовательское тестирование, чтобы получить максимально полезную обратную связь. Такие сайты, как UserTesting.com, предоставляют пользователям тестирование за небольшую плату или бесплатно. Различные методы, такие как тестирование in-the-wild и карточная сортировка (Card Sorting), также могут помочь обнаружить неожиданные болевые точки и слабые места в использовании вашего продукта.   Браузерное и устройство-зависимое тестирование на адаптивный дизайн Убедитесь, что ваш адаптивный дизайн и верстка совместимы со всеми соответствующими браузерами и сохраняет целостность вашего пользовательского опыта и дизайна. Не полагайтесь только на изменение размеров окна браузера при тестировании адаптивного веб-дизайна для мобильных устройств. Попробуйте просмотреть сайт на как можно большем количестве физических устройств. Вы будете удивлены тем, что можно обнаружить при переходе от одной операционной системы к другой, от одного устройства – к другому.   Вдохновение от других адаптивных сайтов Точно также, как и выполняя любой другой дизайн-проект, обратитесь к опыту других людей. Найдите другие адаптивные веб-сайты, которые творчески обыгрывают концепцию адаптивного веб-дизайн. Задумайтесь над следующими вопросами: Какие веб-сайты или приложения вы часто используете на своем мобильном телефоне или других портативных устройствах? Почему вы предпочитаете один сайт другим, которые могут предоставлять аналогичные услуги? Предпочитаете ли вы использовать их на смартфоне или на настольном компьютере? Поиск ответов на эти вопросы может помочь вам найти слабые места, которые вы, возможно, никогда не замечали, во время ежедневного использования своего вебсайта. Будущее адаптивного дизайна для мобильных устройств Мы знаем, что Google требует следующих оптимизированных элементов для эффективного взаимодействия с пользователями мобильных интерфейсов, используя адаптивный веб-дизайн: Текст, с читаемым размером без необходимости его принудительного увеличения; Контент, который умещается на экране устройства, без необходимости горизонтальной прокрутки; Ссылки и кнопки, расположенные на достаточном расстоянии друг от друга, чтобы не было затруднений в работе с интерфейсом; Разумное время загрузки страниц; Не используйте Flash! Эти правила адаптивной верстки очень важно соблюдать. Рост числа мобильных устройств — это только начало перехода к более удобному использованию Интернета. Нужно быть уверенными, что пользователи могут просматривать ваш сайт в любом месте на любом устройстве, самые разнообразные мобильные носимые устройства становятся все более популярными. Важным моментом будет учитывать современные размеры гаджетов, чтобы понимать в вашей адаптивной верстке какие разрешения учитывать. К примеру, на 2019 год все еще лидирующим остается разрешение экранов - 360х640. Является ли ваш сайт Mobile-Friendly? Пройдите тест Google, чтобы узнать, насколько адаптирован ваш сайт для мобильных устройств. Ваш сайт получил зеленый свет? Отлично, значит вы прошли тест Google на адаптивность. Вы уже прочитали выше причины, почему адаптивный дизайн важен для пользователей вашего сайта. Вместо зеленого видите большие красные иксы? Значит вам следует начать предпринимать определенные шаги для оптимизации работы вашего сайта под пользователей мобильных устройств. Помните, что изменения в алгоритмах Google и требованиях к адаптивному дизайну в настоящее время мало учитывают планшеты, но, если вы сделаете ваш сайт полностью адаптивным - вы будете впереди тех конкурентов, которые этого еще не сделали!   Подводя итоги Согласно требованиям сегодняшнего времени, ваш веб-сайт должен отлично выглядеть и хорошо работать как на настольном компьютере, так и на планшете, и в браузере смартфона. Адаптивный веб-дизайн может помочь вам достичь этого. В этой статье мы ответили на общий вопрос «что такое адаптивный дизайн?». Есть три компонента адаптивного веб-дизайна: плавающая сетка, гибкий текст и изображения и медиазапросы. Помните о важности адаптивного веб-дизайна для вашего бизнеса.  Выполнение вашего сайта по всем правилам адаптивной верстки поможет вам: Увеличить охват потребителей на всех устройствах; Поддерживать постоянный качественный пользовательский опыт, который увеличивает удержание аудитории на сайте; Консолидировать данные аналитики, отслеживания и отчетности; Сократить время и стоимость управления контентом; Конкурировать в своей отрасли с другими брендами. Google привлекает к коммерческим сайтам более 85% трафика мобильного поиска и рекомендует применять на ваших сайтах адаптивный дизайн. Поскольку адаптивный веб-дизайн удобен для мобильных устройств, он помогает улучшить видимость в поисковых системах, что, в свою очередь, может увеличить количество посетителей вашего сайта. Увеличение трафика приводит к лучшей генерации потенциальных клиентов, дополнительным конверсиям и увеличению продаж - три основные причины, по которым вам нужен адаптивный веб-дизайн!   От редакции ITVDN Мы с вами рассмотрели необходимость адаптивной верстки для каждого современного сайта. Такой подход является конкурентным преимуществом для компании из любой сферы бизнеса. Если говорить о разработчике, то навыки создания адаптивных web-сайтов будут существенным конкурентным преимуществом при поиске работы. Специальные знания и навыки вы можете получить, обучаясь по видео курсам ITVDN. В первую очередь это курсы: HTML5&CSS3 Advanced Практический курс по верстке лендинга Создание адаптивного сайта с Bootstrap 3 Также вам могут быть интересны другие курсы и технологии, которые входят в программу обучения по специальностям Верстальщик сайтов и FrontEnd разработчик. По материалам статьи за авторством Сони Грегори.
Популярні PHP MVC фреймворки

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

Автор статьи: Влад Кобылянский, архитектор программного обеспечения, разработчик и консультант по технологиям малого бизнеса (Майами, Флорида).   Вопрос: Что сегодня происходит с PHP фреймворками? В феврале 2017 года я так ответил на этот вопрос: «В основном все крутится вокруг двух PHP фреймворков -  Laravel и Symfony. Особой нужны в использовании CakePHP, Zend, CodeIgniter, Yii и т. д. нет, если вы начинаете новый проект. Только если вы уже знаете эти фрэймворки или у вас в команде есть разработчики которые привыкли работать с ними, тогда причины их использования обоснованы. Когда начинается реальная разработка, вы должны иметь возможность находить инструменты, плагины, ответы на общие проблемы. С сообществами Laravel и Symfony, с постоянным развитием новых «модулей» или функций, не будет ощущения, что вы остались «в стороне». Одни Laracast (даже если вы не работаете в Laravel) чего стоят! Они просто фантастичны. Когда заходит речь об интеграции с iron.io или другими SaaS сервисами, поддержке широкого спектра источников данных или о среде разработки – Laravel и Symfony и их расширения намного более продвинуты. Еще одним достоинством  Lumen, является быстрая разработка и прототипирование API для Laravel. При этом это никак не ограниченно для построения больших приложений.Вообще говоря, сегодня мы определенно видим переход к контейнерной архитектуре, где MVC играет гораздо меньшую роль. Все это касается микросервисов, оркестровки и создания приложений как «функций» (AWS Lambda и подобных сервисов). Возможно, пришло время освежить наши навыки Node/JS и GoLang?»   Хотя я в целом доволен этим ответом, сейчас я думаю, что некоторые моменты пришло время пересмотреть. Прежде чем перейти к таким странным темам, как GoLang, давайте взглянем на тенденции PHP MVC фреймворков. Я бы сказал, что тенденции, которые мы наблюдали в прошлом, остаются. Laravel продвигается вперед, в то время как большинство остальных фреймворков отстает. В популярности Symfony наблюдается небольшой всплеск, вероятно, из-за долгожданного выпуска Symfony 3. Я попробовал более конкретные поиски для сравнения, такие как «CakePHP 3» или «ZF2», однако они не привели к статистически значимым тенденциям. На этот раз я добавил CodeIgniter, потому что он оказалася очень популярным. Я получил ряд вопросов о CodeIgniter. Если коротко, CI сейчас не в конкуренции, потому что это не 100% фреймворк MVC. Иначе, чем организованной коллекцией POPO, я это не назову. Для наглядности представляю вам цитату из руководства CodeIgniter: «CodeIgniter имеет довольно свободный подход к MVC, поскольку не требуются Models. Если вам не нужно дополнительное разделение или вы обнаружите, что поддерживающие Models требуют большей сложности, чем вы хотите, вы можете их проигнорировать и создать свое приложение с помощью Controllers и Views.» Когда дело доходит до построения структуры, я просто не согласен с таким подходом. Возможно, это достойный шаблон (отсюда и популярность CodeIgniter), однако должна быть какая-то дисциплина, навязанная фреймворком, иначе конечный продукт в итоге превращается в беспорядочный спагетти-код, завернутый в какой-то «шаблон». Далее, Symfony 3 привнес некоторые достойные улучшения в разработку и целый ряд новых «фич». Как и многие аналоги PHP, теперь он предлагает микро-фреймворк. ZF3, к примеру, добавил ряд улучшений, таких как поддержка PHP7 (наконец!) и даже стал микро-фреймворком... но, в их руководстве так и говорится: «Для пользователей Zend Framework 2 MVC, различия с ZF3 незначительны...» Я действительно надеялся, что они скажут, что различия есть, что было замечательное архитектурное усовершенствование, замечательные новые модули, которые помогают вам разрабатывать все по-современному. Но, увы, по большей части ZF3 по-прежнему похож на ZF2. Long Story Short Вот как я вижу мир PHP фреймворков сегодня: Symfony или Laravel (выбор зависит от того, какую задачу вам нужно решить) Все остальное Laravel на первом месте. Объем доступной информации, Laracasts, таланты разработчиков во всем мире, простые реализации шаблонов, интегрированные наборы инструментов тестирования, активная реализация записей в форме Eloquent, облегченная версия в Lumen, развитие Homestead (Vagrant) – все перечисленное способствует фреймворку действительно выделяться и для новых, и для опытных разработчиков. Однако модели Eloquent могут стать непослушными и довольно большими по размеру, а сервисов Laravel (не путать с микросервисами) можно создать очень много, и вот тут люди начинают думать о реализации Repository, которому здесь не место. Так родился Monolith. Если вам не нравится активный шаблон записи и вам нужна дополнительная гибкость в репозиториях, или, возможно, вы видите слишком много независимых анонимных функций, тогда используйте Symfony + Doctrine. Рассматриваю ли я Symfony как шлюз для монолитных приложений? В какой-то степени, да. В целом, я бы не назвал это резким изменением с прошлого года. Тем не менее, нам нужно взглянуть на общую картину: правильно разработанное приложение выходит за рамки чистого MVC; речь идет об инфраструктуре, конвейере развертывания, разъединённой архитектуре. Все это может быть достигнуто в стеке MVC, но нужно быть внимательным, чтобы избежать Monolith. Приход микросервисов Раньше я упоминал о распространенности микросервисов и необходимости улучшать навыки GoLang или Node. А в статье о PHP MVC было бы глупо не упомянуть о явно растущем движении к микросервис-ориентированной архитектуре (MOA); и это движение набирает обороты, поверите вы или нет. Хотя эти два понятия не являются взаимоисключающими, не нужно находить параллели между ними, ведь они действительно представляют собой разные философии. В качестве примера, размещение вашего приложения MVC в одном контейнере и MySQL в другом, а затем объединение их вместе, не обязательно представляет собой надлежащую MOA. Это, безусловно, лучший подход, чем пытаться установить MAMP, XAMPP или что-либо еще, чтобы заставить ваш компьютер работать с приложением. Кроме того, это может решить некоторые проблемы, такие как простота запуска локальной среды на разных платформах и, возможно, в некоторых случаях стратегии развертывания, но вы застрянете с монолитным MVC в вашем приложении/контейнере. Уничтожение Monolith Микросервисы – это как раз о «разрушении». В то время как MVC обращается к вашей структуре кода и организации, обеспечивая надежный подход к разделению проблем, эта концепция еще больше расширяется контейнерами/сервисами/MOA. Вместо того, чтобы просто отделять виды (Views) от моделей (Models), вы теперь разделяете каждый «кусок» или логическую единицу вашего приложения на индивидуальную службу, предназначенную для правильной работы с собственными обязанностями. Если у вашего MVC-приложения есть контроллер «Поиск», действия и соответствующие методы модели, то у нас уже есть пример монолитного приложения. Напротив, используя подход MOA, у нас будет сервис для каждого из этих процессов. В качестве примера: Router сервис Request сервис Query сервис DataSource сервис Response сервис Но не все эти «сервисы» являются частью стека MVC? Конечно нет. Они являются строительными блоками нашего Monolith. С MOA каждый сервис работает в рамках собственной среды, а мы, как архитекторы, можем разработать лучший подход к решению конкретного запроса. В качестве примера, если я должен был бы написать службу обработки изображений в среде Laravel, я использовал бы что-то вроде расширения PHP-GD2, что может быть не самым эффективным способом обработки изображений. Служба C++, которая обрабатывает мои запросы в обработке изображений, может быть намного быстрее и определенно более надежной при масштабировании. И мы могли бы сделать вывод службы обработки изображений и отправить ее в службу DataStore, службу CloudStorage и службу Queue Email. Решение этой же задачи с кучей скрытых заданий и, возможно, нескольких отдельных приложений MVC и пользовательских сценариев – это то, как разработчики делали это раньше (2 года назад). Время двигаться вперед. Масштабируемость Здесь возникают проблемы (или заканчиваются, в зависимости от того, куда вы держите курс). С одной стороны, очень сложно масштабировать Monolith: если вы создадите все больше и больше логики в одном и том же наборе MVC, вы застрянете с хорошо структурированным приложением ужасной сложности. С другой стороны, если вы построите тысячу микросервисов на разных языках, как вы будете управлять этим беспорядком? Существуют различные инструменты компоновки контейнеров (например, Kubernetes, Swarm, Mesos), услуги по развертыванию контейнеров (GKE и AWS ECS), однако лишь немногие предприятия используют архитектуру Docker. Есть удачные истории в построении инфраструктуры с использованием Docker или других контейнерных технологий (т. е. GKE). Большинство из этих историй исходят от компаний, которые могут позволить себе тратить ресурсы на архитекторов, дефолтов, администраторов баз данных и инженеров. Тем не менее, сейчас идут бесчисленные дискуссии о том, как развернуть хорошо организованный и элегантный MOA. В любом случае, вы не решите эту проблему самостоятельно, и пока вы не достигнете относительно большого масштаба, эта проблема действительно нуждается в решении. Может быть, сейчас не самое время усердствовать. Золотая середина на сегодняшний день (даже для тех, кто занимается приложениями меньшей сложности или не такими требованиями к трафику) заключается в том, чтобы разгрузить многие типичные сервисы сторонним провайдерам. Почти все доступно сейчас как сервис. Фоновые задания, обработка изображений, аутентификация, аналитика данных, ведение журнала, отправка электронной почты, системы очереди не обязательно должны строиться в одном стеке MVC, а архитектор должен подумать о том, что может быть выгружено в систему SaaS за небольшую ежемесячную стоимость (т.е. поиск Algolia) или, возможно, специально созданную докерную службу, работающую в облачном пространстве, которая выполняет эту обработку изображений. Я думаю, важно, чтобы вы не начали перепроектировать весь проект с начала, не сбрасывать все, что у вас уже есть, а выпускать докеры, где это можно сделать. Существуют способы постепенного развертывания вашего проекта/продукта путем разъединения, изучения узких мест в системе (и т.д.) и последующим применением разделения проблем в этих проблемных областях. Вывод 2017 год принес нам много дискуссий и производственных развертываний, основанных на контейнерах и MOA. Мои размышления о Docker, используя GoLang или Node, не означают, что PHP «умирает» или что-то в этом роде ... Я считаю, что разработчикам нужно оставаться в тренде. Если микросервисы и дальше будут развиваться в том же русле, в котором это происходит сейчас, то почему бы не изучить GoLang? Он идеально подходит (из-за низкой занимаемой площади, скорости и параллельной обработки) для разработки небольших контейнерных приложений. Node и GoLang позволяют создавать небольшие сервисы, которые являются частью более крупного проекта, связывают созданные сервисы и выпускают их как контейнеры Docker, если это необходимо в вашей работе. Тем не менее, все эти передовые решения и языки не уменьшают значимость и востребованность языка PHP. Разработчикам еще нужны будут стеки MVC и работа с  API. MOA пока не помогает решить архитектурные проблемы на стороне frontend, UI или Views, хотя при этом контейнеры помогают нам избежать работы с Monolith на backend. Мы можем создать чрезвычайно надежное backend-приложение, но оно среагирует на JSON, который каким-то образом должен быть представлен в клиентском приложении. Имеет ли значение, если результирующий объект ответа поступает из РНР кода, URL или от модулей принятия решений и обработки, разделенных интерфейсом обмена сообщениями? Это зависит от Ваших потребностей и требований к вашему приложению. Мой совет: в этом году учите Laravel, следите за Docker, GoLang и фокусируйтесь на конвейере развертывания. Продвижение от локального небольшого проекта к продакшену должно быть достаточно плавным, особенно при создании приложений MVC.   Оригинал статьи
Які шанси у програміста-початківця знайти роботу?

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

Вопросы, которые беспокоят каждого начинающего разработчика – смогу ли я найти работу после того, как пройду обучение? Какую специальность лучше выбрать, чтобы наверняка быть нужным? Есть, много субъективных факторов, которые влияют на возможность получить ту работу, о которой вы мечтаете. Это настойчивость, готовность рискнуть, черты характера, навыки представления себя потенциальному работодателю, умение правильно выбрать компанию и вакансию, соответствующие вашему уровню, умение проходить собеседование. При равных знаниях в программировании шансы кандидатов не равны. Однако, есть и объективные факторы, которые вы можете  (и должны!) учитывать. Один из них – конкуренция среди программистов, желающих занять определенную вакансию в IT компании. Самый простой способ взвесить свои шансы – посмотреть на количество вакансий, опубликованных в течение месяца и количество откликов на эти вакансии. Такая информация всегда в свободном доступе на сайте  сообщества программистов Украины DOU.UA.   Мы сделали небольшую выборку по десяти специальностям. Это информация за май 2018 года. Информация, представленная в этой таблице, говорит о том, сколько специалистов откликнулись на вакансии и какие специальности в нынешние время самые популярные. Из таблицы явно видно, что у начинающего C#/.NET разработчика шансы получить работу намного выше, чем у Java или FrontEnd разработчика. Смотрите, думайте. Желаем Вам стать профессионалом и работать в компании Вашей мечты! С более подробной информацией Вы можете ознакомиться на сайте DOU.UA.
Як стати тестувальником

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

Всем привет! Вы знаете, как создаются программы и информационные сервисы, которыми все мы пользуемся? Какие специалисты нужны, чтобы появился новый Фейсбук, Вайбер, Инстаграм, новый Windows или какая-то крутая видеоигра? За разработкой программного обеспечения (ПО) стои́т целая команда профессионалов — и далеко не все из них умеют программировать. Типичная команда будет включать в себя таких специалистов, как: бизнес-аналитик — проводит анализ бизнес-проблемы, формирует требования к разрабатываемому продукту; PM (Project Manager) — управляет всеми, кто вовлечен в работу над проектом; тимлид (Team Leader) — управляет командой разработчиков; UX/UI дизайнер — создает приятный дизайн приложения (UI) с хорошим пользовательским опытом (UX); разработчики/программисты — занимаются написанием кода, являются ядром команды; QA специалист — тестирует приложение на каждом этапе его разработки для обеспечения высокого качества продукта. Если ПО не предназначено для использования только внутри компании, а нацелено на внешнюю аудиторию, то еще добавляется маркетинг-команда, которая работает с целевыми потребителями: исследует рынок, определяет клиентуру, привлекает ее внимание, подогревает интерес к продукту и многое другое. Таким образом, в IT найдется хорошая работа даже для тех, кто не любит программировать. И сегодня речь пойдет о таком специалисте, как 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.   Стек технологий Manual QA Engineer   Общая теория по IT Если лет 15 назад в тестировщики брали чуть ли не “с улицы”, то сейчас к претендентам с каждым годом выдвигают все больше и больше требований. Так что потенциальный претендент на должность прежде всего обязан хорошо понимать IT индустрию.  Итак, в этот пункт предусматривает такие темы, как: веб-технологии (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, а где-то необходимо быть весьма и весьма подкованным. А если тестирование не связано с бэкендом, то знания языка запросов вовсе не пригодятся. В общем и целом, тестировщик должен обладать следующими знаниями и умениями при работе с БД и 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.      Как стать тестировщиком?   Превращаем список приведенных выше технологий в туториал. Начинаем с пути 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 или любой другой популярный аналог. Такой опыт даст вам дополнительный вес в глазах работодателя, что сыграет вам на руку, поскольку конкуренция за место тестировщика весьма высока.  Очень желательно, чтобы у вас был наставник, который мог бы следить за вашим прогрессом, отвечать на возникающие вопросы, давать полезные советы и направлять в нужное русло. Итоги В данной статье мы постарались сделать максимальный охват темы тестирования. Была рассмотрена не только специальность тестировщик, но и два её надмножества — QC и QA. Сейчас линии разграничения между этими тремя профессиями по большому счёту стёрты и прослеживаются лишь в серьезных компаниях. В более мелких же тестировщик может запросто выполнять функции QA. Тем не менее, в нашей статье высветлены те технологии и области знаний, которые подойдут как тестировщику, так и QA инженеру. Также, мы рассмотрели ответвления Manual QA и Automation QA. Как выяснилось, без знания мануального тестирования вам не стать автоматизированным тестером. Ведь как можно писать автотесты, если ты в принципе не понимаешь, что, где и как исследовать на предмет багов? Несмотря на высокую конкуренцию за место тестировщика, количество вакансий остается одним из самых больших на рынке труда в IT. Посмотрите популярные ресурсы по трудоустройству в IT и вы сами в этом убедитесь. Поэтому нами и были указаны некоторые необязательные технологии — мы хотим вооружить наших читателей максимально красноречивым стеком, дабы вы были на голову выше конкурентов. Приведенный в статье стек технологий является прочной основой QA специалиста — как мануального, так и автоматизированного. Если этот материал не дал вам в полной мере ответ на вопрос “как стать тестировщиком и что следует для этого учить?”, делимся с вами ссылкой на вебинар одного из авторов ITVDN — действующего QA Engineer Андрея Шевцова. Если вас интересует данное направление и вы хотите стать QA инженером, предлагаем вашему вниманию подборку курсов и вебинаров ITVDN, которые вы найдете на странице специальности Quality Assurance.     Желаем успехов в изучении IT технологий! Оставайтесь с ITVDN!
Як стати тестувальником, 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!
Путівник ITVDN за версткою сайтів

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

Верстальщик сайтов – это специалист, который занимается созданием веб-страниц. Его работа заключается в том, чтобы при помощи различных элементов языка разметки веб-страницы перевести графические элементы дизайна (рисунки, шрифты, таблицы и т.д.) в понятный для браузера формат, то есть сверстать сайт. Работа верстальщика не очень сложная, но требует определенного уровня подготовки и большого внимания к деталям. На хороших специалистов практически постоянно существует большой спрос. На ITVDN все, кто заинтересован в изучении технологий для верстки веб-страницы, найдут необходимые видео уроки и материалы. А также курсы для «прокачки» практических навыков верстки сайта и Тренажер для навыков написания кода. Курсы записаны сертифицированными разработчикам и тренерами Microsoft. ITVDN рекомендует проходить обучение в такой последовательности:    HTML & CSS, автор Александр Петрик How to HTML & CSS, автор Сергей Раздобудько Photoshop. Базовый курс для web-разработчика, автор Сергей Воропаев JavaScript Essential, автор Дмитрий Охрименко How to JavaScript, автор Валерия Прокопенко Основы использования Git, автор Александр Пономаренко Twitter Bootstrap 3, автор Сергей Швайцер Создание адаптивного сайта с Bootstrap 3, автор Александр Пономаренко WordPress Starter, автор Артем Кондранин Практический курс по верстке лендинга, автор Сергей Рубец HTML5 & CSS3, автор Дмитрий Охрименко Также вас могут заинтересовать записи вебинаров ITVDN (все в свободном доступе): Верстаем сайт правильно Photoshop: зачем он нужен веб-разработчику? WordPress: создаем блог за час Скоростная верстка, или как упростить себе жизнь с Bootstrap 3 Интеграция верстки лендинга на CMS WordPress Адаптивный веб-дизайн: типы адаптивных макетов Семантика HTML5, создаем змейку, используя canvas Что надо знать для веб разработки. (реальная разработка + обзор вакансий) Создание веб-приложения с Angular 1.5, Firebase и Gulp Как решить проблемы верстки с помощью HTML5 Web Components Если вы планируете свое обучение с нуля, тогда наилучшим решением будет приобретение подписки ITVDN сроком от 3 месяцев. Это оптимальный срок, за который вы сможете научиться создавать красивые сайты, мастерски владея современным инструментарием  верстальщика.
React vs Angular: дві сторони JS

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

В мире дедлайнов правильный выбор технологии играет ключевую роль. Имея многолетний опыт за спиной, мы были вовлечены в разработку на десятках языков, с использованием фреймворков и библиотек. Собрав вместе наши знания, мы решили пролить свет на вопрос: React или Angular? и поделиться своими мыслями с вами. Так что в этой статье мы собираемся преобразовать наш опыт frontend разработки в информацию, которая поможет определить лучшую для вас технологию. Почему Angular 2? Angular JS – это open-source библиотека, предоставляющая всё необходимое для создания клиентской части сайта. Используя Angular 2, вы можете заметить, что вторая версия избавлена от ненужной сложности, которая присутствовала в предыдущей версии. Команда, работавшая над Angular 2, устранила или заменила почти все концепции первой версии. Я говорю о модулях, контроллерах, областях видимости, директивах и так далее. Однако они не остановились только на упрощении фреймворка. Они также добавили новые примечательные фичи и некоторые улучшения. Среди фич мы хотели бы выделить встроенную поддержку приложений и server-side рендеринг. Говоря об улучшениях, мы не можем упустить тот факт, что производительность Angular 2 резко возросла. Как Angular стал популярным? Тот факт, что Angular – создание Google, внушает доверие сам по себе. Фреймворк разработан таким образом, что не травмирует психику разработчиков, которые ранее учили другие технологии и языки. Многие разработчики утверждают, что если код на Angular кажется сложным – тогда ты делаешь что-то не так. Сайты, созданные на Angular JS: YouTube (for PS3), GoodFilms, Freelancer, Upwork. Итак, почему Angular 2 может быть полезным? Давайте рассмотрим его основные плюсы и минусы. Angular pros and cons by Cleveroad Почему ReactJS? В отличие от Angular, ReactJS – это JavaScript-based библиотека с открытым исходным кодом и JSX компилятором. Он в основном сосредоточен на пользовательском интерфейсе и разрешает создавать многоразовые UI рассматриваемые компоненты. Используя React, вы всегда должны помнить, что это не MVC фреймворк, а только библиотека для рендеринга вашего View (V из MVC). Таким образом, React – это интерфейс-ориентированное решение, когда ваши пользователи получают весьма отзывчивый интерфейс с плавной загрузкой. Как React стал популярным? За этим проектом стоит Facebook. ReactJS-решения дружественны с SEO. Производительность и гибкость ReactJS очень высоки. Известные сайты, сделанные с помощью ReactJS: Netflix, Feedly, Airbnb, Walmart Сейчас давайте рассмотрим, почему ReactJS может быть полезным. React pros and cons by Cleveroad Как сделать выбор? Сейчас мы глубже рассмотрим детали и нюансы, которые могут быть достаточно важными при выборе технологии. Лицензия Вы должны быть ознакомлены с видами лицензий фреймворка. Большинство лицензий довольно гибкие в работе, и вы можете использовать их для создания коммерческих приложений без каких-либо проблем. Однако существует целый ряд лицензий, которые не дают вам такой свободы действий. Лучше просто поискать информацию, нежели потом узнать, что вы не имеете права на коммерческое распространение своего продукта, не так ли? Примечание: Одним из преимуществ Angular JS и ReactJS является то, что это open-source фреймворки без каких-либо ограничений в использовании. Стоит отметить, что Angular использует MIT лицензию вместо 3-clause BSD лицензии, которая используется в React. Однако BSD отличается от MIT только присутствием запрета на использование имени владельца прав в рекламных целях. Паттерн MVC Паттерн Model-View-Controller разрешает разделять проекты на три компонента: модель, вид и контроллер. Таким образом, модификацию каждого компонента можно проводить независимо друг от друга, что способствует сжатию кода и повышению качества конечного результата. Помимо шаблонов MVC существуют также Model-View-Presenter (MVP) и Model-View-View-Model (MVVM). Примечание: Среди всех особенностей Angular 2 наличие out-of-the-box MVC паттерна является значительным преимуществом перед React. Из трёх букв акроним MVC имеет только букву «V» – View (в переводе «вид»). Так что если вам нужны буквы «М» и «С», то придётся искать их в другом месте. Размещение шаблонов Говоря о преимуществах Angular 2, стоит упомянуть о простоте написания шаблонов отображения. Имея действительно простой интерфейс, Angular позволяет получить конечный результат с более интуитивным подходом к пользовательскому интерфейсу, который требует меньше кода и кажется «очевидным». React же требует специальные функции для управления отображением данных. В основном это значит, что вам следует определить способ представления данных перед тем, как они будут внесены в DOM. Это может привести к отключению во время попыток определить, как будет отображаться определённый элемент.  Примечание: До 80% того, что вы делаете при создании онлайн-сервиса, основывается на написании пользовательского интерфейса. Так что, лучше взвешивайте подходы этих технологий к шаблонизации, чтобы понять, какой из фреймворков соответствует вашим предпочтениям в написании кода. Привязка данных Angular использует двухстороннюю привязку данных. С её помощью фреймворк может присоединить DOM к данным Model через контроллер. В двух словах: когда пользователь взаимодействует с входными данными и задаёт новое значение вашему приложению, то не только View может быть обновлен, а и Model тоже. Соответственно, вам не нужно писать какой-либо метод отслеживания этих изменений в приложении. Примечание: Подход Angular влияет на производительность из-за того, что создается вотчер (watcher) при каждой привязке данных. React использует одностороннюю привязку, где поток данных направлен только в одном направлении. Благодаря этому, вы всегда будете знать, в каком месте ваши данные меняются. Примечание: Подход React гораздо проще отлаживать, когда речь идёт о больших приложениях. Стоит сказать пару слов о клиентском и серверном рендеринге. Фактически server-side рендеринг использовался в первых версиях Angular и создавал трудности для маркетинга. Поскольку браузер воспринимает рендеринг клиентской стороны, то JavaScript дает отличные возможности для SEO оптимизации. Это является существенным недостатком, ведь большинство цифровых продуктов нуждаются в маркетинговой поддержке, дабы остаться в живых. Кроме того, client-side рендеринг может сильно повлиять на загрузку страниц. Однако начиная со второй версии, разработчики Angular исправили эту проблему, перенеся модель рендеринга на сторону сервера. Производительность Как вы знаете, Angular создает наблюдатель (watcher) для каждой привязки данных, чтобы отслеживать все изменения в DOM. Как только View получает некоторые обновления, Angular начинает сравнивать полученные значения с начальными. Дело в том, что данная технология проверяет не только те значения, которые изменились, но и все остальные тоже. Примечание: Производительность Angular 2 может стать причиной проблем для массивных приложений. Разработчики ReactJS ввели концепцию виртуального DOM, которая позволяет создавать легкое дерево DOM, сохраняя его на сервере. Каждый раз, когда пользователь взаимодействует с сайтом, например, заполняет форму, React создает новый виртуальный DOM для сравнения с предыдущим. После того, как библиотека обнаружит все различия между этими двумя моделями – виртуальный DOM будет перестроен. Весь процесс на сервере выполняется, таким образом снижая нагрузку на браузер. Примечание: Производительность ReactJS возрастает, когда дело доходит до больших объемов данных, поскольку в этом фреймворке нет вотчеров. Взгляните на график, показывающий оценку React и Angular по некоторым критериям. Эти оценки основаны на нашем личном опыте. Cleveroad evaluation of technologies У нас было небольшое собрание, посвященное вопросу «React или Angular?», в ходе которого наши frontend разработчики имели возможность обсудить все плюсы и минусы этих технологий. Они пришли к выводу, что Angular лучше подходит для их предпочтений в написании кода, а также для рабочих задач, с которыми они сталкиваются ежедневно. Для подведения итога всему сказанному выше мы подготовили для вас график. В нём сравниваются Angular 1.X, Angular 2 и React. React vs Angular versions Опыт Cleveroad Из этих двух технологий наши разработчики предпочитают Angular. Имея много наработок, связанных с этим фреймворком, мы способны работать более эффективно, сокращая время, необходимое для реализации проекта. Таким образом наши клиенты экономят на стоимости проекта из-за сокращения часов разработки. Все наши проекты, основанные на этой технологии, имели большое количество frontend-логики в своей структуре, которая часто изменяется. Кроме того, в проектах предусматривался ряд изменений в дизайне. Использование библиотеки React может увеличить время разработки и повысить общую стоимость конечного продукта. Вот некоторые из наших проектов: Age In Days, Count, Lifetile. Все эти веб-сайты основаны на AngularJS в нашей компании. Вы также можете посмотреть наш tech stack, который мы обычно применяем вместе с разработкой на Angular 2. Серверные решения: AWS, DigitalOcean, Hetzner, Microsoft Azure Back-end технологии: Node.js + Typescript 2, Angular 2 Базы данных: MySQL, MongoDB, Redis, PostgreSQL Облачные хранилища: WS S3, Azure storage Платёжные системы: Stripe, Braintree Инфраструктура и управление проектами: Webpack 2, Docker и CI, Jira, Bitbucket / Git Подводя итог Вероятно, проблема выбора между Angular и React в мире frontend может быть сопоставима с выбором между iOS и Android. Обе технологии имеют свои преимущества и недостатки, своих поклонников и ненавистников. Таким образом, у каждого разработчика есть определенные причины использовать ReactJS или другую технологию. В 2017 году все больше веб-проектов будет основано на Angular 2 благодаря фичам, позволяющим упростить жизнь разработчиков. Например, хорошая отладка, шаблон MVC, рендеринг на стороне сервера и т. д. В результате это сократит количество часов, необходимых для разработки, и, соответственно, снизит цены на разработку и обслуживание. Оригинал- https://www.cleveroad.com/blog/react-vs-angular-ultimate-performance-research-2017#.WKMPN5BkZMM.twitter
Notification success