Pull to refresh
22
0
Денис Кузнецов @MrBrooks

Программист

Send message

Я уже 14 лет в отрасли, но программировать по-прежнему сложно

Level of difficultyEasy
Reading time15 min
Views31K

Много лет назад, учась computer science на старших курсах, я долго изучал различные вакансии онлайн, надеясь найти подходящую должность стажёра-программиста.

Кроме вакансий для стажёров я иногда случайно нажимал на объявления о вакансиях «сеньор-разработчика». Помню, больше всего меня поражало то, что первой строкой шло требование определённого количества лет работы: «Эта должность требует 5+ лет опыта».

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

Время летело, не успел моргнуть глазом, как прошло больше десятка лет. Сегодня я с гордостью могу сказать, что работаю программистом уже 14 лет. Спустя годы боёв на фронтах разработки ПО я осознал, что многие её аспекты сильно отличаются от того, что я представлял на старших курсах, а именно:

С опытом программирование не становится намного проще, о «проще пареной репы» можно только мечтать.

Написание кода для множества «больших проектов» — это не только неинтересное, но и опасное занятие, гораздо менее увлекательное, чем решение алгоритмических задач в LeetCode.

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

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

Читать далее
Total votes 45: ↑45 and ↓0+45
Comments31

Мифы об Unreal Engine 5 — Nanite

Level of difficultyMedium
Reading time13 min
Views12K

Доброго времени суток,

Успех новой версии Unreal Engine не оставил без внимания профессионалов всех мастей. Попытки поддать, происходящую революцию, рациональному объяснению - затмило умы самых упрямых юнити-делов. Журналисты проводят сравнения со всем подряд, что только подвернётся, чтобы попытаться перевести технологии из мира идей в любое доступное пространство. Ходят слухи, что пара кодеров поступила в клинику, они лишь запинаясь, повторяли о mesh-шейдерах. А те кто видел исходники, поговаривают о необычайном цвете кода, явно, не из нашего мира, возможно тема была, даже - светлой.

Всё это безумие - породило мифы и целые культы, рей-трейсер пошёл на рей-трейсера, рей-кастера размазало между кадрами, Z-брашер, с диким смехом, скопипастил два мазка кистью по фотоскану непристойных моделей, прямо в игру, даже Чат-GPT назвала демонстрацию - deep-fake’ом, а новости - вбросом. Кроллики и драконы стали жить вместе, собаки и кошки.. а да, о чём это я..

В общем, я не могу вам сказать, чем является на самом деле этот ваш Nanite, но я могу вам сказать, чем он точно не является. И так..

Свет. Занавес. Nanite
Total votes 27: ↑17 and ↓10+7
Comments36

Корутины в UnrealEngine

Level of difficultyMedium
Reading time22 min
Views10K

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

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments8

Как мы с женой повышали ее качество жизни с диабетом при помощи ИТ

Reading time13 min
Views11K

Всем привет! Меня зовут Андрей. Сегодня я расскажу о проекте, который делал для своей жены и при активном ее участии. Это устройство на Raspberry Pi с опенсорсным софтом для контроля сахара в крови с помощью данных мониторинга и команд, отдаваемых инсулиновой помпе.

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

Читать далее
Total votes 66: ↑65 and ↓1+64
Comments27

OpenCat — создай своего робокотика

Reading time4 min
Views25K

Если вы фанат робо-собаки от Boston Dynamics и хотели бы завести дома его маленькую копию, вам в помощь OpenCat. Это платформа четвероногих роботов-питомцев на основе Arduino и Raspberry Pi с открытым исходным кодом. Разработчики предлагают всем попробовать создать своего собственного робота-любимца.

Читать далее
Total votes 74: ↑72 and ↓2+70
Comments13

Как вырастить тупого ребёнка (научно обоснованные вредные советы)

Reading time7 min
Views266K

Brain of someone described as an «idiot»

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

Попробуем разобрать эти верования с точки зрения доказательной медицины и пойдём от обратного.

Что мы подразумеваем под умственным развитием


Интеллект (ум) – это способность учиться, делать выводы и решать проблемы. Эти способности закладываются генетически, но развиваются благодаря внешним факторам с момента зачатия до конца жизни.

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

Итак, начнём растить не очень умного ребёнка, пользуясь достижениями современной науки.
Читать дальше →
Total votes 201: ↑178 and ↓23+155
Comments480
Собираетесь перейти в IT или повысить квалификацию? Мы собрали все образовательные инициативы Microsoft в подобие адвент-календаря, чтобы было удобно ориентироваться.
Читать далее
Total votes 18: ↑18 and ↓0+18
Comments5

.xlsx изнутри. Разбор структуры файлов. Разбор каждого .xml файла

Reading time25 min
Views46K

Это статья о разборе excel изнутри. Вы узнаете как работать со стилями ячеек, листов через xml, как вносить данные и формулы в ячейки и мого другого.

