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

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

🗓 Расписание бесплатных ОУ: https://otus.pw/24Da/
🦉 Голосуй за канал: https://news.1rj.ru/str/boost/Otusjava
Download Telegram
Новость месяца! Мы открываем набор в группу «Разработчик full-stack на Python». То, что ожидается от «full stack» разработчика надежно выходит за рамки возможностей обычного человека.
Это значит, что full stack разработчик, как минимум, должен знать:
Как разбить код на чистые функции? 
Когда использовать GraphQL, а когда REST?
Когда использовать ORM и когда нет?
Как и когда писать автотесты, чтобы не потратить время зря?
Что нужно проверить у каждой БД, чтобы избежать распространённых проблем?

Узнать все подробности программы курса
https://otus.pw/JEtF/
Преподаватель курса Илья Лебедев, эксперт, консультант по архитектуре приложений. Специалист по разработке серверных решений на Python. Автор курсов по веб-разработке в МГТУ им. Баумана, ВШЭ. Соорганизатор курсов Learn Python и devman.org. Старший разработчик в Itcanfy и Ngenix.
9 лет опыта программирования на C++, Python, PHP и JavaScript.
"Для проверки знаний по информатике на ЕГЭ была такая задача — исправить ошибку в программе, которая должна считать количество цифр в заданном числе. Её код дан ниже". Читать #deeppost C++ полностью https://otus.pw/Dvk5/
Профессионалы IT разговаривают с профессионалами IT в прямом эфире сегодня в 20:00 часов.
Образовательный проект OTUS - это не просто проект, это огромное комьюнити пространство охватывающее все возможные интернет пространства. Именно тут каждый желающий и уже состоявшийся, как специалист профессионал, может стремительно увеличить свои навыки, знания, а также встретить единомышленников в своей профсереде. С каждым днем, вместе, мы расширяемся в геометрической прогрессии. Мы говорим с вами тогда, когда вам удобно и там, где вам удобно. Сегодня, в 20:00 по московскому времени, нас ждет прямое включение в рамках Дня Открытых Дверей по курсу "Разработчик С++". Это уже вторая встреча в рамках представленного курса с одним из лучших преподавателей образовательного проекта OTUS Дмитрием Шебордаевым! Подключайтесь к встрече в режиме онлайн, где бы вы не находились. Пройти тестирование и принять участие в розыгрыше бесплатного обучения, а также узнать все тонкости курса "Разработчик С++" можно тут https://otus.pw/wYKV/
Более 150 человек вчера присоединились к трансляции Дня Открытых Дверей по курсу «Разработчик С++», благодарим вас за интерес и спасибо Дмитрию Шебордаеву за проведенную встречу! Основной объем ДОД по представленному курсу подошел к завершению. Первый день занятий наступит 4 декабря. Для тех, кто не успел присоединиться к трансляции, оставляем ссылку на просмотр Дня Открытых Дверей по курсу «Разработчик С++» https://otus.pw/Ki2V/
Приятного просмотра! Друзья, в наших социальных сетях, по другую сторону экрана с вами ведут диалог настоящие люди, а не робот, который публикует посты. Поэтому смело задавайте свои вопросы в комментариях, мы открыты для диалога!
А вы знаете, как работать с сессиями БД в SQLAlchemy, чтобы общение с базой данных было наиболее оптимальным, защищённым от ошибок и лишнего потребления ресурсов? Давайте разберём основные ошибки и способы их избежать. Сначала давайте разберёмся с тем, какие в SQLAlchemy есть для работы с сессиями и за, что они отвечают. Основных три: Session, sessionmaker и scoped_session. Session — это непосредственно класс сессии. В его экземпляре хранятся изменения в текущей сессии, его можно настроить на автокоммит, он умеет отправлять данные в БД и ещё много чего.
Sessionmaker — фабрика для создания экземпляров Session с заданными параметрами. Это — просто штука, которая немного упрощает жизнь: вместо того, чтобы каждый раз указывать список аргументов у сессии, его достаточно один раз указать у фабрики, а дальше уже создавать сессии без указания аргументов. Наконец, scoped_session — это хранилище уже созданных сессий, каждая из которых привязана к своему треду. Если вызвать сконфиругированный экземпляр scoped_session в новом треде, он создаст новую сессию, а если потом из этого же треда вызвать scoped_session во второй раз, он вернёт ту же сессию, а не создаст новую. А теперь несколько советов: 1. Передавать в каждую функцию сессию — это явно, но не обязательно. Достаточно использовать глобальную scoped_session: это не создаст нового коннекта в БД. Это делает функцию грязной и создаёт неявную зависимость, но и с этим можно бороться: например, сделать такую функцию методом модели или поселить в отдельный модуль, в котором все функции общаются с базой; 2. Подход выше не стоит использовать для атомарных функций, который будут использоваться в качестве частей более сложных, но атомарных операций: он усложняет управление транзакциями; 3. При написании кода стоит хорошо понимать, где транзакция должна начинаться и где заканчиваться, избегать подвисших транзакций и делать код, говорящий об этом, как можно более явным; 4. После написания тестирования уделите время тестированию взаимодействия с БД: запустите код с большим количеством данных, посмотрите на то, насколько нагружена БД, не создаётся ли лишних соединений, удаляет ли скрипт за собой все транзакции и пр. Если этого не сделать, велика вероятность, что рано или поздно БД упадёт, а это, как правило, очень плохо. #deepostpythonFS
Тестирование за чашкой капучино может принести в подарок бесплатное образование в OTUS.
Итак, что же нового произойдет в OTUS в ближайшие дни? Какие события и новости важно не пропустить, потому, как они не повторятся? Начнем с главного и насущного. 4 и 7 декабря будут проходить два Дня Открытых Дверей по курсу Java Enterprise. Две даты с разницей в три дня запланированы именно по вашим заявкам. На повестке встреч обсуждение важных тем касающихся обучения и неограниченный объем вопросов к преподавателю курса Виталию Иванову.  
Прямое включение начнется в 20:00 часов по московскому времени. По традиции мы проводим тестирование. У каждого из вас есть равные шансы принять участие в розыгрыше бесплатных мест обучения по представленному курсу. В ближайшие дни будут разыграны сразу 4 бюджетных места. Мечта, а не образование!
Сохраните события OTUS в свой календарь и расскажите друзьям.
Пройти тестирование можно тут https://otus.pw/MbSf/
Друзья, наступил долгожданный день! Мы хотим поздравить всех слушателей курса «Разработчик С++» и преподавателя Дмитрия Шебордаева с Первым Днем занятий! Следите за расписание уроков на официальном сайте образовательного проекта OTUS, задавайте свои вопросы в комментариях — мы открыты для вас!
Успеть в группу «Разработчик С++» https://otus.pw/jLCA/
Розыгрыши бесплатных мест обучения — это всегда так волнительно для всех нас! И сегодня у нас снова есть повод создать праздничную атмосферу, задать отличное настроение несмотря на заурядность понедельника. А такими приятными и радостными новостями хочется скорее поделиться со всеми активными участниками пространств образовательного проекта OTUS!
Поздравляем Борисова Александра с победой в розыгрыше и дарим бесплатное обучение по курсу «Разработчик С++» Ура! Но так, как Александр уже оплатил свое обучение — мы с радостью возвращаем ему оплаченные деньги. Да, это правда, мы так делаем! Александр, желаем Вам успехов в учебе, стремительного роста карьеры и реализации всех задуманных целей. А цель у нас одна — совершенствовать свои знания каждый день. Мы гордимся всеми нашими слушателями и с большой радостью создаем лучшие условия образования на сегодняшний день. Мы ценим каждого из вас! Отличного понедельника, друзья!
Встреча в рамках Дня Открытых Дверей по курсу «Разработчик Java Enterprise» состоится сегодня в 20:00 по московскому времени. Подключиться, узнать все тонкости курса и задать волнующие вопросы можно из любой точки планеты. С нами в прямом эфире преподаватель курса Виталий Иванов. Успейте пройти тестирование и примите участие в розыгрыше бесплатного образования по заявленному курсу
Начать тестирование https://otus.pw/gUiR/
Уже 12 и 14 декабря пройдут Дни Открытых Дверей по курсу "Backend разработчик на PHP". По традиции начало встречи будет проходить в 20:00 часов по московскому времени. В прямом эфире с нами ведет диалог преподаватель курса Артём Пулявин - специалист по разработке серверных приложений на PHP.
Ведущий разработчик компании Brand Analytics. Десятилетний опыт Back-end разработки на PHP. 
Участвовал в проектах различных уровней сложности от конструкторов сайта до реализации с нуля новой платформы в области FoodTech за 6 месяцев. Принимал участие в разработке высоконагруженных web-проектов и отказоустойчивых распределенных систем. В качестве TeamLead выстроил процесс разработки по методологии Scrum: внедрил ежедневные stand-up митинги, планирование и эстимейтинг задач, а также проведение ретроспектив . Пройти тестирование и принять участие в розыгрыше бесплатных мест обучения по заявленному курсу можно тут https://otus.pw/S0ac/
4 декабря завершен День Открытых Дверей по курсу Java Enterprise. Судя по количеству слушателей вебинара мы понимаем ценность запланированного курса. Мы старались охватить самые важные аспекты обучения и ответить на все важные вопросы, которые были заданы участниками трансляции. По традиции публикуем полезную ссылку на встречу в записи https://otus.pw/DItz/
Что еще должен знать PHP-разработчик?
Как бы странно это ни звучало, чтобы успешно закрепиться на позиции «PHP-программист», знания PHP не всегда достаточно. Например, еще ни один новичок не приходил ко мне с вопросами типа: «а какой функцией можно отсортировать хэш?», или «можно ли обратиться к методу статического класса из трейта?», или «как в симфони поменять путь для логгера?». Поэтому мне хотелось бы привести навыки и умения, отсутствие которых часто вставляет новичкам палки в колеса на старте их работы.
Итак, на первом месте рейтинга косяков, с которыми сталкиваются новички, находится проблема с настройкой окружения. Однажды у меня был случай, когда новенький PHP-программист три дня просидел без дела, потому что не смог разобраться с настройкой песочницы. Выяснилось, что ему было очень стыдно подойти самому с этой проблемой, и конечно, нам пришлось расстаться. Да, в этой ситуации есть часть и моей вины: я оказался так занят завершением очередной итерации, что только на третий день вспомнил о новом члене команды. Итак, я бы выделил это в правило: каждый программист PHP должен уметь настраивать свое окружение. И начать можно с простейших инструментов LAMP, WAMP, MAMP. Но после обязательно освоить любой из этих инструментов: HHVM, Vagrant, Docker, VirtualBox, Ansible, Chef, Puppet или их аналоги. А еще лучше познакомиться с каждым.
Дальше. У новеньких программистов возникают проблемы при совместной работе. Очень часто это связано с отсутствием понимания ветвления и стратегии слияния кода, или просто есть только поверхностное понимание Git. На моей памяти есть история о разработчике, который писал критически важную BackEnd часть приложения. Он упорно отказывался использовать SCM, аргументируя это тем, что все равно никто, кроме него, не осилит этот участок кода, так что до конца проекта он будет работать над ним один. Его все-таки уговорили создать репозиторий, но сделал он это для вида, отправив туда единственный инициализирующий коммит. История кончилась тем, что после месяца разработки у него сгорел винчестер, и месячная работа была потеряна. В итоге проект не уложился в срок, его финансирование прекратилось. Поэтому перед тем, как закапываться в туториал по классам SPL, лучше сначала откройте книжку по Git, и это окажется куда ценнее в будущем. Выработайте в себе внутреннюю привычку работать по GitFlow.
И напоследок можно привести еще несколько небольших советов, ценность каждого из каждого из которых на пути развития до уровня senior может быть подкреплена примерами из реальных проектов в следующих заметках:
- Научитесь пользоваться командной строкой, ssh в особенности
- Подружитесь со своей IDE
- Овладейте слепой техникой печати
- Обязательно используйте менеджер зависимостей composer
- Разберитесь с инструментами деплоя, например ant, capifony, capistrano, phing
- Пользуйтесь инструментами контроля качества кода
- Научитесь оценивать сроки выполнения задач

