OTUS IT News – Telegram
OTUS IT News
7.19K subscribers
4.33K photos
302 videos
5 files
4.3K links
Экспертный контент по востребованным технологиям 2025 года: от разработки и аналитики до искусственного интеллекта и облачных решений.

Более 170 курсов+

🗓 Расписание бесплатных ОУ: https://otus.pw/24Da/
🦉 Голосуй за канал: https://news.1rj.ru/str/boost/Otusjava
Download Telegram
Слышали про Докер? А знаете, зачем он, как работает и как им пользоваться?
Так уж сложилось, что за пару лет Докер перестал быть игрушкой для хипстеров и проник много куда: боевые сервера, компьютеры разработчиков, суперкомпьютеры, хостинги и терминалы оплаты – это ещё не полный список.
Докер позволяет запустить код в изолированном окружении. Не только виртуальное окружение с установленными питонячьими пакетами, а отдельная система, со своей конфигурацией, пакетами и хаками.
При этом нет большого расхода ресурсов на поддержание такой виртуальной машины, в отличии от, например, Виртуалбокса. Это происходит за счёт более грамотного использования низкоуровневых механизмов основной ОС.
В курсе “Веб-разработчик” мы разберёмся с этим инструментом и его применением для веба, а пока можете проверить свои знания, пройдя входящий тест http://otus.ru/lessons/9?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=20.07
#devops #otus #agile
Почему DevOps?
В 2001 году собралась группа инициативных разработчиков с целью переосмыслить процесс разработки, в результате был составлен манифест гибкой разработки ПО. Следуя манифесту, скорость реакции разработки на потребности рынка значительно выросла, а скорость доставки - нет, по причине существующего естественного барьера между разработкой и эксплуатаций.
В 2008 году Patrick Debois поднимает этот вопрос в своем докладе Agile Infrastructure and Operations. В 2009 родилось движение DevOps, нацеленное на ускорение процесса доставки, путем повышения взаимодействия между IT отделами.
Сдвиг парадигмы в сторону “сделать доставку ПО наиболее быстрой” потянул за собой изменение методов доставки кода, подготовки окружений и разработки. Может показаться парадоксальным, но идея “выберите два из: быстро, дешево, надежно” в DevOps уже не актуальна. Осознанное применение практик DevOps позволяет уменьшить время выкатки нового функционала, повысить надежность информационных решений и освободить время инженеров.
Позитивный результат практического применения был представлен в докладе 2015 State of DevOps report, который кратко можно охарактеризовать так: “высокопроизводительные IT компании выкатывают код в 30 раз чаще, код попадает в рабочую среду в 200 раз быстрее, получают в 60 раз меньше ошибок и восстанавливаются после сбоя в 168 раз быстрее по отношению к низкопроизводительным компаниям”.
Как следствие громких успехов внедрения, DevOps сыскал большую популярность. Практики и идеи часто цитировались, вырываясь из контекста, и постепенно смысл и цели движения стали искажаться в сознании новичков в DevOps. Об этом рассказывают Chris Dodds в статье Dirty secrets of DevOps, а также Александр Титов с Иваном Евтуховичем в презентации Мифы о DevOps.
На нашем курсе вы научитесь применять лучшие практики DevOps под руководством экспертов из Экспресс 42. Проверьте свои знания и присоединяйтесь к группе! http://otus.ru/lessons/7/?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=group&utm_term=deeppost24.07
Друзья, приглашаем посетить Дни открытых дверей курса “Web-Разработчик” 29 июля в 11:00 и 02 августа в 20:00.
5 августа запускаем новую группу - в четырехмесячной программе обучения охвачены все полезные скиллы профессии - прокачаем знания Python 3, всякие интересности про Автотесты, работу с API и много всего прочего полезного! А уж о перспективах трудоустройства хороших Веб разработчиков можно и не говорить - без работы они точно не останутся :)
На Дне открытых дверей можно будет узнать о проекте, познакомиться с преподавателем, получить ответы на интересующие вопросы, а также выиграть бесплатные места в группе, для тех кто прошел вступительное тестирование и зарегистрировался. Знакомьтесь с программой, сдавайте вступительное тестирование и присоединяйтесь к новой группе! http://otus.ru/dod/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=dodwelcome
Лучших по результатам обучения студентов ждут собеседования в крупнейших IT компаниях страны.
#deepwebdev #otus
Вы знакомы с модулем collections из стандартной библиотеки? Если нет, то стоит познакомиться. Это из тех вещей, о которых нельзя додуматься. Не прочитаешь – так и будешь писать велосипеды.
Например, в этом модуле есть Counter – штука для подсчёта повторений элементов в списке. Можно скормить ему список и в ответ получить самые повторяющиеся элементы с количеством повторений. Когда такая задача встречается, Counter очень кстати.
Другая классная штука, которую предоставляет этот модуль – defaultdict. Это словарь, которому можно указать значение по-умолчанию на случай отсутствия элемента по ключу. Можно даже сделать элементом по-умолчанию список – и сэкономить несколько строк кода без урона читаемости.
Ещё в collections есть, например, namedtuple. На случай, если вы хотите явно дать названия элементам тупла вместо обращения по элементу, но не хотите тратить ресурсы на словарь, это то, что надо.
Интересно? Приходите на курс “Web-Разработчик” в Otus http://otus.ru/lessons/9/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=26.07
У нас еще масса всяких полезностей!
Приветствуем, друзья! Напоминаем - завтра, 29 июля в 11:00 состоится День открытых дверей курса “Web-Разработчик”, где познакомимся с преподавателем, пообщаемся и разыграем бесплатные места на курсе. Проходите тестирование, регистрируйтесь и присоединяйтесь к новой группе! http://otus.ru/dod/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=dod
Более подробно о программе можно узнать из нашего хаба: https://habrahabr.ru/company/otus/blog/334328/
Совсем скоро мы начинаем День Открытых дверей на курсе Веб разработчик!
В программе рассказ о курсе, ответы на вопросы и, конечно же, розыгрыш бесплатных мест на курсе среди тех, кто успешно сдал вступитеьное тестирование. Присоединяйтесь!
http://otus.ru/dod/webdeveloper/1?utm_source=telegram&utm_medium=internal&utm_campaign=dod_1
#devops #otus #terraform #infrastructureascode #iac Infrastructure as Code
Идея Infrastructure as Code заключается в таком же отношении к разработке инфраструктуры, как к разработке программного продукта. Родилась эта практика в ответ на проблемы надежности и повторяемости ручного управления конфигурацией:
- Серверы, настроенные вручную, отличаются друг от друга как снежинки, падающие с неба. И как бы не старался инженер, при настройке очередного сервера, нет-нет, да пропустит точку с запятой. Хорошо, если приложение просто не запустится, а если оно запуститься, но будет вести себя некорректно? Сколько неправильных биржевых ставок оно успеет сделать?
Решение: Иметь один источник изменений. В IaC это описание конфигурации в виде кода.
- Ручная настройка одного сервера - это время инженера. При увеличении количества серверов линейно растут трудозатраты инженера.
Решение: Автоматизировать все действия производимые с инфраструктурой и хранить их вместе с конфигурацией.
- Часто ручные изменения нигде не документируются. Зайдя на окружение можно с удивлением обнаружить старую версию библиотеки от которой зависит приложение, новую версию СУБД или измененную конфигурацию приложения. И никто уже на расскажет кто и зачем это все менял.
Решение: Хранить конфигурацию в системе контроля версий. При изменении конфигурации делать ссылки на тикеты и документацию.
- Как протестировать изменение инфраструктуры? Создать среду максимально похожую на целевую, внести изменение, проверить работоспособность, перенести изменение, не забыть написать о сделанных изменениях в документацию. В контексте описанных выше проблем сразу видны места в которых процесс может дать сбой.
Решение: Создать CI-процесс запускающийся при внесении изменений в репозиторий с кодом инфраструктуры состоящий из уже автоматизированного подъема окружения и прогона автоматических тестов.
Узнать подробнее об IaC и попробовать подход на практике вы можете на курсе “DevOps практики и инструменты” http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deepdevops&utm_term=31.07
Грядет начало занятий на курсе "DevOps практики и инструменты".
По доброй традиции перед началом курса мы проведем два Дня Открытых дверей, где ответим на все вопросы о курсе, программе, обучении, перспективах трудоустройства для выпускников и, конечно же, разыграем бесплатные места на курсе среди тех, кто справился со вступительным тестированием.