Читать далее
Total votes 85: ↑85 and ↓0+85
Comments74

Flipper Zero — как выйти на Кикстартер сидя на карантине на даче

Reading time7 min
Views75K
Flipper Zero крупным планом

Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущие посты [1],[2],[3]

Я до сих пор не могу в это поверить. Это самая волнительная статья, которую я когда-либо писал. Мы прошли огромный путь: два раза полностью меняли электронику Флиппера, выживали при блекауте и закрытых границах из-за коронавируса, переносили компанию из Гонконга в США, с трудом прошли все проверки и верификации и НАКОНЕЦ ГОТОВЫ К ЗАПУСКУ ФЛИППЕРА НА КИКСТАРТЕРЕ! Сейчас мне осталось только нажать кнопку «Старт».

Внутри я расскажу: через что нам пришлось пройти, что нужно для выхода на Кикстартер, как мы за две недели зарегистрировали компанию в США и открыли банковский счет, как Stripe отказывался подтверждать нашу компанию и что будет дальше.
Читать дальше →
Total votes 302: ↑298 and ↓4+294
Comments221

C++20 утверждён! Чего ждать и к чему готовиться разработчикам в C++23

Reading time6 min
Views62K
На днях в Праге прошла встреча международного комитета по стандартизации C++. И-и-и-и…



C++20 готов! Осталось поставить штампик от ISO, но это чисто формальный шаг, с которым не должно быть проблем.

Поздравляю всех с этим замечательным событием! Concepts, Coroutines, Modules, Ranges, std::format, constexpr new и constexpr алгоритмы+vector+string, datetime, jthread, span, bit_cast и многие другие мелкие и большие нововведения.

Что успели добавить и поправить в последний момент, что предложили разломать и что все хотят видеть в C++23 — обо всём этом под катом.
Читать дальше →
Total votes 78: ↑75 and ↓3+72
Comments407

Расширяем возможности UObject в Unreal Engine 4

Reading time15 min
Views29K

Всем привет! Меня зовут Александр, я уже более 5 лет работаю с Unreal Engine, и почти все это время — с сетевыми проектами.

Поскольку сетевые проекты отличаются своими требованиями к разработке и производительности, нередко необходимо работать с более простыми объектами, такими как классы UObject, но их функциональность изначально урезана, что может создать сильные рамки. В этой статье я расскажу о том, как активировать различные функции в базовом классе UObject в Unreal Engine 4.



На самом деле, статью я написал скорее как справочник. Большую часть информации крайне сложно найти в документации или сообществе, а тут можно быстро открыть ссылку и скопировать нужный код. Решил заодно поделиться и с вами! Статья ориентирована на тех, кто уже немного знаком с UE4. Будет рассмотрен С++ код, хотя знать его не обязательно. Можете просто следовать инструкциям, если вам нужно то, о чем пойдет речь. Более того, не обязательно копировать все, вы можете вставить код из раздела с нужными свойствами и он должен работать.

Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments7

История видеопроцессоров: 1976 — 1995 годы

Reading time14 min
Views22K
image

Эволюция современных графических процессоров началась с появления в 1995 году первых 3D-карт, за которым последовало широкое распространение 32-битных операционных систем и недорогих персональных компьютеров.

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

Первые дни потребительской 3D-графики были Диким Западом конкурирующих идей: от способов реализации оборудования до использования различных техник рендеринга и интерфейсов приложений и данных. У первых графических систем имелся фиксированный конвейер функций (fixed function pipeline, FFP) и архитектура, следовавшая по очень строгому пути обработки; при этом графические API практически у каждого производителя 3D-чипов были собственные.

3D-графика превратила довольно унылую PC-индустрию в шоу света и магии, но своим существованием она обязана многим поколениям инноваций. В этой серии статей мы подробно рассмотрим историю GPU: первые дни потребительской 3D-графики, совершившую переворот 3Dfx Voodoo, консолидацию отрасли в начале века и современные GPGPU.
Total votes 19: ↑18 and ↓1+17
Comments16

Лямбды: от C++11 до C++20. Часть 2

Reading time8 min
Views29K
Привет, хабровчане. В связи со стартом набора в новую группу по курсу «Разработчик C++», делимся с вами переводом второй части статьи «Лямбды: от C++11 до C++20». Первую часть можно прочитать тут.



В первой части серии мы рассмотрели лямбды с точки зрения C++03, C++11 и C++14. В этой статье я описал побуждения, стоящие за этой мощной фичей C++, базовое использование, синтаксис и улучшения в каждом из языковых стандартов. Я также упомянул несколько пограничных случаев.
Теперь пришло время перейти к C++17 и немного заглянуть в будущее (очень близкое!): C++20.
Читать дальше →
Total votes 41: ↑41 and ↓0+41
Comments29

Современные возможности C++, о которых надо знать всем программистам