#deeppostphpbackend
Давайте поговорим о том, как писать правильные сообщения к коммитам. Так сложилось, что писать их приходится всем, но не все делают это правильно: иногда кажется, что какая-то дополнительная работа, которую не обязательно делать хорошо. А во время ревью кода до сообщений редко доходит очередь: есть, что ещё обсудить. Вы наверняка делали коммиты с сообщением «small fixes», да? :)
Но при этом часто бывают ситуации, когда правильные сообщения у коммита резко упрощают жизнь: надо посмотреть, кто, когда и зачем менял что-то в конкретном модуле или почему вот тут стоит такой странный условный оператор. Если у коммита с добавлением этого кода будет сообщение «add weird if», это вряд ли поможет, а вот, например «add nds calclulation for germany» даст куда больше информации.
Давайте соберём чеклист хорошего сообщения к коммиту:
1. На английском. У нас ведь код проекта на английском. Странно переводить его на русский, чтобы читающий потом перевёл его на английский. Если комментарий на русском, получается такой излишне длинный путь: сначала автору кода надо перевести свой код («class Payment: …») на русский («класс платежа»), чтобы потом читающий коммит совершил обратный перевод: «а, класс платежа — это, наверное, Payment». Если писать сразу на английском, этого можно избежать.
2. С дополнительной информацией. Сообщение «add Payment class» выглядит странно: любой может увидеть, что добавлен класс Payment по содержанию коммита, незачем писать об этом в сообщении. Зато можно написать, зачем были внесены изменения: «refactor intergration with Yandex.Kassa». Так сообщения будут нести больше пользы: по логу можно будет понять, какие именно проблемы решались, а не просто увидеть тот же список изменений, что и в diff.
3. Не длинный. Одна строка, не больше твита (старого, в 140 символов). Сообщения стоит делать лаконичными, чтобы в них была сформулирована самая суть изменений без лишней информации.

