Category: Обучение

15
Апр
2021

🎮 Основы разработки игр на Unity

Лучший способ заняться игровым дизайном – сразу же начать. Разбираемся, как сделать собственный уровень при помощи готового пакета 2D Game Kit и на его примере изучаем создание игр в Unity.

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

Мы уже рассказывали, как научиться разработке на Unity. В написанной совместно с онлайн-университетом GeekBrains статье мы рассмотрим пошаговое создание собственной игры с использованием 2D Game Kit.

2D Game Kit

Unity подходит не только для сложных трехмерных игр или работы с виртуальной и дополненной реальностью – движок прекрасно справляется и с 2D-классикой. Мы начнем с простого и разберемся в его игровой механике на примере 2D Game Kit – набора инструментов, шаблонов и настроек для быстрой разработки. По сути пакет представляет собой готовую игру-платформер, для которой можно создавать новые уровни, а также менять свойства существующих.

<span>2D Game Kit</span>
2D Game Kit

Приступим.

Установка и создание проекта

<span>Unity Hub</span>
Unity Hub

Для начала нужно скачать и установить Unity Hub – это лаунчер, который упрощает управление проектами и версиями Unity. Затем придется зарегистрироваться в экосистеме и создать Unity ID. Выберите лицензию Personal (персональную) и отметьте галочкой подходящий вариант применения: Unity позволяет использовать движок бесплатно для некоммерческих целей, а также компаниям с годовым доходом меньше $100 000.


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


N.B. На слабых машинах процесс может занять довольно длительное время – запаситесь печеньками и кофе.


Когда Unity уже установлена, нужно создавать проект. Вы можете взять его из раздела Learn, выбрав там 2D Game Kit или добавив его в ваши Assets на сайте (не забудьте предварительно залогиниться под своим Unity ID).



Создание новой сцены и карты уровня

2D Game Kit позволяет автоматически создать новую сцену по умолчанию. Она уже содержит персонажа Эллен, небольшую платформу, интерфейс здоровья, а также все нужное для передвижения и атаки. Для этого откройте проект и выберите раздел Kit Tools –> Create New Scene в верхнем меню.



2D Game Kit использует функцию Tilemap в Unity, которая поможет быстро и легко нарисовать уровень. Все уже настроено, так что можно сразу приступить к работе. В верхнем меню выберите Window –> 2D –> Tile Palette, и у вас откроются две палитры плиток, которые позволяют рисовать уровни.



Разработчику доступно два стиля спрайтов Grassy Rocks и Alien Structure. Выберите тот, который больше нравится, и начните рисовать карту. Визуальные инструменты похожи на обычный графический редактор, так что проблем с ними не возникнет. Блоки можно рисовать, редактировать или стирать.

Когда карта будет готова, можно сразу перейти в окно Game визуального редактора и нажать Play, чтобы посмотреть результат. Управление классическое: A, D, S, Space для прыжка. O, K – выбор оружия.


Двери и движущиеся платформы


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

Мы можем перетащить ее в любое место. Путь платформы можно сделать сложнее, заставив ее двигаться по кругу. Для этого нужно воспользоваться кнопкой Add Node в окне инспектора, который находится справа. Добавьте несколько точек-нод и соедините их, сменив флажок BACK_FORTH на LOOP в строке Looping инспектора панели. Стоит обратить внимание, что большая часть свойств всех игровых объектов меняется в инспекторе.


Попробуем также добавить дверь: на ее примере мы разберемся, как настраивать взаимосвязь между сценариями разных объектов. Находим ее там же в разделе Prefabs –> Interactables и перетаскиваем в редактор.

Чтобы открыть дверь, добавим нажимную панель на полу: она обозначена как Pressure Pad. В инспекторе панели найдем раздел Pressure Pad (Script), в одном из окон которого есть раздел On Pressed (). Добавим там новое действие при нажатии Runtime Only и в открывшееся поле перетащим из иерархии сцены нашу дверь, которая Door.


Теперь в соседнем окне с надписью No Function выберем из выпадающего списка Animator –> Play (string). Напишем в появившемся поле DoorOpening. Это готовый скрипт для из раздела Art –> Animations –> AnimationClips –> Interactables со сценариями для существующих объектов.


Телепортация

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


В настройках телепорта мы видим раздел Transition Point (Script), в котором в соответствующих окнах можно выбрать телепортируемый объект (в нашем случае Elen) и тип телепортации (Same Scene), перетащить из раздела иерархии точку назначения в Destination Transform (это будет второй телепорт), а также указать условие перемещения – при входе (On Trigger Enter) или при нажатии кнопки действия (E Interact Pressed). Также телепортироваться можно в другие сцены, например, для перехода между уровнями игры через настройку TransitionDestination, которая находится в Scene Control.

Враги

У нас есть два готовых врага в наборе: Chomper и Spitter. Их можно найти в окне проекта в Prefabs –> Enemies.


Оба они контролируются компонентом Enemy Behavior в инспекторе. Вы можете использовать этот компонент для настройки таких свойств, как скорость врага, поле зрения (FOV), здоровье и многое другое. Добавив одного из них в сцену, можно поменять настройки обнаружения персонажа, дальность и угол зрения, скорость движения и реакции.


Урон и украшения

За нанесения урона у нас отвечает функция Damager, ее можно прикрутить к любому игровому объекту и настроить на свое усмотрение. Добавим падающий ящик, который персонаж будет сбрасывать на врагов.


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


Рекомендуем также создать пустой объект в самом низу сцены по всей ее длине и добавить в него Damager, чтобы реализовать механизм смерти игрока при падении. В противном случае Elen будет бесконечно падать вниз, что не особенно логично.

В разделе проекта Art –> Sprites –> Environment есть множество украшений, которые можно добавить в сцену. Пакет 2D Game Kit вообще содержит кучу готовых кастомизируемых объектов. Поскольку Unity поддерживает импорт собственных спрайтов, изображений и объектов, простор для фантазии почти безграничен.

Сборка игры

Будем считать, что сцена уже готова и вы хотите протестировать ее вне редактора в виде отдельной игры. Чтобы не добавлять в проект созданные по умолчанию в 2D Game Kit сцены, стоит слегка изменить стартовые настройки. Их можно найти в разделе Scenes под названием Start. Откройте в редакторе объект TransitionStart, и выберете свою сцену в строке New Scene Name.


Теперь при нажатии Start игрок сразу попадает в вашу сцену, минуя предустановленные уровни.


Перейдем в меню работы с файлами к разделу Build Settings, где нужно выбрать необходимые сцены: Start, UIMenus, Loading и созданная вами. Ниже мы выбираем платформу, под которую будем собирать проект (при необходимости можно добавить поддержку требуемой архитектуры). Проверьте или измените настройки в разделе Player Settings и нажмите Build. Выберите папку назначения и дождитесь окончания сборки.

Игра готова, можно тестировать и делиться ею с друзьями.

Заключение

Мы лишь познакомили читателей с основами интерфейса Unity на примере комплекта 2D Game Kit. Более подробные руководства на английском языке легко найти в соответствующем разделе официального сайта Unity. Также рекомендуем ознакомится с инструкцией по созданию 2D пин-понга на Unity.

***

Надеемся, этот материал помог вам разобраться с интерфейсом движка и воодушевил на развитие в области геймдева. Если вы только начинаете изучать эту интересную индустрию, стоит обратить внимание на курс факультета разработки игр на Unity онлайн-университета Geekbrains. В нем уделяется большое внимание практике, а студенты в процессе обучения реализуют 2D- и 3D-игры разных жанров для ПК и смартфонов. С таким багажом можно идти на собеседование с потенциальным работодателем, тем более университет предлагает студентам бесплатные карьерные консультации и помогает подобрать соответствующие их навыкам вакансии.

10
Апр
2021

⚖ Golang против Python: какой язык программирования выбрать?

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

07
Апр
2021

☕ 7 причин стать разработчиком на Java в 2021 году

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

Java – строго типизированный, объектно-ориентированный язык программирования общего назначения, который держится в топах не первое десятилетие. По версии Developer Survey он входит в пятерку самых популярных в мире языков.

В изучении Java есть много нюансов, поэтому другие варианты тоже стоит рассмотреть, но списывать «старичка» со счетов рановато. Тому есть множество причин.

Причина 1: распространенность Java

Существует индекс TIOBE, оценивающий популярность языков программирования на основе подсчета результатов содержащих их названия поисковых запросов. По данным за март 2021 года Java занял вторую строчку в рейтинге, а в 2005-м и в 2015-м он становился языком года.

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

Есть ли в мире еще какой-то язык, который был бы везде?

Причина 2: востребованность специалистов


Вторая причина напрямую вытекает из первой. На сегодняшний день сайт hh.ru выдает 8 105 вакансий по запросу «Java программист».


Востребованность разработчиков прямо пропорциональна популярности языка. Программисту на Java найдется работа практически в любой точке мира. К слову, по индексу TIOBE язык Python идет следом за Java, а поиск «Python программист» на портале вакансий выдает результатов меньше почти на 18% – 6 688.

Причина 3: перспективы Java

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

Причина 4: Java зрелый и развивающийся


Удивительная особенность Java – обратная совместимость. В виртуальной машине можно запустить написанный 20 лет назад код.

Хотя языку Java 25 лет, он не остановился в развитии и продолжает активно совершенствоваться. Начиная с Java 9 раз в полгода выходят новые версии. Создатели языка соблюдают равновесие между обратной совместимостью и гибкостью к изменениям. Такой подход позволяет найти правильный баланс: язык развивается, но остается стабильным. При этом выпускаются релизы с долгосрочной поддержкой, что очень важно для корпоративных пользователей. Разработчики могут писать софт, который не устареет долгие годы.

Причина 5: Java формирует мышление и прививает стандарты

После изучения синтаксиса Java вам будут доступны все C-подобные языки, где присутствуют операторные скобки и специальные символы, которых нет в Python. После Java можно быстро освоить JavaScript, Scala, Rust, C, C++, C# и Solidity.

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

