Pull to refresh
14
Karma
0
Rating
Алексей Павлов @lexxpavlov

Программист

  • Followers 5
  • Following 10
  • Posts
  • Comments

Как посчитать всё на свете одним SQL-запросом. Оконные функции PostgreSQL

PostgreSQL *SQL *

Я с удивлением обнаружил, что многие разработчики, даже давно использующие postgresql, не понимают оконные функции, считая их какой-то особой магией для избранных. Ну или в лучшем случае «копипастят» со StackOverflow выражения типа «row_number() OVER ()», не вдаваясь в детали. А ведь оконные функции — полезнейший функционал PostgreSQL.
Попробую по-простому объяснить, как можно их использовать.


Читать дальше →
Total votes 75: ↑73 and ↓2 +71
Views 420K
Comments 51

D&D-классы для разработчиков

ДомКлик corporate blog Programming *Personnel Management *IT career Reading room
Translation
Вам кажется, что разработка ПО похожа на большую и плохо структурированную RPG, хотя никто не признаёт этого на собеседованиях? Тогда эта классификация вам понравится.


Читать дальше →
Total votes 60: ↑55 and ↓5 +50
Views 19K
Comments 15

Хочу в геймдев: 27 ответов от 8 профи

Leader-ID corporate blog Game development *Personnel Management *IT career Game design *
Это материал для джунов, которые хотят устроиться в геймдев. Восемь директоров дают советы: с чего начать, как вести себя на собеседовании, как на собеседованиях оценивают кандидатов, что делать, если нет нормального портфолио, нужно ли высшее образование, есть ли стажировки и многое другое.


Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 32K
Comments 15

Бесплатные вебинары Skillbox: пишем игры на PHP, Unity и Unreal Engine

Skillbox corporate blog Unity3D *Unreal Engine *Studying in IT Development for AR and VR *
image

Делимся с вами подборкой вебинаров на тему разработки игр. Вы узнаете, как сделать простую консольную игру на PHP, 3D-арканоид на движке Unreal Engine 4, космическую аркаду и AR-приложение на Unity. Заходите под кат – будет интересно.
Total votes 17: ↑16 and ↓1 +15
Views 7.6K
Comments 0

Как НЕ стать геймдизайнером (Game Designer)

Game development *IT career Game design *

Геймдизайнерами не рождаются, геймдизайнерами становятся


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


Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Views 10K
Comments 15

Создание roguelike в Unity с нуля

Game development *C# *Unity3D *
Translation
image

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

Примечание: я не утверждаю, что это единственный способ создания roguelike в Unity. Он просто один из. Вероятно, не самый лучший и эффективный, я учился путём проб и ошибок. А некоторые вещи я буду изучать прямо в процессе создания туториала.

Будем считать, что вы знаете по крайней мере основы Unity, например, как создать префаб или скрипт, и тому подобное. Не ждите, что я буду учить вас, как создавать спрайтшиты, об этом есть множество прекрасных туториалов. Я буду делать упор не на изучение движка, а на то, как реализовать игру, которую мы будем создавать вместе. Если у вас возникнут трудности, то зайдите в одно из потрясающих сообществ в Discord и просите о помощи:

Unity Developer Community

Roguelikes

Итак, давайте приступим!

Этап 0 — планирование


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

Мы будем писать roguelike. В основном мы будем слушаться мудрых советов разработчика Cogmind Джоша Ге, приведённых здесь. Сходите по ссылке, прочитайте пост или посмотрите видео, а потом возвращайтесь.

Какова же цель этого туториала? Получить крепкую простую базовую roguelike, с которой потом можно будет экспериментировать. В ней должна быть генерация подземелий, движущийся по карте игрок, туман видимости, враги и предметы. Только самое необходимое. Итак, игрок должен иметь возможность спускаться вниз по лестницам на несколько этажей. допустим, на пять, повышать свой уровень, совершенствоваться, а в конце сражаться с боссом и побеждать его. Или умирать. Вот, собственно, и всё.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 18K
Comments 3

Сверхсовременные иммутабельные структуры данных

JUG Ru Group corporate blog Programming *C++ *Algorithms *
Годами эксперты в С++ рассуждают о семантике значений, иммутабельности и разделении ресурсов за счет коммуникации. О новом мире без мьютексов и гонок, без паттернов Command и Observer. На деле все не так просто. Главная проблема по-прежнему в наших структурах данных.



Иммутабельные структуры данных не меняют своих значений. Чтобы что-то с ними сделать, нужно создавать новые значения. Старые же значения остаются на прежнем месте, поэтому их можно без проблем и блокировок читать из разных потоков. В итоге ресурсы можно совместно использовать более рационально и упорядоченно, ведь старые и новые значения могут использовать общие данные. Благодаря этому их куда быстрей сравнить между собой и компактно хранить историю операций с возможностью отмены. Все это отлично ложится на многопоточные и интерактивные системы: такие структуры данных упрощают архитектуру десктопных приложений и позволяют сервисам лучше масштабироваться. Иммутабельные структуры — секрет успеха Clojure и Scala, и даже сообщество JavaScript теперь пользуется их преимуществами, ведь у них есть библиотека Immutable.js, написанная в недрах компании Facebook.