#deeppostpythonfs
Важные новости недели! Сегодня, в 20:00 часов по мск времени стартует День Открытых Дверей по курсу Java Enterprise! Мы очень рады росту популярности данного курса, который растет с каждым днем. Среди тех, кто уже принял решение пройти обучение мы видим много новых слушателей и принимаем ежедневно много вопросов касающихся обучения. Сегодня, во время встречи, вы можете задать любой волнующий вас вопрос преподавателю курса Виталию Иванову. Мы очень рады, что количество людей, желающих повысить свой профессиональный уровень увеличивается с каждым днем, а это значит, что в рамках страны мы повышаем общий градус образования. Вместе мы сможем добиться самых высоких целей и активно развиваться! Только вперед! Ведь каждый день занятий — это всегда новые открытия! Мы ждем вас на встрече сегодня, а те, кто впервые присоединился к нам приглашаем пройти тестирование и принять участие в розыгрыше бесплатных мест обучения от образовательного проекта OTUS https://otus.pw/xuuN/
О пользе суеверий. Основатель проекта Otus.ru рассказал Edexpert о том, как его детище выросло буквально за один год. Читать интервью https://otus.pw/YvYw/
Servlet 4.0: Делаем больше быстрее
. Новый крупный релиз API Servlet охватывает протокол HTTP/2 и прогнозирует потребности в ресурсах. Долгожданное обновление для Java EE 8 включает в себя обновления существующих API: JAX-RS 2.1, Bean Validation 2.0, JavaServer Faces (JSF) 2.3, Contexts and Dependency Injection (CDI) 2.0, JSON with Padding (JSONP) 1.1 и Servlet 4.0, а также два новых API: JSON-Binding (JSON-B) и Java EE Security. Среди этих API, Servlet 4.0 представляет собой достаточно крупное обновление, первое с 2009 года.

