Pull to refresh
@MZjrread⁠-⁠only

User

Send message

Vulkan. Руководство разработчика. Загрузка данных через промежуточный буфер

Reading time7 min
Views3.3K


Всем привет! Для тех, кто со мной не знаком, я переводчик в IT-компании CG Tribe в Ижевске. Здесь я делюсь переводами Vulkan Tutorial на русский язык.

Сегодняшняя публикация посвящена переводу статьи из раздела Vertex buffers, которая называется Staging buffer.

Содержание
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments2

Введение в программирование: заготовка игры-платформера на SDL в 300 строк C++

Reading time12 min
Views27K

Этот текст предназначен для тех, кто только осваивает программирование. Я читаю лекции по C++ на первом курсе местного университета, и в качестве практикума предлагаю запрограммировать любую игру (не выношу проектов типа "софт бронирования книг в местной библиотеке"). Соответственно, чтобы помочь начинающим, я сделал некоторое количество заготовок, с которых можно стартовать свой проект. Например, заготовку олдскульного 3д шутера в 486 строк C++ я уже описывал, а вот тут можно посмотреть, что из неё сделали первокурсники.


В этот раз всё будет ещё проще, я хочу сделать заготовку под простейший платформер, вот так выглядит результат:



На данный момент проект содержит менее трёхсот строчек цпп:


ssloy@khronos:~/sdl2-demo/src$ cat *.cpp *.h | wc -l
296

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


Итак, поехали!

Читать дальше →
Total votes 47: ↑46 and ↓1+56
Comments128

Чему я научился делая игры на LibGDX

Reading time12 min
Views20K

Привет, Хабр! 👋 В этом топике хочу поговорить о незаслуженно забытом, бесплатном фреймворке для разработки кросс-платформенных игр - LibGDX. Поделиться секретами своей кухни и решениями, которые я использую при разработке своих игр-головоломок. Ворнинг! Много кода под катом.

Читать далее
Total votes 15: ↑15 and ↓0+13
Comments13

PlantUML — инструмент продуктового разработчика

Reading time10 min
Views40K

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

С одной стороны, решение работающее. С другой, буквально через неделю-две я уже начинал сомневаться, достаточно точно ли я «перевел» с кода на русский язык? И тогда вспомнил про UML-диаграммы. И вместо того, чтобы записывать текст, стал визуализировать его и исписал неимоверное количество тетрадей. 

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

Давайте вспомним, что такое Unified Modeling Language. Чаще всего в университете UML используется для описания диаграммы классов.

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

Чек-лист хороших инженерных практик в компаниях

Level of difficultyEasy
Reading time7 min
Views19K

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

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

В этой статье я расскажу о причинах такой катастрофической разницы, а также об инженерных практиках, которые позволят поддерживать высокий темп разработки:

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