Под катом — видео и перевод доклада Juan Puente с конференции C++ Russia 2019 Moscow. Хуан рассказывает про Immer — библиотеку иммутабельных структур для C++. В посте:

  • архитектурные преимущества иммутабельности;
  • создание эффективного персистентного векторного типа на основе RRB-деревьев;
  • разбор архитектуры на примере простого текстового редактора.

Total votes 84: ↑84 and ↓0 +84
Views 28K
Comments 57

Барьеры памяти и неблокирующая синхронизация в .NET

.NET *
Sandbox

Введение


В этой статье я хочу рассказать об использовании некоторых конструкций, применяющихся для осуществления неблокирующей синхронизации. Речь пойдёт о ключевом слове volatile, функциях VolatileRead, VolatileWrite и MemoryBarrier. Мы рассмотрим, какие проблемы вынуждают нас воспользоваться этими языковыми конструкциями и варианты их решения. При обсуждении барьеров памяти вкратце рассмотрим модель памяти .NET.
Читать дальше →
Total votes 63: ↑62 and ↓1 +61
Views 47K
Comments 18

Простой зомби-шутер на Unity

OTUS corporate blog Game development *Unity3D *
🔥 Technotext 2020
Tutorial
Всем привет! Скоро стартуют занятия в первой группе курса «Разработчик игр на Unity». В преддверии начала курса прошел открытый урок по созданию зомби-шутера на Unity. Вебинар провёл Николай Запольнов, Senior Game Developer из Rovio Entertainment Corporation. Он также написал подробную статью, которую мы и предлагаем вашему вниманию.



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



Дисклеймер №1: данная статья рассчитана на новичков. Если вы собаку съели в Unity, то она может показаться вам скучной.

Дисклеймер №2: для прочтения этой статьи вам потребуется хотя-бы базовое знание программирования. Как минимум, слова «класс» и «метод» не должны вас пугать.

Осторожно, под катом трафик!
Читать дальше →
Total votes 35: ↑35 and ↓0 +35
Views 37K
Comments 12

VFX-художник в геймдеве: особенности, карьера, развитие

Plarium corporate blog IT career IT-companies
Чем занимаются художники по эффектам в игровой индустрии? Какие навыки нужно прокачивать и где искать вдохновение? И наконец, самое главное — как попасть в профессию (спойлер: это проще, чем кажется)? На эти и другие вопросы ответил Антон Грицай, Sub Lead VFX Artist краснодарской студии Plarium.


Читать дальше →
Total votes 7: ↑5 and ↓2 +3
Views 28K
Comments 1

Генерация подземелий и пещер для моей игры

Game development *Algorithms *Game design *
Translation

На этой неделе я начал работать над новой темой: генерацией подземелий и пещер. Я использовал разбиение пространства для генерации комнат, алгоритмы генерации лабиринтов для генерации коридоров и клеточные автоматы для придания пещерам более естествненного внешнего вида.

Разбиение пространства


Существует множество способов генерации комнат для подземелья (случайное размещение, генерация на основе агентов, с использованием separation steering behavior или физического движка, и т.д.). Но мой любимый метод — это разбиение пространства, потому что оно легко контролируется и расширяется.

Способов разбиения пространства тоже очень много: разделение на сетки, двоичное разбиение пространства, разбиение пространства деревом квадрантов, диаграммы Вороного и т.д. Я решил использовать двоичное разбиение пространства, потому что оно хорошо подходит для генерации прямоугольных комнат. Этот метод получил популярность благодаря статье на RogueBasin.

Единственная сложность этого алгоритма — выбор позиции разделения. Если мы не наложим ограничение на позицию разделения, то будем получать странные разбиения пространства:


Такого поведения можно избежать несколькими способами. Один из них — ограничить позицию разделения двумя соотношениями длин сторон, например, в интервале от 30% до 70% или от 40% до 60%. Другой способ — использовать вместо равномерного распределения нормальное или биномиальное, благодаря этому повысится вероятность разделения по центру стороны, а не по краям. Эти способы устраняют проблему, но сложно понять, как конкретно параметры влияют на окончательный результат.
Читать дальше →
Total votes 67: ↑65 and ↓2 +63
Views 22K
Comments 22

.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 2

System administration *.NET *ASP *C# *
Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.

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

Содержание



Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views 30K
Comments 5

.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1

System administration *.NET *ASP *C# *
Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.
Вторая часть доступна здесь

Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу между несколькими выполняющими ее единицами была и до появления компьютеров. С их появлением такая необходимость стала очень ощутимой. Сейчас, в 2019, набирая эту статью на ноутбуке с 8 ядерным процессором Intel Core, на котором параллельно этому работает не одна сотня процессов, а потоков и того больше. Рядом, лежит уже немного потрепанный, купленный пару лет назад телефон, у него на борту 8 ядерный процессор. На тематических ресурсах полно статей и видео, где их авторы восхищаются флагманскими смартфонами этого года куда ставят 16ти-ядерные процессоры. MS Azure предоставляет менее чем за 20$/час виртуальную машину со 128 ядерным процессором и 2 TB RAM. К сожалению невозможно извлечь максимум и обуздать эту мощь не умея управлять взаимодействием потоков.
Читать дальше →
Total votes 34: ↑34 and ↓0 +34
Views 41K
Comments 5