Приходите, будет интересно!
http://otus.ru/dod/?utm_source=telegram&utm_medium=internal&utm_campaign=dodwelcomech&utm_term=devops
#deepwebdev #otus
Какой у вас стиль написания кода? Соблюдаете PEP8? Заботитесь о названиях? Написали и соблюдаете свой стайлгайд?
Обычно об этом много говорят и мало соблюдают: фичи часто приоритетнее подпапотной красоты.
Это приводит к тому, что через некоторое время проект становится сложно поддерживать, а каждый разработчик отвечает только за свой участок.
Даже если разработчик только один, такой подход приводит к тому, что через месяц становится очень сложно разобраться в том, что и как делает код.
Бывают перекосы в другую сторону: когда все соблюдают стандарт ради соблюдения стандарта. Это обычно приводит к тому, что разработка движется медленнее: приходится тратить время на ненужную полировку, которая часто только вредит коду.
На курсе по веб-разработке мы рассмотрим, как правильно относиться к стилю: не забывать про него, но и не перегибать палку. В конце концов, стиль кода – это инструмент для достижения каких-то целей: читаемости, поддерживаемости и стабильности.
Интересно? Приходите на курс “Web-Разработчик” http://otus.ru/lessons/9/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=01.08
У нас еще масса всяких полезностей!
Чуть больше, чем через час Совсем скоро мы начнем второй День Открытых дверей на курсе WEB разработчик.
В программе рассказ о курсе, ответы на вопросы, розыгрыш бесплатных мест среди тех, кто успешно сдал вступительное тестирование. Присоединяйтесь: https://www.youtube.com/channel/UCetgtvy93o3i3CvyGXKFU3g/live
Сегодня на втором Дне открытых дверей определились победители розыгрыша бесплатных мест на курсе Web Разработчик на Python.
Победителями розыгрыша стали: Сухих Алексей и Фокин Александр
Поздравляем!
Как это было можно посмотреть тут: https://www.youtube.com/watch?v=op7RFcRONl0
#devops #otus #terraform #infrastructureascode #iac
Мониторим изменения с Terraform
Применение практики Infrastructure as Code становится проще вместе с использованием инструментов класса Terraform, которые позволяют декларативно описать инфраструктуру в виде кода и тиражировать окружения.
Непосредственно сам Terraform обладает функцией планирования изменений, которая примечательна еще и тем, что с ее помощью можно следить за вручную сделанными изменениями в инфраструктуре или изменениями, сделанными злоумышленником. Для этого достаточно периодически выполнять команду terraform plan -detailed-exitcode, рекомендуется создать регулярно запускаемую автоматически задачу в CI-системе. Если код выхода команды:
0, то команда завершилась успешно, изменений нет;
1 - команда завершилась с ошибкой;
2 - команда завершилась успешно, есть изменения.
А что делать если у вас уже есть вручную настроенная инфраструктура, но вы не используете terraform? Начните с описания наиболее важных компонент и используйте terraform import, он сохранит текущее состояние описанной инфраструктуры относительно которого уже можно будет мониторить изменения.
Научиться использовать Terraform и практике Infrastructure as Code вам помогут эксперты из Экспресс 42 на курсе” DevOps практики и инструменты” http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deppost&utm_term=04.08
Проходите вступительное тестирование и присоединяйтесь!.
Мы хотим уже на следующей неделе (в понедельник и четверг) провести два Дня открытых дверей на курсе DevOps.Мы уже говорили, что курс по DevOps ведет группа суперских инженеров из Экспресс 42. Они постарались и придумали классный механизм розыгрыша бесплатных мест на курсе среди тех, кто прошел вступительное тестирование. Поэтому на грядущих Днях открытых дверей будем не просто доставать зайца из шляпы - будем крутить "машинку Левенштейна", чтобы найти участников розыгрыша с самой сильной подсознательной любовью к DevOps :) Подробнее можно прочитать тут: https://habrahabr.ru/company/otus/blog/334888/
Так что будет интересно!

