Pull to refresh
4
0
Send message

Советы для начинающих (и не очень) разработчиков на Unreal Engine

Reading time17 min
Views38K

В этой статье я стараюсь поверхностно пройтись по, как как мне кажется, наиболее важным для новичков аспектам разработки на Unreal Engine. Моя цель - подсказать вам направления, в которых можно и нужно копнуть поглубже. Рассказать что есть и для чего это можно использовать, как решать некоторые типовые проблемы. Почти для всех топиков я привожу ссылки на более конкретные гайды и описательные статьи. Они могут вам помочь.

Надеюсь что описанные мною вещи будут вам интересны и полезны. Желаю приятного чтения :-)

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

Эмоциональный код

Reading time19 min
Views6.6K

Я зарабатываю программированием с 1979 года, и большую часть этого времени мне приходится работать с чужим кодом. Поначалу было: "Добавьте эту маленькую функцию к тому, что у нас уже есть". Теперь — "как мы можем стать лучше" и " стоит ли сохранять данный код?". Прочтение кода всегда было огромной составляющей в моей работе, и по этой причине для меня очень важно, какой код пишу я (и люди, с которыми работаю). Конечно, хочется, чтобы он был быстрым — в конце концов, я программист на C++. Кроме того, он должен быть корректным. Но есть нечто большее, помимо этих двух вещей: я хочу, чтобы код был читабельным, понятным, разумным и даже приятным.

Читать далее
Total votes 11: ↑8 and ↓3+5
Comments7

Как написать рефлексию для C++

Reading time14 min
Views26K

C++ поистине противоречивый язык. Старый добрый С существует аж с 1972 года, С++ появился в 1985 и сохранил с ним обратную совместимость. За это время его хоронили ни раз и ни два, сперва Java, теперь его потихоньку продолжают хоронить Go и Rust. Все его недостатки пережеваны множество раз. Если вы пришли в мир С++ из других ООП языков, то здесь вы не найдете...

Читать далее
Total votes 30: ↑29 and ↓1+35
Comments45

Как мы уменьшаем размер изображений на веб-страницах в 10 раз с помощью нашего оптимизатора

Reading time8 min
Views19K

Привет, Хабр! Меня зовут Евгений Лабутин, я из команды разработки продукта МТС Твой бизнес. Мы разработали свой рецепт приготовления картинок для нашего портала. Благодаря ему удалось сократить их вес на странице до 10 раз относительно уже оптимизированного jpg/png, сохранив при этом простоту разработки – как будто это стандартный img элемент. Разработанный микросервис называется ImageOptimize, из этой статьи вы узнаете, как он работает и что у него под капотом. Мы уже выложили код микросервиса в OpenSource (чему очень рады), поэтому вы тоже можете использовать такую компрессию, настроив ее в несколько простых шагов.

Читать далее
Total votes 31: ↑29 and ↓2+33
Comments28

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

Reading time7 min
Views267K

Brain of someone described as an «idiot»

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

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

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


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

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

Итак, начнём растить не очень умного ребёнка, пользуясь достижениями современной науки.
Читать дальше →
Total votes 166: ↑143 and ↓23+155
Comments480

Они изменили мир IT: автобиографии двух знаменитых интровертов

Reading time8 min
Views11K

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

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

Читать далее
Total votes 16: ↑14 and ↓2+14
Comments32

В поисках математической нирваны

Reading time4 min
Views7.3K

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

Прекрасный мир, почти нирвана... если бы не вот это ЕСЛИ, которое является дверью в совсем другое измерение.

Читать далее
Total votes 20: ↑19 and ↓1+22
Comments20

«Я не ответственный, я — Responsible» — как объяснить бабушке, что такое RACI-матрица

Reading time7 min
Views54K


Приехала я год назад к друзьям играть в настолки. А они ссорятся. Из-за того, что Маша сказала Саше вынести мусор / убрать носки / погулять с хомяком, а он не сделал, потому что тупо забыл. Рассказала я Саше и Маше про ToDoList и таск-трекеры и нарисовала им на холодильнике импровизированную асану. Маша наклеила стикеры с задачами и сроками, Саша терпеливо кивнул. Настолки состоялись.

Недавно я снова заглянула в гости. Стикеры на холодильнике висят, а Маша и Саша опять ссорятся. Точнее, громко выясняют, кто хотел починить стол / вывести холодильник / искупать кота, кто по-факту должен был это делать, и почему до сих пор ничего не сделано. Я промолчала, т.к. в чужие семейные разборки со своим PMBOK-ом не лезут.

Но потом решила, что всё нормально, лезут, т.к. вспомнила, что видела RACI-матрицу для распределения ответственности с шуточным объяснением через поездку семьи на дачу. Полезла искать эту картинку для Саши с Машей, нашла, а в ней куча ошибок:



Простите. Не могу промолчать. Не надо так.
Читать дальше →
Total votes 69: ↑63 and ↓6+74
Comments45

Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза

Reading time24 min
Views168K

На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют. 

Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать. 

Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.

Читать далее
Total votes 336: ↑324 and ↓12+411
Comments300

