👋 Всем привет, это канал IT-школы Push IT!
Мы — образовательный стартап, созданный выпускниками мехмата МГУ и ВШЭ, преподавателями ШАД и бывшими сотрудниками Яндекса, старшими разработчиками.
📚 Подробнее о нас, школе и направлениях обучения
🎯 Наша цель — в короткие сроки дать вам актуальные знания и навыки в технических сферах.
В этом канале будем публиковать новости школы, курсов и полезные образовательные материалы.
Мы — образовательный стартап, созданный выпускниками мехмата МГУ и ВШЭ, преподавателями ШАД и бывшими сотрудниками Яндекса, старшими разработчиками.
📚 Подробнее о нас, школе и направлениях обучения
🎯 Наша цель — в короткие сроки дать вам актуальные знания и навыки в технических сферах.
В этом канале будем публиковать новости школы, курсов и полезные образовательные материалы.
Telegraph
Push IT!
Всем привет! Мы открываем IT-школу. Кто мы? Тарас Стасюк - Мехмат МГУ, ШАД. Работал в Яндексе, SAS, Озон. Старший разработчик, опыт преподавания с 2015 года, в том числе МГУ, СПБГУ. Сусленкова Светлана - Мехмат МГУ, автор учебника по олимпиадной математике…
👍2
🔥 15 ноября стартует курс по Django!
Что такое Django?
Django — это фреймворк на Python, который позволяет создавать надёжный и безопасный бэкенд с впечатляющей скоростью разработки. Бэкенд — это сложная система, включающая API, базу данных, задачи очереди, хранилище медиафайлов и многое другое. С Django поднятие всей этой архитектуры занимает всего несколько строчек кода.
Почему Django?
1️⃣ Скорость и простота — за полчаса можно создать API для онлайн-кинотеатра или сервиса доставки еды.
2️⃣ Широкие интеграции — Django поддерживает множество решений для интеграции с внешними сервисами.
3️⃣ Безопасность — встроенные механизмы защиты от уязвимостей.
4️⃣ Работает “из коробки” — админка, авторизация, сессии, ORM и другие стандартные функции уже включены.
5️⃣ Асинхронные возможности — Django теперь поддерживает асинхронный код!
6️⃣ Фронтенд — можно легко добавить несложный фронтенд.
💡Если вам нужно быстро создать MVP для стартапа и вы знаете Python — Django станет отличным выбором!
О курсе
Занятия будут проходить в формате семинаров: сначала мы разберём теорию и примеры на демонстрационном проекте, затем каждый из участников применит полученные знания в своём проекте. Благодаря мини-группе мы сможем обсуждать проекты вместе, что позволяет учиться не только на своём опыте, но и на примерах других.
✉️ По вопросам пишите: @taras4834
Что такое Django?
Django — это фреймворк на Python, который позволяет создавать надёжный и безопасный бэкенд с впечатляющей скоростью разработки. Бэкенд — это сложная система, включающая API, базу данных, задачи очереди, хранилище медиафайлов и многое другое. С Django поднятие всей этой архитектуры занимает всего несколько строчек кода.
Почему Django?
1️⃣ Скорость и простота — за полчаса можно создать API для онлайн-кинотеатра или сервиса доставки еды.
2️⃣ Широкие интеграции — Django поддерживает множество решений для интеграции с внешними сервисами.
3️⃣ Безопасность — встроенные механизмы защиты от уязвимостей.
4️⃣ Работает “из коробки” — админка, авторизация, сессии, ORM и другие стандартные функции уже включены.
5️⃣ Асинхронные возможности — Django теперь поддерживает асинхронный код!
6️⃣ Фронтенд — можно легко добавить несложный фронтенд.
💡Если вам нужно быстро создать MVP для стартапа и вы знаете Python — Django станет отличным выбором!
О курсе
Занятия будут проходить в формате семинаров: сначала мы разберём теорию и примеры на демонстрационном проекте, затем каждый из участников применит полученные знания в своём проекте. Благодаря мини-группе мы сможем обсуждать проекты вместе, что позволяет учиться не только на своём опыте, но и на примерах других.
✉️ По вопросам пишите: @taras4834
👍2
💡 Использовать ли ChatGPT для написания кода во время обучения?
Это вопрос, по которому есть разные мнения, поэтому поделюсь своим личным взглядом, а не позицией школы.
Зависит от ваших целей и уровня подготовки.
1️⃣ Для новичков: если вы только начинаете, лучше не использовать ChatGPT. Пока вы не освоили базовый уровень — переменные, циклы, условия, функции, массивы и т.д. — лучше писать код самостоятельно.
Почему? На начальном этапе важно научиться:
- формулировать алгоритм для решения задач,
- описывать его на выбранном языке программирования.
Здесь ChatGPT вам не поможет — нужные нейронные связи он за вас не выстроит.
2️⃣ Для изучения новой технологии: если ваша цель — понять, как работает технология, попросите GPT объяснить её, вместо того чтобы просто копировать код. Это поможет вам глубже понять, как всё устроено.
3️⃣ Для создания продукта: если вам нужно быстро сделать работающий продукт, смело используйте GPT как помощника. У меня есть примеры учеников, которые, не имея опыта программирования, создавали и запускали вполне сложных Telegram-ботов.
В большинстве случаев использовать ChatGPT — это хорошая идея.
Код — это инструмент, способ перевести словесное описание вашей задачи в решение. GPT можно воспринимать как переводчика, который делает этот мост между человеческой речью и машинным кодом ещё короче. Но чтобы эффективно использовать GPT, вы должны сами понимать, что хотите выразить.
А что вы по этому думаете?
Это вопрос, по которому есть разные мнения, поэтому поделюсь своим личным взглядом, а не позицией школы.
Зависит от ваших целей и уровня подготовки.
1️⃣ Для новичков: если вы только начинаете, лучше не использовать ChatGPT. Пока вы не освоили базовый уровень — переменные, циклы, условия, функции, массивы и т.д. — лучше писать код самостоятельно.
Почему? На начальном этапе важно научиться:
- формулировать алгоритм для решения задач,
- описывать его на выбранном языке программирования.
Здесь ChatGPT вам не поможет — нужные нейронные связи он за вас не выстроит.
2️⃣ Для изучения новой технологии: если ваша цель — понять, как работает технология, попросите GPT объяснить её, вместо того чтобы просто копировать код. Это поможет вам глубже понять, как всё устроено.
3️⃣ Для создания продукта: если вам нужно быстро сделать работающий продукт, смело используйте GPT как помощника. У меня есть примеры учеников, которые, не имея опыта программирования, создавали и запускали вполне сложных Telegram-ботов.
В большинстве случаев использовать ChatGPT — это хорошая идея.
Код — это инструмент, способ перевести словесное описание вашей задачи в решение. GPT можно воспринимать как переводчика, который делает этот мост между человеческой речью и машинным кодом ещё короче. Но чтобы эффективно использовать GPT, вы должны сами понимать, что хотите выразить.
А что вы по этому думаете?
👍3
Как изучать математику?
Я предпочитаю смотреть на математику не только как на инструмент (хотя её практические применения сейчас лежат в основе всего, что связано с техникой), но и как на игру.
Игра заключается в придумывании вопросов и поиске ответов на них: математики сидят по своим кафедрам и задаются вопросами — бесконечно ли много простых чисел-близнецов? Верна ли теорема Ферма или гипотеза 3n+1? Каково хроматическое число плоскости? Сложно представить практическое применение этих задач, но найти ответ всё равно интересно.
Если у вас нет жёстких дедлайнов, например, экзамена уже завтра утром, то лучший способ "заботать математику" — это отвлечься от цели и сосредоточиться на пути. Попробуйте "поиграть" в математику.
1️⃣ Почитайте научно-популярную литературу. Я в детстве читал Перельмана. Посмотрите видео на YouTube, решайте олимпиадные задачи, придумывайте вопросы по аналогии и пытайтесь на них ответить.
2️⃣ Начните с дискретной математики — это сборный раздел, включающий всё, что не попало в другие области. Она близка к олимпиадной математике, здесь мало формализма и расчётов, зато много интересных идей и красивых результатов. Рекомендую начать с этой книги, она читается как художественная литература.
3️⃣ Перед изучением высшей математики (пределы, линейные отображения, группы...) убедитесь, что уверенно справляетесь с программой школьной математики. ЕГЭ (даже базовый) — хороший способ проверить свои знания. Если что-то вызывает трудности, не стесняйтесь вернуться к школьным учебникам, хоть с 7 класса. Не пропускайте исторические заметки и дополнительные разделы — они делают математику более живой и увлекательной.
Я предпочитаю смотреть на математику не только как на инструмент (хотя её практические применения сейчас лежат в основе всего, что связано с техникой), но и как на игру.
Игра заключается в придумывании вопросов и поиске ответов на них: математики сидят по своим кафедрам и задаются вопросами — бесконечно ли много простых чисел-близнецов? Верна ли теорема Ферма или гипотеза 3n+1? Каково хроматическое число плоскости? Сложно представить практическое применение этих задач, но найти ответ всё равно интересно.
Если у вас нет жёстких дедлайнов, например, экзамена уже завтра утром, то лучший способ "заботать математику" — это отвлечься от цели и сосредоточиться на пути. Попробуйте "поиграть" в математику.
1️⃣ Почитайте научно-популярную литературу. Я в детстве читал Перельмана. Посмотрите видео на YouTube, решайте олимпиадные задачи, придумывайте вопросы по аналогии и пытайтесь на них ответить.
2️⃣ Начните с дискретной математики — это сборный раздел, включающий всё, что не попало в другие области. Она близка к олимпиадной математике, здесь мало формализма и расчётов, зато много интересных идей и красивых результатов. Рекомендую начать с этой книги, она читается как художественная литература.
3️⃣ Перед изучением высшей математики (пределы, линейные отображения, группы...) убедитесь, что уверенно справляетесь с программой школьной математики. ЕГЭ (даже базовый) — хороший способ проверить свои знания. Если что-то вызывает трудности, не стесняйтесь вернуться к школьным учебникам, хоть с 7 класса. Не пропускайте исторические заметки и дополнительные разделы — они делают математику более живой и увлекательной.
❤2🤯1
Для тех, кто скучает по математике в алгоритмических задачах, есть отличный ресурс с заданиями.
Project Euler — это серия сложных задач по математике и программированию, для решения которых потребуется нечто большее, чем просто математические знания. Хотя математика поможет вам найти элегантные и эффективные методы, для решения большинства задач понадобятся навыки программирования и использование компьютера.
Большинство задач здесь посвящены теории чисел. Решая их, вы сможете прокачать как навыки алгоритмов, так и математику.
Вот примеры любопытных задач:
https://projecteuler.net/problem=495
https://projecteuler.net/problem=461
https://projecteuler.net/problem=192
Пишите, какие вам понравились
Project Euler — это серия сложных задач по математике и программированию, для решения которых потребуется нечто большее, чем просто математические знания. Хотя математика поможет вам найти элегантные и эффективные методы, для решения большинства задач понадобятся навыки программирования и использование компьютера.
Большинство задач здесь посвящены теории чисел. Решая их, вы сможете прокачать как навыки алгоритмов, так и математику.
Вот примеры любопытных задач:
https://projecteuler.net/problem=495
https://projecteuler.net/problem=461
https://projecteuler.net/problem=192
Пишите, какие вам понравились
🔥3
Как проходят собеседования на бэкендера в Яндексе
Недавно прошёл собеседование в Яндексе и решил поделиться, как это устроено. Сначала идут три независимые алгоритмические секции, каждая с двумя задачами (одна попроще, другая посложнее) и блоком теории.
💡 Теория может включать вопросы по языку, фреймворку, базам данных — зависит от собеседующего. Обычно ничего сверхсложного, но могут спросить про ваш проект и обсудить технологии, которые вы использовали.
Для задач нужен "джентльменский набор" алгоритмов:
1️⃣ Оценка сложности
2️⃣ Разделяй и властвуй
3️⃣ Жадные алгоритмы
4️⃣ Динамическое программирование
5️⃣ Графы (BFS, DFS, MST, алгоритм Дейкстры)
6️⃣ Структуры данных (стек, очередь, дек, список, хэш-таблицы)
7️⃣ Деревья поиска
Более сложные темы, как потоки или дерево отрезков, желательно знать хотя бы на уровне идеи, но писать код никто не попросит.
🔹 Примеры задач:
1. Развернуть односвязный список
2. Даны два отсортированных массива — вывести элементы первого, которых нет во втором
3. Создать структуру данных с операциями add, delete, get_random_unique
На теории обсуждали особенности Python, например:
- Изменяемые и неизменяемые типы данных
- Многопоточность и GIL
- Статические методы
- Контекстные менеджеры
После алгоритмических секций — собеседование с командой. Здесь всё зависит от команды: кто-то продолжает спрашивать теорию, а кто-то просто общается за жизнь. Но всегда сначала просят рассказать о себе: вопросы по опыту работы, затем — о команде/работе, и если остаётся время, можно задать свои вопросы.
Самые частые вопросы:
1. Расскажи о своём самом масштабном проекте (и дальше углубляемся в обсуждение технологий).
2. Расскажи о своём самом крупном факапе.
3. Как ты решал спорные ситуации на работе (например, не сошлись во мнении по коду с коллегой)?
Как подготовиться к собеседованиям?
1. Лучший способ — ходить на собеседования. Конечно, стоит сначала подготовиться, но не нужно ждать, пока решите все задачи с LeetCode. Даже если не пройдёте, всё равно получите новый опыт.
2. Расслабьтесь и получайте удовольствие — никто вас не посадит, если завалите собеседование 😄. Общайтесь, шутите, если застряли с задачей — можно попросить помощи или даже обсудить её решение. Если закончили раньше срока — вспомните забавную задачку и предложите её интервьюеру (ведь ему тоже должно быть интересно!) или просто пообщайтесь.
3. Для вдохновения можно посмотреть фильм "Поймай меня, если сможешь" 🎬
Недавно прошёл собеседование в Яндексе и решил поделиться, как это устроено. Сначала идут три независимые алгоритмические секции, каждая с двумя задачами (одна попроще, другая посложнее) и блоком теории.
💡 Теория может включать вопросы по языку, фреймворку, базам данных — зависит от собеседующего. Обычно ничего сверхсложного, но могут спросить про ваш проект и обсудить технологии, которые вы использовали.
Для задач нужен "джентльменский набор" алгоритмов:
1️⃣ Оценка сложности
2️⃣ Разделяй и властвуй
3️⃣ Жадные алгоритмы
4️⃣ Динамическое программирование
5️⃣ Графы (BFS, DFS, MST, алгоритм Дейкстры)
6️⃣ Структуры данных (стек, очередь, дек, список, хэш-таблицы)
7️⃣ Деревья поиска
Более сложные темы, как потоки или дерево отрезков, желательно знать хотя бы на уровне идеи, но писать код никто не попросит.
🔹 Примеры задач:
1. Развернуть односвязный список
2. Даны два отсортированных массива — вывести элементы первого, которых нет во втором
3. Создать структуру данных с операциями add, delete, get_random_unique
На теории обсуждали особенности Python, например:
- Изменяемые и неизменяемые типы данных
- Многопоточность и GIL
- Статические методы
- Контекстные менеджеры
После алгоритмических секций — собеседование с командой. Здесь всё зависит от команды: кто-то продолжает спрашивать теорию, а кто-то просто общается за жизнь. Но всегда сначала просят рассказать о себе: вопросы по опыту работы, затем — о команде/работе, и если остаётся время, можно задать свои вопросы.
Самые частые вопросы:
1. Расскажи о своём самом масштабном проекте (и дальше углубляемся в обсуждение технологий).
2. Расскажи о своём самом крупном факапе.
3. Как ты решал спорные ситуации на работе (например, не сошлись во мнении по коду с коллегой)?
Как подготовиться к собеседованиям?
1. Лучший способ — ходить на собеседования. Конечно, стоит сначала подготовиться, но не нужно ждать, пока решите все задачи с LeetCode. Даже если не пройдёте, всё равно получите новый опыт.
2. Расслабьтесь и получайте удовольствие — никто вас не посадит, если завалите собеседование 😄. Общайтесь, шутите, если застряли с задачей — можно попросить помощи или даже обсудить её решение. Если закончили раньше срока — вспомните забавную задачку и предложите её интервьюеру (ведь ему тоже должно быть интересно!) или просто пообщайтесь.
3. Для вдохновения можно посмотреть фильм "Поймай меня, если сможешь" 🎬
👍2
Гипотеза 3n + 1
Давайте поиграем в такую игру: берём число
Эту задачу часто сравнивают с Великой теоремой Ферма: она формулируется очень просто, но доказать её — практически невозможно. На лекциях перед тем, как рассказать о гипотезе, даже предупреждают: «Не пытайтесь её решить!»
Но мы не будем пытаться её доказать, а поисследуем её обобщения с помощью компьютера.
Ремарка: для тех, кто хочет потренироваться в алгоритмах, есть отличная задача — написать эффективный алгоритм, проверяющий гипотезу для первых
Попробуем немного изменить правила: вместо 3n + 1 будем брать
На картинке выше показано, сколько чисел из первых 200 сходятся к 1 при ограничении в 2000 шагов. Мы видим синий квадрат, соответствующий 3n + 1, где все 200 чисел сходятся.
Если НОД(a, b) > 1, то результат приравнивался к 0 — такие случаи считаем неинтересными (подумайте, почему).
Было бы классно увидеть такие же синие квадраты, как (3, 2), но, кажется, это уникальные параметры. Тем не менее интересна последовательность (2, 11) и некоторые виды (x, 2).
Что интересно исследовать:
1. Что особенного в комбинации
2. Возможно ли, чтобы ненулевая плотность сходящихся чисел наблюдалась и при других значениях
Давайте поиграем в такую игру: берём число
n, если оно чётное, то делим на 2, иначе — умножаем на 3 и прибавляем 1. С результатом делаем то же самое и так далее. Например, если мы изначально возьмём n = 5, то получим последовательность 5 → 16 → 8 → 4 → 2 → 1. Будем считать, что мы выиграем, если придём к 1 (как в примере выше). Гипотеза 3n + 1 (или гипотеза Коллатца) утверждает, что какое бы положительное n мы ни взяли — мы всегда выиграем, то есть всегда придём к 1.Эту задачу часто сравнивают с Великой теоремой Ферма: она формулируется очень просто, но доказать её — практически невозможно. На лекциях перед тем, как рассказать о гипотезе, даже предупреждают: «Не пытайтесь её решить!»
Но мы не будем пытаться её доказать, а поисследуем её обобщения с помощью компьютера.
Ремарка: для тех, кто хочет потренироваться в алгоритмах, есть отличная задача — написать эффективный алгоритм, проверяющий гипотезу для первых
n чисел.Попробуем немного изменить правила: вместо 3n + 1 будем брать
an + 1 и делить не на 2, а на b. И посмотрим, что получится. На картинке выше показано, сколько чисел из первых 200 сходятся к 1 при ограничении в 2000 шагов. Мы видим синий квадрат, соответствующий 3n + 1, где все 200 чисел сходятся.
Если НОД(a, b) > 1, то результат приравнивался к 0 — такие случаи считаем неинтересными (подумайте, почему).
Было бы классно увидеть такие же синие квадраты, как (3, 2), но, кажется, это уникальные параметры. Тем не менее интересна последовательность (2, 11) и некоторые виды (x, 2).
Что интересно исследовать:
1. Что особенного в комбинации
(2n + 1, 11), почему в ней чисел сходится больше чем в других?2. Возможно ли, чтобы ненулевая плотность сходящихся чисел наблюдалась и при других значениях
a и b, кроме (3, 2)?👍3
💻 Как я деплою проекты
Для деплоя использую Digital Ocean. Я не фанат девопса — писать GitHub Actions, Docker-файлы и так далее... Поэтому стараюсь этого избегать.
На Digital Ocean есть удобный сервис деплоя по кнопке — App Platform. Указываете в нём ваш репозиторий на GitHub, и система автоматически определяет тип проекта. Нужно только указать переменные окружения, команды для билда и деплоя, выбрать мощность и количество ресурсов: число машин, их параметры.
🚀 Запуск по кнопке — и сервис разворачивается. Базу данных можно создать и подключить в два клика. Так же просто подключаются S3-хранилища для файлов, дополнительные воркеры и балансировка нагрузки между ними.
Когда вы делаете пуш в репозиторий — сервис сам обновляется.
🔧 Иногда не хватает гибкости App Platform, например, если нужен кастомный линуксовый пакет для работы сервиса. Но мне для большинства проектов её возможностей достаточно.
💰 По стоимости: для первого небольшого проекта это около $20-25 в месяц (большая часть уходит на базу данных — $15). Её можно использовать и для других проектов, и тогда цена будет от $5. На рынке есть варианты подешевле, но для меня лучше переплатить $10, чем тратить время на девопс.
#тулзы
Для деплоя использую Digital Ocean. Я не фанат девопса — писать GitHub Actions, Docker-файлы и так далее... Поэтому стараюсь этого избегать.
На Digital Ocean есть удобный сервис деплоя по кнопке — App Platform. Указываете в нём ваш репозиторий на GitHub, и система автоматически определяет тип проекта. Нужно только указать переменные окружения, команды для билда и деплоя, выбрать мощность и количество ресурсов: число машин, их параметры.
🚀 Запуск по кнопке — и сервис разворачивается. Базу данных можно создать и подключить в два клика. Так же просто подключаются S3-хранилища для файлов, дополнительные воркеры и балансировка нагрузки между ними.
Когда вы делаете пуш в репозиторий — сервис сам обновляется.
🔧 Иногда не хватает гибкости App Platform, например, если нужен кастомный линуксовый пакет для работы сервиса. Но мне для большинства проектов её возможностей достаточно.
💰 По стоимости: для первого небольшого проекта это около $20-25 в месяц (большая часть уходит на базу данных — $15). Её можно использовать и для других проектов, и тогда цена будет от $5. На рынке есть варианты подешевле, но для меня лучше переплатить $10, чем тратить время на девопс.
#тулзы
DigitalOcean
DigitalOcean — The developer cloud
Helping millions of developers easily build, test, manage, and scale applications of any size — faster than ever before.
👍1
Как создавать анимацию формул при помощи кода?
3Blue1Brown — один из самых популярных и доступных каналов на YouTube про математику и физику. Одна из его фишек — очень качественная анимация формул, графиков и других математических объектов.
Вчера я наткнулся в интернете на библиотеку на Python, Manim, при помощи которой они это делают. Это очень круто, что весь ролик описывается кодом. А потом нашел видео создателя этой библиотеки и канала о том, как ей пользоваться. Хочется самому теперь поснимать видео и поработать с этим инструментом.
С этой библиотекой, генерацией голоса и GPT можно вообще автоматизировать создание простых математических видео. Например, можно подать на вход запрос "объясни, как решать квадратные уравнения" — а программа выдает готовое видео с объяснением.
#тулзы
3Blue1Brown — один из самых популярных и доступных каналов на YouTube про математику и физику. Одна из его фишек — очень качественная анимация формул, графиков и других математических объектов.
Вчера я наткнулся в интернете на библиотеку на Python, Manim, при помощи которой они это делают. Это очень круто, что весь ролик описывается кодом. А потом нашел видео создателя этой библиотеки и канала о том, как ей пользоваться. Хочется самому теперь поснимать видео и поработать с этим инструментом.
С этой библиотекой, генерацией голоса и GPT можно вообще автоматизировать создание простых математических видео. Например, можно подать на вход запрос "объясни, как решать квадратные уравнения" — а программа выдает готовое видео с объяснением.
#тулзы
👍3
