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

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

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

Что если в играх использовать видеокарточку для физики, а не для графики

Время на прочтение5 мин
Количество просмотров79K
Хочу рассказать сообществу о проведённом мной эксперименте.

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

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

Или те же гоночки: до чего приятней на полной скорости сшибать людей, рекламные щиты и помойки, чтобы разлетались во все стороны, вместо того, чтобы мгновенно останавливаться, врезаясь в мёртво врощенный в землю столб.

Или ещё замечательный пример — Kerbal Space Program. Там физика уже является непосредственым источником геймплея.

Или, например, жанр 2д артиллерии. Часть его очарования базируется на уничтожаемой, динамичной земле. Но до чего он был бы лучше, если б земля не просто линейно осыпалась, а вела себя реалистично, разлетаясь от взрывов кусками.

Я давно мечтал сделать именно такой, до предела физически реалистичный римейк Scorched Earth. Но все мои эксперименты с моделированием физических систем упирались в неумолимо медленные процессоры. Тысяча-две частиц были пределом для real-time симуляции.

Но недавнее моё «открытие» изменило ситуацию.
Всего голосов 157: ↑146 и ↓11+135
Комментарии217

Восстание машин: Как роботы захватили бухгалтерию

Время на прочтение5 мин
Количество просмотров21K
Кнопочные войны в самом разгаре, роботы продолжают наступать, машины обучаются в разы быстрее людей, а вот Андрей, владелец одной московской кофейни, становится всё больше счастлив… В этот пятничный предпраздничный день мы решили поделиться с вами историей Кнопки, которая в прошлом году создала 42 робота для спасения бухгалтеров от рутинной работы, а сейчас занимается разитием искусственного бухгалтерского интеллекта.


Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии65

Отправка электронной почты в формате HTML

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

Введение


Почти в каждом проекте приходится думать об отправке писем по электронной почте. Основными требованиями при этом являются, помимо надежности доставки, привлекательность и удобство электронных писем.


Основные нюансы при формировании таких писем:


  • Все стили должны встраиваться (inline) в виде атрибута style для конкретного HTML-элемента.
  • Все изображения должны встраиваться, либо как отдельные вложения в в письме, либо в виде base64-кодированных данных (второе банально удобнее).
  • Письмо должно поддерживать DKIM (настройка мэйлера), а домен отправителя — содержать SPF-запись.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии22

Что нам стоит сервис email-маркетинга построить? Взгляд изнутри, часть вторая

Время на прочтение11 мин
Количество просмотров11K
Насколько сложно построить полноценный сервис email-маркетинга? Что для этого нужно предусмотреть? Какие подводные камни могут встретиться на пути пытливых умов разработчиков?

image

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

Сразу оговорюсь, что в статье рассмотрена только техническая сторона вопроса.
Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии11

Система рекомендаций интернет магазина на основе методов машинного обучения в Compute Engine (Google Cloud Platform)

Время на прочтение16 мин
Количество просмотров15K
С помощью сервисов Google Cloud Platform можно создать эффективную масштабируемую систему рекомендаций для интернет-магазина.

На рынке интернет-торговли сложилась интересная ситуация. Хотя общий денежный поток вырос, увеличилось и количество продавцов. Это привело к тому, что доля каждого магазина уменьшилась, а конкуренция между становится все напряженнее. Один из способов увеличить средний размер покупки (а значит, и прибыль) – предлагать покупателям дополнительные товары, которые могут их заинтересовать.

Из этой статьи вы узнаете, как на базе Cloud Platform настроить среду для поддержки базовой системы рекомендаций, которую со временем можно будет доработать и расширить.

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


Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии0

Как мы анализируем уязвимости с помощью нейронных сетей и нечеткой логики

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


Изображение: Daniel Friedman, Flickr

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

Для решения одной из таких задач — разбора уязвимостей в ходе тестов конкурентного анализа, мы разработали собственный универсальный классификатор. О том, как работает этот инструмент, и каких результатов позволяет добиваться, и пойдет речь в нашем сегодняшнем материале.
Всего голосов 35: ↑28 и ↓7+21
Комментарии3

