• Как обойти ограничение браузера и прикрепить сразу два файла и более: мультидобавление файлов

      Привет, Хабр!

      Давайте решим нетривиальную задачу. Представьте, что вам нужно скачать данные через интерфейс элементарным способом, например, кликнуть по кнопке «Скачать файлы».

      Возьмём по умолчанию Chrome v.88. Задача звучит так:

      • Сгенерировать файлы на стороне клиента.
      • Скачать все сгенерированные файлы одним кликом.

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


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

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

      var zip = new JSZip();
      zip.file("Hello.txt", "Hello World\n");
      var img = zip.folder("images");
      img.file("smile.gif", imgData, {base64: true}); zip.generateAsync({type:"blob"}).then(function(content) {
      // see FileSaver.js
      saveAs(content, "example.zip"); });

      «А где тут нетривиальность?» — спросите вы. И будете правы. А если речь идёт об одновременном скачивании с сайта двух, трёх или десяти файлов? Например: есть лист в селекте, в котором можно выбрать определённое количество файлов для скачивания. Введём дополнительное условие: у пользователя нет установленного архиватора, поэтому вариант со сжатием в архив отбрасываем. Как решить такую задачу?
      Читать дальше →
    • Из каких областей чаще всего приходят учиться, чтобы сменить сферу деятельности. Исследование от Яндекс.Практикума

        В феврале Яндекс.Практикуму исполнилось 2 года, за это время на платформе зарегистрировалось больше миллиона пользователей. Исследователи Яндекса проанализировали анкеты студентов, чтобы узнать, кто приходит учиться на платформу ради смены специальности. Аналитики сервиса рассказали, что это за люди: сколько им лет, из каких профессиональных сфер они приходят, с каким образованием — и на кого хотят выучиться.


        Читать дальше →
      • Яндекс.Практикум запустил курс «React-разработчик»

          Сервис онлайн-образования Яндекс.Практикум запустил курс «React-разработчик» — двухмесячный интенсив для погружения в экосистему React, работы с популярными технологиями и изучения их альтернатив. Курс подойдёт тем, кто уже умеет верстать и знает основы JavaScript.

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


          Читать дальше →
        • Тесты должна писать разработка (?)

            Привет! Есть старый холивар на тему, кто же должен писать тесты: разработчики или тестировщики. Вроде как если в команде есть тестировщики, то логично, что тесты пишут они, правда? С другой стороны, ребята из разработки (помимо самой разработки) точно знают, как работает их код и как будет вести себя в тех или иных ситуациях. Как минимум предполагают.


            Дисклеймер: меня зовут Эрик Бурыгин, я давно работаю тестировщиком, веду студентов на курсе «Инженер по тестированию», поэтому может показаться, что тестировщик просто хочет перекинуть кусок работы на разработчиков. На самом деле у описываемого подхода есть как плюсы, так и минусы, поэтому статья носит в том числе и дискуссионный характер. Буду рад увидеть в комментах мнения как разработчиков, так и тестировщиков.

            Если тесты пишет разработка, можно решить сразу несколько проблем, например:

            • Ощутимо ускорить релизный цикл.
            • Снять нагрузку с тестирования.

            В большинстве команд процесс выглядит примерно так:

            1. Разработчик создаёт новые фичи и допиливает существующие.
            2. Тестировщик всё это тестирует и пишет различные тест-кейсы.
            3. Автоматизатор, оправдывая название должности, автоматизирует всё по написанным тест-кейсам из п.2.

            Вроде бы всё выглядит просто.

            Но в этой парадигме есть слабые места.
            Читать дальше →
          • Вебинар «Стандарт С++20»: обзор новых возможностей C++, введённых Стандартом C++20

              25 февраля Яндекс.Практикум проводит открытый вебинар «Стандарт С++20». Приглашаем разработчиков С++, которые хотят использовать последние возможности языка, а также программистов на других языках, которые хотят узнать, какие преимущества даёт разработка на C++.

              На вебинаре максимально кратко и содержательно расскажем о новых фичах Стандарта: зачем они нужны, насколько они круты, когда и для чего их можно будет использовать в своих программах. Особое внимание уделим модулям, концептам, диапазонам (Ranges), корутинам и трёхстороннему сравнению. Также поговорим и об остальных нововведениях.

              Вебинар будет состоять из двух частей: 70 минут — обзор новых возможностей, 20 минут — ответы на вопросы.


              Читать дальше →
              • +13
              • 3.4k
              • 3
            • Как проходит собеседование Junior фронтенд-разработчика

                Меня зовут Максим Чеченёв, я фронтенд-разработчик уже почти девять лет. Работаю в компании MessageBird в Амстердаме и наставником на курсе «Веб-разработчик» в Яндекс.Практикуме. Ещё я веду канал в телеграме «Сеньор Разработчик».

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


                Из чего состоит собеседование


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

                Обычно собеседование можно разбить на три части:

                • знакомство,
                • технические вопросы и/или задание,
                • ваши вопросы.

                Читать дальше →
              • Яндекс.Практикум запускает Школу наставников для опытных IT-специалистов

                  9 марта сервис онлайн-образования Яндекс.Практикум запускает Школу наставников. Будущие наставники учатся бесплатно, принять участие может любой желающий.

                  Наставники — это опытные веб и бэкенд-разработчики, аналитики данных, специалисты по Data Science, дизайнеры интерфейсов. В Практикуме они отвечают на вопросы студентов, помогают освоить программу, проводят вебинары, на которых разбирают самые сложные темы из онлайн-тренажёра.

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

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


                  Читать дальше →
                • Код-ревью в Практикуме: как мы делаем его быстрее и эффективнее

                    Код-ревью — полезный инструмент для командной разработки и для прокачки собственных навыков. Код-ревью помогает обнаружить недочёты в коде: как синтаксические или стилистические ошибки, так и неоптимальные или неэффективные подходы. В командной разработке, когда команда делает большой проект, код-ревью также помогает оставаться в курсе изменений в разных частях кода.

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



                    Меня зовут Артём Коломацкий, я старший ревьюер бэкенд-факультета в Яндекс.Практикуме. Я расскажу про практики, которые мы используем в код-ревью наших студентов. Часть из них — наши внутренние правила, а часть — универсальные советы, которые вы легко сможете применить у себя в команде.

                    Код-ревью в Практикуме


                    В Практикуме мы проводим ревью кода на собственной онлайн-платформе, которая называется «Ревизор». Туда попадают все сданные студентами работы. Платформа работает по аналогии с интерфейсами в Gitlab/Github/Bitbucket: можно просмотреть список файлов, изменения между версиями, а также оставить комментарии к определённым строкам.
                    Читать дальше →
                    • +22
                    • 5.9k
                    • 5
                  • Конвертеры маршрутов в Django 2.0+ (path converters)

                      Всем привет!

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

                      Меня зовут Александр Иванов, я наставник в Яндекс.Практикуме на факультете бэкенд-разработки и ведущий разработчик в Лаборатории компьютерного моделирования. В этой статье я расскажу о конвертерах маршрутов в Django и покажу преимущества их использования.



                      Первое, с чего начну, — границы применимости:

                      1. версия Django 2.0+;
                      2. регистрация маршрутов должна выполняться с помощью django.urls.path.

                      Итак, когда к Django-серверу прилетает запрос, он сперва проходит через цепочку middleware, а затем в работу включается URLResolver (алгоритм). Задача последнего — найти в списке зарегистрированных маршрутов подходящий.

                      Для предметного разбора предлагаю рассмотреть следующую ситуацию: есть несколько эндпоинтов, которые должны формировать разные отчёты за определённую дату. Предположим, что эндпоинты выглядят так:
                      Читать дальше →
                    • Яндекс.Практикум запускает курс «Менеджер проектов»

                        Сервис онлайн-образования Яндекс.Практикум запускает курс «Менеджер проектов» для тех, кто хочет управлять созданием и развитием сайтов, сервисов и приложений. Курс прокачивает менеджерские хард и софт-скиллы: чтобы не только делать продукт, но и организовывать процессы и команду так, чтобы все случилось в срок, с нужным качеством и без выгорания.

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


                        Читать дальше →
                      • Как фотка в портфолио влияет на получение работы и заказов. Обзор исследований

                          Почти наверняка вам кажется, что реклама или пропаганда действуют на кого угодно, но точно не на вас. Вы всегда действуете рационально и не подвержены подобному влиянию. Но, скорее всего, это не так. Люди подвержены когнитивным искажениям. И это нормально.

                          Если вы спросите у любого эйчара, уделяет ли он внимание фотке и внешности кандидата, 10 из 10 скажут: «Конечно же нет, мы смотрим только на опыт!» Ну, ещё на софт-скиллы и вот это всё. Ведь смотреть на внешность и оценивать человека по этому критерию — это шаг к дискриминации. Но даже если эйчар (или прямой наниматель) хочет быть предельно беспристрастен, то бессознательно он всё равно воспринимает и учитывает свои ощущения от фото. Даже если не говорит вам об этом. Даже если не говорит об этом самому себе.



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

                          Я нашла несколько научных статей, где учёные сравнивали эффект от фоток с разными выражениями лица в контексте найма на работу.
                          Читать дальше →
                        • C++ в Практикуме. Как обучить студентов плюсам, не отпугивая

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

                            Меня зовут Антон Полднев, я уже давно пишу в Яндексе на C++ и руковожу сервисом, написанным на этом языке. Параллельно я учу других людей навыкам разработки. С 2016 года я вёл курсы на Coursera, затем мы их прокачали и сделали на их основе курс для Практикума. В этом посте я расскажу, как мы учим людей C++, а также про основные особенности этого языка. 

                            Читать далее
                          • Что вас на самом деле ждёт на курсе про алгоритмы в Яндекс.Практикуме

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

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



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

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

                              Итак, начнём с главного. Первую версию делали специалисты по алгоритмам для мидлов с уже какими-то знаниями. И это был основной фейл.
                              Читать дальше →
                            • Наставничество в IT: растём сами и помогаем расти другим

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

                                Это может быть наставничество в компании, когда более опытный сотрудник берёт на себя помощь более молодому. Или наставничество студентов, как у нас в Практикуме.



                                В этом посте разберемся, что вообще такое наставничество, что делает наставник и почему наставничество полезно не только новичкам, но и опытным программистам.
                                Читать дальше →
                              • Комьюнити выпускников Практикума: зачем оно нужно и что даёт

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

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

                                  Комьюнити выпускников Практикума — это профессиональное IT-сообщество, где выпускники создают совместные проекты, берут друг друга на работу, участвуют в хакатонах, проводят вебинары и мастер-классы.



                                  Сейчас у нас уже более 2000 участников, и я расскажу, как тут всё устроено.

                                  Зачем нужно комьюнити


                                  Наши студенты во время обучения находятся в так называемой капсуле, где знают только своих одногруппников по профессии. После выпуска они попадают в комьюнити, где 2000+ незнакомых людей: тут и все когорты твоего факультета, и другие факультеты, и команда Практикума, можно найти своих кураторов, наставников и преподавателей. Цель комьюнити — помочь выпускникам быстрее и эффективнее прогрессировать в своей профессии, находить нужную помощь и поддержку. А ещё — знакомиться, общаться и искать работу.
                                  Читать дальше →
                                • Как джуниор Python-разработчику стать мидлом за год

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

                                    Я не разработчик, поэтому эта статья во многом отражает взгляд со стороны. Ответить на вопрос «Как джуниор Python-разработчику стать мидлом за год?» — не такая простая задача, как может показаться на первый взгляд. Здесь спряталось сразу несколько челленджей:

                                    1. Ответить на вопрос, кто такой джуниор: определить отправную точку, базу навыков, с которой мы будем рассматривать рост.
                                    2. Ответить на вопрос, кто такой мидл — финальная точка нашего путешествия. Конечно же, во всех компаниях мидлы разные, а нам нужно какое-то взвешенное среднее, не оторванное от реальности.
                                    3. Ответить на вопрос, почему рассматриваем рост именно за год. Не ради красивой круглой цифры же, верно?

                                    Ну и это довольно холиварная тема. Не знаю, сколько копий было сломано на этом ристалище, но уж точно не одно.
                                    Читать дальше →
                                    • +21
                                    • 14.5k
                                    • 7
                                  • Что нужно знать о популярных JS-фреймворках

                                      Привет! Меня зовут Дима Чудинов, я наставник на веб-факультете Яндекс.Практикума, Head of Group, Front-end, ABBYY.


                                      Студенты недавно задали мне вопрос: «Что лучше: Angular или React?». Я начал отвечать и понял, что мне понадобится для этого статья. Позже я понял, что и одной статьи не хватит.


                                      О том, какой фреймворк выбрать, я расскажу в другой раз. А в этой статье опишу историю создания фреймворков и их особенности. Выбрать рабочий инструмент статья не поможет. Зато поможет вести споры с другими разработчиками на кухне (если не будет карантина) и в сети. Статья будет полезна новичкам, которые только начинают своё знакомство с фреймворками и библиотеками, и поможет взглянуть на «зоопарк» веб-технологий сверху.



                                      Библиотеки и фреймворки


                                      Для начала важно понимать, что библиотека и фреймворк — не одно и то же.

                                      Читать дальше →
                                    • Как проходит собеседование начинающего разработчика на С++: что нужно знать и как подготовиться

                                      • Tutorial

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

                                      В этом посте я собрал подборку понятий, которые у вас могут спросить на собеседовании на вакансию Junior С++ разработчика, и описал, к чему в принципе вам стоит готовиться. Предупрежден — значит вооружен. Вкратце о себе: меня зовут Турмец, я работаю в Яндексе, параллельно учусь в Школе Анализа Данных и занимаюсь ревью кода на курсе «Разработчик С++» в Практикуме. 

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

                                      Поехали.

                                      Читать далее
                                    • Яндекс.Практикум запустил курс «Критическое и креативное мышление»

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


                                        Читать дальше →
                                      • Ищем максимальную разницу между соседями. User-friendly-разбор задачи по алгоритмам

                                        • Tutorial
                                        Привет, Хабр!

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



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

                                        Вот задача: найти максимальную разницу между соседями.

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

                                        Сложно? Можете попробовать сделать это до того, как нажмёте «Читать дальше», а потом проверим решение.
                                        Читать дальше →