Совсем скоро начинаем первый День открытых дверей по DevOps. Присоединяйтесь: https://www.youtube.com/channel/UCetgtvy93o3i3CvyGXKFU3g/live
YouTube
OTUS IT Онлайн - образование
OTUS – масштабный образовательный IT-портал. 4955473489
Наш канал предлагает более 5000+ вебинаров по программированию, разработке, аналитике, машинному обучению и менеджменту — бесплатно получайте актуальные знания, которые точно понадобятся в 2025 году.…
Наш канал предлагает более 5000+ вебинаров по программированию, разработке, аналитике, машинному обучению и менеджменту — бесплатно получайте актуальные знания, которые точно понадобятся в 2025 году.…
Многие верят, что 13 – несчастливое число!
К черту суеверия 😉! Нашим 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 и еще многое другое!
Разработка приложений с использованием 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 и еще многое другое!
otus.ru
Отус: DevOps практики и инструменты
Профессиональные онлайн курсы для разработчиков
#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 Присоединяйтесь!
Принято считать, что многопоточность (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 Присоединяйтесь!
otus.ru
Курсы программирования на Java, онлайн курс по Java разработке, курсы по Java, курсы «Джава». Запишись на курсы программирования…
Мы выпускаем после наших курсов крутых Java программистов. Уникальное обучение языку программирования основаному на джава, с возможностью трудоустройства
Сегодня вечером мы проведем второй День Открытых дверей на курсе DevOps.
Мы уже писали о том, что для второго Дня Открытых дверей наши преподаватели приготовили невероятно классную модель розыгрыша бесплатных мест на курсе: победителями розыгрыша станут обладатели самой сильной подсознательной любви к DevOps :) В общем, будет весело!
Приходите на День Открытых дверей: узнайте больше о культуре DevOps и курсе в OTUS, задайте свои вопросы преподавателю, следите за розыгрышем.
А если вы хотите принять участие в розыгрыше - проходите вступительное тестирование. Времени осталось совсем мало!
http://otus.ru/lessons/7/?utm_source=telegram&utm_medium=internal&utm_campaign=dod2devops
Мы уже писали о том, что для второго Дня Открытых дверей наши преподаватели приготовили невероятно классную модель розыгрыша бесплатных мест на курсе: победителями розыгрыша станут обладатели самой сильной подсознательной любви к DevOps :) В общем, будет весело!
Приходите на День Открытых дверей: узнайте больше о культуре DevOps и курсе в OTUS, задайте свои вопросы преподавателю, следите за розыгрышем.
А если вы хотите принять участие в розыгрыше - проходите вступительное тестирование. Времени осталось совсем мало!
http://otus.ru/lessons/7/?utm_source=telegram&utm_medium=internal&utm_campaign=dod2devops
otus.ru
Отус: DevOps практики и инструменты
Профессиональные онлайн курсы для разработчиков
И еще раз про DevOps...https://habrahabr.ru/company/otus/blog/335368/
habrahabr.ru
DevOps не проблема технологий. DevOps — это проблема бизнеса. (перевод)
Дэймон Эдвардс / 8 ноября, 2010 С того момента как Патрик Дебуа организовал первую конференцию DevOps Days и явил миру термин “DevOps” не может быть сомнений,...
Совсем скоро начинаем второй День Открытых дверей по DevOps. Присоединяйтесь! https://www.youtube.com/channel/UCetgtvy93o3i3CvyGXKFU3g/live
YouTube
OTUS IT Онлайн - образование
OTUS – масштабный образовательный IT-портал. 4955473489
Наш канал предлагает более 5000+ вебинаров по программированию, разработке, аналитике, машинному обучению и менеджменту — бесплатно получайте актуальные знания, которые точно понадобятся в 2025 году.…
Наш канал предлагает более 5000+ вебинаров по программированию, разработке, аналитике, машинному обучению и менеджменту — бесплатно получайте актуальные знания, которые точно понадобятся в 2025 году.…
Сегодня на втором Дне открытых дверей определились победители розыгрыша бесплатных мест на курсе DevOps.
Победителями розыгрыша стали: Леонтьев Игорь и Гринёв Игорь.
Поздравляем!
Как это было можно посмотреть тут: https://www.youtube.com/watch?v=2hRdbt9Fbno
Победителями розыгрыша стали: Леонтьев Игорь и Гринёв Игорь.
Поздравляем!
Как это было можно посмотреть тут: https://www.youtube.com/watch?v=2hRdbt9Fbno
YouTube
День открытых дверей «DevOps практики и инструменты» в OTUS
Расскажем о проекте OTUS, поговорим о курсе обучения "DevOps практики и инструменты" , перспективах для выпускников и учебном процессе. Ответим на все вопрос...
Ошибки использования Ansible
#devops #otus #ansible #infrastructureascode #iac
Ansible одна из самых простых систем управления конфигурацией, она использует декларативное описание конфигурации в YAML формате. Эта простота имеет и обратную сторону медали - используя Ansible без понимания принципов IaC, можно легко скатиться в создание своих bash скриптов, только на Ansible. Чем это плохо? Использование Ansible как bash не обеспечивает идемпотентность. Отсутствие идемпотентности выражается в том, что повторный запуск конфигурационного скрипта может зачастую приводить к неожиданным результатам. В то время, как идея систем управления конфигурацией как Ansible, состоит в том, чтобы привести систему в соответствие с декларативным описанием и не применять конфигурацию дважды для тех компонент, которые уже находятся в требуемом состоянии.
Например:
- name: устанавливаем Apache (используя модуль yum, определенной версии)
yum:
name: httpd-2.4.6-67.0.1.el7
- name: устанавливаем Apache (пытаемся использовать Ansible как bash)
shell: "yum -y install httpd"
Другой частой ошибкой можно назвать отсутствие четкой структуры каталогов с описанием инфраструктуры. Это может быть как сваливание всех YAML файлов в один каталог, так и несогласованное командное взаимодействие, когда один инженер предпочитает одну схему размещения кода, а другой - другую, и в итоге все выглядит хаотичным и весьма сложным для понимания и внесения изменений. Для избежания этого необходимо следовать “Best Practices”, описанным в документации, а также выработать и использовать в команде единый подход к структуре каталогов.
Еще одной характерной для всех систем управления конфигурацией проблемой является их использование для одноразовой настройки системы. Например, мы хотим применить изменение в каком-нибудь файле конфигурации и запускаем плейбук вручную один раз. Для эффективного применения IaC необходимо применять описание инфраструктуры на регулярной основе для обеспечения заданного состояния окружений.
Научиться использовать Ansible и практику Infrastructure as Code вам помогут эксперты из Экспресс 42 в курсе DevOps практики и инструменты, курс стартует уже в понедельник! Присоединяйтесь!
http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deeppost&utm_term=10.08
#devops #otus #ansible #infrastructureascode #iac
Ansible одна из самых простых систем управления конфигурацией, она использует декларативное описание конфигурации в YAML формате. Эта простота имеет и обратную сторону медали - используя Ansible без понимания принципов IaC, можно легко скатиться в создание своих bash скриптов, только на Ansible. Чем это плохо? Использование Ansible как bash не обеспечивает идемпотентность. Отсутствие идемпотентности выражается в том, что повторный запуск конфигурационного скрипта может зачастую приводить к неожиданным результатам. В то время, как идея систем управления конфигурацией как Ansible, состоит в том, чтобы привести систему в соответствие с декларативным описанием и не применять конфигурацию дважды для тех компонент, которые уже находятся в требуемом состоянии.
Например:
- name: устанавливаем Apache (используя модуль yum, определенной версии)
yum:
name: httpd-2.4.6-67.0.1.el7
- name: устанавливаем Apache (пытаемся использовать Ansible как bash)
shell: "yum -y install httpd"
Другой частой ошибкой можно назвать отсутствие четкой структуры каталогов с описанием инфраструктуры. Это может быть как сваливание всех YAML файлов в один каталог, так и несогласованное командное взаимодействие, когда один инженер предпочитает одну схему размещения кода, а другой - другую, и в итоге все выглядит хаотичным и весьма сложным для понимания и внесения изменений. Для избежания этого необходимо следовать “Best Practices”, описанным в документации, а также выработать и использовать в команде единый подход к структуре каталогов.
Еще одной характерной для всех систем управления конфигурацией проблемой является их использование для одноразовой настройки системы. Например, мы хотим применить изменение в каком-нибудь файле конфигурации и запускаем плейбук вручную один раз. Для эффективного применения IaC необходимо применять описание инфраструктуры на регулярной основе для обеспечения заданного состояния окружений.
Научиться использовать Ansible и практику Infrastructure as Code вам помогут эксперты из Экспресс 42 в курсе DevOps практики и инструменты, курс стартует уже в понедельник! Присоединяйтесь!
http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_content=deeppost&utm_term=10.08
otus.ru
Отус: DevOps практики и инструменты
Профессиональные онлайн курсы для разработчиков
Завершается посадка на очередной рейс обучения в OTUS курс “DevOps - Практики и инструменты”
Мы провели Два дня открытых дверей, по традиции определили 4 счастливчика, выигравших бесплатные места в группе, рассказали о "фишках" DevOps в постах #deepdevops, создали профессиональное сообщество для успешно прошедших вступительное тестирование, где можно общаться на профессиональные темы. Мы активно знакомили пользователей с нашим продуктом и рассказывали, почему мы больше, чем просто обучающие курсы, отвечали на вопросы и делали много-много всего (в том числе подписали соглашение с 13 партнером, таким важным и долгожданным, как для нас, так и для обучающихся), чтобы наши студенты получили хорошие знания и возможности профессионального и карьерного роста.
Новая группа начинает занятия в понедельник! Это значит, что ближе к вечеру понедельника мы закроем возможность оплаты и присоединения к группе. В группе остались последние места - еще есть совсем немного времени, чтобы успеть присоединиться! http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_term=lastcall
У нас отличная команда преподавателей - инженеров компании Экспресс 42, и мы искренне рады за наших новых студентов - им точно не будет скучно + у них есть возможность личной профессиональной дискуссии с преподавателями - профессионалами своего дела! Мы желаем ребятам успеха и уверены, что курс им понравится!
Совсем скоро - в конце августа и сентябре наши первые выпускники курса Java пойдут на собеседования. Мы с нетерпением ожидаем этого события - ведь мы уверены в своих выпускниках и знаем, что их ждут отличные карьерные перспективы!
Мы провели Два дня открытых дверей, по традиции определили 4 счастливчика, выигравших бесплатные места в группе, рассказали о "фишках" DevOps в постах #deepdevops, создали профессиональное сообщество для успешно прошедших вступительное тестирование, где можно общаться на профессиональные темы. Мы активно знакомили пользователей с нашим продуктом и рассказывали, почему мы больше, чем просто обучающие курсы, отвечали на вопросы и делали много-много всего (в том числе подписали соглашение с 13 партнером, таким важным и долгожданным, как для нас, так и для обучающихся), чтобы наши студенты получили хорошие знания и возможности профессионального и карьерного роста.
Новая группа начинает занятия в понедельник! Это значит, что ближе к вечеру понедельника мы закроем возможность оплаты и присоединения к группе. В группе остались последние места - еще есть совсем немного времени, чтобы успеть присоединиться! http://otus.ru/lessons/7?utm_source=telegram&utm_medium=internal&utm_campaign=devops&utm_term=lastcall
У нас отличная команда преподавателей - инженеров компании Экспресс 42, и мы искренне рады за наших новых студентов - им точно не будет скучно + у них есть возможность личной профессиональной дискуссии с преподавателями - профессионалами своего дела! Мы желаем ребятам успеха и уверены, что курс им понравится!
Совсем скоро - в конце августа и сентябре наши первые выпускники курса Java пойдут на собеседования. Мы с нетерпением ожидаем этого события - ведь мы уверены в своих выпускниках и знаем, что их ждут отличные карьерные перспективы!
otus.ru
Отус: DevOps практики и инструменты
Профессиональные онлайн курсы для разработчиков
Доброе утро, друзья!
Рады сообщить о продолжении набора на курс Python для web разработки!
Старт намечен на 16 сентября - вас ждет 4 месяца обучения, за это время прокачаем и подтянем самые необходимые скилы, структурируем уже полученные знания и потренируемся выполнять боевые задачи под руководством Ильи Лебедева, разработчика с более чем шестилетним стажем в области.
И, в связи с продолжением набора, ловите еще одну заметку #deeppython #deepwebdev #otus
Слышали о GraphQL? Если нет, то давайте вкратце разберем, что это такое и зачем оно нужно.
GraphQL – спецификация протокола для общения фронтенда и бекенда. Чтобы получить данные, нужно отправить запрос на сервер, указав, какие именно данные в каком формате нужны. Например, чтобы получить посты указанного пользователя, можно сделать такой запрос:
posts(user_id=42, is_draft=False) {
noscript,
published_at,
text,
tags {
noscript,
url
}
}
GraphQL обладает плюсами для всех участников.
Для фронтендеров есть много оберток вокруг этого протокола, которые существенно упрощают создание различных компонентов. Это радикально снижает количество кода, который нужно написать и упрощает время реализации интерфейса.
Для бекендеров плюс в том, что благодаря единой точке входа, можно гибко и просто управлять кешированием, удобно собирать данные из разных источников и собирать разные части данных на разным машинах.
И тем и другим удобно то, что вместо большого количества ручек API с разными параметрами, отражающими предметную область, теперь есть только одна, которая позволяет гибко указывать, какие данные нужны, а какие – нет.
Graphene – реализация этой спецификации на Python - подробности которой будем разбирать в программе курса - проходите вступительное тестирование и присоединяйтесь! http://otus.ru/lessons/9?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=deeppost21.08
Рады сообщить о продолжении набора на курс Python для web разработки!
Старт намечен на 16 сентября - вас ждет 4 месяца обучения, за это время прокачаем и подтянем самые необходимые скилы, структурируем уже полученные знания и потренируемся выполнять боевые задачи под руководством Ильи Лебедева, разработчика с более чем шестилетним стажем в области.
И, в связи с продолжением набора, ловите еще одну заметку #deeppython #deepwebdev #otus
Слышали о GraphQL? Если нет, то давайте вкратце разберем, что это такое и зачем оно нужно.
GraphQL – спецификация протокола для общения фронтенда и бекенда. Чтобы получить данные, нужно отправить запрос на сервер, указав, какие именно данные в каком формате нужны. Например, чтобы получить посты указанного пользователя, можно сделать такой запрос:
posts(user_id=42, is_draft=False) {
noscript,
published_at,
text,
tags {
noscript,
url
}
}
GraphQL обладает плюсами для всех участников.
Для фронтендеров есть много оберток вокруг этого протокола, которые существенно упрощают создание различных компонентов. Это радикально снижает количество кода, который нужно написать и упрощает время реализации интерфейса.
Для бекендеров плюс в том, что благодаря единой точке входа, можно гибко и просто управлять кешированием, удобно собирать данные из разных источников и собирать разные части данных на разным машинах.
И тем и другим удобно то, что вместо большого количества ручек API с разными параметрами, отражающими предметную область, теперь есть только одна, которая позволяет гибко указывать, какие данные нужны, а какие – нет.
Graphene – реализация этой спецификации на Python - подробности которой будем разбирать в программе курса - проходите вступительное тестирование и присоединяйтесь! http://otus.ru/lessons/9?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=deeppost21.08
#otus #deepwebdev Представьте, что вы разрабатываете модель данных для вашего приложения. Дело ответственное: скоро модель обрастёт другим кодом и для изменения модели придётся переписывать существенную часть приложения. Ошибки при проектировании модели дорогого стоят.
Рассмотрим несколько правил, которые позволят снизить количество ошибок.
Во-первых, лучше использовать названия из предметной области для моделей и полей. Так, чтобы эксперт в предметной области смог всё понять. О том, как работает приложение этому эксперту знать не нужно: до бизнес-логики дело пока не дошло.
Во-вторых, не стоит придумывать новые сущности для упрощения модели. Иногда хочется придумать промежуточную сущность, которая не имеет смысла в предметной области, но позволяет проще уложить данные в хранилище. Это почти всегда плохая идея: новый термин начинает плохо дружить с существующими сущностями, а при реализации бизнес-логики приходится добавлять всё новые и новые костыли. Не говоря уже о том, что придётся всем объяснять смысл нового термина.
В-третьих, не нужно упрощать связи. Если у поста может быть много авторов, не надо делать одного потому что в сервисе предусмотрен только один автор. Завтра это требование поменяется и жизнь существенно усложниться. А пока не поменялось, количество лишнего кода можно существенно сократить, но не на уровне модели.
Выше перечислены три самые частые ошибки при формировании модели данных. Эти же утверждения лежат в основе Domain Driven Design.
Рассмотрим несколько правил, которые позволят снизить количество ошибок.
Во-первых, лучше использовать названия из предметной области для моделей и полей. Так, чтобы эксперт в предметной области смог всё понять. О том, как работает приложение этому эксперту знать не нужно: до бизнес-логики дело пока не дошло.
Во-вторых, не стоит придумывать новые сущности для упрощения модели. Иногда хочется придумать промежуточную сущность, которая не имеет смысла в предметной области, но позволяет проще уложить данные в хранилище. Это почти всегда плохая идея: новый термин начинает плохо дружить с существующими сущностями, а при реализации бизнес-логики приходится добавлять всё новые и новые костыли. Не говоря уже о том, что придётся всем объяснять смысл нового термина.
В-третьих, не нужно упрощать связи. Если у поста может быть много авторов, не надо делать одного потому что в сервисе предусмотрен только один автор. Завтра это требование поменяется и жизнь существенно усложниться. А пока не поменялось, количество лишнего кода можно существенно сократить, но не на уровне модели.
Выше перечислены три самые частые ошибки при формировании модели данных. Эти же утверждения лежат в основе Domain Driven Design.
#otus #deepwebdev
Итак, у вас есть приложение. Оно запущено в бою, используемо, и вы хотите знать, какие части приложения за какое время работают. Не сломалось ли чего? Как себя ведут технические и бизнес-метрики. Желательно всё это смотреть в красивом интерфейсе и в реальном времени.
Рассмотрим один из возможных вариантов для реализации этой задачи.
Значения нужных параметров можно хранить в InfluxDB – хранилище данных для временных последовательностей. В него можно класть данные по http-API и получать данные, делая запросы на языке, похожем на SQL. Конечно, есть обёртка вокруг API на Python.
Что отслеживать? Во-первых, время выполнения кода основных обработчиков нашего сервиса целиком и отдельных важных его частей. Количество кода будет небольшое – достаточно написать декоратор или менеджер контекста для отправки метрик в InfluxDB. После этого можно заняться мониторингом бизнес-метрик: отдельно записывать количество регистраций, заказов услуг, прочитанных статей в справке.
Теперь нужно визуализировать эти данные так, чтобы было видно, насколько хорошо всё работает. Для этого хорошо подходит Grafana – гибкое средство для визуализации и мониторинга, которое умеет брать данные из InfluxDB. Оно же умеет сообщать о том, что какие-то параметры вышли за допустимые границы.
На курсе “Python для WEB-разработки” мы разберём, как оптимизировать эту схему для высоконагруженных систем, не превратив при этом систему мониторинга в свалку графиков,а также когда и чем это решение лучше использования Zabbix. Присоединяйтесь, будет интересно! http://otus.ru/lessons/9?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=deeppost31.08
Итак, у вас есть приложение. Оно запущено в бою, используемо, и вы хотите знать, какие части приложения за какое время работают. Не сломалось ли чего? Как себя ведут технические и бизнес-метрики. Желательно всё это смотреть в красивом интерфейсе и в реальном времени.
Рассмотрим один из возможных вариантов для реализации этой задачи.
Значения нужных параметров можно хранить в InfluxDB – хранилище данных для временных последовательностей. В него можно класть данные по http-API и получать данные, делая запросы на языке, похожем на SQL. Конечно, есть обёртка вокруг API на Python.
Что отслеживать? Во-первых, время выполнения кода основных обработчиков нашего сервиса целиком и отдельных важных его частей. Количество кода будет небольшое – достаточно написать декоратор или менеджер контекста для отправки метрик в InfluxDB. После этого можно заняться мониторингом бизнес-метрик: отдельно записывать количество регистраций, заказов услуг, прочитанных статей в справке.
Теперь нужно визуализировать эти данные так, чтобы было видно, насколько хорошо всё работает. Для этого хорошо подходит Grafana – гибкое средство для визуализации и мониторинга, которое умеет брать данные из InfluxDB. Оно же умеет сообщать о том, что какие-то параметры вышли за допустимые границы.
На курсе “Python для WEB-разработки” мы разберём, как оптимизировать эту схему для высоконагруженных систем, не превратив при этом систему мониторинга в свалку графиков,а также когда и чем это решение лучше использования Zabbix. Присоединяйтесь, будет интересно! http://otus.ru/lessons/9?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=deeppost31.08
Доброе утро. друзья! В рамках набора на наш курс "Python для Web - Разработки" ловите полезную статью :) https://habrahabr.ru/company/otus/blog/337108/
habrahabr.ru
Тестируем асинхронный код с помощью PyTest (перевод)
При подготовке материала для курса, нам периодически попадаются интересные статьи, которыми хотелось бы поделиться с вами! Автор Stefan Scherfke “Testing...
13 сентября в 20-00 по Мск у нас состоится День открытых дверей курса Python для Web-Разработки! Присоединяйтесь к нам в онлайн режиме - из любой точки мира - будет интересно и полезно!
Познакомимся с преподавателем расскажем о проекте, о курсе и программе, ответим на все вопросы, и разыграем бесплатное обучение.
Программа курса ориентирована на тех, кто уже уверенно владеет основами и хочет прокачаться до уровня middle/senior.
Научимся выполнять боевые задачи бекенд-разработки: писать поддерживаемый код, выполнять рефакторинг, проектировать схему базы данных и взаимодействие с ней, организовать работу с ошибками и профилирование, проектировать и развивать схему взаимодействия с клиенсайдом, проводить код-ревью и писать тесты.
Проводить День открытых дверей будет преподаватель Илья Лебедев - евангелист Moscow Python, преподаватель курсов Learn Python, сооснователь сервиса Devman.оrg.
Помимо Python 3 (на основе которого разработана программа курса) Илья будет рассказывать всякие интересности про Автотесты, работу с API и много всего прочего, нужного хорошему Веб разработчику!
Продолжительность курса - 4 месяца. Традиционно по результатам обучения лучших студентов пригласят на собеседования компании-партнеры.
Старт занятий намечен на 16 сентября!! Знакомьтесь с программой, проходите вступительное тестирование и присоединяйтесь к нам! https://clck.ru/Bm85k
Познакомимся с преподавателем расскажем о проекте, о курсе и программе, ответим на все вопросы, и разыграем бесплатное обучение.
Программа курса ориентирована на тех, кто уже уверенно владеет основами и хочет прокачаться до уровня middle/senior.
Научимся выполнять боевые задачи бекенд-разработки: писать поддерживаемый код, выполнять рефакторинг, проектировать схему базы данных и взаимодействие с ней, организовать работу с ошибками и профилирование, проектировать и развивать схему взаимодействия с клиенсайдом, проводить код-ревью и писать тесты.
Проводить День открытых дверей будет преподаватель Илья Лебедев - евангелист Moscow Python, преподаватель курсов Learn Python, сооснователь сервиса Devman.оrg.
Помимо Python 3 (на основе которого разработана программа курса) Илья будет рассказывать всякие интересности про Автотесты, работу с API и много всего прочего, нужного хорошему Веб разработчику!
Продолжительность курса - 4 месяца. Традиционно по результатам обучения лучших студентов пригласят на собеседования компании-партнеры.
Старт занятий намечен на 16 сентября!! Знакомьтесь с программой, проходите вступительное тестирование и присоединяйтесь к нам! https://clck.ru/Bm85k
otus.ru
Отус: Python для WEB разработки
Профессиональные онлайн курсы для разработчиков
#otus #deepwebdev
Многие знают только одну команду у pip – install. Этого часто достаточно, но у этого пакетного менеджера есть и другие классные возможности. Давайте рассмотрим некоторые из них.
pip list --outdated – покажет, какие из установленных пакетов можно обновить.
pip install --user <package> – установит пакет глобально, но в домашнюю директорию. Для этого не нужны права суперпользователя. Не работает в виртуальном окружении.
pip show <package> – показывает информацию о пакете, в т.ч. версию, автора и короткое описание.
pip search <query> – ищет на PyPI пакеты, в названии или описании которых входит поисковый запрос. Очень полезно, например, если вы забываете полное название какого-то пакета.
pip completion --bash >> ~/.profile – эта команда научит bash автодополнению команд. Мелочь, но какая приятная!
Это – только часть приятных бонусов, которые нам предоставляет pip. Если захотите больше – добро пожаловать в официальную документацию или на курс Python для Web Разработки.
Проходите тестирование и присоединяйтесь к новой группе http://otus.ru/lessons/python-dlja-web-razrabotki/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=07.09
Многие знают только одну команду у pip – install. Этого часто достаточно, но у этого пакетного менеджера есть и другие классные возможности. Давайте рассмотрим некоторые из них.
pip list --outdated – покажет, какие из установленных пакетов можно обновить.
pip install --user <package> – установит пакет глобально, но в домашнюю директорию. Для этого не нужны права суперпользователя. Не работает в виртуальном окружении.
pip show <package> – показывает информацию о пакете, в т.ч. версию, автора и короткое описание.
pip search <query> – ищет на PyPI пакеты, в названии или описании которых входит поисковый запрос. Очень полезно, например, если вы забываете полное название какого-то пакета.
pip completion --bash >> ~/.profile – эта команда научит bash автодополнению команд. Мелочь, но какая приятная!
Это – только часть приятных бонусов, которые нам предоставляет pip. Если захотите больше – добро пожаловать в официальную документацию или на курс Python для Web Разработки.
Проходите тестирование и присоединяйтесь к новой группе http://otus.ru/lessons/python-dlja-web-razrabotki/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=07.09
Внимание!!! До старта курса “Python для Web Разработки” остались считанные дни - начинаем уже в эту субботу! Время пройти вступительное тестирование и присоединиться к группе еще есть:
https://clck.ru/BnwYJ
13 сентября в 20-00 по Мск у нас состоится День открытых дверей курса Python для Web-Разработки! Присоединяйтесь к нам в онлайн режиме - из любой точки мира. Познакомимся с преподавателем Ильей Лебедевым, расскажем о проекте, о курсе и программе, ответим на все вопросы, и разыграем бесплатные места в группе, будет интересно!.
Программа курса ориентирована на тех, кто уже уверенно владеет основами и хочет прокачаться до уровня middle/senior. Традиционно по результатам курса успешных выпускников пригласят на собеседования наши партнеры - топовые IT компании.
Научимся выполнять боевые задачи бекенд-разработки: писать поддерживаемый код, выполнять рефакторинг, проектировать схему базы данных и взаимодействие с ней, организовать работу с ошибками и профилирование, проектировать и развивать схему взаимодействия с клиенсайдом, проводить код-ревью и писать тесты.
Преподаватель Илья Лебедев - евангелист Moscow Python, преподаватель курсов Learn Python, сооснователь сервиса Devman.оrg. Знакомьтесь с программой, проходите вступительное тестирование и присоединяйтесь к нам!
https://clck.ru/BnwYJ
13 сентября в 20-00 по Мск у нас состоится День открытых дверей курса Python для Web-Разработки! Присоединяйтесь к нам в онлайн режиме - из любой точки мира. Познакомимся с преподавателем Ильей Лебедевым, расскажем о проекте, о курсе и программе, ответим на все вопросы, и разыграем бесплатные места в группе, будет интересно!.
Программа курса ориентирована на тех, кто уже уверенно владеет основами и хочет прокачаться до уровня middle/senior. Традиционно по результатам курса успешных выпускников пригласят на собеседования наши партнеры - топовые IT компании.
Научимся выполнять боевые задачи бекенд-разработки: писать поддерживаемый код, выполнять рефакторинг, проектировать схему базы данных и взаимодействие с ней, организовать работу с ошибками и профилирование, проектировать и развивать схему взаимодействия с клиенсайдом, проводить код-ревью и писать тесты.
Преподаватель Илья Лебедев - евангелист Moscow Python, преподаватель курсов Learn Python, сооснователь сервиса Devman.оrg. Знакомьтесь с программой, проходите вступительное тестирование и присоединяйтесь к нам!
otus.ru
Отус: Python для WEB разработки
Профессиональные онлайн курсы для разработчиков
Открыт набор в третью группу “Java - Разработчик”, стартуем 14 октября!
Что нового?
Главная новость третьего набора в том, что теперь программу курса для вас будут вести 2 преподавателя, а это значит что вы получите в два раза больше качественного общения, опыта и знаний.
Помимо бессменного Виталия Чибрикова, рады представить для вас второго педагога, Дмитрия Архангельского - специалиста с серьезным кейсом знаний и умений в области.
Недавно завершился первый курс “Java-Разработчик” и успешные слушатели уже получили и приняли первые офферы от компаний партнеров, об этом мы обязательно расскажем подробнее - следите за новостями!
Что осталось прежним?
Качество обучения: авторская программа Виталия Чибрикова, проработанная и успешно прочитанная уже двум курсам, дополненная с учетом вопросов возникающих при работе с аудиторией.
Профессиональное сообщество - куда мы рады будем пригласить прошедших вступительное тестирование. Присоединяйтесь, общайтесь и растите профессионально, обмениваться опытом в кругу единомышленников и профессионалов - бесценно!
Приглашение на собеседования от наших компаний партнеров на вакансии разработчиков уровня middle для успешных выпускников курса.
Удобный формат и график занятий, интересные боевые задачи и прекрасная атмосфера на занятиях и в группах для общения и получения новых знаний. Проходите вступительное тестирование. присоединяйтесь к нам! https://clck.ru/Bnxqs
Что нового?
Главная новость третьего набора в том, что теперь программу курса для вас будут вести 2 преподавателя, а это значит что вы получите в два раза больше качественного общения, опыта и знаний.
Помимо бессменного Виталия Чибрикова, рады представить для вас второго педагога, Дмитрия Архангельского - специалиста с серьезным кейсом знаний и умений в области.
Недавно завершился первый курс “Java-Разработчик” и успешные слушатели уже получили и приняли первые офферы от компаний партнеров, об этом мы обязательно расскажем подробнее - следите за новостями!
Что осталось прежним?
Качество обучения: авторская программа Виталия Чибрикова, проработанная и успешно прочитанная уже двум курсам, дополненная с учетом вопросов возникающих при работе с аудиторией.
Профессиональное сообщество - куда мы рады будем пригласить прошедших вступительное тестирование. Присоединяйтесь, общайтесь и растите профессионально, обмениваться опытом в кругу единомышленников и профессионалов - бесценно!
Приглашение на собеседования от наших компаний партнеров на вакансии разработчиков уровня middle для успешных выпускников курса.
Удобный формат и график занятий, интересные боевые задачи и прекрасная атмосфера на занятиях и в группах для общения и получения новых знаний. Проходите вступительное тестирование. присоединяйтесь к нам! https://clck.ru/Bnxqs
otus.ru
Отус: Разработчик Java
Профессиональные онлайн курсы для разработчиков
У нас очень, очень, очень классный редизайн Главной страницы: https://otus.ru/?utm_source=telegram&utm_medium=internal&utm_campaign=java
Никаких абстрактных картинок и фотобанковских фото! Мы украсили каждый курс своей яркой, неподражаемой совой и добавили странице динамики!
Вывели на Главную страницу одну из ключевых ценностей OTUS: наших преподавателей. И, конечно, не забыли и о работодателях.
А еще мы обновили меню, добавили блоки с самыми востребованными разделами и напоминания.
Нам очень нравится! А вам? :)
Никаких абстрактных картинок и фотобанковских фото! Мы украсили каждый курс своей яркой, неподражаемой совой и добавили странице динамики!
Вывели на Главную страницу одну из ключевых ценностей OTUS: наших преподавателей. И, конечно, не забыли и о работодателях.
А еще мы обновили меню, добавили блоки с самыми востребованными разделами и напоминания.
Нам очень нравится! А вам? :)
Otus
OTUS - Онлайн-образование
Профессиональные онлайн курсы для разработчиков
Через пять минут открывается День открытых дверей по нашему замечательному курсу "Python для web-разработки".
Приглашаем всех:
https://www.youtube.com/channel/UCetgtvy93o3i3CvyGXKFU3g/live
P.S. среди тех прошёл тестирование будут разыграны два бесплатных места .
Приглашаем всех:
https://www.youtube.com/channel/UCetgtvy93o3i3CvyGXKFU3g/live
P.S. среди тех прошёл тестирование будут разыграны два бесплатных места .
YouTube
OTUS IT Онлайн - образование
OTUS – масштабный образовательный IT-портал. 4955473489
Наш канал предлагает более 5000+ вебинаров по программированию, разработке, аналитике, машинному обучению и менеджменту — бесплатно получайте актуальные знания, которые точно понадобятся в 2025 году.…
Наш канал предлагает более 5000+ вебинаров по программированию, разработке, аналитике, машинному обучению и менеджменту — бесплатно получайте актуальные знания, которые точно понадобятся в 2025 году.…
Завершается посадка на очередной рейс обучения в OTUS по курсу “Python для Web-Разработки”
Мы провели Дни открытых дверей, разыграли бесплатные места в группе, рассказали об интересных "фишках" в постах #deepwebdev, пригласили тех кто прошел вступительное тестирование в наше профессиональное сообщество, где можно обмениваться опытом и просто приятно и с пользой общаться.
Новая группа начинает занятия уже завтра! Это значит, что завтра утром мы закроем возможность оплаты и присоединения к группе. В группе остались последние места - еще есть совсем немного времени, чтобы успеть присоединиться! https://clck.ru/BpEj9
Преподавателем курса стал Илья Лебедев - профессионал своего дела с многолетним опытом разработки! Мы желаем очередной группе успехов в учебе, что курс им понравится!
Недавно завершился первый курс “Java-Разработчик” и успешные слушатели уже получили и приняли первые офферы от компаний партнеров, об этом мы обязательно расскажем подробнее в отдельных историях успеха наших выпускников - следите за новостями!
Также мы выкатили новый дизайн нашего сайта - он стал еще ярче и вместе с тем удобнее и функциональнее - оцените сами! https://clck.ru/BpEiv
Мы провели Дни открытых дверей, разыграли бесплатные места в группе, рассказали об интересных "фишках" в постах #deepwebdev, пригласили тех кто прошел вступительное тестирование в наше профессиональное сообщество, где можно обмениваться опытом и просто приятно и с пользой общаться.
Новая группа начинает занятия уже завтра! Это значит, что завтра утром мы закроем возможность оплаты и присоединения к группе. В группе остались последние места - еще есть совсем немного времени, чтобы успеть присоединиться! https://clck.ru/BpEj9
Преподавателем курса стал Илья Лебедев - профессионал своего дела с многолетним опытом разработки! Мы желаем очередной группе успехов в учебе, что курс им понравится!
Недавно завершился первый курс “Java-Разработчик” и успешные слушатели уже получили и приняли первые офферы от компаний партнеров, об этом мы обязательно расскажем подробнее в отдельных историях успеха наших выпускников - следите за новостями!
Также мы выкатили новый дизайн нашего сайта - он стал еще ярче и вместе с тем удобнее и функциональнее - оцените сами! https://clck.ru/BpEiv
Отус: Python для WEB разработки
Профессиональные онлайн курсы для разработчиков