Обновить
19
0
Журат Максим@ChessMax

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

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

Я написал более быстрый алгоритм сортировки

Время на прочтение34 мин
Охват и читатели48K

Может показаться откровенной наглостью в наши дни утверждать, что Вы изобрели алгоритм сортировки, который на 30% быстрее, чем лучший существующий. Увы, я должен сделать гораздо более наглое заявление: я написал алгоритм сортировки, который в два раза быстрее, чем std :: sort для многих входных данных. И за исключением случаев, когда я специально конструирую воспроизведение нахудших для него ситуаций, алгоритм никогда не бывает медленнее, чем std :: sort (и даже когда попадаются эти худшие случаи, они обнаруживаются и происходит автоматический возврат к std :: sort).

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

Читать далее

Основы Postman для самых маленьких

Время на прочтение8 мин
Охват и читатели413K

В этой статье поговорю про основы работы с Postman для начинающих тестировщиков. Сама я столкнулась с этим инструментом как раз на последнем проекте. 

Расскажу, как с его помощью создавать простейшие автотесты и уменьшать объем рутины с помощью переменных.

Читать далее

Укрощение батчинга за счет оптимизации масок UI

Время на прочтение8 мин
Охват и читатели7.3K

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

В какой-то момент мы в War Robots столкнулись с необходимостью оптимизировать экран акций: обнаружилось, что для отрисовки этого экрана Unity совершала более 300 батчей. Для сравнения: куда более сложный экран ангара, содержащий 3D-сцену, 3D- и 2D-интерфейсы, эффекты и анимации, рисовался примерно за 100 батчей.

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

Читать далее

Как найти удаленную работу в США с прицелом на релокацию: описания виз, списки ~1000 компаний, полезные инструменты

Время на прочтение5 мин
Охват и читатели39K

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

В этой статье я собрал материалы для тех, кто задумывается о поиске сначала удаленной работы в США, а затем и о переезде. В тексте есть описания виз, списки компаний, нанимающих на remote, инструменты для подготовки к собеседованиям. Надеюсь, будет полезно!

Читать далее

ViewModel во Flutter – это антипаттерн

Время на прочтение11 мин
Охват и читатели14K

Всем привет! Представляю вам текстовую версию моего доклада на DartUP 2021 (сам доклад на английском можно найти здесь). Посвящен он довольно популярному архитектурному паттерну MVVM (он же Model-View-ViewModel), а конкретно той его части, что про ViewModel.

Паттерн этот весьма распространен в мире нативной Android-разработки – во многом благодаря тому, что является официальной рекомендацией Google. А поскольку многие Flutter-девелоперы попали в мир Flutter'а из нативного Android'а, то и подходы они склонны применять те же самые. Как говорится, работает – не трогай и ничего не меняй.

Но как по мне, в мире Flutter'а этот паттерн не то чтобы полезен, а скорее даже и вреден. И сейчас я буду вас в этом убеждать.

Читать далее

Вёрстка в 2022. Часть 1: Теория

Время на прочтение5 мин
Охват и читатели31K

"Разработчик – это человек, который переводит мысли заказчика на язык машины"
@mikita_du

Идея статьи появилась год назад, думал назвать «Вёрстка в 2021», но как-то затянулось… Весной 2021 года Microsoft объявила, что с 15 июня 2022 года прекращается поддержка IE11 (да, не для всех версий Win 10, но всё же), а значит, к выходу статьи уже останется менее полугода до знаменательного события, когда не придётся верстать под IE.

Для меня же это значит, что можно будет по полной использовать новые стандарты браузеров, в частности – css-variables, grid layout.

Читать далее

Elementary: новый взгляд на архитектуру Flutter-приложений

Время на прочтение6 мин
Охват и читатели14K

Elementary — это архитектурный пакет, который создали в Surf на основе опыта разработки приложений на Flutter и лучших практик современной разработки.

Решение позволяет чётко разделить слои согласно ответственностям, сделать код прозрачнее, а тестирование проще. На примере реального приложения показываем, как использовать Elementary.

Читать далее

Поисковик новостей (RSS), написанный на Java + SQLite

Время на прочтение2 мин
Охват и читатели7.2K

Данная идея не претендует на уникальность. Суть проста - тратить как можно меньше времени на чтение интересующих Вас новостей, отсеивая ненужные заголовки. Проект делал в рамках моего обучения языку Java и SQL, начиная с 2018 года. В настоящий момент программа включена в Реестр российского ПО. Функционал продублирован в Telegram боте.

Актуальная версия программы для windows и linux находится на avandy-news.ru. Исходный код проекта будет полезно изучить тем, кто хочет создавать свои десктопные приложения на Swing (но рекомендую изучать JavaFX) или для изучения процесса работы с базой данных посредством чистого JDBC. Для улучшения дизайна интерфейса применён FlatLaf.

Читать далее

Транспорт в PvP-шутере на Unity: добавляем и синхронизируем

Время на прочтение6 мин
Охват и читатели7.1K

Когда мы начали разработку батлрояля на 100 игроков, то решили сделать самую большую карту в нашем шутере — 2 на 2 километра против стандартных 200 x 200 метров. Но для таких масштабов нужны были более быстрые способы перемещения, чем просто пешком. Так появилась задача добавить транспорт, которого раньше в проекте не было.

В статье расскажу, как мы добавили автомобили в мобильный PvP-шутер на Unity: разберу префаб транспорта, синхронизацию игроков и поделюсь небольшими лайфхаками.

Читать далее

А вы знаете, где используется Haskell?

Время на прочтение4 мин
Охват и читатели33K

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

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

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