Один из основных плюсов изучения Java – формирование правильного мышления, выработка хорошего стиля программирования и освоение ряда важнейших для разработчика концепций. Азы объектно-ориентированных языков станут крепким фундаментом, который всегда пригодится в работе. Знающий Java человек умеет не только правильно ставить символы в код, но и глобально понимает логику создания приложения. В этом смысле лучше только системное программирование на C/C++, но оно подходит немногим.

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

И конечно Java вобрал в себя лучшие практики объектно-ориентированного программирования.

Причина 6: Java открыт


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

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

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

Причина 7: огромное сообщество

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

Вокруг языка сформировалось огромное коммьюнити, которое продолжает расти и развиваться, как растет и развивается язык. Программисты всего мира могут даже присоединиться к каналу Virtual Java User Group. Всегда можно получить поддержку на начальных этапах, чтобы развиваться и узнавать новое, а потом и самому помогать новичкам, обмениваться опытом с коллегами и оттачивать мастерство.

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

Чтобы стать высококлассным специалистом, понадобятся годы, но изучить основы Java и стать junior-разработчиком можно за несколько месяцев, параллельно прокачивая навыки «в полях». Такой подход дает неплохой бонус, ведь вопросы можно задавать и коллегам и преподавателям. Если вас заинтересовал этот вариант, обратите внимание на курс «Профессия Java-разработчик» от Skillbox. Онлайн-университет предлагает отсрочку оплаты обучения, чтобы дать новоиспеченному программисту возможность трудоустроиться. При этом с вами работает куратор, а доступ к курсу открыт всегда.

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

01
Апр
2021

🐍 Почему стоит выбрать Python в качестве первого языка программирования?

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

Критерии выбора первого языка

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

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

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

В качестве критериев выбора первого языка программирования также могут рассматриваться:

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

Сфера применения Python


В последнее время языки сценариев набирают популярность. На них написано больше программного обеспечения, чем на традиционных системных языках. Python доступен для всех основных платформ: Windows, OS X, Linux, Unix, BeOS, Java. Он активно применяется в научных вычислениях, машинном обучении, веб-разработке, создании игр и визуальных эффектов, управлении серверами и ряде других направлений.

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

Сообщество и документация

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

Простота Python – синтаксис и семантика

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

Одна из самых необычных особенностей Python – использование отступов для обозначения блоков кода. Интерпретатор помогает обеспечить правильное форматирование, что затрудняет написание нечитаемого кода. На других языках отступы – это искусство. В Python – неотъемлемая часть синтаксиса. В качестве примера приведем версию линейного поиска для Python:

        def search(x, seq):

    for item in seq:

        if x == item:

            return 1   # 1 means true

    return 0  # 0 means false
    

Если, например, строка for была перемещена на несколько пробелов влево, это привело бы к синтаксической ошибке. Также обратите внимание, что : используется для обозначения начала кодового блока.

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

Простые программы действительно просты. Например, Hello World на Python выглядит так:

        print "Hello World!"
    

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

Python имеет минимальный, но полный набор простых управляющих структур: одна конструкция выбора if-elif-else, один определенный цикл for и один неопределенный цикл while.

Цикл for в Python является иллюстративным. Это позволяет управляющей переменной принимать последовательные значения. Его можно использовать для перебора любой последовательности, например, списка или строки. Элементы списка можно распечатать следующим образом:

        for item in List:

    print item 
    

for прост и безопасен, что позволяет вводить его очень рано, не опасаясь бесконечных циклов.

Плюсы и минусы Python


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

Преимущества

  • Простота освоения.
  • Лаконичность.
  • Удобный синтаксис и простая семантика.
  • Интерпретируемость.
  • Широкая сфера применения.
  • Динамическая типизация.
  • Обширная поддержка библиотек.
  • Большое количество документации и обучающих материалов.
  • Мультиплатформенность.

Недостатки

  • Низкая скорость работы программ: построчное выполнение кода в языках с динамической типизацией приводит к сложностям при разработке требующих высокого быстродействия приложений, но часто компенсируется увеличением производительности труда разработчика.
  • Программы на Python используют большой объем памяти: это может быть недостатком при создании требующих оптимизации приложений. Подробнее этот вопрос освещен в статье «Как работает память в Python».
  • Отсутствие проверки во время компиляции иногда приводит к ошибкам во время выполнения кода. Это накладывает повышенные требования к тестированию приложения перед рабочим запуском или релизом.

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

Как освоить профессию разработчика на Python


Если вы хотите быстро научится писать программы и создавать веб-приложения на Python, стоит обратить внимание на онлайн-курс от Skillbox. За 12 месяцев даже новички в программировании смогут освоить необходимую теорию, а также получат практические навыки и станут востребованными разработчиками-джунами. Курс подойдет еще не выбравшим специализацию будущим программистам, а также тем, кто уже осваивает Python самостоятельно или по учебникам.

Курс на 70% состоит из практических занятий – уже через 6 месяцев вы сможете написать блоговый или поисковый движок.

На занятиях вы научитесь:

  • создавать простые и сложные модульные программы: от консольных скриптов до чат-ботов;
  • тестировать код;
  • оптимизировать старые и/или неудачные веб-приложения;
  • работать с базами данных;
  • структурировать проект так, чтобы он был поддерживаемым;
  • использовать промышленные средства разработки: Git, PyCharm;
  • создавать соответствующие современным требованиям веб-приложения;
  • а также получите помощь в трудоустройстве по окончании курса.

Резюме

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

***

В качестве быстрого способа освоить Python с индивидуальной помощью от наставника мы рекомендуем курс образовательной платформы Skillbox «Профессия Python-разработчик».

01
Апр
2021

Подскажите, пожалуйста, ресурсы для практики по Java

Начал изучать Java и хотелось бы побольше практики, которая пригодится.
Пробовал решать задачи на ресурсах типа "Проект Эйлера", но они скорее для понимания алгоритмов и математики.
Решаю задачи на JavaRush и в книгах, например &…

01
Апр
2021

🤔 Как научиться программировать за 24 часа?

Вопрос не самый простой, но и на него можно ответить, если немного поразмышлять.

Допустим, вы знаете компьютер, и хотите научиться программировать. Поскольку многие «умельцы» не де…

19
Мар
2021

Учебник по JS в подобном стиле?

Появилась идея выучить JS. Ни одного другого ЯП не знаю. Зарабатывать этим и в мыслях нет, так, для хобби, и всяких мелких штук для себя. В поисках учебника наткнулся на https://www.javascript.com/try там меньше десяти сообщений, первый ша…

09
Мар
2021

☕ Изучение Java с нуля: что должен знать junior?

Главная задача каждого начинающего программиста – следить за постоянно меняющимся миром ИТ. Рассмотрим те вещи, на которые стоит обратить внимание, чтобы стать востребованным Java-разработчиком.

06
Мар
2021

Куда идти начинающему Java dev?

Подскажите, стоит ли идти на стажировку по автоматизированному тестированию на Java и обучаться дальше Java разработке (фреймворки и т.д.) с последующим переходом с тестирования на разработку? Или не стоит даже начинать? Может легче войти,…

04
Мар
2021

∞ Обучение на инженера DevOps: как не имея опыта найти работу?

Рассказываем, как получить первый опыт и работу в DevOps. Какие знания, умения и навыки вам для этого понадобятся и к чему нужно быть готовым на собеседовании.

Почему в DevOps не…

26
Фев
2021

👨‍🎓️ 5 простых шагов: как подготовиться к поступлению в «Школу анализа данных»?

Поступить и учиться в ШАД от Яндекс – мечта многих начинающих специалистов по Data Science. Рассказываем, как это можно сделать, пройдя пять простых шагов.

В апреле 2021 года начинается набор в «Школу анализа данных» – это бесплатная двухгодичная программа Яндекс для желающих освоить профессию Data Scientist или стать архитектором систем хранения и обработки больших данных. Мы составили небольшой гид по подготовке к поступлению и обучению в этой школе.

Набор проходит в три этапа:

  1. Онлайн-тестирование: решение заданий теста за 5 часов;
  2. Для поступающих в московское отделение второй этап состоит из двух частей: первая математика и алгоритмы, вторая программирование и основы анализа данных;
  3. Заключительный этап очное собеседование, во время которого придется решать задачи по математике, алгоритмам и программированию.
<a href="https://upload.wikimedia.org/wikipedia/commons/a/a8/%D0%9B%D0%9E%D0%93%D0%9E_%D0%A8%D0%90%D0%94.png" target="_blank" rel="noopener noreferrer nofollow">Источник</a>
Источник

Шаг 1: Выясните, каких знаний вам не хватает

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

Шаг 2: Математическая подготовка

Перед тем, как приступить к изучению специфических областей математики, ознакомьтесь с нашим материалом «Обучение Data Science: какие знания по математике нужны специалисту по анализу данных?», в котором собраны общие понятия и ресурсы, с помощью которых их можно освоить.


Алгeбра

