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
#deepjava #otus
Приходилось ли вам писать Java приложения без функции
public static void main(String[] args){...}?

На первый взгляд может показаться, что такое приложение бессмысленно. Ведь его нельзя запустить. Точнее его нельзя запустить через вызов java -jar name.jar. И тем не менее, многие Java разработчики регулярно пишут такие приложения. И запаковывают их не в jar файлы, а в… war файлы. Давайте сегодня с этими war файлами и разберемся.

Продолжая открытый вопрос про запуск приложения нужно отметить, что его код нельзя исполнить в его собственном потоке main. Но мы можем исполнить его в других потоках. По аналогии с библиотеками: библиотека не запускает себя сама, вы запускаете библиотеку в собственных потоках. Ваше приложение может быть “библиотекой” для другого приложения. И в этом случае, другое приложение называют application server. Application server запускает ваше приложение в собственных потоках. Для него ваш код как актеры для Голливуда. Не актеры звонят в Голливуд. Голливуд звонит актерам. Таким образом, вы пишите приложения не с использованием библиотек, а для application server-а.

В общем случае application server должен быть написан по спецификации Java EE. Но есть частные случаи, которые поддерживают только работу веб сервера и сервлетов. Их называют веб серверы и сервлет-контейнеры. Вот для них, как раз, Java разработчики и создают war файлы.

Итак, war или WebARchive это jar, но в отличие от обычного в нем:
Нет мета информации о методе main, с выполнения которого должно начинаться выполнение приложения.
Есть директория WEB-INF и в ней web.xml -- это файл с инструкциями для сервлет-контейнера.
Есть сервлеты. Без них war файл практически бесполезен.
Могут быть файлы статических страниц. Да-да jar в котором в корне лежат index.html, index.js и index.css :о)

Приготовить такой war файл можно при помощи плагина maven-war-plugin к maven. А запускать в любом удобном вам сервлет-контейнере, например в Tomcat или Jetty, просто копированием war файла в директорию webapps. Только при копировании не забудьте переименовать его в root.war. Интересно зачем? Мы и это на занятиях разбираем.
Доброе утро, друзья! Спешим поделиться с вами новостями - сегодня мы с радостью объявляем: открыт набор на курс DevOps!
Бытует мнение что DevOps это культура, а не профессия, и мы считаем его вполне обоснованным, ведь DevOpS это набор практик, находящихся на стыке программирования, администрирования и тестирования продуктов и сервисов в моменте, главная цель которого оптимизировать данный процесс и сделать его максимально единым и продуктивным.
Ждем вас: знакомьтесь с программой, сдавайте вступительное тестирование, присоединяйтесь к группе: http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=group&utm_term=welcomepost
Преподавателями курса станут:
Иван Евтухович - прошел длинный путь от одного из первых разработчиков "Одноклассников" до консультанта в компании "Экспресс 42". По пути он успел поработать руководителем отдела разработки первого облачного хостинга "Скалакси" и русского "Групона".
Никита Борзых - начинал внедрять системы управления конфигурацией, когда работал в эксплуатации облачного хостинга Скалакси. В последствии работал в эксплуатации проектов Evil Martians. Ведущий подкаста "Devops Дефлопе". Выступал на конференциях с техническими докладами DevOps тематики.
Александр Титов - развивает тему DevOps в России, внедряет системы управления конфигурацией, занимался эксплуатацией интернет-проектов в компаниях Скалакси, Skype, Qik, Microsoft
Присоединяйтесь, успехов в освоении нового!
Кстати, это еще не все 😜
Нас очень часто спрашивали про курс "Веб разработчик" - ведь там такой нужный Python, всякие интересности про Автотесты, работа с API и много всего прочего полезного! А уж о перспективах трудоустройства хороших Веб разработчиков можно и не говорить - без работы они точно не останутся :)
Поэтому мы решили не томить ожиданием и совсем скоро - уже 5 августа - запускаем группу курса серьезного изучения Веб разработки.
Сегодня мы открыли вступительное тестирование (как вы помните - успешная сдача вступительного теста - обязательное условие поступления) и приглашаем вас проверить свои знания в Веб разработке!
Тестируйтесь, присоединяйтесь к новой группе: http://otus.ru/lessons/9/?utm_source=telegram&utm_medium=internal&utm_campaign=webdevopen&utm_term=post14.07
Слышали про Докер? А знаете, зачем он, как работает и как им пользоваться?
Так уж сложилось, что за пару лет Докер перестал быть игрушкой для хипстеров и проник много куда: боевые сервера, компьютеры разработчиков, суперкомпьютеры, хостинги и терминалы оплаты – это ещё не полный список.
Докер позволяет запустить код в изолированном окружении. Не только виртуальное окружение с установленными питонячьими пакетами, а отдельная система, со своей конфигурацией, пакетами и хаками.
При этом нет большого расхода ресурсов на поддержание такой виртуальной машины, в отличии от, например, Виртуалбокса. Это происходит за счёт более грамотного использования низкоуровневых механизмов основной ОС.
В курсе “Веб-разработчик” мы разберёмся с этим инструментом и его применением для веба, а пока можете проверить свои знания, пройдя входящий тест 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 и еще многое другое!