48 полноценных бесплатных книг для программистов (happy developer's day)

Reading time2 min
Views110K

Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.

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

Читать далее
Total votes 83: ↑82 and ↓1+98
Comments55

Надоело настраивать кластер? Используйте Ray Lightning

Reading time7 min
Views2.7K

PyTorch Lightning позволяет распараллелить Deep Learning на GPU, но настраивать и объединять процессоры в сеть сложно даже в управляемом кластере SLURM. Проблему решает пакет Ray Lightning, обзором которого делимся к старту потока курса по Data Science.

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments1

3D Graphics Rendering Cookbook

Reading time2 min
Views7.5K

В августе этого года, после полутора лет напряженной работы, наконец-то вышла наша третья книга (про первую и вторую уже были посты на Хабре) ориентированная на разработку игр: 3D Graphics Rendering Cookbook: A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan.


Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments17

Оптимизируем отображение 10 000 объектов на карте

Reading time13 min
Views13K

В приложении ЦИАН размещены десятки тысяч объявлений о недвижимости. Нашим пользователям важно видеть географическое расположение этих объявлений на карте. Самым популярным способом отображения оказался вариант, когда каждое объявление показано отдельной точкой. Внутри команды такой вариант мы назвали «Горошек на карте».

Проблема в том, что объявлений очень много: в одной только Москве более 10 000. Из-за этого наша карта работала не очень стабильно: при зуме и движении были тормоза, дёргалась и лагала картинка. С этим нужно было что-то делать. Чтобы разобраться в причинах проблем и найти решения, мы засучили рукава и начали копаться в используемых механизмах. Под катом подробно опишем весь путь оптимизации карт в Android-приложении: от постановки задачи до результата.

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

5 любопытных примеров лямбд в C++: рекурсия, constexpr, контейнеры и многое другое

Reading time4 min
Views10K

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

Смотрите в статье.

Читать далее
Total votes 12: ↑10 and ↓2+9
Comments15

Мой MikroTik – моя цифровая крепость (часть 1)

Reading time10 min
Views125K
В статье рассмотрены различные подходы к организации практической безопасности сетей, построенных на оборудовании MikroTik, в том числе при помощи дополнительного открытого программного обеспечения, расширяющего имеющиеся штатные возможности, что в комплексе позволяет качественно администрировать сетевые средства, а также своевременно реагировать на различные угрозы информационной безопасности.
Читать дальше →
Total votes 67: ↑64 and ↓3+85
Comments101

Быстрый, мощный интерфейс на Python

Reading time15 min
Views142K

Dear PyGui принципиально отличается от других фреймворков GUI Python. Рендеринг на GPU, более 70 виджетов, встроенная поддержка асинхронности — это лишь некоторые возможности Dear PyGui. Руководством по работе с этим пакетом делимся к старту курса по разработке на Python.

Читать далее
Total votes 54: ↑51 and ↓3+57
Comments48

Вторая микросхема :)

Reading time5 min
Views24K
В 2018 году у себя гараже я изготовил первую интегральную схему, это был двойной дифференциальный усилитель Z1. Тогда я заканчивал школу, а сейчас уже выпускаюсь из колледжа. Очевидно, пришло время улучшить производственный процесс.



Z1 с шестью транзисторами представлял эксперимент для отработки всех процессов и проверки оборудования. В теперешнем Z2 уже 100 транзисторов c поликремниевым затвором 10 мкм — та же технология, что и в первом процессоре Intel. Здесь просто массив 10×10 транзисторов для тестирования, определения характеристик и настройки процесса, но это огромный шаг к более продвинутым самодельным чипам. В Intel 4004 было 2200 транзисторов, а я разместил 1200 на такой же пластине.
Читать дальше →
Total votes 85: ↑85 and ↓0+85
Comments19

«В чём сила, брат?», или зачем нужен Источник Правды

Reading time8 min
Views4.3K

Вас когда-нибудь будили по алерту в 2 часа ночи, и вы бежали поднимать упавший сервер, полчаса дебажили, подняли, а потом выяснялось, что это был не тот сервер? Потому что тот, который нужно, стоял рядом, а вы подняли старый, который выключили специально, и всё окончательно сломали…Или вы послали инженера в ДЦ переткнуть патчкорд, диск поменять... А он смотрел не в ту табличку и менял не тот диск? Или ваш сетевой инженер ошибался IP-адресом и обнулял не ту стойку? Или вообще выключал не тот ДЦ?

Все эти случаи, помимо чисто человеческого фактора, происходят, когда вокруг нас либо недостаточно правды, либо слишком много информации. У нас есть Вики, Git, эксельки, блокнот, а еще инженер Вася, который знает то, чего не знает никто другой. Чтобы избавиться от этой боли, я расскажу, как навести порядок в описании инфраструктуры и создать свой Источник Правды (Source of Truth), достоверный и актуальный.

Читать далее
Total votes 7: ↑6 and ↓1+9
Comments8

Сервис просмотра и редактирования библиотек геометок

Reading time2 min
Views2.4K

В 2018 решил освоить Vue.js, так, для общего развития, а как известно, лучший способ освоить язык/фреймворк/etc — начать писать. В голову пришла довольно простая идея, которая со временем выросла в довольно большой проект — онлайн сервис «Места», позволяющий создавать свои коллекции мест на карте, геометок, с подробной информацией о них. Собирать их в альбомы, сортировать в дереве папок, просматривать, редактировать, обмениваться с другими, открывать для просмотра другим пользователям сервиса. Привязывать к местам фотоальбомы, экспортировать свои библиотеки в файлы JSON и GPX (для навигаторов, например), импортировать в свои библиотеки места других людей.

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

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