Чек-лист из программы для поступления в «Школу анализа данных»:

  • Определение, четность, произведение подстановок. Разложение подстановок в произведение транспозиций и независимых циклов.
  • Комплексные числа. Геометрическое изображение, алгебраическая и тригонометрическая форма записи, извлечение корней, корни из единицы.
  • Системы линейных уравнений. Прямоугольные матрицы. Приведение матриц и систем линейных уравнений к ступенчатому виду. Метод Гаусса.
  • Линейная зависимость и ранг. Линейная зависимость строк (столбцов). Основная лемма о линейной зависимости, базис и ранг системы строк (столбцов). Ранг матрицы. Критерий совместности и определенности системы линейных уравнений в терминах рангов матриц. Фундаментальная система решений однородной системы линейных уравнений.
  • Определитель квадратной матрицы, его основные свойства. Критерий равенства определителя нулю. Формула разложения определителя матрицы по строке (столбцу).
  • Операции над матрицами и их свойства. Теорема о ранге произведения двух матриц. Определитель произведения квадратных матриц. Обратная матрица, ее явный вид (формула), способ выражения с помощью элементарных преобразований строк.
  • Векторное пространство, его базис и размерность. Преобразования координат в векторном пространстве. Подпространства как множества решений систем однородных линейных уравнений. Связь между размерностями суммы и пересечения двух подпространств. Линейная независимость подпространств. Базис и размерность прямой суммы подпространств.
  • Линейные отображения, их запись в координатах. Образ и ядро линейного отображения, связь между их размерностями. Сопряженное пространство и сопряженные базисы. Изменение матрицы линейного оператора при переходе к другому базису.
  • Билинейные функции, их запись в координатах. Изменение матрицы билинейной функции при переходе к другому базису. Ортогональное дополнение к подпространству относительно симметрической билинейной функции. Связь между симметричными билинейными и квадратичными функциями. Существование ортогонального базиса для симметрической билинейной функции. Нормальный вид вещественной квадратичной функции. Закон инерции.
  • Евклидовы пространства. Неравенство Коши-Буняковского. Ортогональные базисы. Ортогонализация Грама-Шмидта. Ортогональные операторы.
  • Собственные векторы и собственные значения линейного оператора. Собственные подпространства линейного оператора, их линейная независимость. Условие диагонализируемости оператора.

Дополнительный материал: «Как линейная алгебра используется в машинном обучении?».

Математически анализ

Чек-лист из программы для поступления в «Школу анализа данных»:

  • Пределы и непрерывность. Пределы последовательностей и функций. Непрерывные функции.
  • Ряды. Числовые и функциональные ряды. Признаки сходимости (Даламбера, Коши, интегральный, Лейбница). Абсолютно и условно сходящиеся ряды.
  • Дифференцирование. Дифференцирование функций. Применение производной для нахождения экстремумов функций. Формула Тейлора.
  • Функции многих переменных. Частные производные. Градиент и его геометрический смысл. Гессиан. Метод градиентного спуска. Поиск экстремумов функций от многих переменных.
  • Интегрирование. Определенный и неопределенный интегралы. Методы интегрирования функций. Первообразные различных элементарных функций. Кратные интегралы (двойные, тройные), замена координат, связь с повторными.
  • Элементы функционального анализа: нормированные, метрические пространства, непрерывность, ограниченность.

Дополнительный материал: «Для чего нужен математический анализ в машинном обучении».

Комбинаторика

Чек-лист из программы для поступления в «Школу анализа данных»:

  • Основные правила комбинаторики. Правило подсчета количества комбинаторных объектов. Принцип Дирихле. Примеры.
  • Множества. Круги Эйлера, операции на множествах. Формула включений и исключений. Примеры.
  • Сочетания. Размещения, перестановки и сочетания. Бином Ньютона. Треугольник Паскаля. Сочетания с повторениями.

Дополнительный материал: «Первое занятие нашего курса по математике для Data Science доступно на YouTube».


Теория вероятностей

Чек-лист из программы для поступления в «Школу анализа данных»:

  • Основные понятия теории вероятностей. Определение вероятностного пространства, простейшие дискретные случаи (выборки с порядком и без него, упорядоченные и неупорядоченные), классическая вероятностная модель. Случайная величина, функция распределения.
  • Условные вероятности. Определение условной вероятности, формула полной вероятности, формула Байеса.
  • Математическое ожидание, дисперсия, корреляция. Определение математического ожидания, дисперсии, ковариации и корреляции, их свойства.
  • Независимость событий. Попарная независимость и независимость в совокупности.
  • Основные теоремы теории вероятностей. Неравенство Чебышева. Закон больших чисел. Центральная предельная теорема.
  • Распределения. Стандартные дискретные и непрерывные распределения, их математические ожидания, дисперсии и свойства: биномиальное; равномерное; нормальное; пуассоновское; показательное; геометрическое.

Дополнительный материал: «Зачем в науке о данных нужны теория вероятностей и статистика».


Шаг 3: Программирование

Для Data Scientist также важны сбор, очистка, обработка и систематизация данных. При решении этих задач и реализации моделей машинного обучения используются Python и R. Для поступления в «Школу анализа данных» нужно владеть хотя бы одним из основных языков программирования. Какой из них стоит выбрать для работы, мы обсуждали в статье «От “R против Python” к “R и Python”».

Чек-лист из программы для поступления в «Школу анализа данных»:

  • Простейшие конструкции языка программирования. Циклы, ветвления, рекурсия.
  • Анализ алгоритмов. Понятие о сложности по времени и по памяти. Асимптотика, O-символика. Инварианты, пред- и пост- условия. Доказательство корректности алгоритмов.
  • Простейшие структуры данных. Массивы, стеки, очереди, связные списки, Сравнение временных затрат при различных типах операций.
  • Строки и операции над ними. Представление строк. Вычисление длины, конкатенация.
  • Сортировки. Нижняя теоретико-информационная оценка сложности задачи сортировки. Алгоритмы сортировки вставками, пузырьком, быстрая сортировка, сортировка слиянием. Оценка сложности.
  • Указатели.Указатели и динамическое управление памятью.

Курсы для подготовки:


Шаг 4: Анализ данных

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

Чек-лист из программы для поступления в «Школу анализа данных»:

  • Основные машинного обучения: классификация, регрессия, ранжирование, кластеризация. Обучение с учителем и без учителя.
  • Предобработка и очистка данных. Работа с пропущенными значениями.
  • Feature Engineering. Работа с категориальными признаками.
  • Переобучение: как его обнаружить и как с ним бороться. Разделение на обучающую и тестовую выборки. Методы регуляризации.
  • Сравнение моделей. Метрики в задачах классификации и регрессии. Методология подборара гиперпараметров.
  • Основные модели классификации и регрессии: линейные модели, решающие деревья. Ансамбли алгоритмов.

Курсы для подготовки:

Шаг 5: Практика

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

Примеры упражнений:

***

Если вы хотите наработать необходимую для поступления в «Школу анализа данных» математическую базу и подготовиться к обучению на Data Scientist, обратите внимание на онлайн-курс «Библиотеки программиста». С помощью опытных преподавателей из МГУ сделать это будет намного проще, чем самостоятельно по книгам. Студенты могут выбрать отдельные разделы (например, линейную алгебру) или оплатить весь курс целиком с существенной скидкой.

26
Фев
2021

🕵 Обучение кибербезопасности: сообщества, книги, видеолекции и курсы

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

25
Фев
2021

📊 Обучение на Data Scientist: стоит ли игра свеч?

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

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

Оценка рынка

Согласно отчету LinkedIn Emerging Jobs Report, начиная с 2012 года только в течение пяти лет количество рабочих мест в области науки о данных увеличилось на 650%. В докладе LinkedIn Emerging Jobs Report 2020 года роль искусственного интеллекта и науки о данных продолжает расти почти во всех отраслях. А по данным Glassdoor 50 Best Jobs in America, Data Scientist остается в тройке лучших вакансий в США. В совместном исследовании Академии больших данных MADE и hh.ru также сообщается, что за прошедшие 5 лет вакансий в области анализа данных стало больше в 9,6 раза, а в области машинного обучения — в 7,2 раза.

Начальная зарплата Data Scientist с опытом работы до года – от 113 тыс. рублей. Через 1 – 2 года такой специалист может получать уже до 160 тыс. рублей. Для сотрудника с опытом работы от 4 – 5 лет вилка вырастает до 310 тыс.

О чём специалисту по анализу данных следует задуматься при переговорах о зарплате в 2021 году?

Персональные факторы:

  • Опыт работы: новичок (junior), 1-3 года (middle) или 6+ лет (senior);
  • Уровень образования: самостоятельное обучение через курсы, опыт работы над проектами, степень магистра или PhD;
  • Владение необходимыми навыками: Python, R, SQL, TensorFlow, Deep Learning и т.д.;
  • Предыдущая работа: ожидание такой же или более высокой заработной платы на следующей позиции.

Особенности компании:

  • Расположение: зарубежная или российская компания, большой/маленький город, удаленно/в офисе;
  • Тип компании: компании-гиганты (Google, Amazon, Yandex и т.д.), средний и малый бизнес, НКО, университет, государственная компания;
  • Другие Data Scientists в команде: распределение обязанностей, нагрузка, общий бюджет на команду Data Science;
  • Должность: например, Senior Data Scientist, Junior Data Scientist, Data Science инженер, стажер и т.д.

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

Насколько реально сменить профессию?


Для специалистов из смежных областей

Если вы хотите перейти в науку о данных из смежных областей, вроде математики и статистики, физики, программирования и компьютерных наук, у вас есть большое преимущество. Имеющиеся навыки и опыт работы позволят вам намного быстрее погрузиться в новую специализацию. При выборе специализации Data Science, не спешите сразу к ней переходить. Изучите смежные с вашей нынешней профессией сферы – это может облегчить смену рода занятий. Например, математику будет лучше освоить алгоритмы машинного обучения и Deep Learning, а разработчику программного обеспечения не составит труда перейти к анализу данных.

Для абсолютных новичков

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

Способы получить профессию


Навыки и образование

Одним из распространенных заблуждений является мнение, будто для работы в Data Science необходима степень в компьютерных науках или математике. Вам не нужно стремиться получить степень магистра. Для работы с алгоритмами машинного обучения и Deep Learning действительно могут понадобиться знание математического анализа, линейной алгебры и теории вероятностей, но это не означает, что вы не сумеете получить навыки самостоятельно. Владение различными инструментами управления данными, а также умение учиться намного важнее, чем формальное образование. Если верить описаниям актуальных вакансий, наиболее востребованными навыками и инструментами для Data Scientist являются следующие:

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

Направления и обзор вакансий

