Pull to refresh
16
12
Artem Ukrainskiy @Ukrainskiy

Пользователь

Send message

Моделируем флюиды, огонь и дым в режиме реального времени

Reading time15 min
Views4.6K

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

Исходный код к этой статье выложен на GitHub.

Огонь как явление очень интересен с точки зрения компьютерной графики. Раньше огонь было принято имитировать. Например, в фильме «Властелин колец» Питера Джексона для изображения огня использовались спрайты с огромным количеством дыма (на тот момент симуляция флюидов обходилась слишком дорого, даже при бюджете блокбастера). Когда требовалось моделировать огонь в режиме реального времени, например, в видеоиграх, использовались почти исключительно нефизические подходы.

Читать далее
Total votes 32: ↑30 and ↓2+38
Comments4

Геймдев, про который мы забыли: как работали 2D-игры на кнопочных телефонах нулевых

Level of difficultyMedium
Reading time11 min
Views15K
image

Друзья! А вы помните, какими были мобильные игры в 2000-х годах? Помните, как разработчики умудрялись уместить целые миры в устройство с небольшим дисплеем, аппаратной клавиатурой, весьма слабым железом и парой сотен килобайт памяти? Но задумывались ли вы, как в своё время работали эти сами игры «под капотом»? В сегодняшней статье-ретроспективе предлагаю вспомнить мобильный геймдев нулевых и узнать, как же работали 2D Java-игры, какие API были доступны и что из себя представлял средний телефон тех лет! Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 67: ↑64 and ↓3+76
Comments62

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

Level of difficultyMedium
Reading time17 min
Views20K

В мире видеоигр игровая физика играет важную роль, определяя реалистичность и взаимодействие игрового мира с игроком. Что же происходит под капотом? Какие алгоритмы и подходы используются в современных движках? И что же значит «застрять в текстурах»? (спойлер: чушь полнейшая)

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

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

PHP/FI 1. Personal Home Page Tools/Forms Interpreter

Level of difficultyMedium
Reading time17 min
Views4.5K

История зарождения PHP

История PHP начинается не с полноценного языка программирования, а с набора CGI-скриптов на C, известного как PHP/FI 1. В этой статье мы возвращаемся к истокам PHP, рассматривая его первую версию, её компиляцию и функциональность.

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

Асинхронный веб: WebSocket, Server-Sent Events, Long Polling и Short Polling

Level of difficultyMedium
Reading time13 min
Views12K

Веб-разработка часто требует реализации механизмов обновления контента на странице в реальном времени. Существуют различные сценарии, где это необходимо, например, отображение прогресса выполнения тяжелых задач на бекенде, обновление каких-либо часто меняющихся данных, будь то курсы валют или мониторинг какой-то активности, чаты, различные уведомления. Эти сценарии объединяет одна общая особенность: источник события необходимости обновления данных находится не на клиентской стороне, поэтому мы хотим получать события с бекенда. В данной статье мы рассмотрим четыре популярных подхода к реализации этой функциональности: WebSocket, Server-Sent Events (SSE), Long Polling и Short Polling.
Мы проанализируем каждый метод, выявим их плюсы, минусы и сложность реализации.

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

Книга: «C++20 для программистов»

Reading time20 min
Views9.3K
image Привет, Хаброжители!

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

200+ практических примеров реального исходного кода позволят быстро овладеть идиомами современного С++, используя популярные компиляторы: Visual C++®, GNU® g++, Apple® Xcode® и LLVM®/Clang. Знание базы позволит перейти к контейнерам стандартной библиотеки С++ array и vector; функциональному программированию с диапазонами и представлениями C++20; строкам, файлам и регулярным выражениям; объектно-ориентированному программированию с классами, наследованием, динамическим и статическим полиморфизмом; перегрузке операторов, семантике копирования и перемещения, RAII и умным указателям; исключениям и ожидаемым в С++23 контрактам; контейнерам, итераторам и алгоритмам стандартной библиотеки; шаблонам, концептам С++20 и метапрограммированию; модулям С++ 20 и технологии разработки больших программ; конкурентности, параллелизму, параллельным алгоритмам стандартной библиотеки С++17 и С++20 и корутинам С++20.
Читать дальше →
Total votes 7: ↑7 and ↓0+12
Comments17

Разработчик с мозгом груга

Reading time14 min
Views89K

Введение


это сборник мыслей о разработке программ собранный разработчиком с мозгом груга

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

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

разработчиков с большим мозгом много, некоторым страница не понравится, скривят кислая рожа

Ещё больше-больше ДУМАЮТ, что они разработчики с большим мозгом и им она тоже не понравится

(груг раньше думал груг с большим мозгом, но потом всё понял)

это ладно!

груг надеется, что тебе понравится читать и может ты научишься на много-много ошибка груг совершил за длинную жизнь программиста
Читать дальше →
Total votes 223: ↑197 and ↓26+209
Comments81

Алгоритм пересечения полигонов

Reading time20 min
Views9K

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

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

Шардирование (sharding). Эпизод 1: Начало и шардирование по идентификатору

Level of difficultyMedium
Reading time11 min
Views7.5K

Divide et impera (разделяй и властвуй) – древний принцип для управления чем-то большим и сложным.

Многие из нас программируют. Многие из нас делают системы, сложные системы. Но некоторым повезло работать в ситуации, когда объёмы по-настоящему огромны и требования кажутся невыполнимыми. Шардировние – один из излюбленных счастливчиками, которых зовут приключения, приемов.

Что-нибудь разбить на кусочки – это круто! Переходите на сторону шардирования у нас есть печеньки!

За кусочками!!!
Total votes 23: ↑23 and ↓0+23
Comments8