Импульс, который вызвал этот большой релиз (а не точечное обновление), — это глобальное развертывание протокола HTTP/2 и множество новых возможностей, которые он приносит. Это обновление для HTTP является первым за почти 20 лет и устраняет многие недостатки HTTP 1.x. Новые возможности многочисленны (мультиплексирование запросов/ответов, сжатие заголовков, приоритизация потоков и push-сервер), но наиболее заметной функцией для пользователей Servlet API является Server Push, о котором я расскажу в этой статье. Server Push — это не единственное примечательное дополнение к Servlet 4.0. Этот релиз также представляет усовершенствования в виде Servlet Mapping API, который поддерживает распознавание URL-отображений во время выполнения, за счет улучшений получения ссылочных путей. В этой статье обсуждаются эти функции, и как Server Push был интегрирован в API JavaServer Faces 2.3. #deeppostjavaee
Друзья, вчера завершился День Открытых Дверей по курсу Java Enterprise и по традиции, мы публикуем ссылку на встречу для тех, кто вчера не смог присоединиться к прямой трансляции. В этом видео вы узнаете больше о представленном курсе, найдете ответы на часто задаваемые вопросы, сможете лучше познакомиться с преподавателем курса Виталием Ивановым. Также, хотим напомнить, что мы всегда рады вашим сообщениям и вопросам, которые вы оставляете в комментариях.
Приятного просмотра https://otus.pw/GHdG/
Привет, это Yii2, мы знакомы?