Теоретические основы сплайн-интерполяции или почему IQ тесты не имеют решения

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

Доброго времени, Хабр!

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

Начну с небольшой вводной. Будучи студентом 4-го, на тот момент, курса бакалавриата, я изучал курс «Компьютерная графика». Много там было разных интересных (и не очень) заданий, но одно прямо особо запало мне в душу: интерполяция кубическими сплайнами с заданными первыми производными на концах интервала. Пользователь должен был задавать значения первых производных, а программа — считать и выводить на экран интерполяционную кривую. Особенность и основная сложность задания заключена в том, что задаются именно первые производные, а не вторые, как в классической постановке сплайн-интерполяции.
Как я ее решал, и к чему оно в итоге пришло, я как раз и изложу в этой статье. И да, если по описанию задачи вы не поняли ни в чем ее смысл, ни в чем сложность, не переживайте, все это я также постараюсь раскрыть. Итак, поехали.

А, нет, погодите один момент. Вот вам два числовых ряда:
a) 2, 4, 6, 8, ?
b) 1, 3, ?, 7, 9

Какие числа должны стоять на месте вопросов и почему? Вы действительно уверены в своем ответе?
Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии64

Эффективная многопоточность в Python

Время на прочтение7 мин
Количество просмотров77K
Хочу поделиться простым рецептом, как можно эффективно выполнять большое число http-запросов и других задач ввода-вывода из обычного Питона. Самое правильное, что можно было бы сделать — использовать асинхронные фреймворки вроде Торнадо или gevent. Но иногда этот вариант не подходит, потому что встроить event loop в уже существующий проект проблематично.

В моем случае уже существовало Django-приложение, из которого примерно раз в месяц нужно было выгрузить немного очень мелких файлов на AWS s3. Шло время, количество файлов стало приближаться к 50 тысячам, и выгружать их по очереди стало утомительным. Как известно, s3 не поддерживает множественное обновление за один PUT-запрос, а установленная опытным путем максимальная скорость запросов с сервера ec2 в том же датацентре не превышает 17 в секунду (что очень не мало, кстати). Таким образом, время обновления для 50 тысяч файлов стало приближаться к одному часу.

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

Получается, всего-то нужен пул потоков, который будет выполнять запросы. К счастью, такой пул уже написан. Начиная с версии 3.2 для унификации всей асинхронной работы в Питоне появилась библиотека concurrent.futures. Для второй версии Питона есть бекпорт под именем futures. Код до безобразия прост:

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(concurrency) as executor:
    for _ in executor.map(upload, queryset):
        pass

Здесь concurrency — число рабочих потоков, upload — функция, выполняющую саму задачу, queryset — итератор объектов, которые по одному будут передаваться в задачу. Уже этот код при concurrency в 150 смог пропихнуть на сервера Амазона ≈450 запросов в секунду.
Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии12

Mahou — волшебный переключатель раскладок

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

Как я создал первую функцию


Все началось с того что я захотел программировать на C# (до создания этой программы у меня было почти что никаких знаний о C#), и была одна программа которая не работала так как я хотел (Punto Switcher) долго-долго я искал к ней альтернативы и ненадолго остановился на dotSwitcher нравилась она мне… Но через некоторое время я решил что ей не хватает функционала и решил посмотреть исходный код, кое-где кое-как я разобрался как все работает, но больше всего не понимал одну вещь — WinAPI, и начал я искать информацию по функциям используемых в dotSwitcher и понемногу я начинал запоминать и понимать смысл всего этого волшебства (так мне тогда казалось).

Читать дальше →
Всего голосов 59: ↑49 и ↓10+39
Комментарии171

Cross-domain «ajax» — простое решение

Время на прочтение7 мин
Количество просмотров200K
В очередном проекте я столкнулся с необходимостью активно работать с кросс доменными запросами на ajax, тема, как я вижу на хабре особо не поднималась и не освещалась, вот и решил поделиться с читателями свои опытом.
Читать статью
Всего голосов 123: ↑107 и ↓16+91
Комментарии73

One Core API чтоб править Windows

