• Налоговый маневр в IT отрасли

    Минфин России совместно с Федеральной Налоговой службой подготовили разъяснения по поводу налогового маневра в IT отрасли.

    Содержание 6-страничного документа сведено в таблицу:

    Читать далее
  • Песочный алфавит при помощи генеративных алгоритмов

    • Translation
    • Tutorial
    image

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


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

      Читать дальше →
    • Высокие технологии (н.-ф. рассказ)



        Я прислонил запястье к считывающему элементу.

        – Доброе утро, Максим Петрович. До начала вашего дежурства остается 3 минуты 23 секунды, – произнес механический голос.

        Я не ответил, проходя внутрь Центра оптимизации здоровья. В рабочем помещении завершала работу предыдущая смена. За их спинами, в соответствии с заведенным порядком, ожидала моя команда – все, за исключением стажерки Скворцовой, которая по своему обыкновению опаздывала.
        Читать дальше →
      • Плитки Вана для симуляции машин Тьюринга

        • Translation
        Плитки (домино) Вана были изобретены Хао Ваном в 1961 году для математических задач, но нашли широкое применение в играх при создании тайловой графики. Благодаря им результаты не выглядят повторяющимися, как в 2D-текстурах, так и в 3D-моделях с тайлингом.

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

        Это удивительное и непонятное заявление, поэтому в данном посте я немного исследую этот вопрос.

        Вкратце о плитках Вана


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

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

        Графические примеры, более подробную информацию и ссылки на Shadertoy можно найти здесь: Wang Tiling.

        Вот созданный мной пример. Моя графика — это «арт программиста», но надеюсь, идея понятна. Рисунок составлен из 16 тайлов, и для каждой грани есть два различных типа граней.

        Читать дальше →
        • +29
        • 5.1k
        • 4
      • Как я писал бота для школьных д/з и менял базу данных

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

          Замечание
          17.11.2019 15:55
          Мне написали в личные сообщения, что на протяжении статьи не очень понятно, о каких именно домашних заданиях идёт речь.
          Уточню сразу, что все задания, о которых я рассказываю в статье, заполняются как в обычном дневнике, а старые задания «исчезают».
          Именно так пользователь получает те задания, которые ему будет нужно сделать.

          Читать дальше →
        • Алгоритм размещения тайлов на основе ограничений

          • Translation
          image

          В этом посте описывается алгоритм, используемый в Generate Worlds — инструменте, позволяющем пользователям создавать и исследовать процедурные миры построением небольших множеств воксельных тайлов. Я приведу краткое описание алгоритма, а в следующих постах расскажу о его преимуществах в скорости и гибкости по сравнению с другими методами. Чтобы подробнее узнать о том, что такое процедурная генерация на основе ограничений (constraint-based procedural generation) и о том, чем она интересна, рекомендую прочитать мой предыдущий пост.

          Если вы хотите проверить свои силы в создании процедурных миров при помощи этой системы, то можете приобрести Generate Worlds. Если цена для вас слишком высока, то продолжайте чтение: этот пост даст вам информацию о том, как самостоятельно реализовать алгоритм Generate Worlds.
          Читать дальше →
          • +27
          • 5.8k
          • 2
        • Вычисление 2D-коллизий: алгоритм Гилберта — Джонсона — Кирти

          • Translation
          image

          Я занялся изучением процессов распознавания коллизий, и это привело меня к алгоритму Гилберта — Джонсона — Кирти (Gilbert-Johnson-Keerthi, GJK).

          Все примеры кода в посте написаны на TypeScript. В примерах используются созданные мной структуры, которые подробно в посте не рассмотрены. Они просты и их можно посмотреть в репозитории GitHub:

          • Vector
          • IShape
          • Collision

          Весь код из поста хранится в репозитории GitHub:

          https://github.com/jthomperoo/gjk-ts-implementation

          Пост написан на основании этой статьи и рекомендованного в ней видео:


          Введение


          GJK — это алгоритм, предназначенный для определения пересечения двух выпуклых фигур. Он прост и реализуется при помощи обобщённой «вспомогательной функции», позволяющей использовать более общий подход — аналогичным образом можно обрабатывать многоугольники и фигуры, состоящие из кривых, например, эллипсы.
          Читать дальше →
        • Процедурное создание лун

          • Translation
          image

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

          Система предполагает, что луны имеют сферическую основу. К базовой сфере применяется создание геодезического меша, что гарантирует одинаковую площадь всех частей поверхности. Система применяет эту структуру только как вычислительную сетку для процедурной генерации, настоящая поверхность луны будет намного более гладкой, чем сетка генерации.
          Читать дальше →
          • +26
          • 5.5k
          • 4
        • Реализация физически корректных объемных облаков как в игре Horizon Zero Dawn

            Раньше облака в играх рисовались обычными 2D спрайтами, которые всегда повернуты в направлении камеры, но последние годы новые модели видеокарт позволяют рисовать физически корректные облака без заметных потерь в производительности. Считается, что объемные облака в игры принесла студия Guerrilla Games вместе с игрой Horizon Zero Dawn. Конечно, такие облака умели рендерить и раньше, но студия сформировала что-то вроде промышленного стандарта на исходные ресурсы и используемые алгоритмы, и в настоящее время любая реализация объемных облаков так или иначе этому стандарту соответствует.

            UPD. Картинка обновлена. Изменения описаны в конце статьи.


            Читать дальше →
          • Доступное объяснение алгоритма коллапса волновой функции

            • Translation
            Алгоритм коллапса волновой функции (Wavefunction Collapse Algorithm) учит компьютер импровизировать. На входе он получает архетипичные данные и создаёт процедурно генерируемые данные, похожие на исходные.


            (Источник)

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


            (Источник)

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

            Большинство реализаций и объяснений коллапса волновой функции — это полная, оптимизированная по скорости версия алгоритма. Разумеется, все они важны и необходимы, но в них сложно разобраться с нуля. В этом посте я буду объяснять всё понятным я простым языком, сосредоточившись на версии Wavefunction с ограничениями, которую я назвал Even Simpler Tiled Model. Кроме того, я выложил пример реализации ESTM на Github. Код в нём неэффективный и медленный, но очень хорошо читаемый и подробно прокомментирован. Как только вы разберётесь в технологии, лежащей в основе ESTM, то станете ближе к пониманию более сложных версий алгоритма. Если хотите понять алгоритм коллапса волновой функции, то эта статья будет хорошим началом.
            Читать дальше →
          • Генерируем тайловые уровни и прячем квадраты от игрока

            • Translation

            Генерация уровней в Unexplored 2


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

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

            Имитация «человеческого» дизайна уровней


            Генератор уровней разбивает процесс генерации уровня на целое множество управляемых этапов. Он проходит путь от высокоуровневого планирования до низкоуровневой детальной карты уровня. По сути, он сначала создаёт набросок уровня, а затем начинает добавлять детали, пока уровень не станет завершённым и заполненным.
            Читать дальше →
            • +50
            • 13.8k
            • 7
          • Математика листьев: как один необычный куст изменил уравнение модели роста растений

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

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

            Всё дело в углах



            Листья на ветке O. japonica (вверху слева) и схематическое изображение филлотаксиса orixate (справа). Паттерн orixate демонстрирует необычный цикл смены углов листьев, состоящий из четырёх значений (от 180 градусов к 90 градусам, потом к 180 градусам и к 270 градусам). На изображении со сканирующего электронного микроскопа (в центре и внизу слева) показана зимняя почка Orixa japonica, в которой начинают расти листья. Зачатки листьев последовательно помечены от самого старого листа (P8) до самого молодого (P1). Точкой O помечена верхушка побега.
            Читать дальше →
            • +30
            • 8.9k
            • 6
          • Интро Newton Protocol: что можно уместить в 4 килобайта

            • Translation
            image

            Недавно я участвовал соревнованиях демосцены Revision 2019 в категории «PC 4k intro», и моё интро выиграло первое место. Я занимался кодингом и графикой, а dixan сочинял музыку. Основное правило соревнования — необходимо создать исполняемый файл или веб-сайт, имеющий размер всего 4096 байта. Это означает, что всё приходится генерировать с помощью математики и алгоритмов; никаким другим способом не получится ужать изображения, видео и аудио в такой крошечный объём памяти. В этой статье я расскажу о конвейере рендеринга своего интро Newton Protocol. Ниже можно посмотреть готовый результат, или нажать сюда, чтобы посмотреть как оно выглядело вживую на Revision, или зайти на pouet, чтобы прокомментировать и скачать участвовавшее в конкурсе интро. О работах конкурентов и об исправлениях можно прочитать здесь.

            Читать дальше →
          • Советская техническая эстетика и технологии

              Привет, сегодня любовался некоторыми артефактами советской эпохи и захотелось поделиться с обществом. Пост не будет содержать технического разбора или исторической справки, просто картинки для любопытных и мои пометки. Поэтому публикую в "чулане". (Осторожно: картинок 40 Mb!)


              Электрический разъем


              По легенде он с брата "Бурана" — "Бури". Обратите внимание, что провод залит в коричневый компаунд, видна пластиковая крышка и отверстие для заливки.



              Удивляет точность и аккуратность надписи. Интересно, каким образом её нанесли, трафарет? Штамп?


              Читать дальше →
            • Фракталы в иррациональных числах. Часть 2

                Часть 0: Фракталы в простых числах.
                Часть 1: Фракталы в иррациональных числах.



                В статье присутствуют Gif и контрастные картинки. У эпилептиков может случиться эпилептический припадок.
                Читать дальше →
              • Что курил конструктор: необычное огнестрельное оружие



                  Не только военные роботы, дроны, боевые лазеры и прочие сверхсовременные технические решения могут быть интересны. Этот пост про несколько остроумных конструкций, в которых нет ни грамма электроники. Гибрид пистолета и револьвера под «треугольный» патрон, трехствольный советский автомат и безгильзовые стреляющие часы с кукушкой — военные диковинки середины прошлого века, которые отлично смотрелись бы в фантастическом фильме.
                  Читать дальше →
                • Фракталы в иррациональных числах

                    Статья является продолжением моей первой статьи «Фракталы в простых числах».

                    Следующая статья: Фракталы в иррациональных числах. Часть 2.



                    В предыдущей статье мы научились рисовать самоподобные паттерны с помощью взаимно простых чисел. В этой статье покажу фрактальную природу числа $\sqrt{2}$.
                    Без предисловия. Под кат.
                    Читать дальше →