Как стать автором
Обновить
0
0
Антон @Anton_Boroda

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

Отправить сообщение

История разработки The Light Remake. Часть 1

Время на прочтение11 мин
Количество просмотров13K


Приветствую, читатель! Меня зовут Сергей, я являюсь инди-разработчиком компьютерных игр. В моем портфолио имеется уже несколько инди-проектов, часть из которых была самостоятельно выпущена в Steam. Игра «Свет» или «The Light», вышедшая в 2012 году, была моей первой пробой пера, открывшей путь в мир игровой разработки. Проект распространялся бесплатно, но реакция публики и отзывы игроков подарили мне серьезную мотивацию для дальнейшей работы. «The Light» стал для меня чем-то вроде философской притчи о человечестве и его судьбе. Сюжет абстрактен и не преследует каких-то конкретных целей, это лишь возможность поразмышлять на обширную тему.

Поскольку до релиза в Steam оригинальная игра так и не добралась, я решил исправить это упущение и в июне 2019 года занялся масштабной переработкой проекта, дабы геймплейно и визуально он мог соответствовать своему времени и считаться полноценной игрой.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии18

Задачи и отмена в .Net — tips & tricks

Время на прочтение11 мин
Количество просмотров100K
С выходом .NET Framework 4.0 в состав BCL была добавлена библиотека Task Parallel Library (TPL), реализующая параллелизм на основе задач. В основе библиотеки лежат типы Task и унаследованный от него тип Task. Эти типы являются обёртками для асинхронных операций; они позволяют абстрагироваться от таких технических деталей, как, например, потоки и синхронизировать асинхронные операции друг с другом.

В этой же версии .NET Framework появился мини-framework для кооперативной отмены асинхронных операций. Состоит он из всего трёх типов:
  • CancellationTokenSource — создаёт маркёры отмены (свойство Token) и обрабатывает запросы на отмену операции (перегруженные методы Cancel/CancelAfter).
  • CancellationToken — маркёр отмены; позволяет несколькими способами отслеживать запросы на отмену операции: опросом свойства IsCancellationRequested, регистрацией callback-функции (через перегруженный метод Register), ожиданием на объекте синхронизации (свойство WaitHandle).
  • OperationCanceledException — исключение, выброс которого по соглашению означает, что запрос на отмену операции был обработан и операция должна считаться отменённой. Предпочтительный способ генерации исключения — вызов метода CancellationToken. ThrowIfCancellationRequested.

Механизм отмены через CancellationToken является стандартным для TPL — есть перегрузки методов, принимающих CancellationToken, исключения OperationCanceledException специальным образом обрабатываются и т.д. Однако, как и в любом другом API, есть свои тонкости, хитрости, best practices.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии5

Semantic Forms для MediaWiki

Время на прочтение10 мин
Количество просмотров18K
В прошлый раз я описал функционал плагина Semantic MediaWiki, позволяющего управлять структурированными данными в вашей системе и создавать на их основе различные представления. Ложкой дёгтя здесь является то, что пользователям приходится учить дополнительные элементы разметки.
Сегодня мы поговорим про расширение Semantic Forms, позволяющее сделать вики совсем не похожей на вики и привлечь к работе более широкий круг пользователей.



Напомню, что сердцем Semantic MediaWiki является механизм семантических свойств. Назначение семантического свойства странице хоть и похоже на простое создание вики-ссылки [[имя свойства::значение свойства | что выводить на экран]], но, всё-таки, это новый синтаксис. Вдобавок даже если наши пользователи будут настолько дисциплинированы, что прочитают и вникнут в руководство по созданию свойств, они вряд ли будут называть все термины единообразно.
На моей вики, посвященной историческим личностям половина людей будет описана свойством время рождения, другие участники опишут людей свойством год рождения, а третьи дата рождения. Теперь для того, чтобы получить список исторических личностей и вывести их даты рождения, мне нужно написать три запроса вместо одного:

{{#ask:[[Категория Историческая личность]] | ?Время рождения }}
{{#ask:[[Категория Историческая личность]] | ?Год рождения }}
{{#ask:[[Категория Историческая личность]] | ?Дата рождения }}

Для решения этих проблем применяют шаблоны и формы.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии4

Публикация десктоп-приложения в Windows Store c помощью Desktop Application Converter

Время на прочтение8 мин
Количество просмотров7.5K

Не так давно мы опубликовали разработанное нами корпоративное приложение для десктопов, которое дополняет функционал Skype for Business. Например, может «по-человечески» сохранять историю переписки, как это делают все «приличные» мессенджеры, умеет отправлять сообщения в оффлайн, позволяет упорядочить контакты и ещё много всего, чего не хватало в Skype for Business. И когда появилась возможность поделиться приложением с помощью Windows Store, мы решили этой возможностью воспользоваться. В статье мы расскажем, как это происходило и чего нам это стоило.

Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии3

Многопроцессный Firefox 44.b, оптимизация Electrolysis

Время на прочтение4 мин
Количество просмотров38K
Так уж сложилось, что Firefox использует однопроцессную модель, и реальность такова, что такой подход с учётом динамики развития сети и частичной связки с XUL вызывает, мягко говоря, много неудобств. Один процесс должен обрабатывать несколько потоков, что очень сильно сказывается на производительности браузера в целом. Отзывчивость Firefox оставляла желать лучшего, когда тот же Google Chrome прекрасно рендерил тяжёлые страницы, что никак не сказывалось на производительности других вкладок.

Такое положение вещей заставляло многих переходить на хром, а кто не хотел — искал пути решения в виде разного рода оптимизаций, которые по большому счёту из-за нелогичного подхода распределения потоков или банального желания настрочить что-то в блог просто усугубляли ситуацию. Теперь один процесс должен был не просто работать, а очень быстро работать! В конечном итоге и разработчики сами прекрасно понимали, что одно дело — мало памяти, другое — низкая скорость работы, которая в основном оправдана старыми связками с XUL. На деле: открываем в Firefox несколько вкладок сразу, скролим их и в момент загрузки видим, что все тормозит — ни о каком плавном серфинге речи быть не могло.
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии50

Factory Refurbished: покупаем электронику дешево, и с гарантией

Время на прочтение4 мин
Количество просмотров62K


В комментариях к одной из статей блога прозвучал вопрос о покупках восстановленной техники за рубежом. Спрашивали — отвечаем.
Читать дальше →
Всего голосов 34: ↑28 и ↓6+22
Комментарии32

It’s the future

Время на прочтение5 мин
Количество просмотров85K

Этот пост просто шутка и не пытается выставить инструменты, упомянутые здесь, в дурном свете. Я использую их постоянно, они великолепны, и я рекомендую их использовать. По мотивам It's the future @ CircleCI Blog


— Эй, я бы хотел научиться писать крутые веб-приложения. Слышал, у тебя есть опыт.


— Да, я как раз занимаюсь фронтендом, юзаю пару тулз.


— Круто. Я щас делаю простое приложение — обычный TODO-лист, используя HTML, CSS и JavaScript, и планирую заюзать JQuery. Это норм?


— Не-не-не. Это олдскул. Джиквери мёртв — никто не использует его теперь! Тебе нужен React. Это будущее.


— Окей, лады. А что это?


Читать дальше →
Всего голосов 178: ↑167 и ↓11+156
Комментарии287

Прокачка pointlight теней в Unity

Время на прочтение9 мин
Количество просмотров14K
image

Аналогов подобных теней для точечного источника света (Pointlight с эффектом размытия на расстоянии, имитирующий arealight) в компьютерных играх я почему-то до сих пор не встречал. Везде — либо полностью запечённые тени, либо «лампочки» вообще без теней, максимум — обыкновенная PCF-фильтрация. Хотя для направленного солнечного света уже давно применяются PCSS-тени (GTA5, например). В Unreal есть интересный алгоритм сродни рейтрейсингу, который рисует красивые arealight-тени, но только для статической геометрии (требуется генерация дополнительных объёмов). В Unity же всё совсем плохо — мягко фильтруется только солнечный свет, а «прожекторы» и «лампочки» в пролёте.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии22

Занимательный C#

Время на прочтение8 мин
Количество просмотров34K
Занимательный C#

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

Picture 1

Подробности
Всего голосов 41: ↑39 и ↓2+37
Комментарии37

Чистый код под флагом АОП и ненавистный #ПредупреждаюНедвижимостьИзменился

Время на прочтение5 мин
Количество просмотров7.9K
Поддавшись общей истерии на хабре,

(а именно «Предупреждаю Недвижимость Изменился» переводит Гуглекс всеми любимый «I Notify Property Changed») по поводу уведомлений об изменении. Я решил посмотреть на сколько далеко продвинулось человечество в изобретении велосипедов.
Читать дальше →
Всего голосов 18: ↑11 и ↓7+4
Комментарии7

Интервью без сучка и задоринки: как программисту успешно пройти собеседование

Время на прочтение14 мин
Количество просмотров57K
Пост подготовлен специально для корпоративного блога Wirex — компании, предлагающей удобное мобильное финансовое приложение для управления личными счетами. Изначально статья задумывалась как подготовительный материал, который автор отправляет своим кандидатам, но в итоге последний решил опубликовать его в открытом источнике, а мы, посчитав тему интересной, сделали перевод для вас, уважаемые читатели.

Тот факт, что вы являетесь хорошим программистом, играет поразительно малую роль при прохождении собеседования. Для того чтобы ваша работа была продуктивной, вам нужно уметь решать огромные, склонные разрастаться проблемы неделями и месяцами. Каждый вопрос на собеседовании, напротив, длится менее одного часа. Для того чтобы хорошо показать себя на интервью, вы должны знать, как быстро решать небольшие проблемы под давлением, при этом ясно излагая свои мысли. Это совершенно другое умение (в то же время я не говорю, что способность с легкостью решать задачи на собеседовании не имеет никакой связи с навыками программирования. Просто эта связь выражена куда слабее, чем считают многие компании, и именно другими факторами, отличными от специализированных умений, объясняется столь внушительное расхождение).
Читать дальше →
Всего голосов 31: ↑21 и ↓10+11
Комментарии20

[PF] Печать PDF под .NET, растровый подход

Время на прочтение8 мин
Количество просмотров14K

Под катом хочу рассказать про вывод на печать PDF фалов под .NET. С уклоном на печать из разных лотков принтера. Это бывает полезно, когда нужно распечатать документы, состоящие из разных типов бумаги разложенных по лоткам принтера.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии9

История про msdb размером в 42 Гб

Время на прочтение5 мин
Количество просмотров55K
Недавно выдалась минутка посмотреть почему старый тестовый сервер безбожно тормозил… К нему я не имел никакого отношения, но меня одолевал спортивный интерес разобраться, что с ним не так.

Первым делом открыл Resource Monitor и взглянул на общую нагрузку. Процесс sqlserv.exe нагружал ЦП под 100% и формировал большую дисковую очередь, которая была за 300… при том, что значение выше единицы уже считается проблемным.

При анализе дисковой активности заметил непрерывные IO операции в msdb:

D:\SQL_2012\SYSTEM\MSDBData.mdf
D:\SQL_2012\SYSTEM\MSDBLog.ldf

Посмотрел на размер msdb:

SELECT name, size = size * 8. / 1024, space_used = FILEPROPERTY(name, 'SpaceUsed') * 8. / 1024
FROM sys.database_files

и включил режим «рука-лицо»:

name         size           space_used
------------ -------------- ---------------
MSDBData     42626.000000   42410.374395
MSDBLog      459.125000     6.859375

Файл данных занимал 42 Гб… Взяв небольшую паузу я начал разбираться в чем причина такого нездорового объема msdb и как побороть проблемы с производительностью сервера.
Подробнее
Всего голосов 49: ↑48 и ↓1+47
Комментарии28

Запуск .Net Micro Framework 4.4 на STM32F4Discovery

Время на прочтение11 мин
Количество просмотров13K

.Net Micro Framework — технология, позволяющая писать приложения для микроконтроллеров используя всю мощь управляемого кода и Visual Studio. Она существует давно и сейчас переживает второе рождение. Вокруг нее сформирован open-source проект, который не так давно переехал на GitHub. Однако пока еще это не “коробочный” продукт. Работа с .Net Micro Framework требует определенных навыков. В прошлый раз я писал про то, как создать и запустить простое ”Hello world” приложение на эмуляторе для Windows. Сейчас речь пойдет о том, как поработать с .Net Micro Framework на настоящем “железе” — отладочной плате STM32F4Discovery.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии71

Обзор книги «Паттерны проектирования на платформе .NET»

Время на прочтение5 мин
Количество просмотров28K
Как известно, недавно была опубликована книга по паттернам проектирования за авторством Сергея Теплякова.

Дабы поддержать мною уважаемого нашего разработчика (сам Сергей, несмотря на переезд заграницу, всё ещё считает себя нашим — за пруфом идите к нему в блог), не пожалел денег и сразу же купил электронную версию. До этого я читал банду четырёх и Design Patterns Head First, поэтому, в принципе, есть с чем сравнить.
Книга занимает чуть более 300 страниц, что вполне можно осилить за неделю неторопливого чтения. Книга разбита на 4 части:
  1. Паттерны поведения
  2. Порождающие паттерны
  3. Структурные паттерны
  4. Принципы проектирования
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии9

Обзор C# библиотек для работы с PDF

Время на прочтение5 мин
Количество просмотров166K
topic image
На написание данной статьи меня подтолкнул топик HTML в PDF, правда по причине того, что он посвящен языку php, лично мне он был мало полезен, т.к. весь опыт работы с php у меня сводился в переводе нескольких скриптов на C#, поэтому я решил сделать небольшой обзор того, что доступно для работы с pdf по средствам языка C#.

Ко мне в список попало 7 библиотек, о которых я скажу несколько слов, а для самой популярной (судя по ответам на stackoverflow), я напишу, как с помощью неё сделать простейший документ. Сразу скажу, что это iTextSharp и работа с ней будет описана в конце статьи.
Читать дальше →
Всего голосов 87: ↑77 и ↓10+67
Комментарии24

(Перевод) Введение в разработку C++ в UE4

Время на прочтение11 мин
Количество просмотров177K
Часть 1. Введение. Создание класса и добавление свойств. Расширение класса С++ с помощью Blueprint.
Часть 2. Классы геймплея. Структуры. Отражение (reflection) в Unreal. Object/Actor итераторы. Менеджер памяти и сборщик мусора.
Часть 3. Префиксы в именах классов. Целочисленные типы. Типы контейнеров. Итераторы контейнеров. Цикл For-each, хеш-функции.
Часть 4. Бонусная. Unreal Engine 4 для Unity разработчиков.

image

Эта статья является переводом части документации по UE4. Оригинальную статью вы можете найти пройдя по это ссылке.
Далее
Всего голосов 44: ↑42 и ↓2+40
Комментарии8

Указатели, ссылки и массивы в C и C++: точки над i

Время на прочтение10 мин
Количество просмотров611K
В этом посте я постараюсь окончательно разобрать такие тонкие понятия в C и C++, как указатели, ссылки и массивы. В частности, я отвечу на вопрос, так являются массивы C указателями или нет.

Обозначения и предположения


  • Я буду предполагать, что читатель понимает, что, например, в C++ есть ссылки, а в C — нет, поэтому я не буду постоянно напоминать, о каком именно языке (C/C++ или именно C++) я сейчас говорю, читатель поймёт это из контекста;
  • Также, я предполагаю, что читатель уже знает C и C++ на базовом уровне и знает, к примеру, синтаксис объявления ссылки. В этом посте я буду заниматься именно дотошным разбором мелочей;
  • Буду обозначать типы так, как выглядело бы объявление переменной TYPE соответствующего типа. Например, тип «массив длины 2 int'ов» я буду обозначать как int TYPE[2];
  • Я буду предполагать, что мы в основном имеем дело с обычными типами данных, такими как int TYPE, int *TYPE и т. д., для которых операции =, &, * и другие не переопределены и обозначают обычные вещи;
  • «Объект» всегда будет означать «всё, что не ссылка», а не «экземпляр класса»;
  • Везде, за исключением специально оговоренных случаев, подразумеваются C89 и C++98.


Указатели и ссылки


Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):

int x;
int *y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указатель
int z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель

Читать дальше →
Всего голосов 70: ↑48 и ↓22+26
Комментарии73

Must-read книги за 2014 год по ИБ и программированию

Время на прочтение7 мин
Количество просмотров110K
Пока вся страна готовится к новому экономическому кризису, судорожно скупая всевозможные товары, продукты и недвижимость, мы предлагаем всем заняться саморазвитием, вложиться в себя. Ведь гречка с макаронами скоро будут съедены, но зато на новые харчи можно будет заработать, вложив время в самообразование. Сами понимаете, в непростые времена выгодно быть универсальным, неприхотливым и не болеющим. О последних двух качествах, возможно, поговорим отдельно, а сейчас обсудим ассортимент наиболее интересной литературы по информационной безопасности и программированию, опубликованной в 2014 году.

Безопасность


Тактика хакера: практическое руководство по тестированию на проникновение (The Hacker Playbook: Practical Guide To Penetration Testing)




Книга написана в стиле планирования футбольной игры. Здесь подробно и пошагово разобраны проблемы и трудности, с которыми сталкиваются специалисты по безопасности, тестируя системы защиты. В частности, рассматриваются атаки на различные типы сетей, обход антивирусов и взлом систем безопасности. Автор книги — Питер Ким, специалист по IT-безопасности с многолетним опытом, CEO компании Secure Planet.
Читать дальше →
Всего голосов 79: ↑60 и ↓19+41
Комментарии17

«Галоп пикселя — часть первая» — базовые понятия, этапы взросления, прикладные упражнения

Время на прочтение42 мин
Количество просмотров265K


«Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
«Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
«Галоп пикселя», часть III — Анимация (линк)
«Галоп пикселя», часть IV — Анимация света и тени (линк)
«Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)
«Галоп пикселя», часть VI — Анимация персонажей. Бег (линк)

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

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

Материал разделен на несколько публикаций в виду объема текста и изображений. Каждая статья имеет свою степень сложности, однако, все из них наглядны и могут быть использованы как руководство к действию.


Лопатить пиксели
Всего голосов 190: ↑185 и ↓5+180
Комментарии86

Информация

В рейтинге
Не участвует
Откуда
Львов, Львовская обл., Украина
Дата рождения
Зарегистрирован
Активность