Reading time9 min
Views40K
Автор материала, перевод которого мы сегодня публикуем, говорит, что C++, в его современном виде, если сравнивать его с тем, чем был этот язык несколько лет назад, значительно изменился в лучшую сторону. Конечно, эти изменения произошли далеко не сразу. Например, в былые времена C++ не хватало динамичности. Непросто было найти человека, который мог бы сказать, что он питает к этому языку нежные чувства. Всё изменилось тогда, когда те, кто отвечает за стандартизацию языка, решили дать ход новшествам. В 2011 году C++ стал динамическим языком, языком, который постоянно развивается и вызывает у программистов куда больше положительных эмоций.

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



Сегодня мы поговорим о некоторых новых возможностях языка (начиная с C++ 11, которому, кстати, уже 8 лет), знать о которых будет полезно любому программисту.
Читать дальше →
Total votes 56: ↑44 and ↓12+32
Comments14

Дизайн игр: не сбивайте игрока с толку

Reading time8 min
Views15K
image

Игровой процесс может быть очень сложной задачей. Некоторые игры, например, «Змеи и лестницы», достаточно прямолинейны, однако такие игры, как SpaceChem и Factorio могут быть невероятно сложной проверкой работы мозга.

Каждой игре, от простой до сложной, очень важно объяснить игроку, как в неё играть. Неважно, бросает ли он кубики или решает сложные математические уравнения — главное, чтобы игрок понимал, как работает игра.

Но создатели некоторых игр делают их сложными без необходимости. В большинстве игр существует чёткий набор правил, а любые возможные действия игрока приводят к ожидаемым результатам, но некоторые игры иногда становятся запутанными. Давайте рассмотрим одни из самых частых ловушек для разработчиков и подумаем над тем, как их избежать.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments67

Простейший делегат на C++

Reading time7 min
Views84K
logoВ C# есть делегаты. В python есть делегаты. В javascript есть делегаты. В Java есть выполняющую их роль замыкания. А в C++ делегатов нет O_O. Многие талантливые программисты успешно борются с этим недостатком, разрабатывая и используя sigslots, boost::function и другие ценные и нужные библиотеки. К сожалению, большинство реализаций отличаются не только методом использования, но также эпической сложностью применяемой шаблонной магии. Дабы при изучении исходников boost::function волосы не вставали дыбом, я написал эту небольшую статью, показывающую как самым простым и топорным способом реализовать делегат на C++. Описанная реализация является иллюстративной, имеет множество недостатков и ее вряд ли можно применить в серьезных проектах — зато она максимально простая и позволяет ознакомиться с предметной областью не разбирая трехэтажные шаблоны sigslots :).

Посмотреть схему велосипеда - много текста и картинок
Total votes 50: ↑43 and ↓7+36
Comments45

C++20 укомплектован, C++23 начат. Итоги встречи в Кёльне

Reading time7 min
Views34K
На днях прошла встреча международного комитета по стандартизации C++ в Кёльне. В прошлый раз был принят feature freeze на C++20, так что комитет должен был обсуждать только исправления уже принятых вещей, а добавлять новинки уже в C++23…

… но всё было не так!



Что сделали с std::flat_map; останутся ли страшные ключевые слова co_return, co_await и co_yield; успели ли доделать std::format; в каком виде будут контракты в C++20? Всё это вас ждёт под катом.
Читать дальше →
Total votes 70: ↑67 and ↓3+64
Comments330

Правильная типизация: недооцененный аспект чистого кода

Reading time6 min
Views11K
Здравствуйте, коллеги.

Не так давно наше внимание привлекла почти готовая книга издательства Manning «Programming with types», подробно рассматривающая важность правильной типизации и ее роль при написании чистого и долговечного кода.



При этом, в блоге автора мы обнаружили статью, написанную, по всей видимости, на ранних этапах работы над книгой и позволяющую составить впечатление об ее материале. Предлагаем обсудить, насколько интересны идеи автора и потенциально — вся книга
Читать дальше →
Total votes 34: ↑30 and ↓4+26
Comments65

Черновик FAQ: Почему стандарты С++ выходят каждые три года?

Reading time11 min
Views10K

У WG21 есть строгий график (см. P1000) выпуска стандарта каждые три года. И никаких задержек.

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

Всё это я расписал в виде вопросов и ответов для следующего черновика Р1000, и разослал копию участникам комитета, направлявшимся в Кёльн. Этот материал будет опубликован в следующей публичной версии Р1000, её мы разошлём через несколько недель начиная с текущего момента.

Однако и черновик FAQ может быть интересен публике, поэтому предлагаю вашему вниманию его копию. Надеюсь, он будет для вас по большей части полезен, в чём-то просветит, и, возможно, даже немного развлечёт.

Читать дальше →
Total votes 49: ↑47 and ↓2+45
Comments26
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Game Developer
C++
Unreal Engine