Самое понятное объяснение Специальной теории относительности

Level of difficultyMedium
Reading time13 min
Views117K

Специальная теория относительности - удивительная теория, которая опровергла многие представления о мире, в которых человечество не сомневалось всю историю своего существования.

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

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

Для иллюстраций я написал интерактивный визуализатор СТО, работающий в браузере. Ссылка на него и исходники проекта в конце статьи.

Читать далее
Total votes 385: ↑385 and ↓0+383
Comments391

Хочешь хорошую зарплату — не ленись развиваться и получать фундаментальные знания

Level of difficultyEasy
Reading time5 min
Views28K

Привет всем! Я Анжелика Максимова, ведущий инженер из РСХБ‑Интех. 10–11 февраля, я выступала на ИТ‑конференции «Pro IT Fest» в Санкт‑Петербурге. На мероприятии мы с коллегами из разных компаний обсуждали боли на тему фундаментальных знаний и заметили удивительную закономерность. Перед нашим выступлением была секция, посвященная заработной плате. Зал был настолько полон, что не было возможности даже открыть дверь, а на секции про знания народу было меньше.

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

Читать далее
Total votes 35: ↑19 and ↓16+11
Comments77

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

Level of difficultyMedium
Reading time13 min
Views6.6K


Всем привет, меня зовут Сергей Петренко, я программист в Tarantool. Сегодня мы посмотрим, с какими трудностями сталкивается клиент, когда вместо того чтобы общаться с системой, расположенной на одном инстансе, начинает общаться с распределенной системой. И разумеется, поговорим о том, как эти трудности преодолеть. Я расскажу, что такое линеаризуемость, как мы ее реализуем в Tarantool и как это делают другие СУБД. В завершение мы поговорим о накладных расходах от линеаризуемости.
Читать дальше →
Total votes 50: ↑49 and ↓1+59
Comments3

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов

Level of difficultyMedium
Reading time23 min
Views19K
image

Если сейчас приехать в пункт приема металлолома, то можно обнаружить просто огромные кучи различных телефонов и прочих электронных «отходов», которые стоят под открытым небом и ждут, когда придёт их черёд окончательного разложения. Однако при ближайшем рассмотрении выясняется, что многие девайсы оказываются полностью рабочими даже после недельного лежания под палящим солнцем и проливными дождями, а сдали их в чермет по причинам «не нужен, надоел, купил новый» и т. п. Я не считаю это правильным, ведь даже в простые кнопочные звонилки имеется возможность вдохнуть новую жизнь, если знать один интересный, но малоизвестный факт: для них можно писать нативные приложения на C и использовать железо телефона в своих целях. А это, на минуточку, как минимум: дисплей с подсветкой, вибромотор, динамик, клавиатура и GSM-радиомодуль с возможностью выхода в сеть. Сегодня мы с вами: узнаем, на каких аппаратных платформах работают китайские телефоны, какие существуют программные платформы и где взять для них SDK, а в практической части мы напишем 2D-игру с нуля, которая будет работать на многих китайских кнопочниках. Интересно? Тогда жду вас под катом!
Читать дальше →
Total votes 93: ↑91 and ↓2+115
Comments86

Люди не понимают ООП

Level of difficultyMedium
Reading time15 min
Views118K

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Total votes 126: ↑119 and ↓7+140
Comments461

Сто паттернов для разработки корпоративных программ. Часть первая

Level of difficultyMedium
Reading time27 min
Views18K

В этой статье рассмотрены все паттерны проектирования из "Банды четырёх" с примерами на языке программирования C#. Для самых терпеливых имеются дополнительные паттерны.

Это первая статья из серии "Сто паттернов для разработки корпоративных программ". Следующие статьи будут посвящены паттернам из книг Мартина Фаулера и Роберта Нистрема.

Читать далее
Total votes 15: ↑9 and ↓6+6
Comments20

Разработка расширения для PHP на C++. Хуки встроенных функций и методов

Level of difficultyMedium
Reading time18 min
Views3.9K

PHP - это мощный и широко используемый язык программирования для веб-разработки. Однако, иногда требуется расширение функциональности или модификация стандартного поведения PHP с использованием более низкоуровневых языков, таких как C++. В этой статье мы рассмотрим, как создать расширение для PHP на C++ на примере разработки функциональности, позволяющей перехватывать вызовы встроенных функций и методов классов в php.

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

Как загружается процессор Intel x86

Level of difficultyMedium
Reading time9 min
Views21K
image

Когда мы включаем компьютер, он успевает совершить несколько этапов работы ещё до того, как загрузится операционная система. В этом посте будет рассмотрено, как загружается типичный процессор с архитектурой x86. Это очень сложный и многоступенчатый процесс. Здесь его структура будет представлена только в самом общем виде. От загрузочной прошивки зависит, каким именно путём процессор придёт к тому состоянию, в котором сможет загрузить операционную систему. Мы проследим этот процесс на примере опенсорсной загрузочной прошивки coreboot.
Читать дальше →
Total votes 30: ↑28 and ↓2+40
Comments21

Что для меня значит быть программистом

Reading time13 min
Views49K

Как-то мне написали с Хабра и сказали: Саня, хочешь написать статью про программистов?

Разумеется, я отнёсся к этому скептически. Ладно там девопсины или вайтхэты какие - почитать про них было бы интересно, но вот жизнь программиста... Я сразу вспомнил эти мемы как на КДПВ, которые на самом деле не мемы, а правда.

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

Чтобы получать 300кк/c, нужно всего лишь..
Total votes 158: ↑143 and ↓15+149
Comments71

Information

Rating
538-th
Registered
Activity