Время на прочтение1 мин
Количество просмотров31K
                      "Если Microsoft не обеспечивает совместимость — 
                      сообщество обеспечивает совместимость".
                                                                     Aceler



Поздравляем хабражителей с Рождеством! И у нас есть праздничный сюрприз для вас!

Представляем вашему вниманию проект One Core API — слой совместимости с открытым исходным кодом для Windows XP/2003, который позволяет запускать на этих системах программы для более поздних ОС. По сути это враппер функций NT6. Путем дополнительных ухищрений обеспечивается поддержка DirectX 10. One Core API создан на основе исходников Wine и ReactOS, но его разработкой занимается другая команда.

Всех желающих приглашаем присоединится к разработке: github.com/Skulltrail192/One-Core-Api
под катом - демонстрация возможностей
Всего голосов 54: ↑48 и ↓6+42
Комментарии90

Пишем простую программу захвата скриншотов

Время на прочтение15 мин
Количество просмотров46K
Существует множества различных программ для захвата изображений с экрана, их редактирования «прямо на экране» и загрузки на различные сервисы. Это всё хорошо, но большинство программ привязаны к определённым сервисам и не дают возможности загружать куда-либо ещё. В голове давно уже крутилась мысль создать свой простенький сервис загрузки картинок под свои нужды. И я хочу поделиться историей разработки данной программы.

Не долго думая и имея под рукой Visual Studio 2015 конечно же создал новый C# проект т.к. это очень удобно и я уже делал ранее небольшие C# программы.
Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии40

Файловая система, дешево и быстро

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

Разработчикам часто приходится иметь дело с файлами, представляющими из себя древовидную структуру: XML, JSON, YAML, всякого рода языки разметки вроде Markdown или Org-mode. Облегчая в общем и целом нашу жизнь, такие файлы имеют склонность к бесконтрольному росту, в какой-то момент из решения превращаясь в проблему.


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


Но существует и альтернатива, о которой — ниже.

Читать дальше →
Всего голосов 53: ↑51 и ↓2+49
Комментарии50

Интернет-эквайринг «для чайников»

Время на прочтение13 мин
Количество просмотров268K
Доброго времени суток, хабравчане!

Этой статьей я хочу пролить свет на интернет-эквайринг в целом, рассказать с чем его едят.
Цель статьи: для общего развития.

Электронная коммерция – это сфера экономики, которая включает в себя все финансовые и торговые транзакции, осуществляемые при помощи компьютерных сетей, и бизнес-процессы, связанные с проведением таких транзакций.
Читать дальше →
Всего голосов 16: ↑11 и ↓5+6
Комментарии9

Песнь о могучем Деплое: безостановочное прозрачное развёртывание веб-сервиса

Время на прочтение14 мин
Количество просмотров13K
Песнь о могучем Деплое

Пролог


Пришло время, когда нам — команде Эльбы — захотелось поделиться с миром подробностями некоторых магических и загадочных деталей нашего продукта. Решили начать с одного из самых сложных проектов, который является предметом особой гордости и лёгкого поклонения. Он покрыт налётом тайны и окутан ореолом тёмной магии. Легенды о нём передаются из уст в уста. Лишь малая часть знаний задокументирована в вики или ютреке, большая же — сокрыта в исходниках системы контроля версий. Премудрых старцев, умеющих расшифровать этот тайный код, в проекте всё меньше и меньше. Пришла пора записать все магические заклинания в подробном манускрипте. Речь пойдёт о системе развёртывания Эльбы — о могучем Деплое.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии10

Что нужно знать, уметь и понимать, чтобы не иметь проблем с поиском работы питонистом

Время на прочтение10 мин
Количество просмотров177K
Язык — лишь малая часть того, что вам нужно знать. Может быть около 5%, а то и меньше.

Эта статья повторяет и дополняет содержание моего выступления «Что отличает джуниора от сеньора или как питонисту не иметь проблем с поиском работы» на последнем MoscowPython Meetup 39. Многие обращались ко мне после выступления с вопросами и я обещал опубликовать статью на Хабре и обсудить в комментариях.

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

no problem

Таки что же?!
Всего голосов 56: ↑41 и ↓15+26
Комментарии190