Существует несколько основных ролей специалистов по Data Science, каждая из которых направлена на решение определенных проблем с помощью данных:

  • Data Scientist – специалист, который с помощью различных инструментов, методов, методологий и алгоритмов получает инсайты из огромного объема информации. Он выполняет исследовательский анализ, а также использует различные виды алгоритмов машинного обучения для составления прогнозов. Data Scientist сосредоточен на выявлении неизвестных корреляций, скрытых моделей и рыночных тенденций.
  • Data Engineer отвечают за поиск тенденций в наборах данных и разработку алгоритмов, помогающих компаниям извлекать инсайты из необработанной информации. Эти специалисты работают с большими объемами информации, и занимаются разработкой, конструированием, тестированием и поддержкой архитектуры крупномасштабных систем обработки и баз данных. Data Engineers также должны понимать, как оптимизировать поиск данных, как сделать информационные панели, отчеты и другие виды визуализации понятными для всех заинтересованных сторон.
  • Аналитик данных отвечает за получение и обработку больших объемов информации. В его обязанности также включены проектирование и обслуживание информационных систем и баз данных: исправление ошибок кодирования и других проблем. Аналитик будет использовать статистические инструменты для интерпретации данных, уделяя особое внимание тенденциям и закономерностям, которые могут быть полезны для диагностической и прогностической аналитики. В его задачи также входит предоставление отчетности и визуализация анализа данных, которые будут использованы для принятия наиболее эффективных бизнес-решений.
В Data Science множество направлений. Делайте выбор в зависимости от вашего образования, опыта и личного интереса. Поговорите с людьми, которые работают в отрасли, чтобы выяснить, какие обязанности придется выполнять и каких навыков потребует желаемая должность.

Противоречия


Чтобы ответить на вопрос «стоит ли игра свеч?», нужно учесть и минусы профессии Data Scientists. Наука о данных быстро развивается, а это означает, что вам необходимо всегда оставаться в курсе последних достижений и лучших практик. Действующему специалисту придется постоянно следить за последними технологиями и разработками, быстро учиться и самостоятельно осваивать новые темы.

Если взвесив все плюсы и минусы вы решили, что Data Science точно для вас, обратите внимание на курс «Профессия‌ ‌Data‌ ‌Scientist‌»: обучение на специалиста по Data Science онлайн от Skillbox. Он предназначен для начинающих программистов и аналитиков, а также для желающих кардинально сменить профессию. Цель курса дать студентам знания и навыки, которые могут понадобиться в реальной работе Data Scientist. Программа включает основательную математическую подготовку, занятия по Python, R и SQL, а также по аналитике и машинному обучению. Особенность курса заключается в проектно-ориентированном обучении, во время которого вы сможете на практике понять, как применять методы Data Science для решения бизнес-проблем.

***

Бонус для читателей

Если вас заинтересовала возможность построить карьеру в новой и перспективной области, но вы не готовы принять решение здесь и сейчас, Skillbox предоставляет возможность начать обучение и ознакомиться с 2 модулями программы бесплатно. Вы освоите основы языка Python для анализа данных, а также сможете начать работать в Jupyter Notebook. Для своих студентов в Skillbox предусмотрели удобные условия по рассрочке оплаты за обучение – оплата курсов возможна через год после начала занятий.

24
Фев
2021

🏃 Где используется язык программирования Go?

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

22
Фев
2021

🎲 Зачем в науке о данных нужны теория вероятностей и статистика

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

В двух первых статьях мы рассказали о роли математического анализа и линейной алгебры в машинном обучении. Продолжая тему, поговорим о теории вероятностей и статистике в науке о данных. Более углубленно эти темы будут рассмотрены в нашем «Онлайн-курсе по математике в Data Science Pro».

С одной стороны, роль теории вероятностей и статистики в машинном обучении сравнительно невелика: используются лишь базовые понятия, хотя и довольно широко. С другой стороны, разведочный анализ данных, их очистка, подготовка и конструирование новых признаков – это чистая статистика. А поскольку эти операции в прикладной науке о данных (Data Science) занимают 90-95% времени, самый важный раздел математики для Data Scientist’ов – именно статистика. Кстати, это отлично демонстрирует разницу между машинным обучением и наукой о данных.

“Вероятности” классификации

Практически все модели классификации, используемые в машинном обучении, на самом деле выдают не единственную метку класса (или его номер), а набор “вероятностей” принадлежности к каждому классу. Логистическая регрессия с бинарной классификацией – это та же линейная регрессия, результат которой пропускается через функцию сигмоиды, преобразующую весь диапазон действительных чисел к диапазону [0,1].

Функции сигмоиды с разными параметрами
Функции сигмоиды с разными параметрами

Число p, являющееся результатом сигмоиды, считается “вероятностью” принадлежности результата к одному из классов, а “вероятность” принадлежности к другому классу равна 1-p. Разумеется, это не настоящие вероятности – строго говоря, в данном случае вообще нет смысла говорить о вероятности, ведь результат классификации однозначен. Возможно, в данном случае было бы правильнее называть результат степенью уверенности: например, модель считает, что данный экземпляр принадлежит к классу 1 с уверенностью 74%. Тем не менее, принято называть этот показатель именно вероятностью.

Если классов больше двух, вместо сигмоиды используется Softmax – функция, преобразующая вектор вещественных чисел z размерности N в вектор неотрицательных чисел той же размерности, сумма которых равна 1 (sigma):

σ(z)i=ezi∑k=1Nezk

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

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

Все будет нормально

Нормальное распределение, или распределение Гаусса – это семейство функций плотности распределения вероятности с двумя параметрами: mu (среднее значение, оно же медиана и мода) и sigma (стандартное или среднеквадратическое отклонение). Иногда вместо sigma используется параметр sigma2 – дисперсия нормального распределения:

ϕμ,σ2(x)=1σ2πe−(x−μ)22σ2

График функции плотности нормального распределения похож на колокол. Его центральная координата равна mu, а стандартное отклонение sigma определяет уровень “крутизны” графика: чем оно меньше, чем большая доля значений переменной будет находиться недалеко от центра.

Функции плотности нормального распределения с разными параметрами
Функции плотности нормального распределения с разными параметрами

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

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

Разведочный анализ данных

Разведочный анализ данных (exploratory data analysis, EDA) – это изучение данных для принятия решений по поводу их применения, очистки, преобразования и конструирования новых признаков. Как сказано выше, EDA – это чистая статистика, и основные цели его первого этапа – понять вид распределения признаков, основные параметры этого распределения, обнаружить выбросы и т.д.

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


“Ящик с усами” не позволяет увидеть общую картину распределения, зато предоставляет ценную информацию о его параметрах, особенно квантилях. Квантиль – это такое значение признака, что заданный процент значений этого признака в наборе данных меньше этого квантиля. Например, квантиль 50% – это такое значение, что половина значений признака меньше, а вторая половина – больше него, этот квантиль называется медианой. Квантили 0%, 25%, 50%, 75% и 100% называются квартилями, поскольку они делят область определения признака на четыре части.

"Ящик с усами" и его параметры. Минимум и максимум не учитывают выбросы (на рисунке не показаны)
“Ящик с усами” и его параметры. Минимум и максимум не учитывают выбросы (на рисунке не показаны)

“Усы” выводятся без учета выбросов (outliers) – значений, больших Q3+1.5*IQR или меньших Q1-1.5*IQR. Принято считать, что выбросы скорее свидетельствуют об ошибках ввода данных, чем о реальных значениях признаков, и с ними надо что-то делать – например, удалить. На нашем рисунке выбросы не показаны, а в реальных “ящиках с усами” они выводятся в виде кружков за пределами “усов”. Все понятия, о которых мы говорили, изучает статистика.

Анализ зависимостей между признаками

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

Попарная диаграмма четырех признаков пингвинов (для трех разных видов, обозначенных цветами). Рисунок взят из документации по Seaborn.
Попарная диаграмма четырех признаков пингвинов (для трех разных видов, обозначенных цветами). Рисунок взят из документации по Seaborn.

Коэффициент корреляции между двумя признаками x и y по набору данных, состоящему из n записей, считается следующим образом (“x с крышкой” и “y с крышкой” – средние значения x и y):

rxy=∑i=1n(xi−x¯)(yi−y¯)∑i=1n(xi−x¯)2∑i=1n(yi−y¯)2

Коэффициент корреляции всегда находится в интервале [-1, 1], и его значение показывает, насколько велика линейная зависимость между признаками. Если его значение близко к 1, то зависимость очень сильна, если к -1, то признаки противоположны друг другу, а если к 0 – совершенно не зависят друг от друга. Для анализа многих признаков сразу обычно выводится матрица корреляции, в которой цвет каждого коэффициента соответствует его значению.

Матрица корреляции для набора данных о "Титанике".
Матрица корреляции для набора данных о “Титанике”.

Например, из матрицы корреляции для набора данных о “Титанике” легко увидеть, что какая-то положительная корреляция есть только между количеством родителей и количеством детей на борту: люди плыли либо парами/в одиночку, либо целыми семьями. Отрицательная корреляция есть между пассажирским классом и ценой проезда (естественно, билеты низших по номеру классов стоили дороже) и между полом и признаком выжившего: мужчины уступали места в шлюпках дамам.

Заключение

Как мы уже говорили, статистика занимает особое место в науке о данных, поскольку все данные собираются и обрабатываются именно методами статистики. Более того, иногда вся работа Data Scientist’а, включая создание и усовершенствование моделей, проводится только для того, чтобы доказать или опровергнуть какую-нибудь статистическую гипотезу! А это значит, что каждый Data Scientist обязан знать статистику на профессиональном уровне – по крайней мере, именно такие требования к ним предъявляют на Западе. Помимо статистики придется освоить основы математического анализа и линейной алгебры, о которых шла речь в первых публикациях нашего небольшого цикла.

***

Если вы хотите наработать необходимую для изучения Data Science математическую базу и подготовиться к углубленным занятиям в «Школе обработки данных» или Computer Science Center, обратите внимание на онлайн-курс «Библиотеки программиста». С помощью опытных преподавателей из МГУ сделать это будет намного проще, чем самостоятельно по книгам. Студенты могут выбрать отдельные разделы (например, линейную алгебру) или оплатить весь курс целиком с существенной скидкой.

