Глубокое погружение в технику диспетчеризации - Джонатан Мюллер - Meeting C++ 2022
Доклад на Eng💡
В основе интерпретатора лежит цикл, который итерирует инструкции и выполняет их по порядку. Это требует диспетчеризации: исходя из текущей инструкции, он должен выбирать различный код. Быстрый интерпретатор требует быстрого диспетчера инструкций, как и все остальное, что должно переключаться между фиксированным набором различных вариантов.
В этом докладе рассматриваются различные техники диспетчеризации, начиная с виртуальных функций, простых операторов переключения и заканчивая таблицами переходов. Мы рассмотрим инструменты анализа производительности, эталоны и много-много ассемблерного кода, чтобы узнать, как обмануть компилятор и заставить его генерировать тот ассемблерный код, который нам на самом деле нужен.
Даже если вам не нужно писать интерпретатор или другой диспетчер, вы узнаете много нового об оптимизации.
источник
👉 @cpp_lib
Обучим построению модульной архитектуры в Unity!
🚀В OTUS стартовал набор на онлайн-курс «Unity Game Developer. Professional» по построению модульной архитектуры на базе готовой RPG игры!
Пройди вступительный тест по Unity и проверь свои знания. Сможешь сдать — пройдёшь на курс «Unity Game Developer. Professional» по специальной цене. Курс доступен в рассрочку!
👉 ПРОЙТИ ТЕСТ: https://otus.pw/5FA1/На курсе вы научитесь:
1. использовать принципы SOLID
2. разделять приложение на архитектурные слои
3. выявлять высокую связность и анти-паттерны в коде
4. реализовывать игровую логику как конструктор
5. разрабатывать систему загрузки и сохранения игры и
6. проектировать архитектуру ИИ.
🔥 В конце обучения вас ждет практический проект для закрепления навыков, а также вы навсегда получите исходный код от демо-проекта!Реклама. Информация о рекламодателе на сайте www.otus.ru
The Art of Computer Programming, Vol. 1: Fundamental Algorithms, 3rd Edition
Автор: Donald E. Knuth (1997)
Первый том серии начинается с основных концепций и методов программирования, затем основное внимание уделяется информационным структурам — представлению информации внутри компьютера, структурным взаимосвязям между элементами данных и тому, как эффективно с ними работать. Приложения даны для моделирования, численных методов, символьных вычислений, проектирования программного обеспечения и систем. Были добавлены десятки простых и важных алгоритмов и методов
Скачать книгу
👉 @bfbook
Парсинг веб-страниц с помощью C++
Существует множество вариантов использования веб-скрапинга. Он позволяет получить доступ к данным, которые могут быть недоступны через API, а также к данным из нескольких разрозненных источников. С помощью этого метода можно собрать и проанализировать мнения пользователей о продукте, а также получить представление о состоянии рынка, например, о волатильности цен или проблемах дистрибуции. Однако собрать эти данные или интегрировать их в свои проекты не всегда было просто.
В этом руководстве вы узнаете, как использовать C++ для реализации веб-скрапинга с помощью библиотек libcurl и gumbo. Вы можете следить за развитием событий на GitHub.
👉 @cpp_lib
🦾 Работаешь с C++? - Погрузись во все тонкости профессиональной разработки!
Пройди тест из 20 вопросов и проверь свои знания. Сможешь сдать — пройдёшь на продвинутый курс"C++ Developer. Professional" от OTUS по специальной цене.
👩💻 Преимущества программы курса:
За 5 месяцев вы освоите MIddle-навыки: научитесь правильно писать на С++, применять паттерны проектирования, взаимодействовать с сетью, хранить и обрабатывать большие объемы данных.
Последний месяц обучения — создание выпускного проекта. Он поможет не только закрепить знания, но и станет частью портфолио, благодаря которому претендовать на позицию Middle C++ разработчика и пройти собеседование станет значительно проще.
🎫Возможна оплата курса в рассрочку
Для того чтобы проверить твой уровень знаний по C++, и подходит ли тебе курс, необходимо пройти тест.
👉 ПРОЙТИ ТЕСТ:https://otus.pw/r4vM/Реклама. Информация о рекламодателе на сайте otus.ru
Everyday Go - The Fast Track for Golang
Автор: Alex Ellis (2021)
Это быстрый способ изучить инструменты, методы и шаблоны на основе реальных инструментов, используемых в производстве.
“Everyday Go” - представляет собой сборник практических примеров, уроков и методик для разработчиков Go. Темы охватывают жизненный цикл программного обеспечения от изучения основ до тестирования программного обеспечения, распространения и мониторинга.
Скачать книгу
👉 @bfbook
Вопрос с собеседования Dropbox
Напишите запрос, вычисляющий разницу между самыми высокими зарплатами в отделах маркетинга и инженерии. Выведите только абсолютную разницу в зарплатах.
db_employee
id:int
first_name:varchar
last_name:varchar
salary:int
department_id:int
db_dept
id:int
department:varchar
Ответ: select abs(max(salary) filter (where department = 'marketing') - max(salary) filter (where department = 'engineering'))
from db_employee emp
LEFT JOIN db_dept dept on emp.department_id = dept.id
#db
👉 @database_info
Устроиться в Яндекс за два дня — реально
Weekend Offer Backend 1–2 апреля
1–2 апреля участвуйте в Weekend Offer Backend, решите задания, пройдите две секции, пообщайтесь с командами и получите офер. В мероприятии участвуют разные сервисы Яндекса, так что можно будет решить, что подходит именно вам.
Формат работы обсуждается индивидуально с каждым кандидатом: работать можно в смешанном режиме в офисе или в коворкинге в одном из 20 городов России и мира.
Ждём инженеров с опытом коммерческой разработки от трёх лет на одном из языков: Java, Python, C++, Go Scala — или тех, кто готов работать на этих языках.
Зарегистрироваться
Top 1000 Java Interview Questions: Includes Spring, Hibernate, Microservices, GIT, Maven, JSP, AWS, Cloud Computing
Автор: Knowledge Powerhouse (2017)
Сборник вопросов для подготовки к собеседованию на позицию Java разработчика
Скачать книгу
👉 @bfbook
🔥 Как создать простой чат с помощью Firebase и Kotlin?
Узнайте и попробуйте 24 марта в 20:00 мск на открытом уроке онлайн-курса «Kotlin Backend Developer. Professional» в OTUS.
📚Что будет на занятии?
- Посмотрим в структуру firebase, создание и подключение аккаунта
- Разберем и продумаем архитектуру чата
- Реализуем клиента для чат приложения, используя Realtime Database
В результате вебинара у вас будет базовое умение работы с Firebase, знание, как работает realtime база данных и онлайн-чат, полностью написанный на Kotlin.
👉 Регистрация на вебинар:https://otus.pw/0MKN/Не упустите возможность протестировать обучение, а продолжить вы сможете уже на курсе, доступном в рассрочку.<b>
Реклама. Информация о рекламодателе на сайте www.otus.ru
Вопрос по SQLс собеседования Airbnb
Найдите среднее количество ванных комнат и спален для каждого типа собственности в городе. Выведите результат вместе с названием города и типом недвижимости.
airbnb_search_details
id:int
price:float
property_type:varchar
room_type:varchar
amenities:varchar
accommodates:int
bathrooms:int
bed_type:varchar
cancellation_policy:varchar
cleaning_fee:bool
city:varchar
host_identity_verified:varchar
host_response_rate:varchar
host_since:datetime
neighbourhood:varchar
number_of_reviews:int
review_scores_rating:float
zipcode:int
bedrooms:int
beds:intОтветSELECT city, property_type, avg(bedrooms) as n_bedrooms_avg, avg(bathrooms) as n_bathrooms_avg
FROM airbnb_search_details
GROUP BY city, property_type
ORDER BY city
#db
👉 @database_info
Как сделать Asteroids в Unity (полное руководство) 🚀🌑🌑
Научитесь создавать классическую 2D аркадную игру Asteroids в Unity. Asteroids - это аркадная игра на космическую тематику с многонаправленным шутером, разработанная Лайлом Рейнсом, Эдом Логгом и Домиником Уолшем и выпущенная в ноябре 1979 года компанией Atari, Inc. Игрок управляет одним космическим кораблем на астероидном поле, которое периодически пересекают летающие тарелки. Цель игры - стрелять и уничтожать астероиды и тарелки, не сталкиваясь ни с одним из них и не попадая под ответный огонь тарелок. Игра становится сложнее по мере увеличения количества астероидов.
0:00 - Introduction
1:10 - Project Creation
1:57 - Scene Setup
7:42 - Player Movement
19:22 - Shooting
32:25 - Asteroid Prefab
42:06 - Spawning Asteroids
1:04:22 - Destroying Asteroids
1:16:09 - Dying & Respawning
1:34:19 - Explosion Particle Effect
1:44:31 - Scoring
1:49:17 - Game Over
1:51:33 - Outro
#gamedev
👉 @game_devv
Deep Learning with JavaScript: Neural networks in TensorFlow.js
Автор: Shanqing Cai, Stan Bileschi, Eric Nielsen (2020)
После прочтения книги, вы научитесь использовать TensorFlow.js для создания моделей глубокого обучения, которые запускаются непосредственно в браузере. Эта книга, написанная инженерами Google, практична и проста в прочтении. Благодаря разнообразным примерам, включающим анализ текста, обработку речи, распознавание изображений и самообучающийся игровой искусственный интеллект, вы освоите основы глубокого обучения и изучите передовые концепции, такие как переобучение существующих моделей и генерация изображений.
Скачать книгу
👉 @bfbook
❓Как проверить приложение на уязвимость?
Атаковать его самому!
Как это сделать, узнайте на онлайн-курсе«Пентест. Практика тестирования на проникновение».
🧑💻 Курс поможет разработчикам создавать надежные приложения, админам и devops-инженерам — настроить безопасную инфраструктуру, а тем, кто хочет развиваться как профессиональный пентестер, получить необходимые навыки.
🔥После обучения вы сможете претендовать на позицию пентестера и подготовиться к сертификациям: CEH (этичный хакинг), OSCP.
Пройдите вступительный тест и займите место по спец.цене: https://otus.pw/3jxX/
Web API Development with Python: A Beginner's Guide using Flask and FastAPI
Автор: Rehan Haider (2021)
Эта книга представляет собой практическое руководство по разработке API на основе простых проектов, предназначенных как для новичков, которые никогда раньше не создавали API, так и для профессионалов, которым нужно краткое введение в FastAPI или Flask.
Скачать книгу
👉 @bfbook
51 год автору WinRAR и FAR Manager
10 марта 1972 в Челябинске родился Евгений Лазаревич Рошал — российский программист, автор файлового менеджера FAR Manager, формата сжатия RAR (Roshal ARchiver, которому в этом году исполняется 30 лет!), архиваторов RAR и WinRAR.
Евгений начал осваивать программирование ещё в школьные годы, затем окончил Приборостроительный факультет Челябинского политехнического института по специальности «Вычислительные машины, комплексы, системы и сети», где на старших курсах изучал алгоритмы сжатия информации — это же стало и темой его дипломной работы.
Идея создать RAR возникла ещё в 1991-м. Но первая попытка к осязаемому результату не привела. Через год-два Евгений занялся этим опять, и на этот раз более успешно. Первой версией RAR, которую он рискнул отдать нескольким своим знакомым, был RAR 0.1, выпущенный в марте 1993. Потом были версии 0.9, 1.0, 1.1, 1.15, и тому подобные, с вариациями алгоритма сжатия. Но реально RAR пошел в распространение осенью 1993 после выхода версии 1.30. Во-первых, эта версия паковала намного лучше предшествующих за счет 64Kb окна поиска повторяющихся строк, а во-вторых, Евгений тогда познакомился с Андреем Спасибожко, который и помог двинуть RAR в массы.
Желая сосредоточиться на совершенствовании формата и архиваторов RAR и WinRAR, Евгений Рошал в 2000 году прекратил работу над файловым менеджером FAR Manager и передал авторские права на него группе программистов FAR Group, а в 2004 году передал авторские права на программы RAR и WinRAR своему старшему брату Александру (р. 1965), оставшись лишь разработчиком.
@itmozg
На многих собеседованиях разработчикам задают вопросы на знание SQL. Пройдите курс Яндекс Практикума, чтобы спокойно на них отвечать.
После 3 месяцев курса разработчики смогут уверенно пользоваться базовым SQL, корректировать ORM-запросы и работать с продвинутыми функциями.
Записывайтесь и растите конкурентоспособность.
Пример реализации двухфакторной авторизации на 1С 8.3.21 &НаСервере
Процедура СозданиеШаблонаНастроекВторогоФактораАутентификации() // кнопка в обработке
ШаблонНастроек = ШаблоныНастроекВторогоФактораАутентификации.СоздатьШаблон();
ЗапросHTTP = Новый HTTPЗапрос;
ЗапросHTTP.АдресРесурса = "&host"; //в этот параметр на следующем шаге запишется адрес куда отправлять HTTP запрос
ЗапросHTTP.УстановитьТелоИзСтроки("Ваш код &secret","utf-8"); //тут можно изменить текстовку, обязательно ставим кодировку
ШаблонНастроек.HTTPЗапросНаАутентификацию = ЗапросHTTP;
ШаблонНастроек.МетодHTTPЗапросаНаАутентификацию = "POST"; //тут или GET, или POST,
//я в дальнейшем буду запрашивать пароли через POST
ШаблонНастроек.Имя = "ИмяШаблона"; //задаем имя шаблона, который используем в дальнейшем для назначения пользователю
ШаблонНастроек.Записать();
// Ставим галочку в конфигураторе у пользователя
// (Администрирование->Пользователи->ищем кому поставить) "Аутентификация токеном доступа"
КонецПроцедуры
&НаСервере
Процедура НазначениеШаблонаВторогоФактораАутентификации()
Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени("ИмяПользователя"); //ИмяПользователя - меняем на имя пользователя
НастройкаВФА = Новый НастройкаВторогоФактораАутентификации;
НастройкаВФА.ИмяШаблонаНастройки = "ИмяШаблона"; //Имя шаблона задавали на 1-ом этапе
ПараметрыНастройки = Новый Соответствие;
ПараметрыНастройки.Вставить("host","http://"127.0.0.1/otpavkod/hs/sendpass/?tel=123456789"); //Задаем адрес на который будет отправлен HTTP Запрос с кодом для авторизации
НастройкаВФА.Параметры = ПараметрыНастройки; //Задаем значение настройки
МассивНастроек = Новый Массив;
МассивНастроек.Добавить(НастройкаВФА); //задаем массив настроек, тут важно, что это массив, а значит можно указать несколько настроек аутентификации
Пользователь.НастройкиВторогоФактораАутентификации = МассивНастроек; //Устанавливаем настройки пользователю
Пользователь.ОбработкаНастроекВторогоФактораАутентификации = ТипОбработкиНастроекВторогоФактораАутентификации.ИспользоватьСледующуюПриОшибке; //что делать при некорректном вводе кода
Пользователь.Записать();
КонецПроцедуры
✍️ @odin1C_rus