Pull to refresh
57
0
Mike Mirzayanov @MikeMirzayanov

User

Send message

Techno Birthday: нашим образовательным проектам 9 лет

Reading time5 min
Views752


Чтобы готовить высококлассных IT-специалистов, приходится постоянно дорабатывать учебные программы, подстраиваясь под требования рынка. И у нас в Mail.ru Group уже 9 лет работает отдельное учебное направление — совместные с вузами образовательные проекты для студентов. Там мы определяем, какими знаниями и навыками должны обладать определённые специалисты, и помогаем студентам получать востребованные профессии. А выпускники могут устроиться к нам на работу, сразу или после стажировки. Им доступно больше 100 направлений в компании.

Учебные программы бывают нескольких форматов: годовые, двухгодичные и семестровые — если обучение проходит в вузе, либо 2-3-месячные программы в нашем офисном кампусе. Поступить можно, только выдержав конкурс, а обучение для студентов бесплатное.
Total votes 20: ↑19 and ↓1+18
Comments0

Telegram-бот на Java для самых маленьких — от старта до бесплатного размещения на heroku

Reading time15 min
Views153K


В следующих сериях


Это первая статья в моей серии «для самых маленьких» — следующая посвящена Telegram-боту на вебхуках на Spring с блекджеком и Redis и клавиатурами. Будут ещё:)

Для кого написано


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

Предыстория


Когда моя дочь начала изучать арифметику, я между делом накидал алгоритм генерации простых примеров на сложение и вычитание вида «5 + 7 =», чтобы не придумывать и не гуглить для неё задания.

И тут на глаза попалась новость, что Telegram выпустил новую версию Bot API 5.0. Ботов я раньше не писал, и потому решил попробовать поднять бота как интерфейс для своей поделки. Все примеры, которые мне удалось найти, показались либо совсем простыми (нужные мне функции не были представлены), либо очень сложными для новичка. Также мне не хватало объяснений, почему выбран тот или иной путь. В общем, написано было сразу для умных, а не для меня. Потому я решил описать свой опыт создания простого бота — надеюсь, кому-нибудь это поможет быстрее въехать в тему.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments17

Spring Security — пример REST-сервиса с авторизацией по протоколу OAuth2 через BitBucket и JWT

Reading time16 min
Views29K
В предыдущей статье мы разработали простое защищенное веб приложение, в котором для аутентификации пользователей использовался протокол OAuth2 с Bitbucket в качестве сервера авторизации. Кому-то такая связка может показаться странной, но представьте, что мы разрабатываем CI (Continuous Integration) сервер и хотели бы иметь доступ к ресурсам пользователя в системе контроля версий. Например, по такому же принципу работает довольно известная CI платформа drone.io.

В предыдущем примере для авторизации запросов к серверу использовалась HTTP-сессия (и куки). Однако для реализации REST-сервиса данный способ авторизации не подходит, поскольку одним из требований REST архитектуры является отсутсвие состояния. В данной статье мы реализуем REST-сервис, авторизация запросов к которому будет осуществляться с помощью токена доступа (access token).
Читать дальше →
Total votes 2: ↑2 and ↓0+2
Comments1

Разбираем тестовое задание на должность фронтенд-разработчика на Vue.js

Reading time6 min
Views38K

Первое правило тестовых заданий - никогда не делайте тестовые задания!

Об этом уже было множество споров на Хабре, и тут мне выпал случай выучить этот урок на собственной шкуре...

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

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

Читать далее
Total votes 18: ↑17 and ↓1+16
Comments36

Вооруженным глазом: наглядно о проблемах PostgreSQL-запроса

Reading time2 min
Views7.9K
Продолжаем открывать для публичного доступа новый функционал нашего сервиса анализа планов выполнения запросов в PostgreSQL explain.tensor.ru. Сегодня мы научимся определять больные места навскидку в больших и сложных планах, лишь мельком взглянув на них вооруженным глазом…


В этом нам помогут различные варианты визуализации:


Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments1

All Cups: история одного дизайна экосистемы с большой историей

Reading time3 min
Views3K


Перед тем как воспользоваться продуктом, мы обращаем внимание на его состояние. Представьте, что вы приходите в автосалон и выбираете машину. Если машина выглядит плохо, то мы начинаем испытывать негативные эмоции и чувствовать отсутствие внимания со стороны создателей этого продукта. Да и доверия не вызывает. Это сразу потеря времени. Конечно, человек умеет адаптироваться к любым изменениям, или просто может принять факт, даже если продукт функционально очень хорош. Но согласитесь, что удобство, цвета и общий стиль важны. Не каждый готов пользоваться тем, что заставляет его лишний раз надевать очки, настраивать яркость на экране или свет в комнате. Все знают великую пословицу, гласящую, что встречают по одёжке — провожают по уму. На примере одного нашего направления в компании мы хотим поделиться с вами, что это значит для нас — не на словах, а на деле.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments1

Автоматическая настройка и оптимизация сервера MySQL для повышения производительности

Reading time4 min
Views11K
Всем привет.

