Search
Write a publication
Pull to refresh
4
0.8
Дмитрий Померанцев @pda0

User

Send message

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

Reading time6 min
Views9.9K

Заголовок статьи может показаться странным и это неспроста — он прекрасен именно тем, что написал его не я, а LSTM-нейросеть (а точнее его часть перед "или").



(схема LSTM взята из Understanding LSTM Networks)


И сегодня мы разберёмся, как можно генерировать заголовки статей Хабра (и в принципе сам текст можно генерировать этой же нейро-архитектурой). Весь код доступен для запуска онлайн в notebooks от Гугла. Данные, как всегда, открыты на github.


А вот здесь можно запустить уже обученную модель на GPU от Гугла (бесплатно и без смс) и собственно погенерить заголовки.

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

Налоговый суслик. Особенности упрощенной системы налогообложения при работе по договорам с Apple, Google и другими

Reading time46 min
Views54K
В данной статье я постараюсь провести краткий юридический ликбез для разработчиков по некоторым положениям Гражданского кодекса, имеющим значение в контексте деятельности индивидуальных предпринимателей и организаций, применяющих упрощенную систему налогообложения, в работе по договорам с Apple, Google и другими компаниями, а также обратить внимание на некоторые не всегда очевидные налоговые нюансы, которые, как показал личный опыт изучения данной темы, довольно часто ускользают от внимания разработчиков или вызывают множество вопрос и споров.

Прочтите внимательно эту статью, если вы применяете упрощенную систему налогообложения с объектом налогообложения «доход» по ставке 6 процентов и продаете игры или приложения в Google Play, Apple App Store, а также прочий цифровой контент — например, 3D-модели — в Steam, Unity Asset Store или на других площадках, в условиях договоров с которыми фигурируют комиссии, агентские вознаграждения и прочие формы разделения выручки между сторонами.

Из материала вы узнаете:

  • Почему разработчику желательно обладать хотя бы базовой юридической грамотностью
  • Чем с точки зрения Гражданского кодекса являются игры и приложения и какие права на них есть у разработчиков помимо авторского права
  • Что такое агентский договор и почему все это важно при работе по договору с Apple или Google
  • Кто такой налоговый суслик и почему он может превратиться в пушного зверя
  • Какой «подвох» существует для применяющих «упрощенку» в части определения налоговой базы
  • Почему налог на добавленную стоимость (НДС) продолжает преследовать нас, даже когда мы не являемся его плательщиками
  • Как, с точки зрения Федеральной налоговой службы, облагаются НДС внутриигровые покупки (InApp Purchases)
Покажите мне суслика!

Джулия и параллельные вычисления

Reading time18 min
Views12K


С момента выхода в августе 2018, язык Julia активно набирает популярность, войдя в топ 10 языков на Github и топ 20 самых популярных профессиональных навыков по версии Upwork. Для начинающих стартуют курсы и выпускаются книги. Julia используется для планирования космических миссий, фармакометрики и климатического моделирования.


Перед тем как приступить к распределенным вычислениям в Julia обратимся к опыту тех, кто уже испробовал данную возможность нового ЯП для прикладных задач — от уравнения диффузии на двух ядрах, до астрономических карт на суперкомпьютере.

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

Гипер-казуалки и чему у них могут научиться геймдизайнеры

Reading time7 min
Views67K


Гипер-казуальный жанр захватил мобильные сторы. Кто-то считает, что он скоро умрет, но в ближайшее время этому точно не суждено сбыться. Только с октября 2018 по март 2019 гипер-казуалки загрузили более 771 млн раз.

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

Как создать чужого — размышления о дизайне инопланетных видов

Reading time17 min
Views19K
Инопланетяне являются почти настолько же основным столпом научной фантастики, как и межзвёздные полёты. Если задуматься, то пожалуй даже более влиятельным — Идеи о чуждой жизни обосновались в фантастике даже до межзвёздных полетов, с работами Герберта Уэллса и Эдгара Берроуза.

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


В 9 из 10 таких произведений «инопланетянин» по замыслу создателей — это типичный человек, только со странными выростами на голове, и\или неестественным цветом кожи (Наиболее хрестоматийный пример такого безобразия — сериал Star Trek). В худшем случае запредельной лени инопланетянин будет просто человеком, без каких-либо внешних отличий вообще. Это если инопланетянин подразумевается как персонаж которому можно сочувствовать, в случае если этот инопланетянин задумывается как враг, то его внешность и поведение часто больше напоминают какое-нибудь разъяренное дикое животное, чем разумное существо. Рычание или бритвенно-острые когти в полметра длиной не обязательны, но крайне приветствуются.

