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

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

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

Недельный геймдев: #65 — 10 апреля, 2022

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

Из новостей: Unreal Engine 5 вышел из альфы, CryEngine 5.7, бесплатная версия Articy:Draft 3, вышла бета-версия Inkscape 1.2.

Из интересностей: начальная сцена «Короля Льва» воссоздана в Substance 3D Designer, Elden Bike, обсуждение в Твиттере консолидации игровых движков, какие инструменты использовались при работе над Satisfactory.

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии4

CSS-in-JS в Angular или все-таки CSS?

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

Всем привет! Меня зовут Всеволод Золотов, я Senior Frontend в компании Bimeister.

CSS-in-JS очень быстро набрал популярность в React-комьюнити, но насколько актуален этот подход в Angular? В данной статье сравним удобство разработки и производительность двух визуально идентичных приложений (time-tracker), написанных с использованием SASS и @emotion/css.

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

Агрегаты

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

Я считаю, что именно агрегаты из Domain-Driven Design лежат в основе поддерживаемых информационных систем. Однако эта концепция малоизвестна за пределами DDD-сообщества и довольно сложна для понимания, поэтому я решил написать очередной пост посвящённый агрегатам. В основном для чтобы структурировать собственное понимание агрегатов и создать "методичку" для своих команд, но и широкой общественности, я надеюсь, этот пост тоже может быть полезен.

Что такое агрегат?
Всего голосов 17: ↑16 и ↓1+15
Комментарии4

Оптимизируем вычисления в Unity

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

Добрый день! Хочу поделиться с вами историей про профайлинг и (некоторую) оптимизацию одной небольшой библиотеки для изгиба мешей вдоль кривых, найденной на просторах гитхаба.

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

Графическая логическая игра Льюиса Кэрролла

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

В одном из выпусков библиотеки журнала «Квант» я обнаружил перевод книги Льюиса Кэрролла «Логическая игра» (The Game of Logic). В ней автор рассказывает об оригинальном графическом способе визуализации логических суждений с помощью размеченного особым образом квадратного поля и фишек двух цветов. Этот способ помогает легко оперировать логическими множествами и на основе некоторых предпосылок формулировать новые утверждения. Давайте попробуем разобраться, как это работает.

Читать далее
Всего голосов 20: ↑19 и ↓1+18
Комментарии5

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

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

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

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

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

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

Проверяем качество кода в проектах .NET Foundation: LINQ to DB

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

.NET Foundation – независимая организация, основанная Microsoft с целью поддержки open source проектов на платформе DotNet. Под их крылом на данный момент собралось множество библиотек, некоторые из которых уже проходили проверку анализатором PVS-Studio. Следующим проектом для проверки анализатором будет LINQ to DB.

Читать далее
Всего голосов 26: ↑25 и ↓1+24
Комментарии8

Ультра быстрый Cron с шагом в миллисекунду, или когда тестовые задания такими прикидываются

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

Давным-давно наш коллега @novar разместил на Хабре статью с описанием вот такого незатейливого ТЗ, полученного им от потенциального работодателя:

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

Хочу предложить алгоритм, приближающийся к O(1) во всех возможных ситуациях, вместо оригинального O(n). Интересующихся прошу под кат.

Ах да. Если вы тот самый работодатель, вот готовый код под ваше ТЗ. Правда на Java, а не на C#. Но вы же не думали, что всё будет так просто?

Читать далее
Всего голосов 105: ↑102 и ↓3+99
Комментарии59

Как Уилл Смит помог нам выйти на рынок США и запустить стартап в Америке

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

История о том, как голливудские звезды помогли нам освоить западный рынок и выйти на него со своим стартапом.

Читать далее
Всего голосов 30: ↑28 и ↓2+26
Комментарии9

Первый truly stateless оптимальный алгоритм модел-чекера и его проверка на Coq

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

Надоели нестабильные баги в многопоточном коде? Попробуй воспользоваться модел-чекерами! Ведь больше не надо бояться неверифицированных модел-чекеров,  работающих либо за экспоненциальное время, либо неоптимально. Все это в прошлом: в Max Planck Institute for Software Systems разработали новый алгоритм под названием TruSt, который решает эти проблемы и, кроме того, верифицирован на Coq.

Меня зовут Владимир Гладштейн. Этим летом я проходил стажировку в MPI-SWS в группе, которая придумала алгоритм нового модел-чекера для поиска багов в многопоточных программах. Этот алгоритм является оптимальным и truly stateless (вследствие чего работает с линейными затратами по памяти). В этом посте я расскажу, как работают модел-чекеры, в каких случаях их можно использовать, и что за алгоритм придумали мои коллеги. А еще как я проверял доказательства его корректности на Coq.

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

8 способов вызвать утечки памяти в .NET

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

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

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

Читать далее
Всего голосов 28: ↑25 и ↓3+22
Комментарии44

Слава баг-репортам, или как мы сократили время анализа проекта пользователя с 80 до 4 часов

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

0885_SupportAndAnalyzerOptimizations_ru/image1.png
Работа в поддержке часто воспринимается как что-то негативное. Напрасно! Сегодня мы постараемся взглянуть на неё под иным углом. За основу возьмём реальное общение: больше 100 писем в переписке, исключения, анализ, который не завершается за трое суток...

Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии10

Особенности создания клона Minecraft «DScraft» для маломощной консоли 2004 года, Nintendo DS

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

