#devops #vacancy
Девопсы, эта вакансия для вас
🔵 Требования:
- опыт работы на коммерческих проектах от 2-х лет;
- опыт работы в качестве DevOps-инженера или Linux-администратора с задачами #DevOps;
- опыт работы с #Kubernetes, #Helm, #Docker, #Containerd;
- опыт работы системами сборки и деплоя (#Gitlab CI, #Teamcity, Octopus Deploy);
- опыт работы с системами Configuration Management (#Ansible, #Chief, #Puppet);
- опыт работы с системами мониторинга, логирования и визуализации (#Zabbix, стек ELK, стек Prometheus -Grafana);
- опыт написания автоматизаций на #Bash, #Python/ #Go/ #Java.
Проекты многочисленные и разнообразные. Принадлежность к конкретному проекту определяется по результатам собеседования.
Компания:
Aston, https://astondevs.ru/
#вакансии
💡 Канал | 💬 Чат
Девопсы, эта вакансия для вас
🔵 Требования:
- опыт работы на коммерческих проектах от 2-х лет;
- опыт работы в качестве DevOps-инженера или Linux-администратора с задачами #DevOps;
- опыт работы с #Kubernetes, #Helm, #Docker, #Containerd;
- опыт работы системами сборки и деплоя (#Gitlab CI, #Teamcity, Octopus Deploy);
- опыт работы с системами Configuration Management (#Ansible, #Chief, #Puppet);
- опыт работы с системами мониторинга, логирования и визуализации (#Zabbix, стек ELK, стек Prometheus -Grafana);
- опыт написания автоматизаций на #Bash, #Python/ #Go/ #Java.
Проекты многочисленные и разнообразные. Принадлежность к конкретному проекту определяется по результатам собеседования.
Компания:
Aston, https://astondevs.ru/
#вакансии
💡 Канал | 💬 Чат
astondevs.ru
Разработка программного обеспечения для Бизнеса — ASTON
Эффективные IT-решения для развития бизнеса. Проектная разработка и расширение вашей команды.
Python + GitHub -> Backdoor/Malware
Backdoor — скрытый способ доступа к системе, обходящий авторизацию и аутентификацию и всё такое.
Malware — вредоносный код, который выполняет нежелательные действия, такие как кража данных, повреждение файлов или передача контроля над системой злоумышленнику.
12 ноября 2024 была попытка backdoor посредством невинного на первый взгляд pull request. Основная мишень для злоумышленников — популярные Python-библиотеки и фреймворки от которых зависит огромный сегмент разработки. Оно и понятно Python сейчас на коне.
Pull request с простым названием пытался изменить файл на Python, добавив в него некую последовательность чисел. Каждое из этих чисел представляло собой символ Unicode, то есть Python-код был попросту преобразован в числовой эквивалент. Дальше последовательность символов в итоге превращалась в фрагмент кода. Дальше код используется для попытки подключения к сайту для перехода атаки в следующую фазу.
Сложно? - Нет.
Доступно? - Да.. и эта фича языка Python. Шутки которые вышли из под контроля.
Самое грустное что такие PR получали аппрувы и.. дальше вы сами понимаете. Есть кейсы что такие PR побывали в master/main ветках😮
Решение
Внедрить любые анализатора кода или ИИ-инструменты. Они помогут выявить угрозы на ранних этапах, ну или надеемся что выявят
📎 Ссылки: xakep, github
#python
#github
#backdoor
💡 Channel | ✏ Chat
Malware — вредоносный код, который выполняет нежелательные действия, такие как кража данных, повреждение файлов или передача контроля над системой злоумышленнику.
12 ноября 2024 была попытка backdoor посредством невинного на первый взгляд pull request. Основная мишень для злоумышленников — популярные Python-библиотеки и фреймворки от которых зависит огромный сегмент разработки. Оно и понятно Python сейчас на коне.
Pull request с простым названием пытался изменить файл на Python, добавив в него некую последовательность чисел. Каждое из этих чисел представляло собой символ Unicode, то есть Python-код был попросту преобразован в числовой эквивалент. Дальше последовательность символов в итоге превращалась в фрагмент кода. Дальше код используется для попытки подключения к сайту для перехода атаки в следующую фазу.
Сложно? - Нет.
Доступно? - Да.. и эта фича языка Python. Шутки которые вышли из под контроля.
Самое грустное что такие PR получали аппрувы и.. дальше вы сами понимаете. Есть кейсы что такие PR побывали в master/main ветках
Решение
Внедрить любые анализатора кода или ИИ-инструменты. Они помогут выявить угрозы на ранних этапах, ну или надеемся что выявят
📎 Ссылки: xakep, github
#python
#github
#backdoor
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Python Package Index крадет AWS ключи
Вредоносный пакет PyPI под названием "Fabrice" был активен на платформе более 3 лет. Его скачали более 37 000 раз. Он крадет учетные данные AWS и выполняет другие вредоносные действия.
Уникальность атаки заключалась в так сказать долговечности или "спящая ячейка" и по сути злоумышленники проявили терпение и даже стратегический подход, постепенно собирая данные для максимального воздействия и покрытия.
Как это работает?
Выполняет вредоносные действия в зависимости от операционной системы.
Linux: Он использует специальную функциональность для загрузки, декодирования и выполнения различных shell-скриптов с внешнего сервера.
Windows: Извлекаются и выполняются две разные полезные нагрузки: по VBS-скрипт и Python-скрипты.
Далее пакет как бы крадет AWS учетные данные используя Boto3 AWS Software Development Kit (SDK) для Python, и отправляют информацию на сторонний сервер.
Эта схема оставалась незамеченной, пока команда кибербезопасности не провела детальный анализ пакетов в PyPI. Они обнаружили, что «fabrice» — лишь верхушка айсберга. Подобные вредоносные пакеты активно внедряются в экосистему Python, чтобы красть данные и компрометировать проекты разработчиков.
📝 Итого:
1. Кодишь на Python - проверяй двойнее
2. Доверяй, но проверяй и смотри пункт 1
Ссылки: xakep.ru, securitymagazine.com, thehackernews.com
#aws
#python
#сybersecurity
💡 Channel | ✏ Chat
Вредоносный пакет PyPI под названием "Fabrice" был активен на платформе более 3 лет. Его скачали более 37 000 раз. Он крадет учетные данные AWS и выполняет другие вредоносные действия.
Уникальность атаки заключалась в так сказать долговечности или "спящая ячейка" и по сути злоумышленники проявили терпение и даже стратегический подход, постепенно собирая данные для максимального воздействия и покрытия.
Как это работает?
Выполняет вредоносные действия в зависимости от операционной системы.
Linux: Он использует специальную функциональность для загрузки, декодирования и выполнения различных shell-скриптов с внешнего сервера.
Windows: Извлекаются и выполняются две разные полезные нагрузки: по VBS-скрипт и Python-скрипты.
Далее пакет как бы крадет AWS учетные данные используя Boto3 AWS Software Development Kit (SDK) для Python, и отправляют информацию на сторонний сервер.
Эта схема оставалась незамеченной, пока команда кибербезопасности не провела детальный анализ пакетов в PyPI. Они обнаружили, что «fabrice» — лишь верхушка айсберга. Подобные вредоносные пакеты активно внедряются в экосистему Python, чтобы красть данные и компрометировать проекты разработчиков.
1. Кодишь на Python - проверяй двойнее
2. Доверяй, но проверяй и смотри пункт 1
Ссылки: xakep.ru, securitymagazine.com, thehackernews.com
#aws
#python
#сybersecurity
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
Ищу единомышленников. Пошёл в MIT.
Старт - уже на этой неделе!
Решил не откладывать и пошёл в
Хочу подтянуть фундамент, начать думать, как думают в топовых местах разработки.
MIT - это самый Массачусетский технологический , где варятся умные головы, которые потом запускают ракеты, делают стартапы, там делают ИИ, работают над квантовыми вычислениями или преподают.
➡️ Курс здорового человека
Название: "Introduction to Computer Science and Programming Using Python"
Платформа: edX
Ссылка: MITx
Обучение: бесплатно
Сертификат MITx: $100 (со скидкой). Я буду его брать в любом случае
➡️ Почему стоит залететь со мной
1⃣ Это инвестиция в себя
2⃣ MIT - если уж учиться, то у лучших
3⃣ Наконец разобраться в
5⃣ Подтянуть основы
5⃣ Базовый английский пригодится (всё на английском, но есть субтитры — заодно подтянем)
6⃣ Ну и просто проверить себя - могу ли я дойти до конца
7⃣
➡️ Насколько это по времени
Заявлено: 12 часов в неделюю По факту - можно пройти быстрее, особенно если делать стабильно
Стартуем уже на этой неделе
Если давно хотели, но всё откладывали - вот знак 🧙🏻♂️ <——
Я точно иду и зову вас со мной
Можно проходить вместе: обсуждать, делиться инсайтами, созваниваться и не сдаваться на середине.
Погнали? 🚀
*UPD:
Больше инфы в комментариях
Ссылка:
это код
это код
Группа по MITx 6.00.1x: MITx6001x
#mit
#обучение
#python
💡 Channel | ✏ Chat
Старт - уже на этой неделе!
Решил не откладывать и пошёл в
MIT
. Онлайн-курс, Python
, основа Computer Science
.Хочу подтянуть фундамент, начать думать, как думают в топовых местах разработки.
Название: "Introduction to Computer Science and Programming Using Python"
Платформа: edX
Ссылка: MITx
Обучение: бесплатно
Сертификат MITx: $100 (со скидкой). Я буду его брать в любом случае
Python
, а не просто писать скриптыComputer Science
и системное мышлениеMIT
за 100$ (опционально) и это будет как минимум в резюме/CV будет красиво Заявлено: 12 часов в неделюю По факту - можно пройти быстрее, особенно если делать стабильно
Python
и CS
можно с нуля - подойдёт даже новичкамСтартуем уже на этой неделе
Если давно хотели, но всё откладывали - вот знак 🧙🏻♂️ <——
Я точно иду и зову вас со мной
Можно проходить вместе: обсуждать, делиться инсайтами, созваниваться и не сдаваться на середине.
Погнали? 🚀
*UPD:
Больше инфы в комментариях
Ссылка:
https://www.edx.org/learn/computer-science/massachusetts-institute-of-technology-introduction-to-computer-science-and-programming-using-python
это код
SMARTEDX25
скидка 30%это код
NEW2EDX
скидка 30%Группа по MITx 6.00.1x: MITx6001x
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3👍2
Я программист с 12+ лет опыта и я не знаю Python
Вообщем, я не знаю
Пишу на C#, строю бэкенд, оптимизирую, продакшн - огонь, но мне не стыдно признать, что я не знаю Python, я чего-то могу не знать и это ОК!1
Невозможно знать всё, да и это не всегда даже нужно или может даже не применительно на практике или в жизни.
Честно в IT каждый знает свой кусочек и это тоже нормально!
Вообщем ребята не знать не стыдно 🫠
Большинство думают, что
Вообщем недавно я открыл для себя
🐍 Он прост и пугающь одновременно 😅 и это только начало, а я ещё не пристегнулся))
Вот примеры, которые меня реально удивили:
to be continued
#humour
#python
💡 Channel | ✏ Chat
Вообщем, я не знаю
Python
, но я умею делать мемчики с ним))Пишу на C#, строю бэкенд, оптимизирую, продакшн - огонь, но мне не стыдно признать, что я не знаю Python, я чего-то могу не знать и это ОК!1
Невозможно знать всё, да и это не всегда даже нужно или может даже не применительно на практике или в жизни.
Честно в IT каждый знает свой кусочек и это тоже нормально!
Вообщем ребята не знать не стыдно 🫠
Большинство думают, что
Python
все знают, даже я его интуитивно понимаю. Однако, писать код и читать это разные вещи. По сути это как говорить: что все говорят на Испанском и что его легко выучить, вроде даже понятный)Вообщем недавно я открыл для себя
Python
. И скажу честно:🐍 Он прост и пугающь одновременно 😅 и это только начало, а я ещё не пристегнулся))
Вот примеры, которые меня реально удивили:
3 * "bc" # 'bcbcbca' - что это?
"abcd"[:] # LOL просто копия строки
"abcd"[:777] # просто вывод всей строки О_о
"0123456789"[0::2] # '02468' - каждый второй символ, изящно удобно
"python"[::-1] # 'nohtyp' - реверс строки, невероятно
to be continued
#humour
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Обучение в MIT: Первая секция
➡️ UNIT 1
В первой секции дали отличную базу по
Ну и конечно когда изучаешь что то новое сравниваешь с тем что уже знаешь. При написание кода всегда писал так как привык на своих языках программирования которые знаю. Тут иначе)
За один лишний пробел в начале можно получить ошибки или неправильное поведение 🫠
Скриптовый язык какой он есть, но в этом и простота и лакончиность.
Первый модуль - скорее разогрев: быстро прошлись по if, while, for и базовым типам данных, всё с понятными задачами и регулярным закреплением. Не как в некоторых курсах, где 10 уроков про if, а потом ещё 20 про циклы дальше десяток закреплений для while.
Ну камон - циклы плюс-минус они одинаковые везде начиная от Pascal, C# и даже в SQL
В отличие от того, как мне преподавали в вузе, здесь материал подаётся понятнее и мне кажется легче, особенно для тех, кто только собирается войти в IT, для тех кто в индустрии - полёт нормальный.
🧙🏻♂️ Не пожалел, что начал. Вход очень комфортный, всё логично и по делу. Конечно, у меня есть преимущество благодаря опыту, но даже новички не будут отставать - материал даётся с темпом, но без перегруза. И это круто: сразу получаешь свою дозу дофамина от прогресса. Остальное добираешь в chatgpt и всё ок.
Финальные задания юнита уже подводят к следующему этапу - к алгоритмам.
Это чувствуется: упражнения не просто на знание синтаксиса
➡️ и да язык разработки - это просто инструмент, а настоящее обучение в
➡️ Итого
#mit
#обучение
#python
💡 Channel | ✏ Chat
В первой секции дали отличную базу по
Computer Science
- сразу с интересного примера: вычисление квадратного корня. Это не просто "изучим print и пошли дальше", а объяснение, почему это работает так, как работает. Подход прямо зашёл. За один лишний пробел в начале можно получить ошибки или неправильное поведение 🫠
Скриптовый язык какой он есть, но в этом и простота и лакончиность.
Первый модуль - скорее разогрев: быстро прошлись по if, while, for и базовым типам данных, всё с понятными задачами и регулярным закреплением. Не как в некоторых курсах, где 10 уроков про if, а потом ещё 20 про циклы дальше десяток закреплений для while.
Ну камон - циклы плюс-минус они одинаковые везде начиная от Pascal, C# и даже в SQL
В отличие от того, как мне преподавали в вузе, здесь материал подаётся понятнее и мне кажется легче, особенно для тех, кто только собирается войти в IT, для тех кто в индустрии - полёт нормальный.
🧙🏻♂️ Не пожалел, что начал. Вход очень комфортный, всё логично и по делу. Конечно, у меня есть преимущество благодаря опыту, но даже новички не будут отставать - материал даётся с темпом, но без перегруза. И это круто: сразу получаешь свою дозу дофамина от прогресса. Остальное добираешь в chatgpt и всё ок.
Финальные задания юнита уже подводят к следующему этапу - к алгоритмам.
Это чувствуется: упражнения не просто на знание синтаксиса
Python
, а на построение логики, принятие решений и анализ. Computer Science
начинается с того, как думать как инженер, как строить алгоритмы, как решать задачи.- Знания Python не нужны
- До 13 июня нужно закончить первую секцию
- Тратится НЕ 12-14 часов в неделю
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🙏1
Обучение в MIT: Вторая секция
➡ UNIT 2
Пристёгиваемся - разогрев закончился, начинается настоящее обучение 😎
➡️ Уже чувствуется как по времени так и по сложности сама секция. После каждой лекции - задания на закрепление. И они реально заходят: помогают переварить материал и попробовать всё на практике.
➡️ Начали давать базовые алгоритмы и это чувствуется, что нас постепенно подводят к более сложным концепциям. Апроксимация: линейная и бисекции - он же бинарный поиск. Не пугаемся там всё разжёвывают 😉
➡️ Как хранятся дробные числа в компьютере (float) и почему нельзя на них всегда полагаться при точных вычислениях 🔥
➡️ Освежил в памяти перевод чисел в двоичную систему - делал это лет 20 назад, было забавно вспомнить
➡️ Познакомились с методом Ньютона (методом касательных) - на его примере считали квадратные корни. Один из первых «настоящих» алгоритмов в курсе.
➡️ Дальше учились делать код чище. От "портянок" перешли к структурированному коду
➡️ Учились декомпозировать, разбивать задачи на части, выносить логику в функции, распределять по файлам 💪
➡️ Появилось понимание области видимости (scope) переменных, по сути, это про время жизни и зону действия переменной в программе.
➡️ Делается акцент на комментарии, это прям очень круто, что с самого начала прививают культуру читаемого кода. Прямо респект авторам курса!
➡️ Рекурсия и тут начинается веселье ребята 🤓
Добро пожаловатьв ад начинающего разработчика - это мать рекурсия 🫣
Разбирали задачу про Ханойскую башню - и да, это больно, если раньше с таким не сталкивался😭
➡️ Но главное, чему учат
➖ Искать паттерны, начинать решение с простых входных данных
➖ Учиться разделять проблему на подзадачи
➖ Не бояться отступить и передумать подход, удалить всё и переписать 😅 - это тоже часть алгоритмического мышления.
➡️ Финальная проверка по Unit 2
В конце - контрольная работа с 3 задачами. Каждая задача сложнее предыдущей, это значит, что последняя задача прямо неплохая. Последняя по сути - это
➡️ Совет
1⃣ Не бойтесь обращаться к интернету или ChatGPT (это нормальная часть обучения) НО после просмотра лекции, чтобы закреплять материал, по сути мы рассматриваем частные случаи и их довольно много, но случаи выбираются самые показательные в лекциях.
2⃣ Не списывайте с инета или с ai чатов, это бестолку или в крайнем случае дальше вы просто не сможете решить следующие задачи. Сейчас строится фундамент для дальнейших секций. Мы не идём в параллель, где можно пропустить что-то и бог с ним, как в теории вероятности 😅, мы идём базируясь на том что выучили в прошлой секции.
3⃣ Выбирайте тот вариант который вам подходит для запоминания.
5⃣ Главное - понимать, а не просто копировать.
➡️ Итого
Повторили основы, освежили математику, начали писать осмысленный код, залезли в рекурсию.
Курс начинает потихоньку чувствоваться как настоящий
Так что, поехали дальше.
#mit
#обучение
#python
💡 Channel | ✏ Chat
Пристёгиваемся - разогрев закончился, начинается настоящее обучение 😎
Добро пожаловать
Разбирали задачу про Ханойскую башню - и да, это больно, если раньше с таким не сталкивался
В конце - контрольная работа с 3 задачами. Каждая задача сложнее предыдущей, это значит, что последняя задача прямо неплохая. Последняя по сути - это
LeetCode
и если бы они удали формулы😅 тогда это уровень Easy
, но если ты совсем новичок в программировании, будет непросто.- Не обязательно решать всё идеально!!
- Курс не оценивается по баллам, здесь система зачёт / не зачёт.
- Чтобы пройти Unit, достаточно набрать чуть больше половины баллов. Так что не загоняйтесь.
- У каждого разный старт и база. Кто-то решает больше, кто-то меньше. Каждый бежит со своей скоростью.
Повторили основы, освежили математику, начали писать осмысленный код, залезли в рекурсию.
Курс начинает потихоньку чувствоваться как настоящий
Computer Science
фундамент и это только начало 😉Так что, поехали дальше.
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3 2❤1
Обучение в MIT: Третья секция
➡ UNIT 3
Tuple, List, Dictionary и один шок из мира Python
Типы, типы вокруг одни типы
Делюсь впечатлениями от третьей секции курса
➡️ Tuple vs List - что это вообще и почему я в шоке
Секция начинается с введения в коллекции - именно тех кирпичиков из которых в Python строят структуры данных.
Tuple - кортежи, неизменяемые "контейнеры"
List - списки, изменяемые, гибкие и местами очень «жидкие» по сравнению с массивами в C#
ШОК, по Tuple можно итерироваться😲 и это работает ребята
➡️ Изменяемость vs Неизменяемость
Разработчики, особенно с опытом в строго типизированных языках, поначалу могут запутаться:
Tuple - неизменяемый (immutable)
List - изменяемый (mutable)
Вообщем все эти типы - ссылочные, поняли, были, проходили
Для тех кто не в курсе: a тоже изменился, потому что и a и b указывают на один и тот же список. Это очень похоже на поведение ссылочных типов в C#, но с одним отличием - в Python почти всё ссылочное. Даже int и str - ссылочные, просто они неизменяемые 😳
➡️ А теперь король Dictionary
Всё просто, но мощно. Особенно для задач на LeetCode
Эту вещь надо писать часто в задачах
➡️ Задачи и практика
После каждой темы - закрепляющие задачки.
Они не просто "для галочки" реально заставляют понять, где у тебя пробелы в понимании. Ну и в конце, задача про подсчёт налогов 🙉
➡️ Итого
Секция 3 - это та самая секция, где Python перестаёт быть просто "ещё одним языком". Ты видишь, как много всего можно делать мало кода ну и насколько важно понимать, что mutable/immutable и ссылочные типы.
Для меня, я пришёл из мира C#, то мне не много странно ну и круто в тоже время. в Python всё ещё легко ошабиться и ошибиться, но продолжаем работать 😎
#mit
#обучение
#python
💡 Channel | ✏ Chat
Tuple, List, Dictionary и один шок из мира Python
Типы, типы вокруг одни типы
Делюсь впечатлениями от третьей секции курса
6.01 Introduction to Computer Science and Programming in Python
от MIT
. Как C#-разработчик, я знал, что Python - язык с "мягкими границами". Но не думал, что меня так быстро что-то удивит. И вот привет и я ошибся. Так что знания C# уже как бы начинают мешать порой)Секция начинается с введения в коллекции - именно тех кирпичиков из которых в Python строят структуры данных.
Tuple - кортежи, неизменяемые "контейнеры"
List - списки, изменяемые, гибкие и местами очень «жидкие» по сравнению с массивами в C#
ШОК, по Tuple можно итерироваться
for item in (1, 2, 3):
print(item)
🤯 В C# Tuple - это просто обёртка на два-три значения с имёнами вроде Item1, Item2. Ни о каких итерациях речи нет. В Python Tuple короче буквально как список. Просто ты его не можешь изменить. У Python своё видение на "контейнеры". Своеобразное, но удобное, не привычно вообщем
Разработчики, особенно с опытом в строго типизированных языках, поначалу могут запутаться:
Tuple - неизменяемый (immutable)
List - изменяемый (mutable)
Вообщем все эти типы - ссылочные, поняли, были, проходили
a = [1, 2, 3]
b = a
b.append(4)
print(a) # [1, 2, 3, 4]
⚠️ Изменяемость нужно держать в голове. Особенно если ты решаешь задачи и используешь .append() или .sort() - можно ненароком модифицировать структуру, о чём потом будешь жалеть (и дебажить долго). Но в C# всё так же, но не во всех языках
dict = {"key": "value"}
Всё просто, но мощно. Особенно для задач на LeetCode
Эту вещь надо писать часто в задачах
counts = {}
for num in nums:
counts[num] = counts.get(num, 0) + 1
После каждой темы - закрепляющие задачки.
Они не просто "для галочки" реально заставляют понять, где у тебя пробелы в понимании. Ну и в конце, задача про подсчёт налогов 🙉
Секция 3 - это та самая секция, где Python перестаёт быть просто "ещё одним языком". Ты видишь, как много всего можно делать мало кода ну и насколько важно понимать, что mutable/immutable и ссылочные типы.
Для меня, я пришёл из мира C#, то мне не много странно ну и круто в тоже время. в Python всё ещё легко ошабиться и ошибиться, но продолжаем работать 😎
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Обучение в MIT: Четвёртая секция
➡ UNIT 4
Programming Challenges & Debugging
Делюсь впечатлениями от четвёртой секции курса
Прошёл четвёртую секцию курса
Один из ключевых блоков - Classes of Tests, включая концепции "чёрного ящика" (black-box) и "стеклянного ящика" (glass-box).
➖ Black-box тестирование - это подход, при котором ты проверяешь систему, не зная, как она устроена внутри. Представь, что тебе дали API и ты просто должен понять, что оно делает, подавая различные входные данные и анализируя выход.
➖ Glass-box (или white-box) тестирование - это противоположность. Ты видишь внутренности системы: циклы, условия, ветвления. Такой подход помогает проверить, покрыты ли все ветки кода, правильно ли работают крайние случаи и насколько всё логично устроено изнутри.
В повседневной разработке эти термины ,честно, используются редко, но понимание этих подходов формирует правильное инженерное мышление, когда ты не просто "фикюс этот баг", а как бы осознанно подходишь к проверке системы с разных сторон.
Отдельное внимание в секции уделяется Debugging. Казалось бы, что может быть проще - поставил точку останова (брейкпоинт), посмотрел стек вызовов и вперёд. Но всё гораздо глубже.
➡️ В Debugging хорошо раскрываются реальные сложности
Баг может быть неопределённым во времени (например, гонка потоков);
Он может проявляться только на проде (а у тебя нет логов);
Или воспроизводится только при определённой комбинации входов, которые ты даже не подумал проверить.
➡️ Подходы к поиску багов бывают разные
Метод бинарного поиска по истории коммитов или конфигураций, редко, но нужно;
Логирование это основа, чем лучше логируешь тем меньше вслепую ты работаешь;
Проверка гипотез по очереди, без хаоса в изменениях;
Но, главное, я считаю это умение остановиться и подумать, а не ковыряться бесконечно.
Я бы сказал, что эта секция учит не кликать по кнопкам IDE, а развивать в себе "Шерлока" внимательного, логичного, системного. Это тот самый навык, который отличает хорошего инженера от того, кто просто пишет код.
#mit
#обучение
#python
💡 Channel | ✏ Chat
Programming Challenges & Debugging
Делюсь впечатлениями от четвёртой секции курса
6.01 Introduction to Computer Science and Programming in Python
от MIT
. Прошёл четвёртую секцию курса
MIT
. На первый взгляд, она несложная, но именно здесь закладываются фундаментальные принципы мышления разработчика. Речь идёт о том, как искать баги, как размышлять над непонятными ситуациями и быстро находить решения - потому что иногда от одной строки твоего кода зависит не только успех проекта, но и бизнес в целом.Один из ключевых блоков - Classes of Tests, включая концепции "чёрного ящика" (black-box) и "стеклянного ящика" (glass-box).
В повседневной разработке эти термины ,честно, используются редко, но понимание этих подходов формирует правильное инженерное мышление, когда ты не просто "фикюс этот баг", а как бы осознанно подходишь к проверке системы с разных сторон.
Отдельное внимание в секции уделяется Debugging. Казалось бы, что может быть проще - поставил точку останова (брейкпоинт), посмотрел стек вызовов и вперёд. Но всё гораздо глубже.
Баг может быть неопределённым во времени (например, гонка потоков);
Он может проявляться только на проде (а у тебя нет логов);
Или воспроизводится только при определённой комбинации входов, которые ты даже не подумал проверить.
Метод бинарного поиска по истории коммитов или конфигураций, редко, но нужно;
Логирование это основа, чем лучше логируешь тем меньше вслепую ты работаешь;
Проверка гипотез по очереди, без хаоса в изменениях;
Но, главное, я считаю это умение остановиться и подумать, а не ковыряться бесконечно.
Я бы сказал, что эта секция учит не кликать по кнопкам IDE, а развивать в себе "Шерлока" внимательного, логичного, системного. Это тот самый навык, который отличает хорошего инженера от того, кто просто пишет код.
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻4🔥3 1
Обучение в MIT: Первый экзамен
➡ Midterm exam
Делюсь впечатлениями от сдачи первого экзамена
➡️ Экзамен, на который не нашлось времени
У курса есть midterm экзамен - на него выделяется 8 часов, но доступен он несколько дней. Ну и как это обычно бывает: времени не было, поэтому сел в последнюю ночь без особой подготовки 🙉
Кратко повторил, освежил в памяти пару тем и пошёл вывозить на своих знаниях 😅
➡️ Теория и логика: как по мне кайф
Всего попалось 22 вопроса из них где-то 5 практических задач.
Первая часть - теоретическая и мне она очень зашла. Вопросы были не на банальное угадай-слово, а на понимание Python и логики работы программ. Методом исключения пройти не выйдет это прям хорошо. Всё нужно осознанно продумать. Прямо удовольствие получил, пока проходил эту часть. Прошёл её довольно быстро.
➡️ Тесты с множественным выбором
А вот дальше началось веселье с множественным выбором, где если хотя бы один вариант неверен - весь вопрос = 0 баллов. Прямо с двух ног влетел: был вопрос на 3 балла с 6 вариантами ответа - выбрал, как думал правильно… и получил 0 🫣
Со следующим та же история.
Потом уже собрался с мыслями и начал внимательно читать каждый пункт, взвешивать и проверять.
Стал подходить как к код-ревью и результаты улучшились. P.S. Теперь понимаю, зачем дают 8 часов не потому что сложно, а потому что нужно вдумчиво 😉
➡️ Практикая часть
Потом пошли практические задачи. Как я понял выпадают полный рандом
У меня было:
➖ Рекурсия, разобрался быстро.
➖ Доработка чужого кода, вот тут потерял время.
➖ Пытался понять "а зачем они это так сделали и как это работает? 😅" короче профдеформация. Минус 15 минут.
➖ Хорошо, что не учитывалис попытки и можно было прогонять да и плюс тесты показывались, чтобы пофиксить код
➖ Задача с удалением данных из списка по условиям, мини-алгоритмическая, справился легко.
Потом были задачи без тест-кейсов. Пиши код и гадай, почему не проходит😄
Зато они оценивались в 10 баллов. Даже если не всё работает, но часть проходит можно получить 2–5 баллов. Это круто.
Последнюю задачу пришлось полностью переписать, но в итоге она тоже сдалась.
На всё ушло 1 час и 16 минут. Можно было медленнее и это было бы правильнее, но мне нужно было просто сдать 😅 иначе я не успевал
➡️ Итого
➖ Не всегда надо отвечать и бежать на 100%. Цель тут это просто пройти и закрепить знания.
➖ Python, это не зубрёжка как в универе или в школе, а понимание логики, структуры и подходов.
➖ MIT делает хорошие задания: не банальные, а те, которые развивают.
➖ В любом случае, я многое повторил, кое-что усвоил, кое-что нет и это нормально, что то уже забыл 🥲
➖ Главное это не останавливаться и стараться понимать, а не просто запоминать.
➖ Решай задачи на рекурсию, генераторы, работу со строками и списками они встречаются часто.
➖ Не бойся делать ошибки. Главное разобраться, почему НЕ РАБОТАЕТ 🥹
Ну и на последок, не оставляй экзамен на последнюю ночь, как я 😅
#mit
#обучение
#python
💡 Channel | ✏ Chat
Делюсь впечатлениями от сдачи первого экзамена
6.01 Introduction to Computer Science and Programming in Python
от MIT
.У курса есть midterm экзамен - на него выделяется 8 часов, но доступен он несколько дней. Ну и как это обычно бывает: времени не было, поэтому сел в последнюю ночь без особой подготовки 🙉
Кратко повторил, освежил в памяти пару тем и пошёл вывозить на своих знаниях 😅
Всего попалось 22 вопроса из них где-то 5 практических задач.
Первая часть - теоретическая и мне она очень зашла. Вопросы были не на банальное угадай-слово, а на понимание Python и логики работы программ. Методом исключения пройти не выйдет это прям хорошо. Всё нужно осознанно продумать. Прямо удовольствие получил, пока проходил эту часть. Прошёл её довольно быстро.
А вот дальше началось веселье с множественным выбором, где если хотя бы один вариант неверен - весь вопрос = 0 баллов. Прямо с двух ног влетел: был вопрос на 3 балла с 6 вариантами ответа - выбрал, как думал правильно… и получил 0 🫣
Со следующим та же история.
Потом уже собрался с мыслями и начал внимательно читать каждый пункт, взвешивать и проверять.
Стал подходить как к код-ревью и результаты улучшились. P.S. Теперь понимаю, зачем дают 8 часов не потому что сложно, а потому что нужно вдумчиво 😉
Потом пошли практические задачи. Как я понял выпадают полный рандом
У меня было:
Потом были задачи без тест-кейсов. Пиши код и гадай, почему не проходит
Зато они оценивались в 10 баллов. Даже если не всё работает, но часть проходит можно получить 2–5 баллов. Это круто.
Последнюю задачу пришлось полностью переписать, но в итоге она тоже сдалась.
На всё ушло 1 час и 16 минут. Можно было медленнее и это было бы правильнее, но мне нужно было просто сдать 😅 иначе я не успевал
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6 1
Обучение в MIT: Пятая секция
Уже скоро получим сертфикаты ребята
➡ UNIT 5
Object Oriented Programming
Делюсь впечатлениями от пятой секции курса
В этой части началось знакомство с ООП (объектно-ориентированным программированием). С одной стороны - ура и ужас с другой это множественное наследование в Python 🙉 может вызывать диссонанс, особенно если ты до этого писал на C# или на С++(а я писал и знаю к чему приводит множественное наследование)
🧱 Что такое ООП и зачем оно нужно?
ООП (объектно-ориентированное программирование) - это такой подход, при котором мы моделируем программу через объекты - экземпляры классов. Эти объекты хранят данные (поля) и поведение (методы). Повышается структурность и это классика: инкапсуляция, наследование, полиморфизм
➡️ Множественное наследование
Наследование нормального человека
➡️ Конструктор
и в Python он только один 😱
➡️ Методы vs функции: в чём разница?
Функция - самостоятельный блок кода и не привязан к объекту.
Метод - функция, которая внутри класса и работает с данными объекта.
➡️ Генераторы
тут также как C# всё довольно понятно, но тут как то скучно и примитивно, у нас (C#) это сделано гораздо прикольнее и есть всякие async foreach и трюки
➡️ Итого
Unit 5 - это первая настоящая архитектурная тема в MIT-курсе. Всё становится ближе к тому, как пишется код в реальных проектах. Немного больно от Python (множественное наследование, self, отсутствие типов), но мозг включается и перестраивается. Надо ли оно мне, узнаем позже)
Если ты хочешь расти вместе, проходи курс, пиши, как ты справляешься с ООП - особенно если ты из C# мира, как и я.
#mit
#обучение
#python
💡 Channel | ✏ Chat
Уже скоро получим сертфикаты ребята
Object Oriented Programming
Делюсь впечатлениями от пятой секции курса
6.01 Introduction to Computer Science and Programming in Python
от MIT
. В этой части началось знакомство с ООП (объектно-ориентированным программированием). С одной стороны - ура и ужас с другой это множественное наследование в Python 🙉 может вызывать диссонанс, особенно если ты до этого писал на C# или на С++(а я писал и знаю к чему приводит множественное наследование)
ООП (объектно-ориентированное программирование) - это такой подход, при котором мы моделируем программу через объекты - экземпляры классов. Эти объекты хранят данные (поля) и поведение (методы). Повышается структурность и это классика: инкапсуляция, наследование, полиморфизм
class Animal:
def speak(self):
return "Some sound"
class Flyer:
def fly(self):
return "Flying high"
class Bird(Animal, Flyer): # множественное наследование
def speak(self):
return "Chirp"
b = Bird()
print(b.speak()) # Chirp
print(b.fly()) # Flying high
При совпадении методов работает MRO (Method Resolution Order) - сначала ищется в классе, затем по порядку наследования.
Наследование нормального человека
class Animal
{
public virtual string Speak() => "Some sound";
}
class Bird : Animal
{
public override string Speak() => "Chirp";
}
var bird = new Bird();
Console.WriteLine(bird.Speak()); // Chirp
В C# нет множественного наследования классов (только интерфейсы). Всё строго, понятно и предсказуемо.
и в Python он только один 😱
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
return f"{self.name} says woof!"
d = Dog("Rex")
print(d.bark()) # Rex says woof!
__init__ - это конструктор, вызывается при создании объекта.
self - ссылка на текущий экземпляр.
Функция - самостоятельный блок кода и не привязан к объекту.
Метод - функция, которая внутри класса и работает с данными объекта.
тут также как C# всё довольно понятно, но тут как то скучно и примитивно, у нас (C#) это сделано гораздо прикольнее и есть всякие async foreach и трюки
Unit 5 - это первая настоящая архитектурная тема в MIT-курсе. Всё становится ближе к тому, как пишется код в реальных проектах. Немного больно от Python (множественное наследование, self, отсутствие типов), но мозг включается и перестраивается. Надо ли оно мне, узнаем позже)
Если ты хочешь расти вместе, проходи курс, пиши, как ты справляешься с ООП - особенно если ты из C# мира, как и я.
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
👾3🥴1 1
Обучение в MIT: Шестая секция
➡ UNIT 6
Algorithmic Complexity and Sorting
Делюсь впечатлениями от шестой секции курса
Ну вот, наконец-то ну. После первых пяти секций начинается то, что у меня ассоциируется с настоящим
➡️ Что такое Algorithmic Complexity?
Это способ оценить эффективность алгоритма, чаще всего в зависимости от размера входных данных (n) Основной инструмент - Big-O нотация. Она показывает, как сильно увеличится время работы алгоритма или используемая память при росте данных.
➡️ Основные виды сложности (Big-O)
1. O(1) — константная
Сколько бы элементов ни было - всегда одно действие изи вообщем
2. O(log n) - логарифмическая
Пример - бинарный поиск. Отсортируйте данные
3. O(n) - линейная
Нужно пройтись по всем элементам.
4. O(n log n) - почти "линейная"
Пример - быстрая сортировка, сортировка слиянием.
5. O(n²) - квадратичная и дальше это уже полиномиальная
Вложенные циклы по всем элементам - медленно.
5. O(2ⁿ) - Экспоненциальная сложность
Ханойская башня и флэшбэки 🙉
➡️ Сортировки - какими пользуемся?
Та которая есть по дефолту в коробке 😅
В реальной жизни все почти всегда используем встроенные методы (
Классические алгоритмы (QuickSort, MergeSort, BubbleSort) чаще изучаются для понимания
➡️ Что такое Space Complexity?
Это оценка того, сколько дополнительной памяти требует алгоритм помимо входных данных.
O(1) - константная: используется фиксированное количество памяти (сортировка выбором).
O(n) - линейная: нужно место, пропорциональное размеру входных данных (merge sort).
#mit
#обучение
#python
💡 Channel | ✏ Chat
Algorithmic Complexity and Sorting
Делюсь впечатлениями от шестой секции курса
6.01 Introduction to Computer Science and Programming in Python
от MIT
. Ну вот, наконец-то ну. После первых пяти секций начинается то, что у меня ассоциируется с настоящим
Computer Science
. В этой секции Algorithmic Complexity, и это как раз про то, как быстро или медленно работают наши алгоритмы.Это способ оценить эффективность алгоритма, чаще всего в зависимости от размера входных данных (n) Основной инструмент - Big-O нотация. Она показывает, как сильно увеличится время работы алгоритма или используемая память при росте данных.
1. O(1) — константная
def get_first_element(arr):
return arr[0]
Сколько бы элементов ни было - всегда одно действие изи вообщем
2. O(log n) - логарифмическая
def binary_search(arr, target):
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
Пример - бинарный поиск. Отсортируйте данные
3. O(n) - линейная
def find_max(arr):
max_el = arr[0]
for el in arr:
if el > max_el:
max_el = el
return max_el
Нужно пройтись по всем элементам.
4. O(n log n) - почти "линейная"
Пример - быстрая сортировка, сортировка слиянием.
arr.sort() # Python Timsort (O(n log n))
5. O(n²) - квадратичная и дальше это уже полиномиальная
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
Вложенные циклы по всем элементам - медленно.
5. O(2ⁿ) - Экспоненциальная сложность
Ханойская башня и флэшбэки 🙉
def hanoi(n, src, aux, dst):
if n == 1:
print(f"Move {src} → {dst}")
return
hanoi(n-1, src, dst, aux)
hanoi(n-1, aux, src, dst)
В реальной жизни все почти всегда используем встроенные методы (
sorted()
или list.sort()
в Python) и работают в среднем за O(n log n).Классические алгоритмы (QuickSort, MergeSort, BubbleSort) чаще изучаются для понимания
Алгоритм | Time | Space
------------|-------------|----------
Bubble sort | O(n^2) | O(1)
Insertion | O(n^2) | O(1)
Selection | O(n^2) | O(1)
Merge sort | O(n log n) | O(n)
Quick sort | O(n^2) | O(log n)
Это оценка того, сколько дополнительной памяти требует алгоритм помимо входных данных.
O(1) - константная: используется фиксированное количество памяти (сортировка выбором).
O(n) - линейная: нужно место, пропорциональное размеру входных данных (merge sort).
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2❤1
Обучение в MIT: Седьмая секция
Заключительная🦾
➡ UNIT 7
Plotting рисуем графики быстро не отходя от кассы
Делюсь впечатлениями от последней седьмой секции курса
Ну вот и финиш, остался только экзамен.
➡️ Почему и как использовать import pylab as plt?
import pylab as plt - удобный способ работать с графиками и визуализацией данных в Python.
➡️ Что такое pylab?
➡️ Зачем это нужно?
* Быстро создавать красивые графики - линии, точки, гистограммы, диаграммы.
* Делать математические вычисления перед визуализацией.
➡️ Основные функции `plt`:
*
*
*
*
*
*
*
*
*
*
Всё довольно просто, честно я в восторге что так просто
в C# в WPF нужно было много выпить разного и плюс этом танцевать с бубном
➡️ Пример
#mit
#обучение
#python
💡 Channel | ✏ Chat
Заключительная
Plotting рисуем графики быстро не отходя от кассы
Делюсь впечатлениями от последней седьмой секции курса
6.01 Introduction to Computer Science and Programming in Python
от MIT
. Ну вот и финиш, остался только экзамен.
import pylab as plt - удобный способ работать с графиками и визуализацией данных в Python.
pylab
- модуль, объединяющий возможности matplotlib
(для построения графиков) и numpy
(для работы с массивами и математикой). Импортирую pylab
других и не знаю пока 😅,* Быстро создавать красивые графики - линии, точки, гистограммы, диаграммы.
* Делать математические вычисления перед визуализацией.
*
plot()
— рисует линии и графики*
scatter()
— точечный график (диаграмма рассеяния)*
bar()
— столбчатая диаграмма*
hist()
— гистограмма распределения*
xlabel()
и ylabel()
— подписи осей X и Y*
title()
— заголовок графика*
legend()
— легенда для нескольких линий*
grid()
— отображение сетки*
clf()
— очищает текущее окно графика (для перерисовки новых данных)*
show()
— выводит график на экранВсё довольно просто, честно я в восторге что так просто
import pylab as plt
plt.figure(figsize=(10,6))
# Буква M
x_m = [0, 0, 1, 2, 2]
y_m = [0, 5, 2, 5, 0]
plt.plot(x_m, y_m, linewidth=10, color='red')
# Буква I
x_i = [5, 5]
y_i = [0, 5]
plt.plot(x_i, y_i, linewidth=10, color='blue')
# Буква T
plt.plot([7,10], [5,5], linewidth=10, color='green')
plt.plot([8.5,8.5], [0,5], linewidth=10, color='green')
plt.title('MIT', fontsize=24, weight='bold')
plt.show()
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Обучение в MIT: Финальный экзамен
➡ Final Exam
Ну всё пристёгиваюсь и сдаю, пока сдавал забыл как работать с tuple в Python 😅😅
Делюсь впечатлениями от экзамена в
Экзамен, как обычно, сдавал в самый последний день и снова ночью😅. Задачи были классные - я не набрал 100%, но это не главное. Пару вопросов завалил, а задачи решал порой интуитивно, порой писал так называемый "быдло код"
➡️ Что такое "быдло код"?
Это код, который написан быстро и грубо, без особого внимания к структуре, стилю и чистоте. Главное, чтобы работал и проходил тесты))) а что ещё надо. Такой код почти всегда не оптимален или страшен с виду), но помогает быстро решить задачу и двигаться дальше. Иногда именно так приходится работать, особенно под дедлайны или когда нужно быстро проверить идею ну или проходить экзамен 🙉
По сути, теперь остаётся только ждать сертификат) Условия выполнил
#mit
#обучение
#python
💡 Channel | ✏ Chat
Ну всё пристёгиваюсь и сдаю, пока сдавал забыл как работать с tuple в Python 😅😅
Делюсь впечатлениями от экзамена в
6.01 Introduction to Computer Science and Programming in Python
от MIT
. Экзамен, как обычно, сдавал в самый последний день и снова ночью😅. Задачи были классные - я не набрал 100%, но это не главное. Пару вопросов завалил, а задачи решал порой интуитивно, порой писал так называемый "быдло код"
Это код, который написан быстро и грубо, без особого внимания к структуре, стилю и чистоте. Главное, чтобы работал и проходил тесты))) а что ещё надо. Такой код почти всегда не оптимален или страшен с виду), но помогает быстро решить задачу и двигаться дальше. Иногда именно так приходится работать, особенно под дедлайны или когда нужно быстро проверить идею ну или проходить экзамен 🙉
По сути, теперь остаётся только ждать сертификат) Условия выполнил
Самое главное, со мной впрыгнули ребята которые уже прошли экзамен и все секции и да быстрее меня🦾 🦾
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Обучение в MIT: Cертификат и отзыв
Делюсь впечатлениями от пройденного курса
➡️ Мои впечатления о курсе
Понравился ли мне курс? - Да!
Это была отличная вводная часть в Python и Computer Science. Было ли легко? В целом да, но местами встречались интересные и сложные моменты. Задачи были прикольными - иногда они напомнили мне время учёбы в университете.
Мы прошли много тем из области Computer Science некоторые давали базу довольно быстро. С этой базой уже можно работать, искать дополнительную информацию и дополнять знания с ChatGPT
У меня не было стремления просто пройти курс ради сертификата я хотел именно получить знания по Python. И Python действительно оказался несложным, но это пока 🫠. Мы изучили простые подходы, по сути кирпичики для дальнейшего построения знаний.
Сейчас я понимаю, как работает код в Python, что куда и как вызывается примерно знания думаю на уровне школьника 🫣, но это отличная база. И да, конечно, я планирую двигаться дальше
Продолжение курса начнётся уже в ноябре версия🦾
Если интересно погнали вместе!
P.S.: Уже добавил его в LinkedIn😋
📎 Пруф: MITx | edx
#mit
#обучение
#python
💡 Channel | ✏ Chat
Делюсь впечатлениями от пройденного курса
6.01 Introduction to Computer Science and Programming in Python
от MIT
. Понравился ли мне курс? - Да!
Это была отличная вводная часть в Python и Computer Science. Было ли легко? В целом да, но местами встречались интересные и сложные моменты. Задачи были прикольными - иногда они напомнили мне время учёбы в университете.
Мы прошли много тем из области Computer Science некоторые давали базу довольно быстро. С этой базой уже можно работать, искать дополнительную информацию и дополнять знания с ChatGPT
Мы - это значит что нас было 5 человек +/- 2
Нас была команда)
У меня не было стремления просто пройти курс ради сертификата я хотел именно получить знания по Python. И Python действительно оказался несложным, но это пока 🫠. Мы изучили простые подходы, по сути кирпичики для дальнейшего построения знаний.
Сейчас я понимаю, как работает код в Python, что куда и как вызывается примерно знания думаю на уровне школьника 🫣, но это отличная база. И да, конечно, я планирую двигаться дальше
Продолжение курса начнётся уже в ноябре версия
6.00.2x
Там будет продолжение и более глубокое погружение в CS
. Кстати, классно, что дают паузу между курсами время отдохнуть, осмыслить пройденное и решить оно вообще надо или стоит ли идти дальше. Но я уже принял решение и записался на следующий курс Если интересно погнали вместе!
P.S.: Уже добавил его в LinkedIn
📎 Пруф: MITx | edx
#mit
#обучение
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8 2❤1