Проект свободный (https://github.com/assador/places, сам действующий сервис пока здесь: http://places.scrofa-tridens.ru). Сейчас в планах помимо API Яндекс.Карт, которые отвечают, собственно, за карту, подключить и другие — OSM, 2ГИС и пр. Хочу добавить возможность добавлять к местам не только фото-, но и видео-, и аудиоальбомы. Развивать структуру прав и ролей пользователей, их связь друг с другом на сервисе, расшаривать библиотеки в соцсети и пр. Короче, для меня штука интересная.

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

Взять и собрать DAW — помогут эти инструменты

Reading time3 min
Views3.6K

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

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

Python: конфигурация проекта без боли

Reading time6 min
Views36K

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

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

После создания проекта рано или поздно возникает вопрос: куда записывать номер версии, где хранить токены, пароли, настройки, каким форматом файлов конфигурации воспользоваться: .json.yaml.env, .cfg.ini или просто создатьconfig.pyи записывать туда переменные?

Для каждого из перечисленных вариантов есть библиотека на python, приведу примеры самых популярных форматов

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

Пишем генератор API тестов и данных для них

Reading time10 min
Views11K

Привет, Хабр. Меня зовут Дмитрий Гусаков. Я тимлид команды QA в компании Arenadata. Наша команда занимается тестированием компонентов Arenadata Enterprise Data Platform, в том числе тестированием оркестратора гибридного data-ландшафта Arenadata Cluster Manager. Каждый день мы пишем и актуализируем большое количество тестов для API. Поэтому сегодня я хочу обсудить тему автоматической генерации таких тестов и поделиться с сообществом нашими решениями и опытом.

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

C++ zero-cost abstractions на примере хеш-таблиц в ClickHouse. Доклад Яндекса

Reading time12 min
Views12K
Хеш-таблицы — это королевы структур данных. Нигде не сломано так много копий, как на оптимизации хеш-таблиц. В докладе я рассказал ещё об одной хеш-таблице, которая используется в ClickHouse. Вы увидите, что zero-cost abstractions в современном С++ оправдывают себя и как с помощью небольших трюков получить разнообразные структуры данных из общей кодовой базы. На основе общих строительных блоков можно построить быстроочищаемую хеш-таблицу, несколько видов LRU-кешей, lookup-таблицы без хешей, хеш-таблицы для строк и т. п. Я показал, как получить максимальную производительность на конкретных сценариях и не ошибиться при её тестировании. В моём докладе — самая мякотка низкоуровневых оптимизаций. В общем, то, что мы любим.

— Для начала мы обсудим, зачем нужны хеш-таблицы, где их можно использовать в базах данных и как сделать их оптимальными. Затем посмотрим бенчмарки различных хеш-таблиц в интернете и разбёремся, как делать их правильно. В конце посмотрим на C++-обертку над идеальной хеш-таблицей в ClickHouse.
Читать дальше →
Total votes 23: ↑20 and ↓3+29
Comments10

ClickHouse: очень быстро и очень удобно

Reading time21 min
Views254K


Виктор Тарнавский показывает, что оно работает. Перед вами расшифровка доклада Highload++ 2016.

Здравствуйте. Меня зовут Виктор Тарнавский. Я работаю в «Яндексе». Расскажу про очень быструю, очень отказоустойчивую и супермасштабируемую базу данных ClickHouse для аналитических задач, которую мы разработали.

Пару слов обо мне. Я Виктор, работаю в «Яндексе» и руковожу отделом, который занимается разработкой аналитических продуктов, таких как «Яндекс.Метрика» и «Яндекс.AppMetrica». Я думаю, многие из вас пользовались этими продуктами и знают их. Ну, и в прошлом, и по-прежнему пишу много кода, а раньше еще занимался разработкой железа.
Total votes 53: ↑47 and ↓6+41
Comments19

Information

Rating
Does not participate
Registered
Activity