OTUS: программирование и карьера в IT
رفتن به کانال در Telegram
Канал для быстрого карьерного роста в IT: опыт практиков, актуальные технологии и инструменты, чтобы быть впереди коллег и привлечь внимание руководителей. Иногда шутим! 🔔Включайте уведомления, чтобы не пропустить!
نمایش بیشتر7 345
مشترکین
-224 ساعت
+47 روز
+1230 روز
آرشیو پست ها
Новость о курсе «Разработчик С++» или "Все хотят учиться у Шебордаева".
Друзья, уже через несколько часов стартует прямое включение Дня Отрытых Дверей образовательного проекта OTUS по курсу «Разработчик С++». Ура! В 20:00 часов для вас откроет мир C++ наш великолепный Дмитрий Шебордаев! Гордость — преподаватель нашего проекта! Учиться у Дмитрия — это настоящий восторг и бесценный кладезь знаний. В тонкостях C++ мы будем разбираться во время обучения, а сегодня, мы будем обсуждать важные вопросы на повестке старта курса. Все, о чем вы хотели знать, относительно «Разработчика С++» можно спросить сегодня у Дмитрия. И да, принять участие в битве за возможность стать обладателем привилегии бесплатного обучения в OTUS можно сегодня пройдя тестирование https://otus.pw/wzsQ/
4 декабря состоится День Открытых дверей по курсу Java Enterprise. Судя по количеству ваших обращений встреча обещает быть увлекательной и оживленной. Бесспорно, курс Java Enterprise, один из самых востребованных в мире IT образования, поэтому, в данный момент мы ведем активную подготовку к этому дню и будем рады услышать ваши вопросы и пожелания уже сейчас. Один из лучших преподавателей образовательного проекта OTUS, Виталий Иванов, в прямом эфире для вас 4 декабря в 20:00 по московскому времени. Узнать больше о курсе и преподавателе можно тут https://otus.pw/xICE/
Пока сегодня со всех сторон вас атакуют акциями Черной пятницы с предложением купить что-то, мы в OTUS считаем, что есть вещи, которые действительно стоит приобретать не думая о лимитах - ведь они не обесцениваются! Например, знания, дружба, забота и доброе отношение.
Поэтому мы решили сделать вам небольшой подарок и дать возможность получить 30% привилегий лояльных клиентов до конца сегодняшнего дня.
Приобретайте то, что действительно важно!
https://otus.pw/MUpm/
Успеть в группу "Разработчик Python" https://otus.pw/dNbX/
Наступил первый день занятий по курсу "Разработчик Python"!Впереди нас ждут пять увлекательнейших месяцев в познании всех тонкостей программы обучения. Сегодня последний день, когда можно присоединиться к новой группе и мгновенно приступить к обучению. Мы поздравляем всех, кто уже с нами! Всех слушателей, кто сегодня начнет свое первое занятие. И конечно же, мы спешим поздравить с этим событием преподавателя курса Станислав Ступникова!
Ваше мнение очень важно для нас.
По итогу дня хотим рассказать о том, что вчера успешно завершен День Открытых Дверей по курсу «Разработчик Python». Было увлекательно, информативно и, как всегда, полезно. Для тех, кто не успел присоединиться в прямом эфире приглашаем к просмотру записи эфира на канале YouTube https://otus.pw/NLnq/
До старта первого урока остался один день.
Друзья, если у вас есть вопросы или пожелания Вы всегда можете оставлять их в комментариях. Благодаря обратной связи мы сможем совершенствовать подход к образованию каждый день. Как ни банально, но тем не менее, именно ваше мнение очень важно для нас.
Ни для кого не секрет, что язык PHP имеет довольно низкий порог вхождения, что делает его как одним из самых удобных языков для быстрого создания веб-приложений, так и самым уязвимым для неоптимизированного кода. Зачастую разработчики даже middle-уровня ограничиваются в своей работе тем, что используют среды разработки типа OpenServer или XAMPP. Разумеется, для небольших проектов в этом нет ничего фатального, но как только размер проекта вырастает, то появляются новые проблемы, которые до этого не были известны. Во-первых, большие проекты не терпят отключения на время обновления кода. При этом на самом сервере, ни о каком OpenServer речи не идет — зачастую случается, что у разработчика стоит Windows, а на сервере работает Linux-подобная ОС. При выкатке проекта выясняется, что код, который работал локально, вдруг перестаёт работать в Production-окружении, прерывая работу ресурса. Во-вторых, большие проекты не ограничиваются простым делением на DEV и PROD. Они имеют сервера QA, где идет приемочное тестирование, имеют множество разработчиков, которым к тому же надо обмениваться своими наработками. И их среды разработки тоже могут отличаться, к примеру, потому, что кто-то не обновил ПО. Так что же делать в таких ситуациях? На помощь приходят виртуальные машины, которые собираются по строго заданным шаблонам с предустановленным единообразным LAMP/LNMP-стеком. Их прелесть также и в том, что они совершенно беспроблемно могут создавать неограниченное число копий Production-окружения, делая процесс разработки максимально гибким. Можно собирать машину вручную, но для быстрого старта можно использовать существующие решения автоматизации. Мы рассмотрим работу в Windows-системах. Достаточно будет двух программ — Vagrant и VirtualBox. VirtualBox — это среда для управления и запуска виртуальных машин, а Vagrant — это программа автоматизации их сборки. Более того, энтузиасты уже подготовили готовые инструкции для работы с PHP, NGINX, MySQL и другими популярными модулями стека. Если Вы планируете работать с этой сборкой, то установите также Git. При необходимости нужно добавить путь к Vagrant в переменную PATH. «set PATH=%PATH%;C:HashiCorpVagrantbin» Теперь мы можем создать отдельную директорию для нашей виртуальной машины или же перейти в уже созданную. Можно развернуть «голую» ОС Ubuntu, либо взять готовую сборку из репозитория на GitHub «https://github.com/kiaplayer/vagrant-php» Если рассматривать второй случай, то нужно будет выполнить команды «git clone https://github.com/kiaplayer/vagrant-php.git» Инструкция по сборке виртуальной машины располагается в директории «.chef.» Это файл Vagrantfile, который нужно скопировать на уровень выше. После этого уже можно запустить сборку самой виртуальной машины «vagrant up». По завершению её работы в меню VirtualBox появится новая строчка с Вашей только что созданной виртуальной машиной. Она уже имеет возможность подключения по сети, а также располагает стеком LNMP. Как видите, работа с виртуальными машинами совсем несложная!
20 ноября проходил открытый вебинар по курсу «Разработчик JavaEE» в OTUS. Почти 500 человек в прямом эфире с экспертом по Java технологиям Виталием Ивановым. Смотреть запись вебинара можно тут https://otus.pw/PEmF/
Мы начинаем дни открытых дверей по курсам «DevOps практики и инструменты» и «Разработчик Python». Присоединяйтесь!
Внимание, уже через час стартует сразу два Дня Открытых Дверей по курсам: «Разработчик Python» и «DevOps практики и инструменты». Старт встреч ровно в 20:00 по московскому времени. Трансляция встречи «Разработчик Python» https://goo.gl/C2Rwpp
Трансляция встречи «DevOps практики и инструменты» https://goo.gl/95nRGe
У вас есть еще час, чтобы пройти тестирование и принять участие в розыгрыше бесплатных мест обучения. До встречи в прямом эфире!
Друзья, приглашаем Вас к прочтению свежей и полезной статьи "Применение DevOps практики Infrastructure as Code (IaC)" опубликованной на официальной странице OTUS в Facebook. Читать сейчас https://goo.gl/LB4VXA
Mail API. Среди распространенных требований, предъявляемых к приложениям уровня Enterprise, следует отметить необходимость отправки электронных писем на стороне сервера. Например, может потребоваться отправить сообщение пользователю после регистрации или смены пароля в системе, или же отправка сообщения с новостной рассылкой. Нет сомнений, что каждый найдет свой случай для применения этой полезной функциональности. Рассматривая стек технологий JavaEE, важно отметить, что все необходимое для отправки электронных писем доступно «из коробки» и можно использовать для любого JavaEE-приложения. Данная технология так же известна, как «Mail API», располагающаяся в пакете «javax.mail». Важно понимать, что JavaEE не решает вопросов создания почтового SMTP-сервера. Для этих целей Вы можете использовать готовые решения, к примеру, любой общедоступный сервер как Gmail, Yandex, Mail и т.д. Для целей отправки писем достаточно знать параметры используемого почтового сервера: имя и порт сервера, параметры соединения. Для безопасной отправки писем также допустимо использование «SSL» и «TLS-протоколов». С помощью «Mail API» можно отправлять не только простые письма, но и включать вложения, прикреплять изображения, документы, использовать HTML-форматирование и т.д. Наиболее значимые сущности для возможности отправки email — это класс Session, инициализирующий основные параметры для соединения с SMTP-сервером, MimeMessage, включающий информацию о получателе письма, теме, теле и вложениях сообщения, а также класс Transport, реализующий непосредственную отправку методом void send(MimeMessage message). Обратите внимание, что количество инициализируемых параметров соединения класса Session напрямую зависит от типа SMTP-сервера. Для серверов, в которых не требуется какой-либо аутентификации, достаточно указать лишь свойство «mail.smtp.host» и оставить без изменения 25й порт, используемый по умолчанию. Но для случаев использования почтовых серверов, поддерживающих SSL или TLS аутентификацию, важно детализировать оба параметра «mail.smtp.host» и «mail.smtp.port». Если рассматривать Gmail в качестве почтового сервера, то в нем используются 465й и 587й порты для SSL и TLS, соответственно (самая актуальная информация о деталях почтового сервера Gmail доступна по ссылке). Взгляните на код метода, обеспечивающего отправку письма, используя TLS-аутентификацию: «public static void sendEmail(final String username, final String password)»
«throws MessagingException {»
«Properties props = new Properties();»
«props.put(„mail.smtp.auth“, „true“);»
«props.put(„mail.smtp.starttls.enable“, „true“);»
«props.put(„mail.smtp.host“, „smtp.gmail.com“);»
«props.put(„mail.smtp.port“, „587“);»
«Session session = Session.getInstance(props,»
«new javax.mail.Authenticator() {»
«protected PasswordAuthentication getPasswordAuthentication() {»
«return new PasswordAuthentication(username, password);»
«}»
«});»
«Message message = new MimeMessage(session);»
«message.setFrom(new InternetAddress(„youremail@gmail.com“));»
«message.setRecipients(Message.RecipientType.TO,»
«InternetAddress.parse(„whomemail@gmail.com“));»
«message.setSubject(„Your Subject“);»
«message.setText(„This is test email! Don’t answer!“);»
«Transport.send(message);»
«}»
Данный код в особых комментариях особо не нуждается, поэтому для лучшего закрепления материала предлагается реализовать метод, который отправляет email через Gmail, но уже с использованием SSL-аутентификации.
Если вы еще думаете, чем заняться в декабре — эта информация для вас! 27 ноября нас ждет уникальный День Открытых Дверей посвященный курсу «Разработчик C++». Великолепный специалист и виртуозный преподаватель Дмитрий Шебордаев в прямом эфире! Профессионал высокого уровня, выпускник МГУ, персона youself, совершенствуется c каждым днем и с радостью делиться своим опытом с нами!
Обратите внимание, что разработчик C++ в OTUS — это не начальный курс для новичков или тех, кто еще ищет себя в профессии. Это сильный курс для сильных. Это не просто скучные лекции или учеба по принципу «Ну, что нового вы сможете мне рассказать?». Это глубокий курс с увлекательным погружением в мир C++. Только лучшее, только самое смелое, ловкое и увлекательное в процессе обучения. Совершенствоваться вместе с OTUS, в атмосфере абсолютных профессионалов и единомышленников — это быстрый рост профессиональных навыков, достижений и личных побед. 80% наших учеников меняют свои профессиональные предпочтения после обучения в лучшую сторону. Ведь мы не только учим, мы вдохновляем на достижение наивысших результатов и гордимся каждым из вас!
Работодатели по окончании курса: Yandех, Luxoft, Kaspersky, КРОК, 1C. Перед началом трансляции протестируй свои знания и, кто знает, может быть именно Вам выпадет уникальная возможность бесплатного обучения в OTUS https://goo.gl/5XVuSY
А мы начали говорить, про Java EE :) https://www.youtube.com/channel/UCetgtvy93o3i3CvyGXKFU3g/live
Друзья, сегодня особенный день! В образовательном проекте OTUS, сегодня, в 19.00 часов по московскому времени, будет проходить открытый урок по Java EE. В формате вебинара будут рассмотрены вопросы проектирования API на платформе Java. Слушатель научится разрабатывать приложения построенные на базе SOA с использованием технологий «JAX-WS» и «JAX-RS». Присоединиться к трансляции можно тут https://goo.gl/Zx57tu
Спешим сообщить, что 17 ноября завершился День Открытых Дверей по курсу «Разработчик Python». По традиции в гонке тестирования «светлых умов программирования» есть два победителя, которых мы спешим поздравить с тем, что они заслуженно получают в награду бесплатное образование по курсу «Разработчик Python». Ура! А, те, кто хотел присоединиться к трансляции, но не смог, приглашаем к просмотру на официальном канале YouTube образовательного проекта OTUS https://goo.gl/tNKCEg Друзья, спасибо всем, кто присутствовал на встрече! И увидимся на первом занятии!
Говоря об оптимизациях, мы должны понимать сложность используемых алгоритмов, но, зачастую, имеем ввиду только вычислительную сложность. Конечно, скорость работы алгоритма - это очень важная метрика, но мы можем и не успеть полностью, утилизировать CPU, если у нас кончится память. В реальном мире есть много ресурсов, которые надо беречь. Не про деревья и воду, а дисковый и сетевой ввод/вывод, объем кэша и даже скорость памяти. Попробуем оценить аппетит поедания памяти в динамике. Насколько легко понять, сколько и какой памяти требуется для работы нашему чудо-сервису?
«#include <array>»
«#include <memory>»
«auto static_storage = std::array<char, 0x40000000>();»
«int main(int argc, char *argv[])»
«{« «static_storage.fill(0);»
«auto dynamic_storage = std::make_unique<std::array<char, 0x40000000>>();»
«dynamic_storage->fill(0);»
«auto automatic_storage = std::array<char, 0x400000>();»
«automatic_storage.fill(0);»
«return 0;»
«}»
В примере трижды вызывается конструктор «std::array» и трижды метод «fill». Как меняется потребление памяти после выполнения каждой из этих строк? Как влияет на потребление памяти то, что первый объект со статическим временем жизни, второй в куче (да, при этом сам указатель на стеке), а третий целиком на стеке? Зачем в примере используется метод «fill», память и так уже выделена, в чем подвох? Почему память выделяется не в том порядке, в котором можно было бы ожидать? Оптимизация ни при чём. И, кстати, сколько раз массивы будут заполнены значениями? Конструктор «+ fill» и, так три раза – неверный ответ. #deeppost c++
Друзья, сегодня День Открытых Дверей по курсу «Разработчик Python»! Начало трансляции в 20:00 по московскому времени. Именно сегодня состоится розыгрыш бесплатных мест обучения для тех, кто прошел тестирование.
Пройти тестирование можно тут https://goo.gl/EsNEmj
Присоединиться к трансляции https://goo.gl/XX9xXn
Станислав Ступников программист компании Mail.ru, преподаватель образовательного проекта OTUS сегодня в 20:00 по московскому времени в прямом эфир для вас. Можно и нужно задавать все волнующие вопросы об обучении, формате занятий и т.п. Все самые популярные вопросы: а как? а почему? а можно ли …? Будут рассмотрены именно сегодня. Присоединяйтесь!