PHP-Дайджест № 159 (17 июня – 1 июля 2019)

Website development *PHP *Symfony *Yii *Laravel *

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 alpha 2, BeerPHP, обзор свежих RFC из PHP Internals, включая Strict operators directive, порция полезных инструментов, видео и многое другое.

Приятного чтения!


Читать дальше →
Total votes 62: ↑59 and ↓3 +56
Views 15K
Comments 7

Пишем модель угроз

Информационный центр corporate blog Information Security *Legislation in IT
Tutorial


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

Читать дальше →
Total votes 27: ↑26 and ↓1 +25
Views 121K
Comments 8

18 хитростей для работы с Visual Studio

Microsoft corporate blog Programming *Visual Studio *
Translation
Независимо от того, являетесь ли вы новичком или же используете Visual Studio уже в течение многих лет, есть множество советов и хитростей, которые помогут вам стать более продуктивным. Некоторое время мы делились советами в Twitter, используя хештег #vstip, а сегодня собрали подборку лучших из них на сегодняшний день.

Отладчик


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

image

Поддерживается начиная с Visual Studio 2005

Reattach to process (Shift+Alt+P) чрезвычайно полезная функция, которая помогает снова и снова присоединяться к одному и тому же процессу.

image

Поддерживается начиная с Visual Studio 2017 v15.8

Синяя точка на поле указывает на переключение потоков при выполнении отладки.

image

Поддерживается начиная с Visual Studio 2013

Продолжение под катом!
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Views 37K
Comments 8

Workflow 3D-художника. Как не утонуть в тонне информации. Часть 1

Working with 3D-graphics *Graphic design *Game design *Design
Sandbox
Всем привет, Хабр сообщество! Хочу сегодня рассказать Вам о workflow 3D-художников, как в это вникнуть и остаться со стабильной нервной системой. Статья нацелена на новичков в данной области, опытные акулы могут предаться ностальгии, вспомнить, как все начиналось.
Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Views 24K
Comments 11

Эволюция одного алгоритма

.NET *Algorithms *C# *

Некоторое время назад мой коллега попросил помочь ему с одной проблемой. Проблему я ему решил, но кроме того, мне показалось, что на решении этой проблемы можно объяснить несколько алгоритмов и приёмов программирования. А также показать ускорение времени выполнения алгоритма с 25 сек до 40 мс.

Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Views 7.6K
Comments 47

Память: LOH и Chunked Lists

.NET *
Управляемая память в .Net поделена на стек и несколько хипов. Самые важные из хипов – это обычная (эфемерная) куча и LOH. Эфемерная куча – это то место, где живут все обычные объекты. LOH – это то место где живут большие (больше 85000 байт) объекты.

LOH обладает некоторыми особенностями:
  • Объекты в LOH никогда не перемещаются
  • LOH только растет и никогда не уменьшается (т.е. если объект собран сборщиком мусора, размер LOH все равно остается неизменным)
  • Хип LOH освобождается только тогда, когда LOH полностью пуст

Из этих двух особенностей LOH происходят два важных следствия, про которые часто забывают:
  • Память в LOH может оказаться фрагментированной. Т.е. происходит то, с чем так боролись в unmanaged мире: в какой-то момент у вас может быть 10Mb свободной памяти, но вы не сможете выделить память под объект размером 1Mb
  • Если вы однажды выделили память под большой объект, а потом используете только маленькие, то вы фактически лишаете себя большого куска памяти. При чем, если у вас в LOH был список или хэш-таблица размером N, а вы добавили в него один элемент, то список реаллоцируется и растет в два раза, сответственно размер LOH составит как минимум 3*N (N – исходные данные, 2N – копия данных и резерв под новый размер). Следующий рост потребует в LOH непрерывный кусок памяти размером в 4*N, а так как такого куска в LOH у нас нет (есть только N), его придется позаимствовать из адресного пространства процесса. В итоге размер LOH вырастет до 7*N, и так далее.


Если вспомнить, что LOH аллоцируется кусками по 16Mb, то все происходящее покажется еще более разрушительными. С первым следствием можно бороться аккуратно переиспользуя объекты. Со вторым — не используя большие объекты. Получается как-то не очень, особенно если с большими коллекциями работать все-таки хочется. Посмотрим, что как можно решить эту проблему.
Читать дальше →
Total votes 58: ↑44 and ↓14 +30
Views 8.5K
Comments 88

Как создать игру, если ты ни разу не художник

Java *Game development *Development for Android *Kotlin *
Sandbox

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

И не надо…
Читать дальше →
Total votes 107: ↑106 and ↓1 +105
Views 37K
Comments 71

Information

Rating
Does not participate
Location
Саратов, Саратовская обл., Россия
Date of birth
Registered
Activity