Что нового появилось в C# 7 и уже поддерживается в Visual Studio “15” Preview 4

Время на прочтение11 мин
Количество просмотров69K
С релизом Visual Studio “15” Preview 4 многие новые фичи C# 7 можно попробовать самому. Основные новшества C# 7 призваны облегчить работу с данными, упростить код и улучшить производительность. От себя скажу, что C# движется в сторону функционального языка, добавляя такие вещи, как кортежи и сопоставления с шаблоном (pattern matching). Не все из новой функциональности работает так, как задумано, в Preview 4, в этих случаях будет указано, что именно вы можете пока использовать и как это будет работать в будущем. Что ж, приступим.
Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии69

Готовим ASP.NET Core: создаем свой кроссплатформенный модульный фреймворк

Время на прочтение7 мин
Количество просмотров13K
Мы продолжаем нашу колонку по теме ASP.NET Core очередной публикацией от Дмитрия Сикорского ( DmitrySikorsky) — руководителя компании «Юбрейнианс» из Украины. В этот раз Дмитрий рассказывает о своем опыте разработки модульного кроссплатформенного фреймворка на базе ASP.NET Core. Предыдущие статьи из колонки всегда можно прочитать по ссылке #aspnetcolumn — Владимир Юнев
Из-за специфики моей задачи, последнее время достаточно много приходится размышлять о модульной и расширяемой архитектуре веб-приложений на ASP.NET Core (а до этого — на ASP.NET предыдущей версии). В результате появился ExtCore — небольшой кроссплатформенный фреймворк с открытым кодом, позволяющий буквально простым подключением NuGet-пакета превратить ваше веб-приложение в модульное и расширяемое.


Основные возможности


ExtCore умеет обнаруживать и использовать типы (а также, представления и статический контент), определенные как в проектах (в виде исходного кода или NuGet-пакетов), на которые есть явные ссылки в зависимостях, так и в проектах, которые размещены в определенной папке в виде скомпилированных DLL-сборок.

Для удобства, опционально, эти проекты могут быть условно объединены в расширения (т. е. каждое расширение может состоять из одного или многих проектов). Также, каждое расширение может иметь класс (в одном из проектов), реализующий интерфейс IExtension, а ExtCore, в свою очередь, позволяет в любой момент получить доступный набор экземпляров всех классов, реализующих этот интерфейс. Эти классы можно использовать для предоставления метаданных, описывающих расширения, инициализации расширений (например, регистрации маршрутов) и т. д.

Хотя непосредственно сам фреймворк и не содержит какого-либо функционала, связанного с работой с данными, но все, что для этого необходимо (в т. ч. единый контекст хранилища для всех расширений), реализовано в расширении ExtCore.Data, о котором ниже.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии0

Готовим ASP.NET Core: подробнее про работу с модульным фреймворком

Время на прочтение9 мин
Количество просмотров12K
Мы продолжаем нашу колонку по теме ASP.NET Core очередной публикацией от Дмитрия Сикорского ( DmitrySikorsky) — руководителя компании «Юбрейнианс» из Украины. В этот раз Дмитрий продолжает рассказ о своем опыте разработки модульного кроссплатформенного фреймворка на базе ASP.NET Core. Предыдущие статьи из колонки всегда можно прочитать по ссылке #aspnetcolumn — Владимир Юнев
В предыдущей статье я уже рассказывал об ExtCore — небольшом фреймворке для разработки модульных и расширяемых приложений на ASP.NET Core. В этой статье я постараюсь более подробно остановится на процессе разработки приложения на его основе.

Основное приложение


Первым делом создадим новый пустой проект на ASP.NET Core 1.0:

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

Нейронные сети для любопытных программистов (с примером на c#)

Время на прочтение5 мин
Количество просмотров136K
Так как в заголовке был отмечен «для любопытных программистов», хочу сказать, что и моё любопытство привело к тому, что я, будучи разработчиком мобильных игр, написал такой пост. Я совершенно уверен, что найдутся программисты, которые когда-то думали об искусственных интеллектах и это очень хороший шанс для них.
Читать дальше →
Всего голосов 40: ↑28 и ↓12+16
Комментарии15

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность