Как стать автором
Обновить
27
0.1

Программист С++

Отправить сообщение

Как работает графика в видеоиграх?

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров14K
Видеоигры в 21 веке обладают впечатляющей графикой, способной перенести игрока в невероятно детализированные города, захватывающие дух места сражений, волшебные миры и захватывающую дух природу.Как же ваш компьютер берет миллиарды единиц и нулей и превращает их в реалистичную 3D-графику? Что ж, давайте разбираться.


Читать дальше →
Всего голосов 30: ↑26 и ↓4+30
Комментарии10

Неудачник, который создал IBM PC

Уровень сложностиПростой
Время на прочтение30 мин
Количество просмотров13K

В коридоре, отделанном панелями из полированного дуба за пределами зала заседаний комитета в штаб-квартире IBM в августе 1980 года нервно шагают туда-сюда два инженера. В конце концов дверь открывается. Их начальник, Билл Лоу, выходит из соседнего зала заседаний. Прежде чем они успевают что-то сказать, он улыбается и кивает. Они смеются. Они не могут поверить в это. Всё подтвердилось. IBM попытается создать домашний компьютер.

Билл Лоу начал этот амбициозный проект, но не станет тем человеком, который его закончит. Эта роль достанется его преемнику — скромному, обутому в ковбойские сапоги руководителю среднего звена, не пользующемуся популярностью и впахивающему в корпоративном захолустье IBM в Бока-Ратоне, штат Флорида. Ему предстояло продвигать проект Лоу, который никто в компании не хотел принимать. Всего 12 месяцев спустя, 15 августа 1981 года, в продажу поступит компьютер, который изменит мир: IBM PC.

Читать далее
Всего голосов 60: ↑58 и ↓2+75
Комментарии13

Опасность устарела: несколько важных нюансов в новых стандартах C++

Время на прочтение16 мин
Количество просмотров14K
Undefined behavior (UB) — боль, знакомая каждому разработчику со стажем; эдакий «код Шредингера», когда не знаешь, правильно тот работает или нет. К счастью, стандарты языка С++20/23/26 привнесли относительно неопределенного поведения кое-что новое. И довольно важное, если вы — архитектор ПО, а «плюсы» — ключевой стек вашей компании (подробнее о том, как и почему мы в «Лаборатории Касперского» много используем С++, читайте здесь).

В этой статье я со своих позиций Senior Software Architect и Security Champion в микроядерной операционной системе KasperskyOS рассмотрю кейсы-ловушки, в которые можно попасть практически в любом из стандартов, и покажу, что меняется в С++20/23/26, — уменьшается ли количество кейсов с неопределенным поведением, и становится ли С++ безопаснее.


Читать дальше →
Всего голосов 58: ↑56 и ↓2+60
Комментарии48

У меня нет конструктора, но я должен инициализироваться

Время на прочтение13 мин
Количество просмотров9.2K

Так прошло три дня. В комнате темно и холодно, но мониторы слепят. Ты дезориентирован настолько, как будто тебя кидает из одного диссоциативного эпизода в другой. Тебя то и дело пробивает нервный смех, хотя смеяться нечему. Как я здесь оказался? В чём моя вина?  

Главная ошибка была в том, что ты в это вообще ввязался — в этом никаких сомнений.

Ещё когда я впервые взялся проходить курс по C++ несколько лет назад, меня учили, что, если я не предоставлю собственного конструктора, то компилятор сам подберёт ему замену — своего рода конструкторы, действующие по умолчанию. Я решил подробнее в этом разобраться, особенно меня волновали случаи, которые выглядят примерно так:

Читать далее
Всего голосов 15: ↑13 и ↓2+21
Комментарии16

Что я думаю о Lua после релиза проекта на 60,000 строчек кода?

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров19K

Интервью-ретроспектива с ведущим программистом видео-игры Craftomation 101 о использовании Lua как основного языка в проекте на 60,000 строчек кода.

Читать далее
Всего голосов 22: ↑22 и ↓0+25
Комментарии10

C++20. Coroutines

Время на прочтение33 мин
Количество просмотров60K

В этой статье мы подробно разберем понятие сопрограмм (coroutines), их классификацию, детально рассмотрим реализацию, допущения и компромиссы, предлагаемые новым стандартом C++20.


image

Читать дальше →
Всего голосов 32: ↑29 и ↓3+42
Комментарии27

Как загрузить, установить Office 2024 LTSC с сайта Microsoft и активировать навсегда?

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров201K

Десять лет назад я писал пару статей - Как загрузить последний Office с сайта Microsoft без всякого App-V / Хабр (habr.com) и Как загрузить Microsoft Office 16 с сайта Microsoft / Хабр (habr.com), при помощи на тот момент еще мало кому известным Office Deployment Tool.

Время бежит стремительно, за Office 2016 выходит Office 2019, Office 2021, и вот сейчас подошло время для Office 2024. Что ж, посмотрим, что поменялось в плане загрузки, установки и активации продукта за десять лет.

Для начала о версиях и изданиях Microsoft Office. Чтобы не быть слишком дотошным в описании, скажу коротко самое главное, - с годами линейка Office развивается, существуют разные подписки и планы обновления, - новые функции появляются в новых версиях, для старых версий выходят исправления ошибок и заплатки к найденным уязвимостям.

Microsoft давно перешел на систему распространения продуктов семейства Office по разным, так называемым, "каналам" (channels), в зависимости от того как часто вы хотите получать нововведения и обновления.

Ключевым отличием в текущей загрузке и установке Office от того, что было актуально во времена Office 2016, является то, что вы должны определить, каким каналом распространения вы собираетесь пользоваться, - то есть с какого канала собираетесь устанвливать сам продукт. Тем, кто хотел бы подробно изучить разные каналы распространения я предложу почитать первоисточник - Обновления Office - Office release notes | Microsoft Learn. Остальным кратко резюмирую - Microsoft сейчас предпочитает всем продать подписку на Microsoft 365 (то, что ранее называлось Office 365), с регулярно обновляемыми возможностями в течении так называемой Современной политики жизненного цикла. По этой же современной политике распространяется пользовательские (коробочные, ретейл) версии Office 2021. Office 2021, например, поддерживается лишь до 13 октября 2026. А более старые версии следуют, так называемой политике фиксированного жизненного цикла, в рамках которой Office 2016 и Office 2019 поддерживаются лишь до 14 октября 2025. В целом, они не перестанут работать после, однако, перестанут обновляться. И у тех из вас, кто пользуется почтовыми сервисами на базе Microsoft Outlook.com или Office365, а возможно и пользователям Microsoft Exchange, с обновлениями выпущенными после 14 октября 2025 уже пора призадуматься об обновлении.

Читать далее об установке Office 2024
Всего голосов 166: ↑157 и ↓9+173
Комментарии244

High-performance network library using C++20 coroutines

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров18K

Asynchronous programming is commonly employed for efficient implementation of network interactions in C++. The essence of this approach lies in the fact that the results of socket read/write functions are not immediately available but become accessible after some time. This approach allows for loading the processor with useful work during the wait for data. Various implementations of this approach exist, such as callbacks, actors, future/promise, coroutines. In C++, these implementations are available as libraries from third-party developers or can be implemented independently.

Coroutines are the most challenging to implement as they require writing platform-dependent code. However, the recent version of the C++ 20 language standard introduces support for coroutines at the compiler and standard library levels. Coroutines are functions that can suspend their execution, preserving their state, and later return to that state to resume the function's work. The compiler automatically creates a checkpoint with the coroutine's state.

For a comprehensive understanding of C++ 20 coroutines, refer to this article. Below, we examine a code example using coroutines and describe important points applied during implementation.

Read more
Всего голосов 5: ↑3 и ↓2+2
Комментарии14

К вопросу о теоретическом пределе эффективности воздушных винтов и импеллеров

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров7.6K

Здравствуйте, уважаемые читатели Хабра!

Данная статья может оказаться полезной для всех, кто интересуется физикой воздушного винта, реактивного движения, а также для всех, кто неравнодушен к теме авиамоделизма и авиаконструирования!