#deepphp #deeppostphp

В жизни каждого начинающего программиста наступает момент, когда становятся важными по крайней мере две составляющие: скорость и качество. Если качество кода приходит с годами, то прирост скорости в разработке можно получить в достаточно короткое время благодаря использованию различных фреймворков.

В общем, фреймворк – это некая программная платформа с набором библиотек и заранее спроектированными структурами, которая позволяет ускорить процесс и сделать код более структурным и прозрачным для восприятия.

Помимо прироста скорости, благодаря фреймворку можно добиться простоты сопровождения проекта другими разработчиками. Так, новый разработчик, будучи знакомый с используемым фреймворком за короткое время вникнет структуру проекта и будет следовать общепринятой структуре.

Список фреймворков достаточно большой. В разных странах рейтинг их разный. Так, например, в России, по данным из habrahabr, тройку популярных фреймворков на PHP замыкают Yii, Laravel и Symfony.

Давайте познакомимся с Yii2?

Фреймворк базируется на MVC паттерне проектирования. Yii2 придерживается философии простого и элегантного кода и не перегружен различными паттернами. Он позволяет писать full-stack приложения, используя реляционные и нереляционные (NoSQL) базы данных, поддержку REST API, кэширование, инструменты безопасности и другое.

Что примечательно, фреймворк построен из множества компонентов, что позволяет легко расширять приложение и использовать сторонние расширения. А динамическая подгрузка этих компонентов по мере их вызова в коде позволяет писать высокопроизводительные приложения.

Работа с базой данных в Yii2 становится проще и гибче благодаря использованию реализованного паттерна ActiveRecord и конструктору SQL запросов. Это очень сильно упрощает составление сложных и связанных запросов. Вот, например, запрос на выборку данных пользователя с его профилем (две таблицы user и profile):

User::find()->with('profile')->all().

Причем, не важно какую вы используете базу (MySQL, Postgre или MongoDB), код от этого не поменяется.

Ну и напоследок, помните, что результат проекта зависит не столько от того, какой фреймворк выбрали вы, а от того, как грамотно вы его используете. Желаем вам успехов и профессионального роста! 💪

Приходите к нам учиться: https://otus.pw/6qxu/

Читайте новости проекта:
ВКонтакте: https://otus.pw/850t/
Facebook: https://otus.pw/3hO2/

#php #otus #отус #yii #framework #deepphp #deeppostphp #онлайнобразование #курсы #IT #программирование #фреймворк