19
Фев
2021

🕵 Обучение кибербезопасности: как освоить популярную профессию?

Рассказываем о самом быстром способе стать специалистом по информационной безопасности и этичным хакером – пойти учиться.

Статистика и факты

По оценке (.pdf) Kaspersky Security Network за 2020 год:

  • 10% ПК в мире хотя бы однажды были заражены вирусом;
  • более 170 млн уникальных URL содержали вредоносный код;
  • майнеры эксплуатировали более 1.5 млн домашних ПК пользователей;
  • программы-вымогатели заразили полмиллиона компьютеров.

С начала пандемии возросло количество кибератак. По опросам (.pdf) компании HLB (The Global Advisory and Accounting Network) за 2020 год:

  • 12% атак на компании были успешны;
  • 53% компании заметили повышение к ним интереса со стороны хакеров;
  • каждая пятая компания имеет слабую защиту от киберугроз.

Недавние взломы:

  • в штате Флорида хакер подключился к системе водоочистной станции и изменил уровень гидроксида натрия до опасного;
  • злоумышленники атаковали бразильские энергетические компании с помощью программ-вымогателей и украли 1 ТБ конфиденциальной информации;
  • хакеры получили доступ к исходному коду игр Cyberpunk 2077 и «Ведьмак 3».

Пандемия стимулировала рост IT-компаний, а те рынки, которые работали преимущественно в офлайне стали осваивать онлайн-продажи и переходить на удаленную работу. К 2024 году по прогнозу Минпромторга объем интернет-торговли достигнет 7 трлн рублей или 19% в общем обороте. А там, где большие деньги – повышается риск потерять их и нужны специалисты, обеспечивающие информационную безопасность. Вместе со спонсором этой статьи SkillBox рассказываем, как получить актуальные знания и востребованную профессию в сфере информационной безопасности.

Сколько платят начинающему специалисту


В московских государственных учреждениях начинающий специалист получает от 20 до 40 тыс. руб. С опытом работы 1-3 года можно заработать от 40 до 80 тыс. руб. Частные компании предлагают начинающим специалистам на 10-30% больше. У мидл-специалистов зарплата достигает 120 тыс. руб. А в свободное время можно подрабатывать этичным хакингом, одновременно повышая свой скилл.

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

Чему учат #1: Основы строения веб-ресурсов

В первом модуле «Основы строения веб-ресурсов» дают основы фронтенда: HTML, CSS, JavaScript. Также учат работать с базами данных и создавать SQL-запросы. Все это нужно, чтобы предотвращать XML-, SQL-инъекции, межсайтовый скриптинг (XSS) и межсайтовые подделки запросов (CSRF). Эти векторы атак не первый год входят в список OWASP TOP-10, по которому будет лабораторная работа. OWASP – международная некоммерческая организация, занимающаяся повышением безопасности программного обеспечения.

Чему учат #2: Сети

В модуле «Сети» студентов знакомят с семью уровнями сетевой модели OSI, которая дает понимание, как и по каким протоколам устройства взаимодействуют друг с другом (рис. 1). Разобравшись в OSI, узнаете как движется трафик от кабеля до клиентского приложения и поймете, где находятся потенциальные уязвимые места.

Рис. 1. Семь уровней сетевой модели OSI
Рис. 1. Семь уровней сетевой модели OSI

Чему учат #3: Python для пентестеров

В основной программе курса упор сделан на применение Питона для пентестеров: автоматизация сбора информации о системе, исследование веб-ресурсов, анализ трафика, брутфорс, взлом криптографических шифров и отладка кода.

Я не программирую на Python. Что делать?

Бонусом идет бесплатный курс «Python-разработчик с нуля», на котором вы освоите азы программирования на Питоне: условные операторы, циклы, функции, ООП, мультипоточность и библиотеки для работы с данными.

Чему учат #4: Linux с нуля до сетевого администрирования

Если вы никогда не работали с Линукс, то ничего страшного – на курсе вы установите ОС, познакомитесь с терминалом, основными командами и файловой системой. На следующих продвинутых уровнях (их два) узнаете о сетевых интерфейсах, научитесь управлять доступом, проводить логирование и мониторинг сетевых подключений, настраивать фаервол, писать BASH-скрипты и использовать сетевые сканеры.

Чему учат #5: Основы шифрования

Рис. 2. Иллюстрация принципа работы хеш-функции: даже небольшое изменение предложения полностью меняет хеш
Рис. 2. Иллюстрация принципа работы хеш-функции: даже небольшое изменение предложения полностью меняет хеш

На рисунке 2 проиллюстрирован принцип работы хеш-функции (от hash – «мешанина»), которая преобразует данные произвольной длины в битовую строку установленной длины. Хеш используется, чтобы не хранить данные в открытом виде. Очевидно, что шифровать чувствительные данные, такие как пароли – нужно. По какой-то причине разработчики даже крупных компаний пренебрегают шифрованием и хранят данные в формате простого текста (plain text) либо шифруют слабыми алгоритмами:

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

Чему учат #6: Windows

По данным w3techs.com на 15 февраля 2021 года 73.7% серверов работают на Unix-подобных системах, 26.3% – на Windows. Поэтому в программу включен модуль по работе с Windows (службы аудита, политики доступа, цифровые подписи) и PowerShell, необходимый для администрирования и автоматизации администрирования серверов на базе Windows.

Чему учат #7: Базы данных

Когда фронтенд-разработчики забывают экранировать символы, которые пользователь вводит в форму отправки, открывается окно для взлома через SQL-инъекцию. По статистике за 2019 год (.pdf) SQL-инъекции составили 42% от всех атак на веб-приложения, доступные через сеть интернет (internet/public facing applications). Чтобы уделить должное внимание этой теме, работа с базами данных вынесена в отдельный модуль: базовые операции с таблицами, синтаксис запросов, архитектура БД и разбор SQL-инъекций.

Чему учат #8: No Script kiddie

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

Дополнительные мини-курсы

В дополнение к основному курсу, открывается доступ к «Универсальным знаниям программиста» и «Английский для IT-специалистов», в которых прокачиваются софт-скиллы, продуктивность, учат создавать личный бренд, верстать e-mail рассылки, работать в фотошопе, искать заказы на разработку и дают базовый английский язык. То есть делают из студента T-Shaped специалиста, у которого есть углубленное знание в какой-то одной сфере – информационная безопасность, – а также широкий кругозор в смежных областях, который может быть полезен в остальной проектной работе и на фрилансе.

Дипломный проект

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

Как все это успеть?


Курс длится 24 месяца (184 часов лекций и 120 часов практики), чтобы не сильно отрываться от текущей работы и без спешки усваивать новые знания. В среднем требуется около 3-5 часов в неделю. Также курс можно завершить за меньший срок, если есть свободное время.

А если возникнут вопросы?

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

Я ничего не умею, будет сложно?

Курс рассчитан на новичков. Плюс вам всегда на помощь придут наставники. Главное – систематически выполнять задания и не стесняться задавать вопросы.

Есть рассрочка или кредитная программа?

Да, действует программа рассрочки. А первый платеж – через три месяца.

Какие шансы, что я получу работу?

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

Кто ведет занятия?

Занятия ведут сертифицированный этичный хакер Александр Огнев, старший инженер безопасности в Alibaba Cloud Анастасия Полякова, инженер по информационной безопасности и старший консультант центра сетевых решений компании «Инфосистемы Джет» Нина Пакшина и Максим Клочков, главный методист технического направления Skillbox Михаил Овчинников и директор кадрового центра SymbioWay Даниил Пилипенко.


Что в итоге?

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

18
Фев
2021

☕ За и против: изучение Java как первого языка программирования

Если вы решили заняться программированием профессионально, самое время подумать о выборе первого языка. Подходит ли Java для новичков? Попробуем разобраться.

Какой язык программиро…

17
Фев
2021

∀ Как линейная алгебра используется в машинном обучении?

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

Продолжая серию публикаций к запуску авторского «Онлайн-курса по математике в Data Science Pro», поговорим о применении линейной алгебры в машинном обучении. За примерами далеко ходить не нужно: напротив, очень трудно найти такую сферу машинного обучения, в которой не используется линейная алгебра. Причем не только ее основные методы, вроде операций с векторами и матрицами, но и продвинутые вроде сингулярного разложения матрицы (Singular Value Decomposition, SVD), метода главных компонент (Principal Component Analysis, PCA) и метода опорных векторов (Support Vector Machines, SVM). Последний – один из основных алгоритмов машинного обучения.

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

Основы

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

j¯=[a1,a2,…an]∈Rn

Такой набор может представлять очень разные сущности: например, геометрический вектор в некоторой системе координат (при этом числа ai умножаются на векторы базиса), полином (числа ai умножаются на xi) и вообще любую линейную комбинацию каких-либо элементов. Матрица – это такой же набор действительных чисел, но организованный в виде прямоугольника. Матрицу тоже можно представить в виде длинного вектора, если поставить ее столбцы друг на друга.

Q=∥a11a12…a1na21a22…a2n…………am1am2…amn∥∈Rm∗n

Что в машинном обучении можно представить в виде векторов и матриц? Практически всё! Например, одна строка из набора данных – это вектор, каждый элемент которого представляет значение некоторого признака. Весь тренировочный набор данных (или, в случае нейронной сети, один batch из этого набора) – это матрица. Изображение, которое будет распознавать сверточная нейронная сеть – тоже матрица чисел, соответствующих отдельным пикселям. Градиент функции потерь – это вектор, и так далее.

Произведение векторов, умножение матрицы на вектор и произведение матриц – все это используется в машинном обучении. Например, модель линейной регрессии с вектором весов w и вектором признаков x можно записать в виде произведения векторов, если добавить в вектор признаков x[0] = 1:

Mw(x)=w[0]+w[1]×x[1]+w[2]×x[2]+…+w[m]×x[m]=w[0]+∑j=1mw[j]×x[j]=w¯⋅x¯

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