Я приглашаю Вас ознакомиться со своими выкладками касающимися анализа теоретического предела удельной тяги (кг/кВт) ВМУ в статической конфигурации и, немаловажно, доказательства, что таковой предел существует.

В силу профессиональной специфики часто приходится взаимодействовать с людьми, которые также, как и я, занимаются электрической авиацией. Пилотируемой и беспилотной. Часто приходится слышать обсуждения на тему, что существенного улучшения характеристик летательного аппарата (ЛА) можно достичь за счет поиска новой прогрессивной модели воздушного винта, по сравнению с имеющимися образцами на рынке. Сюда же относятся вопросы, касательно того, дает ли выигрыш в удельной тяге схема с размещением винта (вентилятора) внутри трубы (ducted fan).

Путем несложного анализа процессов, происходящих при работе любой пропульсивной (использующей внешнюю среду как рабочее тело для создания тяги) системы я решил предложить методику расчета теоретического предела удельной тяги для любой ВМУ.

Читать далее
Всего голосов 8: ↑7 и ↓1+8
Комментарии29

Сборка MS-DOS 4.0

Время на прочтение6 мин
Количество просмотров25K

Совсем недавно на хабре появилась следующая новость: На GitHub опубликован исходный код MS-DOS 4.00 под лицензией MIT. Раз появились исходные коды, стало сразу интересно: а можно ли собрать эту операционную систему?
Читать дальше →
Всего голосов 112: ↑111 и ↓1+156
Комментарии73

Разработка игры Jim Power для 8-битной приставки: из первых рук

Уровень сложностиПростой
Время на прочтение30 мин
Количество просмотров7.9K

Одно из моих главных увлечений в жизни — видеоигры, преимущественно старые. Я большой энтузиаст ретро-компьютеров и игровых консолей, много лет занимаюсь самыми разнообразными делами в этой области. Кто-то знает меня как разработчика игр, кто-то — как демосценера, кто-то — как чиптюн-музыканта, разработчика музыкального ПО, железных самоделок, и так далее.

Но далеко не все проекты и моя роль в них известны широкой публике. Пожалуй, один из самых интересных — версия игры Jim Power от Piko Interactive, созданная для 8-битной игровой консоли NES (Famicom, Денди). Я занимался им в 2014-2020 годах в качестве приглашённого разработчика.

И хотя это дела давно минувших дней — начинался проект две исторических эпохи назад — проекты такого калибра в своей нише до сих пор случаются не так уж часто. Настало время хотя бы в общих чертах рассказать историю этого проекта, одной из первых любительских разработок, попытавшихся замахнуться на уровень лучших коммерческих игр прошлого.

Если вы когда-либо хотели узнать, как и кем делаются современные игры для несовременных платформ, каким образом люди вообще приходят к этому — сейчас всё будет.
Читать дальше →
Всего голосов 82: ↑82 и ↓0+97
Комментарии9

Вы думаете рисовать линии это просто?

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров26K

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

Читать далее
Всего голосов 60: ↑58 и ↓2+70
Комментарии39

Принципы SOLID, только понятно

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров66K

Когда я только знакомился с принципами SOLID, я искал понятные статьи на Хабр. При этом пришлось прочитать не одну статью, и полное понимание пришло сильно позже. Хотелось бы, чтобы новички на более простых примерах смогли почувствовать, о чем эти принципы.

Изучить принципы
Всего голосов 80: ↑66 и ↓14+59
Комментарии94

Как «оптимизация» зарплат вредит бизнесу, и что делать

Уровень сложностиСредний
Время на прочтение64 мин
Количество просмотров32K

Оптимизация фонда оплаты труда (далее - ФОТ) в долгосрочной перспективе вредит компаниям, ухудшает их положение и усиливает кризисы.

Этот вопрос мы рассмотрим на основе проблем в Boeing и Blizzard, разбора жёсткого поведения Amazon в отношении сотрудников, с примерами лучших практик Генри Форда и General Electric, а так же ссылками на исследования, с описанием психологических аспектов и ключевых трендов. И рекомендациями: что с этим делать.

Цель данной публикации - описать ключевые аспекты и нюансы проблемы, чтобы любой мог прийти к финансистам, кадровикам или генеральному директору с ней со словами “хватит вредить бизнесу оптимизацией ФОТ!"

