код журнал яндекс практикум
Как устроен Практикум
И зачем там столько тренажёров.
Журнал «Код» — часть сервиса «Яндекс.Практикум». Пора рассказать про нашего большого брата: что он умеет и кому полезен.
Чему учат
Практикум — это онлайн-школа, в которой изучают профессии, связанные с интернетом и цифровым миром: веб, аналитику, Python, данные, тестирование (будут и другие).
В чём смысл
Школа стоит на трёх столпах.
В результате вы учитесь сами, но в любой момент можно обратиться за помощью или взять подсказку.
В Практикуме учат только тем вещам, которые сразу пригодятся в работе. Задача — чтобы человек быстро стал полноценным кадром, которого можно за короткий срок нанять и включить в работу (в том числе и в сам Яндекс).
Как идёт обучение
Сначала вы выбираете профессию, которую хотите освоить. На момент написания статьи есть такие:
После выбора специальности вам остаётся нажать в меню «Начать учиться» и зайти в свой Яндекс-аккаунт. Если аккаунта ещё нет — сервис предложит его создать.
Чтобы понять, подходит вам эта специальность или нет, в Практикуме сделали бесплатный старт. Он большой, можно распробовать профессию и решить, насколько она вам подходит.
В каждом уроке вы читаете теорию и сразу же приступаете к заданию. Если что — всегда можно открыть вкладку с теорией и прочитать заново.
Все задания выполняются в тренажёрах: вы пишете код и тут же видите изменения на странице или результат работы программы. Задания можно делать сколько угодно раз, пока не получится.
Если не знаете, как выполнить задание, — берите подсказки. Они не всегда дают текст правильного решения, но подтолкнут в нужном направлении:
Если застряли — берите подсказку.
Практика
В зависимости от курса вы получаете как минимум 84 практических задания или один полноценный проект в портфолио, что повысит ваши шансы при устройстве на работу. Больше всего таких заданий у веб-разработчика — 215. Примерно столько разных задач он получает на настоящей работе за 1–2 месяца.
Почему столько тренажёров
Чем больше вы сделаете руками самостоятельно, тем лучше усвоите теорию и тем круче будете как специалист. На рынке не нужны теоретики, всем нужны практики — те, кто может разобраться в задаче, а потом написать необходимый код.
В чём смысл наставников
Когда во время учёбы возникают вопросы, их задают наставникам — разработчикам из Яндекса и других IT-компаний. Вот что делают наставники в Практикуме:
Чтобы всё это было, наставники раз в две недели проводят вебинары, отвечают на вопросы в чатах Slack и помогают с проектной работой. Например, если вы застряли с задачей и никто из коллег в чате не может помочь, с вашим кодом поможет наставник. Если вы разочаровались в себе или ощутили упадок сил — наставник вас поддержит и поможет вернуться к курсу.
Наставники появляются автоматически у каждого ученика сразу после оплаты полного курса. Если вы по каким-то причинам захотите его сменить, это можно сделать через службу поддержки.
Деньги
Сначала по каждой профессии есть бесплатный курс. Его цель — познакомить вас с выбранной специальностью, чтобы вы решили, продолжать дальше или нет.
Платные курсы длятся от 4 до 9 месяцев, в зависимости от специальности. Самый быстрый — инженер по тестированию — длится 4 месяца. Он же и самый дешёвый — 50 000 ₽.
Самый долгий и дорогой курс — у веб-разработчиков: 10 месяцев и 95 000 ₽. За это время вы сделаете 5 самостоятельных проектов, освоите профессию и получите сертификат по специальности.
Цена может показаться высокой, и это действительно так. С другой стороны, если после учёбы вы пойдёте работать джуниором (хотя знаний будет достаточно для того, чтобы сразу начать с мидла), то курсы окупаются за 2–3 месяца.
В любом случае, будете вы продолжать платное обучение или остановитесь на бесплатном, Практикум — хорошее место для старта в новой профессии.
Чего нет в Практикуме
Мощь алгоритмов: автоматический поиск всех возможных комбинаций
Сдвигаем парадигму с помощью силы компьютеров
Это история об информатике, алгоритмах и понимании мощи компьютеров.
Представим такую ситуацию: компания по продаже компьютеров хочет написать самую эффективную рассылку для своих клиентов. Маркетологи сказали, что в письме обязательно должно быть 4 блока:
Но никто не знал, в каком порядке лучше всего расположить эти блоки, чтобы рассылка сработала максимально круто. В итоге решили перебрать все комбинации и отправить много разных рассылок. Для этого позвали программиста, который написал для них простой скрипт — он выводит все варианты расположения блоков. Сегодня мы попробуем это повторить.
О чём речь
В математике это называется перестановками без повторений: мы просто перебираем все разные варианты, в каком порядке могут идти элементы. В нашем случае может быть так:
Таких вариантов можно составить 4! («четыре факториал») — то есть 24 штуки. Восклицательный знак означает факториал, то есть нам нужно перемножить все числа от 1 до этого числа:
Получается, из четырёх блоков можно сделать 24 разных варианта письма. Вручную перебирать их все сложно, да и нет смысла: компьютер с этим справится гораздо быстрее. Для этого и сделаем алгоритм.
В чём идея
Чтобы перебрать все варианты, можно сделать так:
Но это сложно: нам нужно заводить для каждого цикла свою переменную, а потом следить, чтобы они не перепутались между собой. А ещё нужно не забыть:
А можно подойти к вопросу иначе:
Обратите внимание, что у нас получился только один цикл, который перебирает по очереди все элементы массива. А вот внутри этого цикла и происходит вся магия: мы погружаемся всё глубже и глубже по одним и тем же правилам, а потом начинаем собирать результаты с конца.
На самом деле мы только что описали рекурсию: функцию, которая вызывает сама себя, но на каждом шаге с новыми условиями.
Почему рекурсия лучше вложенных циклов
Когда вложенных циклов мало, то с ними проще: можно контролировать всё вручную. А вот когда циклов становится не три, а 10 или 50, то сильно вырастает вероятность ошибиться в переменной или забыть про какое-то условие. В рекурсии такой проблемы нет: мы один раз описываем, как нырнуть и как оттуда вынырнуть, и всё, остальное компьютер сделает сам.
Ещё бывает такое, что мы заранее не знаем, сколько будет блоков для перестановок — 4 или 40, например. Рекурсия здесь тоже выигрывает: достаточно в одном цикле перебрать все элементы массива, а дальше всё сработает само.
Алгоритм
Единственное, что нам понадобится нового для рекурсии, о чём мы ещё не говорили, — это мемоизация.
В программировании мемоизацией называют временное хранение промежуточных результатов вычислений, чтобы не вычислять их по сто раз. Один раз посчитал, добавил в переменную-кеш — и отлично.
В нашем случае за это будет отвечать такая строчка:
Она появляется в самом начале рекурсии и означает вот что:
Так мы избавляемся от необходимости высчитывать промежуточные последовательности заново, а вместо этого используем временное хранилище.
Теперь смотрите код и читайте комментарии:
Запустим код в консоли браузера:
Видно, что мы получили 24 перестановки, как и должно было быть. Они все разные, ни в одной нет повторений — то, что нам нужно. Теперь можно отдать эти последовательности дальше, чтобы по каждой из них собрали своё письмо для клиентов.
Если интересно, как рекурсия справится со сложными вариантами и сколько их получится, — сделайте в исходном массиве в коде не 4, а 10 элементов.
Что дальше
Попробуем использовать этот же подход в задаче коммивояжёра — там тоже есть много вложенных циклов. Должно сработать.
Как вычислить день рождения
Простой трюк для знакомств
👉 Чтобы закрыть тему с математическими фокусами, мы приготовили напоследок трюк с датой рождения. Примерно по таким алгоритмам работают все фокусы с числами: сколько бы действий ни пришлось выполнить, результат давно просчитан и не требует от фокусника никакой магии. Поэтому просто почитайте, как это работает.
Этот несложный математический трюк поможет узнать вам дату рождения кого угодно, даже если это ваше первое свидание. Если вы в кафе заказали поесть, а заказ ещё не принесли — самое время откинуться на спинку стула и сказать такое:
— Давай покажу тебе одну хитрую штуку! Для этого умножь число своего рождения на 2, но мне не говори. Как умножишь — прибавь туда 5, а потом результат умножь на 50. Ну и напоследок, чтобы было ещё хитрее, прибавь к этому номер месяца из своей даты рождения.
— У тебя день рождения 13 мая!
Так как в любом фокусе с числами всё основано на чистой математике и формулах, мы пойдём тем же путём: обозначим день рождения за X, а месяц — за Y.
Выполним все действия по очереди:
Если выкинуть отсюда 250, то у нас получится 100X + Y — только те числа, которые связаны с датой рождения. А теперь смотрите, что получается дальше.
Независимо от того, чему у нас равен икс, если мы его умножим на 100, то в конце числа у нас будет два ноля, а в начале — сам день рождения (день, без месяца). Это значит, что если мы отбросим последние два числа, то получим снова день рождения.
Например, если день рождения 13 мая, то 13 × 100 = 1300 → отбрасываем последние два числа и снова получаем 13.
Но раз у нас в конце стоят два ноля, то что бы к ним двузначного ни прибавили, получим то же самое число. Количество месяцев у нас всегда двузначное, поэтому они не смогут повлиять на третий разряд в итоговом числе.
Получается, что в формуле 100X + Y последние два числа — это номер месяца в дате рождения, а остальное, что в начале — это день.
Проверим на дате 13 мая: 13 × 100 + 5 = 1305. Последние два числа — это месяц (05), а что осталось спереди — это день (13).
Но всё это у нас получается, если откинуть от итогового результата 250. Значит, когда вам называют итоговое число, то от него нужно отнять 250, а потом разложить ответ на составляющие: месяц (2 последние цифры) и день (всё остальное спереди).
Адаптируем статью под время суток
Простая игрушка на JS.
Есть такое медиа — «Кинжал», которое рассказывает про полезные навыки и подходы к жизни. Так сложилось, что наш главред Максим также работает и там. Он придумал такую мульку: чтобы статьи «Кинжала» напоминали всем, кто читает их после 10 вечера, что пора лечь спать. А если на улице уже утро, то и напоминать не нужно.
Логика проекта
В конце каждой статьи «Кинжала» есть плашка с заключительной мыслью, в конце которой стоит картинка кинжала:
Нам нужно, чтобы с 10 вечера и до 5 утра в каждую такую плашку перед кинжалом добавлялась фраза «А теперь ложитесь спать». Для этого сделаем так:
Готовим каркас
Чтобы код ждал, когда загрузится вся страница, и только потом начинал работать, нам понадобится обработчик события полной загрузки. Это значит, что когда содержимое страницы загрузится у пользователя, сработает событие полной загрузки и можно выполнять код скрипта.
За это в JavaScript отвечает обработчик addEventListener с параметром
«DOMContentLoaded» :
Всё остальное мы будем писать тоже внутри этого обработчика.
Находим финальную плашку
Чтобы не тащить в проект jQuery ради одного запроса, реализуем поиск нужного объекта родными средствами JavaScript:
Теперь поясним код.
Добавляем проверку времени
Для проверки времени мы извлекаем из полной даты значение текущего часа. Так как нам нужно, чтобы код срабатывал с 10 вечера до 5 утра, то значение часа должно быть больше 21 и меньше 5:
// проверяем время — если наступил нужный нам диапазон
if ((now.getHours() > 21 || now.getHours()
Как быстро освоить новую технологию
Пробуем метод разработчика из Яндекс.Практикума.
Представьте, что вам нужно сделать анимацию для вашего сайта. Вы попробовали инструменты браузера и стандартные средства HTML, CSS, Java Script — ничего не подходит, поскольку анимация выглядит неестественно. Нужна отдельная библиотека, которая учитывает свойства объектов и добавляет в анимации простую физику.
Подобных библиотек много: они отличаются по размеру файла, производительности, способу встраивания в проект и множеству других характеристик. Вам нужно найти библиотеки с подходящими анимациями, разобраться с их возможностями и выбрать лучший вариант.
👉 У программистов исследование новой технологии называется research-задачей, и для её быстрого проведения важна последовательность — иначе вы утонете под горами кода и потратите время на чтение ненужных материалов.
Мы разбили процесс на три этапа и описали его в том порядке, который предложил фронтенд-разработчик из Яндекс.Практикума Давид Роганов. Прочитайте полное интервью с ним — там много о старте карьеры и задачах фронтендера.
1. Отправляемся на GitHub
GitHub — это громадное хранилище открытого кода, на котором мы будем искать нужную библиотеку. GitHub можно сравнить со строительным гипермаркетом, где можно бесконечно блуждать в поиске одной баночки краски.
Чтобы не заблудиться в гипермаркете, нам нужно выяснить расположение отдела красок, найти нужный стеллаж, сравнить краски разных производителей и, наконец, выбрать эту несчастную баночку. С поиском библиотеки на GitHub всё то же самое.
Сначала мы должны выяснить язык программирования нашей библиотеки. Для примера возьмём Java Script, поскольку именно им часто пользуются разработчики Яндекс.Практикума.
Дальше мы должны понимать устройство выбранного языка программирования и указать класс или функцию, способную решить нашу задачу. Например, для анимирования элементов на Java Script подойдёт функция Side effects — вбиваем её в поиск и находим стеллаж.
Перед нами множество красок от разных производителей. Для их быстрого сравнения обращаемся к фильтру, выставляем значение Best match и открываем все библиотеки, которые по краткому описанию подходят под нашу задачу. Далее ранжируем полученный список по размеру сообщества и выбираем самую популярную библиотеку — это и есть наша баночка краски. Ей оказалась библиотека Redux-Saga.
2. Смотрим техническую документацию
Для быстрого знакомства с библиотекой нам достаточно прочесть первый раздел технической документации — это краткая презентация функциональности:
Техническая документация может публиковаться на GitHub или выноситься на отдельный сайт — если эта информация есть, то вы её точно не пропустите.
Для знакомства с технологией достаточно прочесть первый раздел технической документации
3. Создаём прототип и проверяем код
Мы купили подходящую краску, прочли инструкцию и уверены в выборе. Теперь эту уверенность нужно проверить: берём ненужную доску, делаем несколько мазков и смотрим на результат. Если краска подходит — отлично, мы можем работать. Если что-то не так — возвращаемся в гипермаркет и берём краску от другого производителя.
Новую библиотеку также не стоит спешить подключать к основному проекту: вдруг вы что-то упустите и потом придётся тратить время на восстановление рабочего файла. Создайте небольшой прототип и на нём проверьте работоспособность кода: покрутите, повертите и убедитесь в том, что функциональность соответствует описанию в документации.
Если с прототипом порядок — можете себя поздравить, research-задача завершена. Неиспользованный список библиотек рекомендуем сохранить в отдельный файл, который может пригодиться для похожего проекта. Так вы справитесь ещё быстрее.