Хочу обсудить с сообществом наш проект, с помощью которого можно за 1 минуту создать конфигурационный файл MySQL, оптимизированный под производительность (тюнинг MySQL). Таким образом можно достаточно быстро создавать конфигурационный файл для первичной оптимизации производительности MySQL.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments50

Где порешать реальные задачи для кандидатов в Яндекc: тренировка на Codeforces и разбор

Reading time43 min
Views73K
Хабр, это снова я, Алексей Рак (фото не мое). В прошлом году, помимо основной работы, мне довелось стать одним из авторов задач для кандидатов в Яндекс. Сегодня наша команда впервые за долгое время публикует на Хабре реальные задачи для разработчиков, которые устраиваются в компанию. Эти задачи использовались до февраля 2020 года при отборе на стажировку для бэкендеров. Решения проверял компьютер. Сейчас кандидатам достаются похожие задания.

Разборы и код сознательно спрятаны в спойлеры. Если вы готовитесь к собеседованиям в большие IT-компании, попробуйте решить одну или несколько задач, прежде чем смотреть разбор. Отправить решение для проверки можно на Codeforces — ответ придёт сразу же (ссылка на Codeforces и примечание). Код представлен на Python, C++ и Java. Важно: авторский «олимпиадный» код не предназначен для продакшена, он написан исходя из того, что система будет проверять его автоматически.
Читать дальше →
Total votes 54: ↑40 and ↓14+26
Comments34

API, ради которых наконец-то стоит обновиться с Java 8. Часть 1

Reading time11 min
Views32K

На сегодняшний день Java 8 является самой популярной версией Java и ещё довольно долго будет ей оставаться. Однако с тех пор уже выпущено пять новых версий Java (9, 10, 11, 12, 13), и совсем скоро выйдет ещё одна, Java 14. В этих новых версиях появилось гигантское количество новых возможностей. Например, если считать в JEP'ах, то в сумме их было реализовано 141:



Однако в этом цикле статей не будет никакого сухого перечисления JEP'ов. Вместо этого я хочу просто рассказать об интересных API, которые появились в новых версиях. Каждая статья будет содержать по 10 API. В выборе и порядке этих API не будет какой-то определённой логики и закономерности. Это будет просто 10 случайных API, не ТОП 10 и без сортировки от наиболее важного API к наименее важному. Давайте начнём.

Читать дальше →
Total votes 55: ↑52 and ↓3+49
Comments41

Коты в коробочках, или Компактные структуры данных

Reading time12 min
Views28K

image


Как быть, если дерево поиска разрослось на всю оперативку и вот-вот подопрет корнями соседние стойки в серверной? Что делать с инвертированным индексом, жадным до ресурсов? Завязывать ли с разработкой под Android, если пользователю прилетает «Память телефона заполнена», а приложение едва на половине загрузки важного контейнера?


В целом, можно ли сжать структуру данных, чтобы она занимала заметно меньше места, но не теряла присущих ей достоинств? Чтобы доступ к хэш-таблице оставался быстрым, а сбалансированное дерево сохраняло свои свойства. Да, можно! Для этого и появилось направление информатики «Succinct data structures», исследующее компактное представление структур данных. Оно развивается с конца 80-х годов и прямо сейчас переживает расцвет в лучах славы big data и highload.


А тем временем на Хабре найдется ли герой, способный пересковоговорить три раза подряд
[səkˈsɪŋkt]?

Читать дальше →
Total votes 127: ↑127 and ↓0+127
Comments43

15 лучших и крупнейших библиотек иконок

Reading time3 min
Views35K


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

Сразу уточняем: это не 15 самых лучших библиотек, а 15 из лучших. Разумеется, есть и другие, не менее замечательные, о которых я не упомянул или не знаю.
И, нет, это не рейтинг — список маркированный, а не нумерованный.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments12

'Hello World' вам в облако

Reading time69 min
Views25K

Мир сходит с ума, заталкивая калькулятор для 2+2 в облака. Чем мы хуже? Давайте Hello World затолкаем в три микросервиса, напишем пару-тройку тестов, обеспечим пользователей документацией, нарисуем красивый пайплайн сборки и обеспечим деплой в условный облачный прод при успешном прохождении тестов. Итак, в данной статье будет показан пример того, как может быть построен процесс разработки продукта от спецификации до деплоя в прод. Инетересно? тогда прошу под кат

Total votes 66: ↑65 and ↓1+64
Comments47

Когда побеждать — это твой профиль

Reading time6 min
Views5K

Всем привет! Меня зовут Лида, и я провожу соревнования по программированию уже 12 лет. (Привет, Лида!) В этом году я присоединилась к Команде ВКонтакте и теперь курирую VK Cup. Целых 5 сезонов это был чемпионат только по спортивному программированию. Но настала пора серьёзных изменений.


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


В этой статье я расскажу, что нового мы придумали, а мои коллеги дадут рекомендации для участников. Регистрация на VK Cup открыта по ссылке vk.cc/cup до 4 декабря — осталась всего неделя! Все подробности о треках и этапах — под катом.


Читать дальше →
Total votes 19: ↑16 and ↓3+13
Comments7