После двух Дней открытых дверей мы закроем запись на курс и уже 14 августа DevOps группа начнет занятия. Если вы хотите гарантированно попасть в этот набор (ведь после Дней открытых дверей мест может не остаться) - проходите вступительное тестирование и присоединяйтесь к группе: http://otus.ru/lessons/7/?utm_source=telegram&utm_medium=internal&utm_campaign=devopspost&utm_term=deadline
Многие верят, что 13 – несчастливое число!
К черту суеверия 😉! Нашим 13-м партнером стал Яндекс - одна из самых высокотехнологичных, именитых и желанных компаний для разработчиков.
Мы подписали соглашение о сотрудничестве с Яндексом, а, это значит, что лучших выпускников Яндекс пригласит на собеседования. И это так здорово - ведь теперь у наших студентов стало еще больше шансов получить работу мечты – заниматься действительно интересными задачами в одном из самых современных и комфортных офисов в команде настоящих профессионалов и менять мир к лучшему!
#devops #otus #terraform #infrastructureascode #iac
Разработка приложений с использованием Docker
При разработке цифрового продукта часто одной из самых больных тем является выкатка его обновлений и новых версий. Связано это обычно с тем, что среда, где пишется код, отличается от той, где происходит его тестирование, которая в свою очередь может отличаться от боевой среды, где этот код должен работать и приносить прибыль компании. Примерами таких отличий могут быть разные версии зависимых библиотек, установленных программ и самого языка программирования.
Технология контейнеризации предлагает решение проблемы “ничего не знаю, работает на моей машине”. При помощи контейнеров мы можем упаковать сам код и все его зависимости в единый пакет, который затем будет запускаться и работать одинаково на всех средах. Достигается это за счет изоляции работы контейнеров в операционной системе на различных уровнях. В частности, изоляция на уровне файловой системы позволяет нам избежать постоянных конфликтов версий.
Docker является ведущей платформой по созданию и управлению контейнерами. Начать пользоваться контейнерами очень просто. Docker имеет свое публичное хранилище имиджей DockerHub, которые используются для запуска контейнеров. Там можно найти нужный вам имидж и воспользоваться командой docker run <image-name> для запуска контейнера. Естественно, что перед запуском команды, нужно установить сам Docker.
Чтобы запустить собственное приложение в Docker контейнере, используйте Dockerfile. Например, вот такой простой Dockefile может содержать описание приложения, его зависимостей и требуемую команду для запуска.
FROM python:3.6.0-alpine
RUN pip install flask pymongo
ADD python/ src/
WORKDIR /src
EXPOSE 5000
CMD ["python3", "app.py"]
Если хотите узнать больше о работе с Docker контейнерами, то приходите к нам на курс “DevOps практики и инструменты”. http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deeppost&utm_term=09.08
Там мы детально изучим процессы разработки с использованием Docker и Docker Compose, оркестрацию с Kubernetes и Docker Swarm и еще многое другое!
#deepjava #otus
Принято считать, что многопоточность (multithreading) одна из самых сложных тем в программировании. Давайте разберемся сегодня, что именно в ней сложно, и почему так много разработчиков делают ошибки при разработке приложений, которые работают более чем в одном потоке.