Prediction=A⋅x¯=y~;Loss=L(y~−y)

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

Tθ=∥cos(θ)−sin(θ)sin(θ)cos(θ)∥
Поворот исходного изображения (Original) на 112.5 градусов
Поворот исходного изображения (Original) на 112.5 градусов

Измерения

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

L1=∥x¯∥1:=∑i=1n|xi|;L2=∥x¯∥2:=∑i=1nxi2=x¯⊤x¯
Геометрическое место точек, у которых норма равна единице: <b>L<sub class="cdx-sub">1</sub></b> (слева) и <b>L<sub class="cdx-sub">2</sub></b> (справа)
Геометрическое место точек, у которых норма равна единице: L1 (слева) и L2 (справа)

Норма L2(x-y) – это расстояние между векторами x и y. Обе нормы используются в машинном обучении для регуляризации функции потерь: лассо-регуляризация использует L1, регуляризация ТихоноваL2, а эластичная сеть – и ту, и другую.

Косинус угла между двумя векторами x и y линейная алгебра определяет так:

cos(θ)=x¯⊤y¯∥x∥⋅∥y∥

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

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

Разумеется, оценка сходства широко применяется и в моделях кластеризации – например, метод k-Nearest Neighbors размечает кластеры именно по степени сходства элементов друг с другом.

Сингулярное разложение матриц (SVD)

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

A⋅A⊤=I=A⊤⋅AA−1=A⊤

Сингулярное разложение матрицы вводится следующей теоремой линейной алгебры: любую невырожденную прямоугольную матрицу Am*n можно представить в виде произведения трех матриц Um*m, Em*n и Vn*n, где U и V – ортогональные матрицы, а E – прямоугольная матрица, в которой все элементы, кроме диагональных, равны нулю.


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

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

Метод главных компонент (PCA)

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

PCA находит проекцию данных (синие точки) на пространство меньшей размерности (линию)
PCA находит проекцию данных (синие точки) на пространство меньшей размерности (линию)

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

  1. Вычитаем среднее значение, чтобы набор данных имел среднее значение 0. Это сокращает риск возникновения числовых проблем.
  2. Стандартизируем. Делим элементы данных на стандартное отклонение sigmad по каждому измерению d. Теперь данные не имеют единиц измерения, а их дисперсия по каждой оси равна 1, что отмечено на рис. в) голубыми стрелками.
  3. Выполняем спектральное разложение матрицы ковариации. Вычисляем матрицу ковариации данных, ее собственные векторы и собственные значения. На рис. г) собственные векторы масштабированы соответствующими собственными значениями (голубые стрелки), и более длинный вектор соответствует подпространству главных компонент. Матрица ковариации данных изображена в виде эллипса.
  4. Проецируем данные в подпространство. Рисунок е) показывает итоговую проекцию, перенесенную в исходное пространство данных.

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

Метод опорных векторов (SVM)

Один из основных методов построения моделей машинного обучения – это метод опорных векторов (Support Vector Machine). Этот метод основан на построении гиперплоскости, максимально разделяющей объекты разных классов – то есть, обеспечивающей максимальное расстояние между граничными точками. Мы не будем вдаваться в детали его реализации, поскольку они достаточно сложны и выходят за рамки нашей статьи. Метод очень подробно, с примерами кода и анимацией, описан в статье на Хабре, откуда взята следующая иллюстрация:

Иллюстрация метода опорных векторов (опорные векторы отмечены красным цветом)
Иллюстрация метода опорных векторов (опорные векторы отмечены красным цветом)

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

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

Заключение

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

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

***

Если вы хотите наработать необходимую для изучения Data Science математическую базу и подготовиться к углубленным занятиям в «Школе обработки данных» или Computer Science Center, обратите внимание на онлайн-курс «Библиотеки программиста». С помощью опытных преподавателей из МГУ сделать это будет намного проще, чем самостоятельно по книгам. Студенты могут выбрать отдельные разделы (например, линейную алгебру) или оплатить весь курс целиком с существенной скидкой.

16
Фев
2021

📊 Какие медиа предпочитают российские айтишники?

Proglib.io проводит опрос читательской аудитории, чтобы определить популярность используемых российскими ИТ-специалистами медиа-ресурсов. В качестве бонуса – 10 самых популярных русскоязычных каналов на YouTube.

В изобилии информационных продуктов легко запутаться. Proglib.io проводит опрос читательской аудитории, чтобы определить популярность различных ресурсов в российской ИТ-среде. Пройдя по этой ссылке и ответив на вопросы, вы можете получить скидку в 5% на все наши курсы.

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

На данный момент в исследовании уже приняло участие 440 человек – все они или иначе связаны с миром ИТ. На диаграмме ниже наглядно показаны профессии и опыт работы опрошенных специалистов.


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

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


  • Результаты этой диаграммы красноречивы. Подавляющее большинство разработчиков сидят в Telegram. Хотя это больше мессенджер с функциями соц. сети, детище Павла Дурова пользуется огромной популярностью. По состоянию на январь 2021 года количество активных пользователей сервиса составляет около 500 млн. человек и ежемесячно увеличивается примерно на 600 тысяч. Помимо обмена сообщениями тут можно хранить неограниченное количество файлов, создавать и использовать ботов, а также вести группы и микроблоги (каналы). Именно каналы публикуют полезную информацию без отвлекающих факторов, что выгодно отличает Telegram от традиционных социальных сетей. Нет ленты, которую приходится перелистывать – меньше шансов залипнуть на чьей–то странице.
  • Это довольно странно, но занявший второе место в нашем списке соцсетей ресурс тоже не является социальной сетью в привычном понимании. Видеохостинг Youtube – второй сайт в мире по посещаемости – заслуженно находится на лидирующих позициях в нашем исследовании. Все благодаря десяткам тысяч видеороликов по разработке, настройке, отладке и тестированию. Опытные профессионалы делятся здесь с новичками знаниями, готовыми решениями, рабочими методами и идеями, а также дают советы на любые темы.
  • Также стоит отметить довольно часто упоминающийся сайт medium.com. Это быстрая и простая в обращении блог-платформа от создателей Twitter, которая является местом для публикации заметок по связанной с ИТ тематике. Каждый желающий человек или компания могут зарегистрироваться в сервисе и что-то написать.
  • Традиционные социальные сети тоже прекрасно с этим справляются: чтобы потеснить лидеров нашего топа им не хватило совсем чуть-чуть голосов.

Далее мы детально разберем, какие интернет-издания читает наша аудитория.


  • В списке лидеров оказались три крайне полезных ресурса. Во-первых, это Habr.com – русскоязычный сайт в формате системы коллективных блогов (хабов) с техническими и аналитическими статьями. На сайте есть т.н. карма – социальный рейтинг пользователя, который зарабатывается знаниями и авторитетом. Чем у автора она больше, тем весомей его мнение в глазах читателей, поэтому будьте внимательны и учитесь у профессионалов.
  • На втором месте по популярности, по результатам опроса, оказался наш сайт proglib.io. Здесь вы всегда найдете актуальные материалы, которые помогут освоить не только программирование, но и множество других ИТ-профессий. Книги, лекции, видеоуроки и советы, тесты знаний и обсуждение горячих наболевших тем, а также анонсы, туториалы, ссылки, интервью, обзоры, онлайн-курсы, свежие вакансии и много чего еще. Мы запускаем даже собственные авторские курсы, которые ведут опытные преподаватели из главного вуза страны.
  • Третий популярный у опрошенной аудитории ресурс – образовательный проект tproger.ru («Типичный программист»). Известное российское издание посвящено разработке и всему, что с ней связано. Пользователи могут оставлять комментарии к публикациям, ставить лайки, делать закладки и т.д.

10 популярных каналов на Youtube