Где-то примерно до середины или конца 90х такая ситуация имела весьма практичное объяснение: Чтобы сделать персонажа, не похожего на человека, необходим большой бюджет и много денег на создание аниматронных кукол (А результат всё равно мог получиться неудовлетворителен по убедительности). Далеко не все проекты обладали таким количеством денег и времени, тем более телевизионные сериалы, поэтому загримированный актер оставался наиболее дешевым, практичным и эффективным способом сымитировать инопланетянина.
Читать дальше →

TDD в геймдеве или «кроличий ад»

Reading time7 min
Views15K
TDD в геймдеве применяют довольно редко. Обычно проще нанять тестировщика, чем выделить разработчика для написания тестов — так экономятся и ресурсы, и время. Поэтому каждый успешный пример использования TDD становится интереснее. Под катом перевод материала, где эту технику разработки применили при создании передвижения персонажей в игре ElemenTerra.


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

Как устроен формат JPEG

Reading time13 min
Views108K

Изображения формата JPEG встречаются повсюду в нашей цифровой жизни, но за этим покровом осведомлённости скрываются алгоритмы, устраняющие детали, не воспринимаемые человеческим глазом. В итоге получается высочайшее визуальное качество при наименьшем размере файла – но как конкретно всё это работает? Давайте посмотрим, чего именно не видят наши глаза!




Легко принять, как само собой разумеющееся, возможность отправить фотку другу, и не волноваться по поводу того, какое устройство, браузер или операционную систему он использует – однако так было не всегда. К началу 1980-х компьютеры умели хранить и показывать цифровые изображения, однако по поводу наилучшего способа для этого существовало множество конкурирующих идей. Нельзя было просто отправить изображение с одного компьютера на другой и надеяться, что всё заработает.
Читать дальше →

Unity: бесконечный процедурно генерируемый город, получаемый при помощи алгоритма WFC (коллапс волновой функции)

Reading time7 min
Views27K
Привет, Хабр!

Как законодатели мод по теме Unity на российском рынке предлагаем вам почитать интересное исследование о практическом использовании алгоритма WFC (Wave Function Collapse), построенного по образу и подобию известного принципа квантовой механики и очень удобного при процедурной генерации уровней в играх. Ранее на Хабре уже публиковался подробный рассказ об этом алгоритме. Автор сегодняшней статьи Мариан Кляйнеберг рассматривает алгоритм в контексте трехмерной графики и генерации бесконечного города. Приятного чтения!

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

Заголовок будет другой

Reading time8 min
Views9.5K
Если вы разрабатываете продукт для масс-маркета, то вероятнее всего им пользуются люди с плохим зрением. Если вы стремитесь делать удобные интерфейсы, то надо сделать удобно для всех клиентов, в том числе для людей с плохим зрением. Думаю, мы часто забываем об этом. И это пора исправлять.


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

Что интересного я извлёк из книги «Theory of Fun for Game Design» от Рафа Костера

Reading time7 min
Views18K
В этой статье я тезисно перечислю наиболее интересные для меня выводы и чеклисты, которые я нашёл в книге Рафа Костера «Theory of Fun for Game Design».

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

5 ошибок в реализации push-уведомлений для мобильных приложений

Reading time7 min
Views21K



Главная мысль: прежде чем просить пользователя включить push-уведомления, расскажите ему об их пользе и содержании. Не отправляйте слишком много уведомлений одновременно и сделайте так, чтобы их легко было отключить.


* * *

При грамотном исполнении push-уведомления для мобильных устройств могут обеспечить пользователя полезной информацией и побудить далее взаимодействовать с приложением. А вот плохая реализация уведомлений может оттолкнуть и даже заставить удалить приложение.

В 2016 году, согласно исследованию Telefonica Research в Испании, пользователи мобильных телефонов получали в среднем 56 уведомлений в день. Сегодня это число, скорее всего, выросло. Поэтому к их разработке следует подходить с большим вниманием, иначе такой поток уведомлений может несомненно навредить пользовательскому опыту.
Читать дальше →

Используем все возможности индексов в PostgreSQL

Reading time8 min
Views29K

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

Предлагаю вашему вниманию несколько советов по оптимизации и улучшению использования индексов.

Примечание: показанные ниже запросы работают на не модифицированном образце базы данных pagila.
Читать дальше →