Оптимизировать вред оптимизации ФОТ
Всего голосов 90: ↑87 и ↓3+100
Комментарии130

16-битная операционная система на коленках

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров18K

В мире компьютерных наук мало что может сравниться с созданием собственной операционной системы. В этой статье мы погрузимся в увлекательный мир разработки операционных систем, создав 16-битную ОС с помощью языка ассемблера NASM под архитектуру процессоров Intel x86-64. Мы рассмотрим каждый этап разработки, начиная с основ и заканчивая реализацией ключевых компонентов.

Заменит Windows?
Всего голосов 47: ↑47 и ↓0+54
Комментарии34

Правда ли, что в Европе везде отсталые сервисы, медленные платежи и плохие онлайн-услуги?

Уровень сложностиПростой
Время на прочтение36 мин
Количество просмотров144K

На Хабре неоднократно в комментариях звучало мнение, что Россия впереди планеты всей по онлайн‑сервисам. Мол, у нас и госуслуги, и финтех, и такси, и доставки — все на высочайшем уровне, а в остальных странах, а особенно в отсталой Европе бедные бюргеры до сих пор стоят в многочасовых очередях, заполняют вручную тонны бумажек и ждут в очередях на кассах чтобы сделать банковский перевод, а курьер не привезет им ночью смузи в течении получаса после заказа. Давайте разбираться, так это или нет.

Читать далее
Всего голосов 245: ↑207 и ↓38+208
Комментарии1138

Компиляция на этапе выполнения в C++: constexpr, consteval и constinit

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8.3K

Сегодня мы поговорим о том, как constexpr, consteval, и constinit позволяют реализовывать компиляцию на этапе выполнения. Компиляция на этапе выполнения позволяет ускорить выполнение кода за счет выполнения расчетов на этапе компиляции, а не в рантайме.

constexpr делает возможным вычисление значений переменных во время компиляции. Функции и переменные, объявленные с этим ключевым словом, могут быть вычислены на этапе компиляции consteval усиливает концепцию constexpr, требуя обязательного вычисления выражений во время компиляции. constinit используется для инициализации статических и глобальных переменных.

А теперь подробней.

Читать далее
Всего голосов 22: ↑11 и ↓11+6
Комментарии31

Почему работодатель хочет, чтобы вы были ИП

Время на прочтение7 мин
Количество просмотров64K

Представим сферическую ситуацию в вакууме. Вы никогда до этого не были предпринимателем, только работали по найму. У вас на руках два оффера. Оба по 100 000 руб. на руки, оба на плюс-минус одинаковых условиях. Офис, 5 дней в неделю по 8 часов. Но один работодатель хочет заключить с вами трудовой договор, а другой предлагает вам оформиться как ИП.

Для начала зададимся вопросом, почему работодатель предлагает оформить отношения с вами как с ИП, а не берёт в штат? Если кратко, то работодателю так проще и дешевле. Почему? Давайте разберёмся.

Читать далее
Всего голосов 117: ↑105 и ↓12+117
Комментарии268

Вы за это заплатите! Цена Чистой Архитектуры. Часть 2

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров8.3K

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

Если не читали первую часть, настоятельно рекомендую это сделать, чтобы оставаться в контексте.

Итак, продолжим.

Читать далее
Всего голосов 33: ↑33 и ↓0+33
Комментарии13

Создание своего UEFI приложения

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров41K

Привет, Хабр! Мне 16 лет, я студент, учусь на первом курсе колледжа на программиста. Начал увлекаться низкоуровневым программированием на Ассемблере и C/C++

Я заметил что на Хабре есть множество статей о написании своих простых "загрузчиков" для BIOS-MBR, которые выводят на экран "Hello World!". И при этом практически нет ни одной статьи о создании того же самого, но только для UEFI, хотя будущее именно за ним, ведь BIOS уже давно устарел! Это я и хочу исправить в этой статье.

Читать далее
Всего голосов 72: ↑71 и ↓1+84
Комментарии80
1
23 ...

Информация

В рейтинге
3 019-й
Зарегистрирован
Активность