В нашем исследовании был отдельный вопрос о популярных у аудитории каналах в Telegram и на YouTube. Давайте рассмотрим это более детально:

  1. Канал «АйТиБорода». Автор и ведущий Алексей Картынник (тимлид в компании “SoftTeco”) рассказывает о жизни айтишников изнутри, без цензуры, ярлыков и лишнего пафоса. Его видеоролики помогут вам найти себя в мире цифровой индустрии.
  2. Youtube-канал «Хауди Хо» узбекского блогера Абрахама Тугалова. Здесь вы найдете уроки по программированию, выпуски про хакинг, подборки, топы, гайды и многое другое из типичной жизни программиста.
  3. Канал Сергея Немчинского. Сергей – программист с двадцатилетним стажем, 15 из них – в Java. Проводит авторские интенсивы и освещает актуальные вопросы по разным направлениям в ИТ.
  4. Гоша Дударь – популярный ютубер. У него на канале более 1000 видеороликов на тему разработки, уроков о создании игр и сайтов, изучении языков программирования (C++, C#, Java, Python, С, Swift, Go и др.).
  5. Тимофей Хирьянов, преподаватель кафедры информатики МФТИ, выкладывает свои довольно занимательные лекции и занятия в открытый доступ при помощи своего ютуб-канала.
  6. Владилен Минин – программист со стажем. У него на канале вы найдете большое количество уроков, посвященных веб-разработке. JavaScript и фреймворки, теория и много практики.
  7. «Диджитализируй!» Канал о разработке, цифровом бизнесе, операционных системах, софте и железе. Стримы с обзорами на самые разные темы.
  8. Олег Молчанов. Здесь вы найдете видео уроки по программированию на Python, созданию сайтов и веб-приложений. Есть уроки парсингу сайтов, по Flask, уроки по Django 2, по созданию блокчейна на Python, ботов для Telegram.
  9. «Фрилансер по жизни». Занимательный ютуб-канал украинского ИТ-фрилансера, который регулярно делится со зрителями опытом, наработками, секретами и лайфхаками.
  10. #SimpleCode. Подробные уроки программирования на самых разных языках для новичков и не только.

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

Итоги

Судя по результатам, опрошенные нами пользователи стремятся развиваться и двигаться вперед, постоянно самосовершенствуясь. Читают, учатся, прислушиваются к мнению профессионалов и следят за последними тенденциями в мире разработки – и это прекрасная новость. Редакция «Библиотеки программиста» желает вам профессиональных успехов. Со своей стороны мы постараемся помочь читателям интересными и актуальными публикациями. Удачи!

***

Наш опрос все еще продолжается: ответив на несколько вопросов вы можете получить скидку в 5% на онлайн-курс по высшей математике в Data Science Pro от «Библиотеки программиста». За 5 месяцев (2 занятия по 2 академических часа в неделю) вы сможете наработать необходимые для освоения востребованной профессии знания. Занятия ведут опытные преподаватели из МГУ, а программа рассчитана на желающих поступить в «Школу анализа данных» от Яндекс. Качественный материал и живые трансляции с наглядными примерами помогут понять даже самые сложные темы.

15
Фев
2021

📈 Для чего нужен математический анализ в машинном обучении

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

Математический анализ – основа всей высшей математики. Он необходим во многих разделах царицы наук: особенно это относится к производным и интегралам. К запуску авторского «Онлайн-курса по математике в Data Science Pro» мы начинаем публикацию серии статей об использовании математических методов в науке о данных. Сегодня рассмотрим несколько самых очевидных применений матанализа в машинном обучении.

Градиентный спуск

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

Знаки производной в точке экстремума и в ее окрестности
Знаки производной в точке экстремума и в ее окрестности

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

∇L(w1,w2,…wn)=[∂L∂w1,∂L∂w2,…∂L∂wn]

В данном случае L – это функция потерь (Loss) нашей модели машинного обучения, а w1,…wn – внутренние параметры модели, которые должны изменяться в процессе ее обучения (веса). Функция потерь измеряет “качество” модели, она может быть очень разной в зависимости от задачи. Например, для модели, предсказывающей значение одной переменной, это может быть квадрат разности между истинным значением этой переменной и предсказанным.

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

Градиентный спуск по поверхности функции потерь
Градиентный спуск по поверхности функции потерь

Идея метода градиентного спуска очень проста: «если идти все время вниз, то когда-нибудь достигнешь дна». Чтобы узнать, в каком направлении находится “низ”, мы и считаем вектор градиента.

Цепное правило и back-propagation

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


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

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

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

Такой метод расчета градиента называется обратным распространением ошибки, или просто обратным распространением (back-propagation). Именно этот метод дал старт широкому распространению всех видов нейронных сетей, которые изменили мир. История искусственных нейронных сетей началась еще в 1960-х, но лишь недавно появились вычислительные мощности, позволяющие реализовать обратное распространение.

Плотность распределения вероятности

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

Вероятность в виде интеграла функции плотности распределения
Вероятность в виде интеграла функции плотности распределения

Именно из этой формулы следует знаменитое правило трех сигм – эмпирическое правило, согласно которому 68% значений нормально распределенной случайной величины находятся в пределах одного стандартного отклонения от среднего значения, 95% значений – в пределах двух отклонений, и 99.7% (почти все) – в пределах трех отклонений.

Правило трех сигм
Правило трех сигм

Заключение

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

«Прикладное машинное обучение», в основном, это конструирование признаков.
Эндрю Ын.

Конструирование признаков (feature engineering) – это искусство создания нужных признаков на основе исследовательского анализа данных (exploratory data analysis, EDA). Например, анализ данных может показать квадратичную зависимость целевой переменной от некоторого признака – то есть, можно ввести признак, равный квадратному корню исходного, от которого целевая переменная будет зависеть линейно. Чтобы хотя бы заметить эту квадратичную зависимость, а тем более доказать ее, нужно очень хорошо знать математический анализ.

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

***

Если вы хотите наработать необходимую для изучения Data Science математическую базу, обратите внимание на онлайн-курс «Библиотеки программиста». С помощью опытных преподавателей из МГУ сделать это будет намного проще, чем самостоятельно по книгам. Студенты могут выбрать отдельные разделы (например, матанализ) или оплатить весь курс целиком с существенной скидкой.

12
Фев
2021

🤖 Четыре научные статьи о глубоком обучении, которые стоит прочитать в феврале 2021

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

Текст публикуется в…

10
Фев
2021

👨‍🔧️ Обучение на тестировщика: как получить работу, если без опыта никуда не берут?

Пройти подготовку – только половина дела для будущего инженера Quality Assurance. Хотя порог входа в профессию тестировщика довольно низкий, новичкам часто отказывают на собеседованиях. Разбираемся, как решить эту проблему.

05
Фев
2021

👨‍🔧️ Обучение на тестировщика: как освоить востребованную профессию в 4 этапа?

Можно ли получить специальность тестировщика самостоятельно? Разбираемся, насколько это сложно и что потребуется желающим изучить все нюансы Quality Assurance с нуля.

02
Фев
2021

☕ Из джунов в мидлы: каверзные вопросы по JavaScript на собеседованиях

Собеседования для разработчиков Junior и Middle – разные виды спорта. Совместно с Яндекс.Практикумом мы попробуем на практических примерах разобраться, чем отличаются требования к программистам на JavaScript разного уровня.

Если вы хотите успешно пройти собеседование, нужно обратить внимание на моменты, по которым обязательно будут заданы каверзные вопросы. Как избежать ловушек и какие знания стоит подтянуть? В этом материале собраны вопросы из реальных интервью с претендентами на трудоустройство в крупные ИТ-компании. Чтобы понять разницу между требованиями к специалистам уровней Junior и Middle, начнем с самого простого.

Вопросы для джунов

Во время собеседования на позицию Junior JavaScript developer стоит ожидать вопросов о манипуляциях с DOM, использовании наиболее распространенных методов массива и многих других вопросов по основам JavaScript. Их все сложно перечислить. При этом от джуна едва ли будут ожидать досконального знания абстрактных алгоритмов или параллелизма. Скорее на таком собеседовании рекрутер постарается понять вашу мотивацию и обучаемость. Конечно, вы должны понимать код на JavaScript и уметь писать простые функции.

На собеседовании вас могут ожидать следующие вопросы:

1. В чем разница между использованием «var», «let» и «const»?

2. Как показать пользователю уведомление о том, что в его браузере не включен javascript?

3. Почему важен порядок добавления скриптов на страницу?

4. Как получить текущий URL?

5. Как проверить, что переменная не является неопределенной? Как проверить, что свойство существует в объекте?

6. Написать простую функцию, чтобы проверить, является ли число целым?

7. Как остановить функцию setInterval?

8. Список примитивных типов в JavaScript

9. В чем разница между Java и JavaScript?

10. Что такое функция имени в JavaScript и как ее определить?


Правильные ответы

1. Разница в уровне охвата

Var – Оператор переменных JavaScript используется для объявления переменной и, при желании, мы можем инициализировать значение этой переменной.

        var a = 10;
    

Объявления переменных обрабатываются перед выполнением кода.

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

Let – это сигнал о том, что переменная может быть переназначена, например, счетчик в цикле или замена значения в алгоритме. Он также сигнализирует, что переменная будет использоваться только в блоке, в котором она определена.

2. Показать пользователю уведомление о том, что в его браузере не включен javascript

        <noscript>Your browser does not support JavaScript!</noscript>
    

3. Библиотеки следует добавлять раньше, чем скрипты, которые их используют

Например, следующий фрагмент приведет к ошибке «Uncaught ReferenceError: jQuery is not defined»

        <script src="js/jquery.easing.js"></script>
<script src="js/jquery.js"></script>
    

4. Получить текущий URL

        window.location.href
document.URL
    

5. Проверить, что переменная не является неопределенной, что свойство существует в объекте

         if (typeof someVar !== "undefined") {
    // делаем что-то
}
 
// проверяем свойство с наследованием
if ('someProperty' in object) {
    // делаем что-то
}
 
// проверяем свойство без наследования
if (object.hasOwnProperty('someProperty')) {
    // делаем что-то
}
    

6. Функция, чтобы проверить, является ли число целым

        function verifyInt(num) {
  return num % 1 === 0;
}
    

7. Остановить функцию setInterval

         // повторяем с интервалом в 1 секунду
let intervalId = setInterval(() => console.log('tick'), 1000);
 
// остановимся через 10 секунд 
setTimeout(() => { clearInterval(intervalId); console.log('stop'); }, 10000);
    

8. Список примитивных типов

Тип числа представляет как целые числа, так и числа с плавающей запятой.

Тип строки должен быть заключен в кавычки.

Логический тип имеет только два значения: true и false.

9. Разница между Java и JavaScript

Язык программирования JavaScript разработан Netscape, Inc и не является частью платформы Java.

Приложения Java запускаются на виртуальной машине или в веб-браузере, а JavaScript – в веб-браузере и некоторых серверных средах.

Код Java компилируется, тогда как код JavaScript находится в тексте и на веб-странице.

JavaScript – это язык сценариев ООП, тогда как Java – язык программирования ООП.

10. Функция имени

Именованная функция объявляет имя, как только оно определено. Ее можно определить с помощью ключевого слова функции как:

        function named(){
// write code here
}
    

Вопросы для мидлов

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

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

1. Преобразование типов

Иногда Javascript ведет себя не совсем очевидно. Разработчик должен знать правила, по которым выполняется преобразование типов во время выполнения операций. Знание правил может предотвратить множество ошибок.

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

5 + ‘2’ Что на выходе?

5 – “2” Что на выходе?

true + true Что на выходе?

2. Promise

Перепишите пример, используя promise:

        const printSec = (number, callback) => {

  setTimeout(() => {

      console.log(`${number} sec`)

      callback()

    },

    1000)

}

printSec(1, () => {

  printSec(2, () => {

    printSec(3, () => {})

  })

})
    

3. Прототипное наследование

Как работает прототип?

4. Цикл событий

Что произойдет со страничкой в результате выполнения этого кода?

        function foo() {

    setTimeout(foo, 0);

}

foo();
    

5. Какие типы данных представлены в javascript?

6. Как найти сумму элементов массива, если вложенность массива неизвестна?

        arraySum([[1, 2, [3, 4]], [9], [10, 12]])
    

7. В чем причина помещения всего содержимого исходного файла JavaScript в книгу функций?

8. Перечислите специальные числовые значения

9. Какое предназначение файла package-lock.json?

10. Что такое запросы между источниками и CDN?


Правильные ответы

1. Преобразование типов

        5 + '2' // "52"

5 + '2' == '5' + '2' == '52'

5 - "2" // 3

5 - "2" == 5-2 == 3

true + true // 2

true + true == 1 + 1 == 2
    

2. Promise

это достаточно современный подход написания асинхронного кода. Ранее использовался подход с использованием колбеков. При большой вложенности получался т.н. «ад обратных вызовов».

При использовании промисов код выглядит читабельно и удобен для редактирования:

        const printSec = (number) => {

  return new Promise((resolve, reject) => {

   setTimeout(() => {

        console.log(`${number} sec`)

        resolve()

      },

      1000)

  })

}

printSec(1)

  .then(() => printSec(2))

  .then(() => printSec(3))
    

3. Прототипное наследование

Каждый объект в JS имеет базовый объект – прототип. Если свойство не находится в исходном объекте, то поиск продолжается в его “родительском” объекте.

Установить прототип объекта можно только во время создания объекта: если вы создаете новый объект с помощью новой Func(), свойство объекта [[Prototype]] будет установлено на объект, на который ссылается Func.prototype.

4. Цикл событий

Middle-разработчик должен понимать как устроен движок Javascript.Ответ: ничего особенного. Задачи будут добавляться в цикл событий, но они не вызовут ни переполнения стека, ни бесконечной очереди, которая затормозит весь сайт. Так как макротаски после выполнения пропускают один цикл для отрисовки контента и выполнения микротасков, в отличие от микротасков, которые выполняются все в очереди перед тем, как передать управление следующему пункту в цикле событий.

        function foo() {

    return Promise.resolve(1).then(foo);

}

foo();
    

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

5. Типы данных

Чтобы узнать тип переменной JavaScript, мы можем использовать оператор typeof. String – представляет собой серию символов и записывается в кавычках. Строку можно представить в одинарных или двойных кавычках.

Number – представляет собой число и может быть записано с десятичными знаками или без них.

BigInt – используется для хранения чисел, превышающих ограничение типа данных Number. Он может хранить большие целые числа и представлен добавлением «n» к целочисленному литералу.

Boolean – представляет собой логическую сущность и может иметь только два значения: истина или ложь. Логические значения обычно используются для условного тестирования.

Undefined – когда переменная объявлена, но не назначена, она имеет значение undefined, и ее тип также не определен.

Null – представляет несуществующее или недопустимое значение.

Symbol – это новый тип данных, представленный в версии JavaScript для ES6. Он используется для хранения анонимного и уникального значения.

Object – используется для хранения коллекции данных.Важно помнить, что любой тип данных, который не является примитивным типом данных, относится к типу объекта в javascript.

Array – это не отдельный тип данных, на самом деле это Object. `typeof null` равен “object” и это нужно учитывать в проверках.typeof “John Doe” // Возвращает “string”

        typeof  3.14 // Возвращает "number" 

typeof  true // Возвращает "boolean" 

typeof  234567890123456789012345678901234567890 n // Возвращает bigint 

typeof  undefined // Возвращает undefined 

typeof  null // Возвращает "object" 

typeof Symbol ( 'symbol' ) // Возвращает символ
    

6. Найти сумму элементов массива, если вложенность массива неизвестна

        // используя рекурсию
function arraySum(arr) {
    let sum = 0;
    arr.map((item) => {
        if (Array.isArray(item)) {
            sum += arraySum(item);
        } else {
            sum += item;
        }
    });
    return sum;
}
console.log(arraySum([[1, 2, [3, 4]], [9], [10, 12]]));
    

7. Причина помещения всего содержимого исходного файла JavaScript в книгу функций

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

Еще одна особенность этого метода – легко создать псевдоним для глобальной переменной. Это часто используется в плагинах jQuery.

8. Специальные числовые значения

Infinity больше любого числа

-Infinity меньше любого числа

NaN представляет собой ошибку (не число)

9. Предназначение файла package-lock.json

package-lock.json автоматически создается для любых операций, когда npm изменяет дерево node_modules или package.json. Он описывает точное дерево, которое было сгенерировано, так что последующие установки могут генерировать идентичные деревья, независимо от промежуточных обновлений зависимостей.

10. Запросы между источниками и CDN

Если мы сделаем выборку с произвольного веб-сайта, это, вероятно, не удастся. Основная концепция здесь – триплет домен/порт/протокол.

Запросы из разных источников, отправленные в другой домен (даже субдомен), протокол или порт требуют специальных заголовков с удаленной стороны. Эта политика называется «CORS»: совместное использование ресурсов между источниками.

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

Как получить знания без отрыва от работы?

Ознакомившись с этим списком вопросов, можно сделать очевидный вывод: при переходе от уровня Junior к уровню Middle JavaScript developer в значительной степени меняется и подход к интервью. Список каверзных вопросов не исчерпывается описанными выше, поэтому нужно быть готовым ко всему.

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


Онлайн-курсы

  • Fullstack Academy. Видеокурс на основе семинаров состоит из 40 часов и учит всем основам JavaScript. Помимо инструкций по основным понятиям, в нем также рассматривается большое количество задач по кодированию, которые упорядочены по уровню возрастающей сложности.
  • Профессия мидл фронтенд-разработчик. Курс подойдет джунам фронтендерам, бэкендерам, которые собираются стать фуллстак-разработчиками, и тем, кто хочет разобраться в устройстве фреймворков. Курс включает 5 месяцев обучения по 15-20 часов в неделю, за которые вы напишете 2 приложения, отточите навыки JS, познакомитесь с алгоритмами и структурами данных, пройдете программу профессиональной акселерации.
  • Coderbyte JavaScript in One Week. Задачи CoderByte – отличный ресурс, особенно если вы хотите подать заявку на учебный курс по более избирательному кодированию в рамках смены карьеры.
  • Eloquent JavaScript. Программисты среднего уровня извлекут пользу из первых четырех глав, которые включают обзор синтаксиса JavaScript, функциональности, циклов и массивов.
  • Javascript30. Уэс Бос – разработчик полного цикла, спикер и преподаватель из Канады обучал более 500 студентов в 200+ классах и выступал на десятках конференций по всему миру. Курс подойдет разработчикам и дизайнерам от новичка до среднего уровня, которые хотят освоить основы JavaScript и работать в DOM без библиотеки.
  • JavaScript, jQuery, and JSON. В этом курсе рассматривается как JavaScript поддерживает объектно-ориентированный шаблон, с акцентом на уникальный аспект подхода JavaScript к объектно-ориентированному программированию. Курс содержит краткое введение в библиотеку jQuery, которая широко используется для манипулирования в браузере объектной моделью документа (DOM) и обработки событий. Вы также узнаете о нотации объектов JavaScript (JSON), которая используется в качестве синтаксиса для обмена данными между кодом, выполняемым на сервере (например, в PHP), и кодом, выполняемым в браузере (JavaScript/jQuery).

Видеолекции

  • Crockford on JavaScript. Дуглас Крокфорд очень авторитетный программист и постоянный участник развития языка JavaScript. Его курс лекций наверняка будет полезен.
  • Javascript Full Course for Beginners to Advanced. Курс содержит информацию, позволяющую приступить к созданию серверных приложений с использованием NodeJS и интерфейсных приложений с использованием React.
  • Advanced javascript tutorial. Промисы, замыкания, прототипы и многое другое из продвинутого уровня JS. В лекциях также освещаются вопросы для интервью.
  • Deep JavaScript Foundations. Кайл Симпсон, автор популярной серии книг «Вы не знаете JavaScript», раскрывает в своих лекциях глубокие основы JavaScript. Вы узнаете об обертках объектов, приведении, области видимости, замыкании, типах, системе прототипов, функциях ES6 и многом другом. Видео поможет понять, как движок JavaScript ищет переменные в области функций и блоков (var, let и const).
  • Build 15 JavaScript Projects – Vanilla JavaScript Course. Free Code Camp – это некоммерческая организация для изучения программирования. Платформу freeCodeCamp используют около 350000 уникальных посетителей в месяц со студентами из более чем 160 стран.
  • JavaScript: Расширенные возможности. Видео курс позволяет ознакомиться с новыми, расширенными возможностями языка JavaScript. Освещены различные варианты использования событий для мобильных устройств, особенности ES6, ES7, ES8, ES9, а также использование Promises RxJS в написании асинхронного кода.
  • JavaScript. Владилен Минин больше 7 лет разрабатывает на JavaScript. Стал Senior Frontend разработчиком и тим лидом в 23 года. В его лекциях: что такое JavaScript, переменные, типы данных, числа, BigInt, все о строках, функции, стрелочные функции, массивы, объекты, асинхронность, Promise, async await, работа с DOM и все это с использованием актуального синтаксиса 2020.
  • JavaScript Advanced. Видео содержит установку атрибутов свойств через Object.defineProperty, атрибуты свойств get и set, контекст вызова this, асинхронность, стек вызовов, промисы.
***

Если вы хотите наработать необходимый багаж без отрыва от производства, стоит обратить внимание на продвинутый курс Яндекс.Практикум. Он рассчитан на начинающих фронтендеров и бэкендеров, которые собираются стать фуллстак-разработчиками. С помощью опытных преподавателей студенты детально разберутся в JavaScript и устройстве современных фреймворков.

30
Янв
2021

📊 Обучение на Data Scientist: как получить работу, если без опыта никуда не берут?

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

Мы уже писали о выборе специализаци…

29
Янв
2021

🕸 Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Совместно с Яндекс.Практикумом рассказываем о популярных уязвимостях во фронтенде, о которых должен знать мидл или тот, кто хочет им стать. Также: лекции, курсы, XSS- SQL-сканеры и awesome-списки.