👨💻 Умение строить архитектуру микросервисов — навык, необходимый Senior разработчикам и тем, кто хочет стать архитектором ПО.
🗓 29 марта стартует наш курс на котором за 5 месяцев ты научишься проектировать сложный бэкенд и работать с легаси-проектами, разбираться с трудными ситуациями и находить нестандартные решения. Все это на практике, с реальными кейсами и под руководством команды опытнейших экспертов!
👉🏻 Пройди вступительный тест, чтобы проверить достаточно ли твоих навыков, чтобы строить архитектуру микросервисов, получить записи открытых уроков и зарегистрироваться на наш курс: https://otus.pw/Wscl/
Как работает HashMap?
Один из популярнейших вопросов, потому что содержит много нюансов. Лучше всего подготовиться к нему помогает чтение исходного кода HashMap. Реализация подробно рассмотрена во множестве статей, например на хабре.
Нюансы которые стоит повторить и запомнить:
🔘 Общий принцип: внутренний массив table, содержащий бакеты (корзины) – списки элементов с одинаковыми пересчитанными хэш-суммами;
🔘 Пересчет хэш-суммы для умещения int индексов в capacity ячейках table;
🔘 rehash – удвоение размера table при достижении threshold (capacity*loadFactor) занятых бакетов;
🔘 Невозможность сжать однажды раздувшийся table;
🔘 Два способа разрешения коллизий: используемый в HashMap метод цепочек и альтернатива – открытая адресация;
🔘 Варианты для многопоточного использования: пересинхронизированная Hashtable и умная ConcurrentHashMap;
🔘 Оптимизация Java 8: превращение списка в бакете в дерево при достижении 8 элементов – при большом количестве коллизий скорость доступа растет с O(n) до O(log(n));
🔘 Явное использование бакета 0 для ключа null;
🔘 Связь с HashSet – HashMap, в котором используются только ключи;
🔘 Нет гарантий порядка элементов;
Обсуждая этот вопрос на интервью вы обязательно затронете особенности методов equals/hashCode. Возможно придется поговорить об альтернативных хранилищах ключ-значение – TreeMap, LinkedHashMap.
Beginning C++ Game Programming
Автор: John Horton (2019)
Первое издание данной книги было обновлено и улучшено, чтобы осветить новейшие функции Visual Studio 2019, SFML и современные методы программирования на C++. Книга представляет собой увлекательное введение в программирование игр. Вы научитесь создавать клоны популярных игр, таких как Timberman, Pong, шутер на выживание с зомби, платформер-головоломку для совместной игры и Space Invaders.
Во время чтения книги вы:
✔️Настроите свой проект разработки игр в Visual Studio 2019 и изучите библиотеки C++, такие как SFML;
✔️Изучите основные игровые концепции, такие как игровая анимация, физика игры, ведение счета и звук;
✔️Используете классы, наследование и ссылки для создания и управления тысячами врагов;
✔️Изучите ООП в C++, создав Pong;
✔️Научитесь работать с указателями, ссылками и STL.
Скачать книгу
⚡️ Хочешь научиться эффективно работать с NoSQL базами данных?
Приглашаем 11 апреля, в 20:00 (мск) на открытый вебинар «Couchbase — документоориентированная NoSQL БД»!
📚На вебинаре мы рассмотрим:
- Задачи, основы архитектуры
- Основы построения отказоустойчивого кластера
- Анализ производительности кластера по сравнению с конкурентами — Mongo & Cassandra
📌 Чтобы посетить вебинар, пройдите вступительный тест по NoSQL - https://otus.pw/sLwP/
Building Event-Driven Microservices
Автор: Adam Bellemare (2020)
Сегодня компании часто пытаются найти баланс между бизнес-требованиями и постоянно растущими объемами данных. Кроме того, спрос на использование больших данных в режиме реального времени быстро растет среди наиболее конкурентоспособных цифровых отраслей. Обычные системные архитектуры могут не справиться с этой задачей. Из этого практического руководства вы узнаете, как организовать крупномасштабное использование данных в бизнес-подразделениях вашей организации, руководствуясь принципами микросервисов, управляемых событиями.
Во время чтения книги вы:
✔️Узнаете, как использовать событийно-ориентированную архитектуру для особой пользы бизнесу;
✔️Узнаете роль микросервисов в поддержке событийно-ориентированного дизайна;
✔️Изучите архитектурные шаблоны успеха как отдельной команды, так и целой организации;
✔️Изучите компоненты и инструменты, необходимые для создания экосистемы микросервисов.
Скачать книгу
Методы строкС++
s.size() - возвращает длину строки
s.empty() - возвращает 1, если строка пуста, 0 - если непуста.
s.push_back(c) - добавляет в конец строки символ c, вызывается с одним параметром типа char.
s.append(n, c) - добавляет в конец строки n одинаковых символов, равных с. n имеет целочисленный тип, c - char.
s.append(t) - добавляет в конец строки S содержимое строки t. t может быть объектом класса string или C-строкой.
s.append(t, pos, count) - добавляет в конец строки S символы строки t начиная с символа с индексом pos количеством count.
s.clear() - очищает строчку, строка становится пустой.
Подписывайтесь на канал 👉@coddy_academy
#cpp
Знание базовых паттернов работы с отказоустойчивостью и масштабированием — одно из требований работодателей к архитектору ПО.
🔥 Приступаем к освоению этой темы 24 марта в 20:00. Вебинар проведет Стас Щетинников, директор разработки с опытом более 10 лет.
Поговорим про различные типы масштабирования и рассмотрим несколько паттернов обеспечения отказоустойчивости: active-active, active-passive, graceful degradation и т.д.
👨💻 Еще больше необходимых знаний для архитектора ПО будет ждать вас на онлайн-курсе «Software Architect» от OTUS. Для регистрации на занятие пройдите вступительный тест: https://otus.pw/OJGW/
Курс по администрированию инфраструктуры
Это начало курса по администрированию инфраструктуры. Здесь мы разберём всё что полезно понимать системному администратору - от поднятия инфрастуктуры с нуля до настройки различных отказоустойчивых сетевых сервисов. Данный курс является продолжением курса "Основы GNU/Linux" и требует понимания многих тем, разобранных там.
Особенностью курса является то, что вся наша инфраструктура будет строиться на операционных системах семейства GNU/Linux. Реальная инфрастуктура зачастую состоит из множества готовых проприетарных решений, я же буду акцентировать внимание не на инструментах, а на задачах администратора. Т.е. мы научимся практикам, которые применимы везде, независимо от программного обеспечения. И тем не менее, умение работать с опенсорсными решениями также будет вам полезно.
https://github.com/gnulinuxpro/infra/
Learn Vue JS 2 + Google Maps API for Beginners
Автор: Raja Tamil (2020)
Google Maps API - надежный инструмент, который часто выбирают при создании приложений, работающих с местоположением пользователя. В книге автор учит создавать программы с использованием Vue.js, приводя в пример некоторые приложения. Книга основана на популярном курсе с Udemy.
Достоинства:
➕Хорошо подходит для новичков;
➕Множество примеров кода.
Скачать книгу
👾 Приглашаем на бесплатный demo-урок по Unity «Прокачка персонажа»
✅ На занятии вы научитесь реализовывать апгрейды персонажа: атака, здоровье и скорость.
Помимо написания игровой логики узнаете, как сделать загрузку и сохранение улучшений, а также, как реализовать взаимодействие с UI
📌 Еще больше продвинутых навыков создания игр ждет вас на онлайн-курсе «Unity Game Developer. Professional». Программа ориентирована на разработчиков Unity.
👉 Для участия зарегистрируйтесь и пройдите вступительный тест https://otus.pw/Na8t/
👋 Мы — команда айтишников. В текущих условиях компания не может работать как работала, и мы решили переехать всей командой.
💬 Создали канал для таких же, как мы, — тех, кто хочет уехать. Собираем всё самое полезное про релокацию. Рассказываем, с чем столкнулись сами, ищем лайфхаки и способы похачить систему (например, нашли несколько способов, как жить за границей на рубли).
👨💻 А вообще, мы HR-IT-чувачки (то есть без лишней скромности профи в сфере трудоустройства) и сейчас готовим новый проект: будем помогать айтишникам организовать переезд и устроиться на работу в валюте. И ещё сверху грант будем давать💰
👉 Что для этого нужно? Пока что — присоединиться к каналу RelocationDev и следить за новостями😉 Скоро обо всём расскажем — в мельчайших подробностях.
Принципы программирования.
Хороший разработчик пишет качественный код. Сейчас существуют главные правила написания хорошего кода, им даже придуманы аббревиатуры. Их сейчас и разберем.
KISS
Keep It Stupid Simple - придерживайся простоты. Хороший пример этому - побитовые операции и регулярки. Это не означает, что их нельзя использовать. Но не надо использовать их там, где это не нужно. Чем проще написан код, тем легче его поддерживать вам и вашим коллегам.
DRY
Don’t Repeat Yourself - не повторяйся. Не следует дублировать код. Вместо копирования нужно создать функцию. В будущем это упростит отладку и изменение кода. Особенно в больших программах.
YAGNI
You Aren’t Gonna Need It - тебе это не понадобится. Неправильно создавать места только для будущего расширения кода. Неизвестно точно, какой именно понадобится функционал и возможно код будет мешать новому (речь не идет о заглушках на заказанный функционал).
SLAP
Single Level of Abstraction Principle - принцип единого уровня абстракций. Код должен оставаться поддерживаемым, особенно функции. Если функция не помещается на экран, то ее следует разбить на несколько других функций.
«Функции должны выполнять только одно действие, но выполнять его хорошо» (Роберт Мартин). В частности напоминает принцип DRY, но сильно отличается, код не обязательно должен повторяться. Но должен быть разбит на логические блоки, для большего удобства
Подписывайтесь на канал 👉@pythonofff
Effective C
Автор: Robert C. Seacord (2020)
Мир работает на коде, написанном на языке программирования Cи, но большинство начинает обучение программированию с Python или Java. Данная книга устраняет этот пробел и помогает выучить Си, охватывая современный стандарт C17, а также потенциальные возможности C2x. Вы быстро научитесь писать качественные и безопасные программы на Си, решая реальные задачи.
Во время чтения книги вы:
✔️Узнаете, как идентифицировать и обрабатывать неопределенное поведение в программе на C;
✔️Изучите диапазоны и представления целых чисел и значений с плавающей запятой;
✔️Узнаете, как работает распределение динамической памяти и как использовать нестандартные функции.
Достоинства:
➕Хорошая структурированность;
➕Подойдет как начинающим, так и опытным программистам.
Скачать книгу
Python One-Liners
Автор: Christian Mayer (2020)
Python One-Liners научит вас читать и писать «One-Liners»: краткие комментарии о полезных функциях, упакованные в одну строку кода. Вы узнаете, как быстро понимать любую строку кода Python и писать красноречивый, сильно сжатый код на Python, как эксперт.
Вы также научитесь:
✔️Использовать структуры данных для решения реальных задач;
✔️Работать с numpy;
✔️Работать с многомерными массивами;
✔️Создавать более продвинутые регулярные выражения.
Достоинства:
➕Широкий спектр тем;
➕Актуальность материала.
Скачать книгу
📚 Хотите разрабатывать веб-приложения с помощью Django?
Начните осваивать этот инструмент 21 марта в 20:00 на вебинаре «Генерация случайных данных в Django».
Вместе с Леонидом Орловым, главным разработчиком zval.ru мы создадим случайные данные для проекта на django. А после рассмотрим библиотеки faker и mixer, а также вариант без использования сторонних библиотек. Demo-занятие позволяет протестировать обучение на онлайн-курсе «Web-разработчик на Python» от OTUS разработчикам, которые хотят специализироваться на web-разработке.
👉🏻 Чтобы участвовать, пройдите вступительный тест и зарегистрируйтесь на мероприятие https://otus.pw/jN3m/
Learning Kali Linux
Автор: Ric Messier (2018)
Целевая аудитория: разработчики любого уровня, не имеющие опыта с Kali Linux.
Kali Linux – GNU/Linux-LiveCD, включает в себя более 600 предустановленных программ тестирования проникновения. Автор данной книги подробно расскажет вам об основах Kali Linux и о том, как новичку выбрать наиболее подходящий инструмент для тестирования своего продукта
Благодаря книге вы:
✔️ изучите инструменты для быстрого тестирования сетевых стеков и приложений;
✔️ запустите разведывательные сети для определения слабых мест системы, доступных для хакеров;
✔️ выполните тесты проникновения, используя Metasploit;
✔️ научитесь создавать отчеты о тестировании продукта;
✔️ разработаете собственные методы атаки при помощи инструментов Kali и многое другое.
Достоинства:
➕ актуальный материал;
➕ широкая целевая аудитория;
➕ большое количество примеров.
Скачать книгу
Шутер в духе Quake на HTML5 и JavaScript, который весит 13 КБ
Ровно месяц потребовалось разработчику Доминику Саблевски (Dominic Szablewski), что бы написать шутер, похожий на легендарно известный Quake.
В шутере есть два уровня, которые вдохновлены картами E1M1 и E1M3 из оригинальной Quake. Игрок может использовать три вида оружия, а противостоят ему пять типов противников, в том числе собаки. В него можно сыграть прямо в браузере.
Подробнее