Краткий и бодрый обзор архитектуры компиляторов

Reading time19 min
Views37K

Большинство компиляторов имеют следующую архитектуру:



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

Целевая аудитория статьи — люди, чье представление о работе компиляторов крайне ограничено (максимум — то, что они занимаются компилированием). Однако я жду, что читатель разбирается в структурах и алгоритмах данных.

Статья ни в коем случае не посвящена современным производственным компиляторам с миллионами строк кода — нет, это краткий курс «компиляторы для чайников», помогающий разобраться, что такое компилятор.
Читать дальше →

В этой статье слишком много воды

Reading time9 min
Views41K
«Мы начинаем разработку новой игры, и нам нужна классная вода. Такую сможешь?»


, — cпросили меня. «Да не вопрос! Конечно, смогу», — ответил я, но голос предательски задрожал. «А, еще и на Unity?», — и мне стало понятно, что впереди очень много работы.
Читать дальше →

Как я программирую движки для ролевых игр в Google-таблицах

Reading time9 min
Views12K
image

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

Пиксельные отступы в текстурной развертке

Reading time7 min
Views10K
Представляем четвертую статью нашего цикла о работе с 3D-моделями в Unity. Предшествующие статьи: «Особенности работы с Mesh в Unity», «Unity: процедурное редактирование Mesh», «Импорт 3D-моделей в Unity и подводные камни».

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

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

Вейвлет — анализ.Часть 1

Reading time10 min
Views44K

Введение


Рассмотрим дискретное вейвлет – преобразования (DWT), реализованное в библиотеке PyWavelets PyWavelets 1.0.3. PyWavelets — это бесплатное программное обеспечение с открытым исходным кодом, выпущенное по лицензии MIT.

При обработке данных на компьютере может выполняться дискретизированная версия непрерывного вейвлет-преобразования, основы которого описаны в моей предыдущей статье. Однако, задание дискретных значений параметров (a,b) вейвлетов с произвольным шагом Δa и Δb требует большого числа вычислений.

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

Дискретное вейвлет – преобразование (DWT), реализованное в библиотеке PyWavelets, обеспечивает достаточно информации как для анализа сигнала, так и для его синтеза, являясь вместе с тем экономным по числу операций и по требуемой памяти.

Когда нужно использовать вейвлет-преобразование вместо преобразования Фурье


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

«Топологическая» сортировка графа с циклами

Reading time4 min
Views15K
Полное название статьи должно было звучать как «Устойчивая „топологическая“ сортировка графа с циклами за O(|V| + |e| log |e|) по времени и O(|V|) по памяти без рекурсии», но мне сказали, что это перебор.
Читать дальше →

Псевдослучайность нам поможет: подборка инструментов генерации ассетов для игры

Reading time3 min
Views8.3K

Отгремели выстрелы минувшего Ludum Dare 44, но тяга делать игры, оттачивать свое мастерство ещё не покидает меня, да и думаю многих. Проглядывая главную страницу онлайн-мероприятия, я наткнулся на интереснейший пост, где автор задался вопросом составления инструментария, помогающего разработчикам (командам) создавать свои игровые шедевры. В статье автор задался целью собрать в один список набор инструментов, псевдо-случайным образом генерирующих различные ресурсы для вашей игры, начиная от фиксированной палитры цветов, заканчивая простейшей chiptune-like фоновой музыкой и спрайтами персонажей.


Заставка случайной игры на LD 44


Под катом перевод данной заметки, с небольшими комментариями и примечаниями от себя.

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

Thinking with Portals: создаём порталы в Unreal Engine 4

Reading time32 min
Views20K
image

В этой статье я расскажу, как создавать порталы в Unreal Engine 4. Я не нашёл никаких источников, подробно описывающих такую систему (наблюдение сквозь порталы и проход через них), поэтому решил написать собственную.

Что такое портал?


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

Примеры порталов в играх (GIF)


Antichamber (2013 год) и Portal (2007 год)


Prey, 2006 год

Из трёх игр самой известной, вероятно, является Portal, однако лично меня всегда восхищала Prey и именно её я мечтал скопировать. Однажды я попробовал реализовать собственную версию в Unreal Engine 4, но не особо преуспел, потому что в движке не хватало функционала. Тем не менее, мне удалось провести вот такие эксперименты:


Однако только в новых версиях Unreal Engine мне наконец-то удалось добиться нужного эффекта:

Information

Rating
2,917-th
Location
Химки, Москва и Московская обл., Россия
Date of birth
Registered
Activity