Читать далее

Пишем 3D-рендерер в стиле первой PlayStation

Время на прочтение14 мин
Охват и читатели23K
Я занялся новым хобби-проектом, который мне очень нравится. Я создаю вымышленную консоль, источником вдохновения для которой стали технологии эпохи PS1. Проект довольно масштабный, но сегодня я хочу поговорить о рендеринге, который стал моим первым шагом к его реализации. В этой статье я подробно расскажу о том, что узнал в процессе исследования PS1 и других ретроконсолей. И, разумеется, о том, как я реализовал рендеринг в вымышленной консоли, которую назвал Polybox. Я не буду объяснять рендеринг 2D-спрайтов, потому что это довольно просто, а статья и так вышла достаточно длинной.

Вот конечный результат, который я получил в консоли Polybox:


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

CSS Анимация с вариативным шрифтом

Время на прочтение3 мин
Охват и читатели7.2K

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

Читать больше

Как написать эмулятор CHIP-8 на JS

Время на прочтение18 мин
Охват и читатели9.6K
Chip-8

Автор провёл детство за играми в эмуляторах NES и SNES на своём компьютере, но никогда не думал, что однажды сам напишет эмулятор. Иван Сергеев поставил перед автором задачу написать интерпретатор Chip-8, чтобы изучить основные понятия низкоуровневых языков программирования и то, как работает процессор.

Результат — эмулятор Chip-8 на JavaScript, который автор написал под его руководством. Подробности рассказываем, пока у нас начинается курс по Fullstack-разработке на Python.
Читать дальше →

У Unity всё плохо

Время на прочтение9 мин
Охват и читатели109K

На просторах интернета, и в частности хабра, очень трудно встретить статьи с критикой игрового движка Unity. Я решил это исправить, и приготовил вам текст о переходе на DOTS, насилию над C#, знаменитых UI пакетах, MonoBehaviour, универсальности и о многом другом.

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

Читать далее

Электроника всем начинающим

Время на прочтение20 мин
Охват и читатели65K

Хабр! Добро пожаловать снова. 

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

Мы будем делать часы, таймер и игру в одном устройстве.

Читать далее

Разделяй и властвуй: детерминированный и скриптованный Match-3 движок

Время на прочтение11 мин
Охват и читатели8.4K

Привет! Я Павел Щеваев, CTO студии BIT.GAMES, части MY.GAMES. Вы можете знать нас по таким играм, как «Гильдия Героев» и «Домовята» в Одноклассниках (да, это тоже были мы), а также по нашему текущему флагману Storyngton Hall — это классическая три-в-ряд с сюжетом в викторианском стиле. О нем-то и пойдет речь далее.

Когда я писал про тестовую ферму из Android-устройств, я не раз упоминал наш самописный детерминированный движок Match-3, благодаря которому и возникла возможность повсеместного покрытия игры тестами без ущерба для жизни и здоровья QA-команды.

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

Читать далее

Как компьютеры рисуют странные формы: метаболы, marching squares, электрические поля

Время на прочтение15 мин
Охват и читатели9.2K

Пару месяцев назад я наткнулся на очень красивые анимации. В основе этих анимаций лежат несколько простых окружностей, но выделяет их то, насколько органично они сливаются друг с другом. Мне стало любопытно, как это работает, и моё исследование оказалось гораздо интереснее, чем я ожидал. Выяснилось, что соединяющиеся друг с другом круглые объекты называются метаболами (metaballs) и с ними связано множество математических и вычислительных понятий. Если вы в чём-то похожи на меня, то посмотрев на эти анимации, вы бы сразу задались вопросом, как подойти к решению такой задачи. Допустим, нам поручили разобраться с тем, как генерировать метаболы. Как сформулировать эту задачу? Что означает возможность органичного слияния окружностей? Как компьютер рендерит нечто подобное на экране? Всё это очень сложные вопросы.

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

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

Время на прочтение20 мин
Охват и читатели6.9K

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

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

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

Читать далее

Как выбрать свой Static Site Generator — Новая документация Docsvision ч.1

Время на прочтение17 мин
Охват и читатели6.4K

Привет всем читающим! Меня зовут Владимир, я - технический писатель в компании Docsvision. Я создаю документацию для нашей «Платформы по управлению процессами и данными для крупного бизнеса и госкомпаний». Это как СЭД, только лучше (C).

Я хочу поделиться историей о том, как мы пришли к новой документации и почему. Сначала я кратко расскажу, как устроена наша "старая" документация, а потом расскажу о том, как мы пришли к новой документации.

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

Читать далее

Простое объяснение симуляции жидкости в реальном времени

Время на прочтение28 мин
Охват и читатели20K
image

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

Код проекта можно найти на моём Github.


Ресурсы, посвящённые симуляции жидкостей, могут быть очень пугающими. Помню, что когда я впервые прочитал статью о ней и увидел уравнения Навье-Стокса, то был в ужасе. Со временем я понял, что сама тема совершенно не сложна. На самом деле, если бы вам дали задачу написать собственный симулятор жидкостей, то вы, вероятно, написали бы что-то подобное на основании интуитивного понимания работы жидкостей. Если, посмотрев на уравнения Навье-Стокса, вы подумали «ага, понятно», то вы, возможно, быстрее бы реализовали симуляцию жидкости, прочитав работы, перечисленные в конце этой статьи. Я же попытаюсь не использовать сжатое выражение и объяснять всё как можно медленнее.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Разработчик мобильных приложений
Старший
Flutter
Flutter Bloc
MobX
Mobile
Разработка мобильных приложений