Начнем с того, что в многопоточности… просто. Очень просто, по крайней мере в Java, создать еще один поток. Что такое поток в Java? Как и все остальное, поток в Java это объект. Создать объект потока совсем не сложно: Thread thread = new Thread(); Что в этом объекте особенного? То, что у него есть методы start() и run(). Если, например в методе main(), вызвать у объекта потока метод start(), то через некоторое время у него будет вызван метод run(). И этот вызов будет иметь новый Stack и команды метода run() могут быть выполнены физически в одно и тоже время, что и команды метода main(). То есть… в другом потоке. И в этом первая сложность многопоточности -- поток это объект и поток это последовательность команд. Команд метода run() объекта потока.

Вторая сложность многопоточности в непредсказуемости порядка некоторых событий. Допустим вы создали 10 новых потоков, пронумеровали их и вызвали у них методы start(). Будут ли методы run() этих объектов выполнены в той же последовательности что вы задали при нумерации? Вообще говоря -- нет. То, в какой последовательности будут выполнены методы run() решает… операционная система. И у вас есть только очень опосредованные способы влияния на порядок выполнения (например, через приоритеты).

Ну и самая большая сложность многопоточности это взаимодействие потоков. Если у вас есть задача, которую можно сделать в отдельном потоке, не дожидаясь ее завершения и игнорируя ее результат (например: записать что-то в лог; послать по UDP данные; обработать запрос пользователя, прочитать ответ в базе и отправить пользователю), то многопоточность это легко и весело.

Проблемы начинаются когда несколько потоков хотят взаимодействовать между собой через общую память. Например, если один поток пишет данные, а другой читает. То есть, один меняет общий объект, а второй, в это же время, обращается к полям общего объекта. Ошибки приложения, которые при этом происходят, относят к одному из двух типов: race condition и memory consistency errors. Что это, и как с ними бороться, мы рассмотрим в следующем посте, а более подробно на нашем курсе http://otus.ru/lessons/1?utm_source=telegram&utm_medium=internall&utm_campaign=java&utm_content=deeppost&utm_term=10.08 Присоединяйтесь!
Сегодня вечером мы проведем второй День Открытых дверей на курсе DevOps.
Мы уже писали о том, что для второго Дня Открытых дверей наши преподаватели приготовили невероятно классную модель розыгрыша бесплатных мест на курсе: победителями розыгрыша станут обладатели самой сильной подсознательной любви к DevOps :) В общем, будет весело!
Приходите на День Открытых дверей: узнайте больше о культуре DevOps и курсе в OTUS, задайте свои вопросы преподавателю, следите за розыгрышем.
А если вы хотите принять участие в розыгрыше - проходите вступительное тестирование. Времени осталось совсем мало!
http://otus.ru/lessons/7/?utm_source=telegram&utm_medium=internal&utm_campaign=dod2devops