Категории выражений в C++

Reading time7 min
Views48K

Категории выражений, такие как lvalue и rvalue, относятся, скорее, к фундаментальным теоретическим понятиям языка C++, чем к практическим аспектам его использования. По этой причине многие даже опытные программисты достаточно смутно представляют себе, что они означают. В этой статье я постараюсь максимально просто объяснить значение этих терминов, разбавляя теорию практическими примерами. Сразу оговорюсь: статья не претендует на максимально полное и строгое описание категорий выражений, за подробностями я рекомендую обращаться непосредственно в первоисточник: Стандарт языка C++.

Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments17

О шаблонах в С++, чуть сложнее

Reading time40 min
Views34K

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

Потрогать здесь
Total votes 50: ↑50 and ↓0+50
Comments31

Статическое константное дерево на шаблонах C++

Reading time6 min
Views9.4K

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

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

Читать далее
Total votes 18: ↑16 and ↓2+22
Comments45

«Доктор, меня игнорируют», или Как писать письма так, чтобы их читали

Reading time9 min
Views20K

«Мои письма никто не читает.»

«Я уже всё всем написал, а коллеги продолжают спрашивать одно и то же. Бесит.»

И особенно популярное: «Мы ещё неделю назад написали, что удалим эту таблицу из базы, и сказали адаптировать код! Так что мы не виноваты, что сайт (пайплайн, приложение, <подставь своё>) упали.»

Начну с весьма непопулярного заявления: ответственность за доставку и восприятие сообщения процентов на семьдесят лежит на отправителе (то есть на тебе). Конечно, если твой коллега — заядлый социопат и в принципе не читает никакие письма, наука здесь бессильна (но и тут есть варианты, которые обсудим ниже). Однако чаще бывает, что коллеги в принципе готовы потреблять наши сообщения, но безудержные приступы зевоты и недоумения делают своё чёрное дело.

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

(Ещё одним приятным следствием из умения писать качественные письма стало повышение доверия к нашей команде, которое мы измеряем, регулярно опрашивая наших бизнес-партнёров. Простая и понятная коммуникация — признак заботы о собеседнике.)

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

Читать далее
Total votes 43: ↑37 and ↓6+41
Comments69

Как очистить проект от неиспользуемых ассетов в Unreal Engine

Reading time5 min
Views17K

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

В данной статье я хотел поделиться несколькими способами очистки проекта от неиспользуемых ассетов.

Эти способы включают в себя фильтры, аудит ассетов, миграцию, а так же в конце я приложу ссылки на некоторые плагины для того, что бы все было в одной статье.

Как очистить проект читайте в статье
Total votes 8: ↑8 and ↓0+8
Comments6

FFmpeg libav с нуля. Часть 1: знакомство и начало работы

Reading time4 min
Views17K

Всем привет! Сегодня я хочу открыть серию статей по изучению FFmpeg libav с нуля.

Сразу уточню, что в основном статьи направлены на программирование, используя библиотеки libav*, где в качестве языка выступит С++.

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

Читать далее
Total votes 17: ↑15 and ↓2+17
Comments14

Best practices в Code Review

Reading time6 min
Views16K

Правильный процесс ревью кода — это процесс итеративного улучшения продукты и контроля.
Контроля того, что:
1) Cоблюдены общие правила и договорённости
2) Решение не избыточное и масштабируемое.
3) Решение покрывает все критерии приемки указанные в описании к задаче

Для начала будет хорошо задать в своей команды такие вопросы:
1) Сколько времени занимает ревью кода для средней (сферической в вакууме) задачи
2) Как вы минимизируете время ревью?
3) Как вы определяете, что ревью конкретной задачи сделано правильно?

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

Самые интересные блоги и сайты для C++ программистов

Reading time4 min
Views17K

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

Читать дальше →
Total votes 20: ↑17 and ↓3+20
Comments2

Мониторинг начинается с метрик, или Как не сделать из алертов белый шум

Reading time7 min
Views23K


Как известно, нельзя управлять тем, что не измеряешь. В контексте IT-проектов это означает необходимость мониторинга всех частей проекта: от утилизации CPU до бизнес-показателей вроде количества заказов в интернет магазине или показов баннеров на сайте.

Чтобы сервис работал стабильно и техническая поддержка могла в режиме 24/7 быть эффективной, нужно собирать метрики, визуализировать их динамику (в дашбордах и графиках), анализировать результаты и работать с инцидентами — желательно до того, как они стали инцидентами. Однако мониторинг мониторингу рознь. Он выполняет свою функцию, если система:

1) отслеживает метрики, которые нужны для принятия решений, и не мониторит лишнее;
2) уведомляет, когда ещё можно что-то сделать без последствий для работоспособности сервиса, но не спамить ложной тревогой.

Звучит просто и логично, но на практике найти баланс не всегда легко.

Эта статья будет первой в серии заметок о том, как мы организуем мониторинг у наших 400+ клиентов. Расскажем, какие метрики снимаем, каких методологий придерживаемся и какие алерты видим каждый день.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments1

Information

Rating
Does not participate
Date of birth
Registered
Activity