Search
Write a publication
Pull to refresh
17
0
Георгий @ArXen42

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

Send message

Машина времени в git

Reading time5 min
Views196K
В последнее время мои коллеги начинают знакомство с git'ом. И один из интересующих их вопросов — как откатиться до определённой ревизии. В интернете можно найти набор команд, но хочется, чтобы было понимание каждой из них. Баловство с комадами git'а без понимания может привести к потере истории разработки.

В этой статье я хочу рассказать о командах git checkout и git reset с ключами --soft и --hard.
Читать дальше →

Опыт кастомного анализа c# кода

Reading time6 min
Views9.9K
Довольно давно я делился проблемой тестирования кода в финализаторе и недавно жаловался на падение теста (Как тестировать код финализатора (c#) и Как тестировать код финализатора (c#). Послесловие: тест все-таки упал).
В ходе обсуждения комрадом withkittens была высказана идея:
Финализатор (при правильной реализации IDisposable pattern) должен (should) вызывать Dispose(false). Этот факт можно тестировать статическим анализом. Соответственно, если Dispose(false) вызывает удаление файла (вы же написали тест?), то можно быть уверенным, что и финализатор тоже вызовет удаление файла, unit-тест излишен.

Мне эта идея показалась очень здравой, кроме того, иногда хочется контролировать исходный код более кастомно, чем дает встроенный анализ кода или решарпер.
Опыт реализации кастомных правил анализа кода под катом + «как ozcode помог в процессе исследования внешней библиотеки»
Читать дальше →

Использование текстуры детализации для получения высшего качества реализма (подробнее)

Reading time3 min
Views15K
Предлагаю читателям «Хабрахабра» перевод публикации «Using detail textures for extra realism close-up» из блога компании Unity.

Дополнительный материал к этой статье ссылка

Текстуры детализации (Detail Textures) на узоре текстуры, которые будут исчезать на поверхности, когда камера будет постепенно отдаляться. Это может быть использовано для имитации грязи, погодных условий или другой подобной детали на поверхности, не добавляя к визуализации (rendering) лишних расходов, когда камера находится слишком далеко, чтобы увидеть разницу.

Получение текстуры


Текстуры детализации (Detail Textures) на черно-белом изображении, которые используются для осветления или затемнения другой выбранной текстуры. Где пиксель имеет значение яркости от 0 до 127, изображение будет затемнено (0 обозначает максимальное затемнение), когда значение находится между 129 и 255, изображение будет освещено (255 означает максимальное освещение). Значение ровно 128 нейтральное и оставит часть изображения (с пикселями яркости 128) без изменений.

image
Читать дальше →

Пишем бота для MMORPG с ассемблером и дренейками. Часть 0

Reading time4 min
Views103K
Привет, %username%! Покопавшись в статьях хабра, я нашел несколько оных про написание ботов для MMORPG. Несомненно это очень интересные и познавательные статьи, но возможности в них весьма скудны. Что если, например нужно пофармить мобов или руду по заданному маршруту убивая агрессивных мобов, игроков и всех кто будет на Вас нападать по пути, выкрикивая им вслед непристойности, да что б еще и определить не смогли. В общем полная эмуляция среднестатистического MMORPG игрока. Написание макросов для AutoIt, симуляция кликов в окне, анализ пикселей под курсором — это совсем не наш вариант. Заинтриговал? Добро пожаловать под кат!
Грязные подробности

Качество сетей передачи данных. Транспорт

Reading time8 min
Views31K
image
В предыдущей статье были затронуты базовые метрики качества сетей и систем передачи данных. Также было обещано написать про то, как все работает изнутри. И намеренно не было упомянуто про качество среды передачи данных и ее характеристиках. Надеюсь, что новая статья даст ответы на эти вопросы.

Прошу под кат

Генерация текстур планет с помощью алгоритма Fault Formation

Reading time2 min
Views18K

Возможно, кто-то помнит замечательную олдскульную космическую игру Star Control 2. В свое время меня поразила огромная звездная карта с неизведанными планетами, которые предстояло исследовать на фоне разворачивающейся глобальной катастрофы. С тех пор как авторами были опубликованы исходные коды, игра была портирована под новым именем The Ur-Quan Masters на большинство современных платформ.

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

Использование skyboxes в Unity3d

Reading time2 min
Views40K
Предлагаю читателям «Хабрахабра» перевод публикации «Unity — Using Skyboxes» из блога компании Unity.

Дополнительные материалы к статье Skybox и Cubemap

Skybox является панорамной текстурой, которая находится за всеми объектами в сцене, что бы симулировать небо или большой город или любую другую перспективу на большом расстоянии (своего рода фон). Этот урок объясняет, как использовать skybox в Unity.

Что такое Skyboxes?


Skybox — панорамный вид разделенный на шесть текстур, представляющие шесть видимых направлений вдоль основных осей (вверх, вниз, влево, вправо, вперед и назад) (up, down, left, right, forward and backward). Если Skybox создан правильно, текстурные изображения будут как единое целое по краям, чтобы дать непрерывный окружающий образ, который можно рассматривать «изнутри» в любом направлении. Панорама оказывается позади всех остальных объектов в сцене и вращается в соответствии с текущей ориентации камеры (не путайте с положением камеры, которое всегда берется, чтобы быть в центре панорамы). Skybox таким образом, простой способ добавить реализма к сцене с минимальной нагрузкой на видеокарту.
Читать дальше →

Consulo: Code Coverage, Unity3D и прочие изменения

Reading time3 min
Views10K
Для тех кто пропустил мои посты:Consulo — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C# на текущий момент, и на этот сектор пока идет большой акцент), Java.

В этой мини-статье я поделюсь с вами с тем, что удалось сделать за последние 2 месяца.





Читать дальше →

Введение в компонентно-ориентированный подход к программированию

Reading time6 min
Views45K
Сам Unity Engine (далее Unity), как и многие другие игровые движки, наиболее приспособлен к компонентно-ориентированному программированию (далее КОП), так как Behavioral Pattern — один из базовых паттернов архитектуры движков, наряду с паттерном «Component» из классификации Decoupling Patterns. Потому именно компонент является базовой единицей для реализации бизнес-логики в Unity. В этой статье я расскажу о том, как применять КОП в Unity.
Почему стоит перейти от привычного ООП к КОП?

Реалистичное гравитационное линзование на Unity

Reading time4 min
Views28K
image
Эффект гравитационной линзы вызванный скоплением галактик RCS2 032727-132623

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

Читать дальше →

Философия программирования — трёхнаправленное программирование

Reading time11 min
Views105K
Программирование рассматривается как процесс создания компьютерных программ. Слово процесс в этом определении не лишнее. Обычно рассуждают в духе «посмотрите, какую замечательную структуру данных можно описать на данном языке программирования». Философия программирования подразумевает оглянуться по сторонам, да и в глубь копнуть.

Собственно разделение на кодирование, и создание алгоритмов это уже специфика, сначала идёт жизнь, то есть человек опирается на некую мысль вроде «напишу-ка я фреймворк с такими-то свойствами». И вот это начальное направление это вопрос философии. Проблема в том, что часто жена программиста лучше его самого знает, на философском уровне, что он делает и почему. Элементарные философские категории: мышление, сознание, обусловленность программисту неведомы. И это странно, если сравнить способность программиста мыслить, например, читая статьи по функциональному программированию или алгоритмам поиска, вперемешку со статьями видных русских или европейских философов, окажется, что собственно навык мышления у программистов развит не меньше, а то и больше. Вот только язык программиста очень богат пока он рассуждает о паттерн-матчинге и жалок и органичен когда ему надо выйти из своей песочницы, оторваться от IDE и файлового менеджера.
Читать дальше →

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

Reading time7 min
Views411K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →

Как сделать Online-логгирование с нуля

Reading time3 min
Views16K
Описанное ниже — это конструкция выходного дня. От идеи до реализации была затрачена пара вечеров. В описании представлен необходимый минимум для реализации системы сбора информации, с доступом к последней в режиме Online.
image
Читать дальше →
12 ...
10

Information

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