DScraft - это адаптация убер-популярной компьютерной игры Minecraft для Nintendo DS. Хотя DScraft даже близко не так популярен, как оригинальная игра, ему всё равно удалось собрать большое комьюнити, которое существует и сегодня, а саму игру загрузили более 500.000 раз только с одного моего сервера. Мне нравится думать, что это хотя бы частично из-за тех вещей в игре, которые обычно не казались возможными на платформе. Вся разработка заняла примерно полтора месяца. В основном было две вещи, которые раньше заставляли людей думать, что Minecraft на DS почти невозможен: GPU консоли и нехватка памяти.

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

Из Unity в Godot. Первое впечатление

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

Всем привет, последние года три мое основное хобби – создание игр. Не могу сказать, что я добилась чего-то сверхъестественного, но в Steam есть две мои игры (горжусь самим фактом доведенных до конца проектов, но сейчас многое в них уже поменяла бы). И обе эти игры сделаны на движке Unity.

Почему на нем?

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

Читать далее
Всего голосов 29: ↑28 и ↓1+27
Комментарии30

Property-based тестирование с QuickCheck

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

Автор статьи: klntsky



Что такое Property-Based Testing?


Property-based testing (PBT) — подход к тестированию ПО, подразумевающий автоматическую проверку свойств функций (предикатов), специфицируемых программистом-тестировщиком. Для проверки, т.е. поиска контрпримеров, используются автоматически сгенерированные входные данные. PBT позвляет разработчикам значительно увеличить тестовое покрытие и эффективно расходовать своё время, не придумывая входные данные для тестов самостоятельно. В общем случае данные, генерируемые во время property-based тестирования, ничем не ограничены, поэтому проверка может быть произведена на тех значениях, про которые разработчик мог забыть или для которых не счёл нужным написать юнит-тесты (действительно, не перебирать же все значения входных параметров вручную).


PBT-подход был популяризован библиотекой QuickCheck, написанной на Haskell, и в этой статье будет показано, как пользоваться этим инструментом эффективно.

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

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

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

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

Здесь я расскажу о некоторых ранее предложенных идеях и свяжу их с новыми предложениями. Я проведу некий мысленный эксперимент и постараюсь ответить на вопрос «Что мы могли бы сделать с асинхронным программированием в Rust, если бы нам дали полный карт-бланш?». 

Непродуманное внесение изменений в Rust может разрушить его. Поэтому всё нужно делать аккуратно, учитывая плюсы и минусы. Допускаю, что некоторые предложения могут вызвать негативную реакцию. Я отношусь к этому с пониманием и прошу читателя подойти к изучению этого материала максимально непредвзято.

Потоки vs Асинхронность


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

Например, этот echo server написан с использованием потоков. Он работает быстрее своей асинхронной версии — для случая, когда количество одновременных подключений не превышает 100.
Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии47

Разместить FORTH в 512 байтах

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

Оригинал текста Июнь 10, 2021 - 38 минут чтения

Программное обеспечение полно своих зависимостей, если смотреть достаточно глубоко. Компиляторы, написанные на языке, на котором они компилируются, - самый очевидный, но не единственный пример. Чтобы скомпилировать ядро, нам нужно работающее ядро. Линкеры, системы сборки, оболочки. Даже текстовые редакторы, если вы хотите писать код, а не просто загружать его. Как разорвать этот цикл?1 С тех пор как проблема начальной загрузки впервые привлекла мое внимание, я стал интересоваться этой уникальной областью программной инженерии. Не из страха, что кто-то попытается реализовать атаку на доверие, а просто как интересный вызов.

11 лет назад vanjos72 описал на Reddit то, что он называет мысленным экспериментом: что если бы вас заперли в комнате с IBM PC, на котором нет операционной системы? Какое минимальное количество программного обеспечения вам понадобилось бы для начала, чтобы вернуться к комфортной работе?

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

Самым минимальным вариантом может быть простая программа, которая принимает ввод с клавиатуры, а затем переходит на нее. Поскольку подпрограммы ввода с клавиатуры в BIOS реализуют escape-коды alt+numpad, вам даже не нужно писать код преобразования базы.2Более того, циклу даже не нужно условие завершения а просто пишите в буфер обратно, пока не столкнетесь с существующим кодом и не перезапишете точку перехода. Такой подход занимает всего 14 байт.

Путь в четвёртое.
Всего голосов 19: ↑19 и ↓0+19
Комментарии2

Безуспешная попытка монетизации моего проекта в open source

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


Время от времени я пишу ПО в open source. У меня есть довольно популярный сейчас проект под названием faker.js. Я работаю над Faker уже больше десятка лет. Он имеет лицензию MIT.

В этом посте я расскажу о своей попытке монетизации проекта Faker при помощи облачного сервиса. Постепенно мы дойдём до инженеров из стартапа ценой 75 миллионов долларов, основанному Sequoia Capital. Джон и Патрик Коллисоны зарегистрировались в моём облачном сервисе, протестировали его, скопировали концепцию, вставили ссылку на CDN моего бизнеса, а теперь CEO компании Дэвид Сюй не отвечает на мои письма. В целом это будет увлекательное и информативное чтиво.
Читать дальше →
Всего голосов 78: ↑72 и ↓6+66
Комментарии29

4 года в Нидерландах

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

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

А еще тут много про деньги.

Читать далее
Всего голосов 78: ↑74 и ↓4+70
Комментарии157
1
23 ...

Информация

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