CodeSide. Новая игра для знаменитого соревнования Russian AI Cup

Reading time5 min
Views16K


Сообщество участников чемпионатов и команда Mail.ru Group в сотрудничестве с Codeforces.com приглашают вас на самую настоящую бойню, от которой вы получите бессонные ночи и мозоли на руках, поскольку будете участвовать в одном из самых живых и интересных чемпионатов по программированию искусственного интеллекта в мире — Russian AI Cup. Поверьте, что организаторы всего этого безумия продали все свои души ради создания игры, в которую вы захотите играть.

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

Каждый год мы ломаем наши головы, чтобы придумать тему следующего соревнования. Так мы делаем уже с далёкого 2012 года. В этой статье я не буду рассказывать про предыдущие соревнования. Полезные ссылки будут в конце статьи.
Читать дальше →
Total votes 76: ↑76 and ↓0+76
Comments28

Нейронные сети в дейтинге

Reading time5 min
Views7.9K
Знакомства или дейтинг – вечны, они будут существовать всегда в различных формах: на улице, в интернете, на сайтах или внутри мобильных приложений. Люди всегда будут иметь желание познакомиться с кем-то и каждый будет выбирать себе наиболее удобный способ. Некоторые продолжают знакомиться в барах, кафе, на улице, другие – используют современные технологии и знакомятся в онлайне. У каждого свой выбор и не будем судить ни одну из сторон, но дальнейшее обсуждение пойдет именно о знакомствах в онлайне.

image

Примеры приложений дейтинга

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

Лайк, много лет назад введённый компанией Facebook, оказался очень мощным мотивирующим и удобным инструментом. Он позволяет без диалога показать свои интерес к кому-то и в зависимости от его реакции не ждать ответа, а продолжать поиски. При наличии реакции, может начаться диалог, но ценность его намного выше просто разбросанных «приветов» без учёта взаимности.

Да, лайки помогли, и использование взаимных симпатий тоже, но всё-таки в рынке дейтинга мало что поменялось за последние 15 лет, а это странно для индустрии ИТ, в рамках которой происходит развитие в том числе онлайн знакомств.
Читать дальше →
Total votes 17: ↑9 and ↓8+1
Comments12

Алкоголь и математик(а)

Reading time2 min
Views91K
Это непростая, спорная и больная тема. Но я хочу попробовать её обсудить. Не могу что-то великого и искромётного рассказать про себя, поэтому сошлюсь на достаточно искреннее (среди кучи лицемерия и морализаторства по этому вопросу) выступление математика, доктора наук, Алексея Савватеева. (Само видео в конце поста.)

image

36 лет моей жизни были очень тесно связаны с алкоголем. И я выбыл из игры за пять минут до водопада, примерно. Я плыл, плыл, река всё круче становится, я водный турист, я «отстрелился». Отстрелился перед самым водопадом, видимо. Четыре года назад завязал с употреблением алкоголя. Не могу сказать фразу: «И вам того же советую». Потому что я видел людей, которые совершенно нормально пьют. Но это не мой случай.

Могу дать совет, как старый алкоголик с огромным стажем. Если вы, даже в 10% случаев (не в 100%, и даже не в 70%) вы не останавливаетесь, а пьете до падения под стол, то вам нужно завязывать.
Total votes 116: ↑87 and ↓29+58
Comments440

Более быстрая альтернатива Java Reflection

Reading time7 min
Views8.3K
Всем привет. Сегодня хотим поделиться с вами переводом статьи, подготовленным специально для студентов курса «Разработчик Java».

В моей статье Specification Pattern (паттерн Спецификация) я специально не упомянул о лежащем в основе компоненте, который сильно помог в реализации. Здесь я подробнее расскажу о классе JavaBeanUtil, который я использовал, чтобы получить значение поля объекта. В том примере это был FxTransaction.



Конечно, вы скажете, что для получения того же результата можно использовать Apache Commons BeanUtils или одну из его альтернатив. Но мне было интересно покопаться в этом и то, что я изучил, работает намного быстрее любой библиотеки, построенной на основе широко известного Java Reflection.
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments0

Соревнование по программированию Kotlin Heroes

Reading time2 min
Views5.1K
JetBrains начала сотрудничество с Codeforces в продвижении языка Kotlin среди любителей спортивного программирования. Codeforces предоставляет Kotlin-разработчикам платформу, на которой можно посостязаться в алгоритмическом программировании и отточить свое мастерство. Вместе с Codeforces мы запускаем серию соревнований под названием Kotlin Heroes.

image
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments2

Тестирование производительности Flutter приложений

Reading time8 min
Views7.5K

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



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

Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments1

«Топологическая» сортировка графа с циклами

Reading time4 min
Views14K
Полное название статьи должно было звучать как «Устойчивая „топологическая“ сортировка графа с циклами за O(|V| + |e| log |e|) по времени и O(|V|) по памяти без рекурсии», но мне сказали, что это перебор.
Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments16

Information

Rating
Does not participate
Location
Саратов, Саратовская обл., Россия
Registered
Activity