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

Все потоки

Сначала показывать
Порог рейтинга
Уровень сложности

Один компонент, 20+ фич, A/B-тесты: Поможет ли машина состояний?

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

Сталкивались ли вы с проблемой возникновения багов из-за пересечения включенных фичей в приложении? Или, возможно, была необходимость одновременно проводить большое число A/B-экспериментов в одном компоненте? 

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

Меня зовут Денис Стасьев. В этой статье расскажу о том, как мы внедряли машину состояний в одном из компонентов главной страницы Mail.ru — блоке новостей, что получили на выходе и ещё подробнее о том, почему в итоге остановились на XState.

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

Проектирование веб-приложений с помощью Python и Flask

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

Для каких проектов лучше всего подходит Flask, а для каких — Django? Какие особенности Flask можно использовать при разработке веб-приложений наиболее эффективно? Я Алексей Некрасов, лидер направления Python в МТС, автор форка библиотеки flask-combo-jsonapi, программный директор курсов по Python в Skillbox, СЕО Forkway и автор канала Python — учим и работаем

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

Morte Alla Francia, Italia Anela…

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 861

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

В сегодняшней статье речь пойдёт об игре, о которой я, к своему стыду, узнал всего лет пятнадцать назад, хотя она появилась ещё в 1986 году и стала достаточно популярной уже в середине 90-х. Сегодня найти человека, который ничего не знал бы об этой игре, практически невозможно. Я говорю о «Мафии».

«Мафия» — клубная командная психологическая пошаговая ролевая игра, созданная в 1986 году студентом МГУ Дмитрием Давыдовым, базируется на культурно-исторической теории советского психолога Л. С. Выготского. В Википедии достаточно подробно описана сама игра и её варианты, но существуют и классические правила.

В общем, различные варианты игры похожи, и все участники разделены на две конкурирующие фракции: красная команда — «мирные жители», чёрная команда — «мафия». Цель игры состоит в том, чтобы уничтожить группу противника. Игра состоит из двух последовательных фаз (дневной и ночной) и определённого набора действий. Члены мафии обладают определёнными фичами (знают друг друга, убивают ночью), тогда как «мирных жителей» больше. Оказывается, что относительно небольшое количество членов «мафии», т. е. пропорциональное квадратному корню из общего числа игроков, даёт равные шансы на выигрыш для обеих групп. Кроме того, игра сильно зависит от чётности общего числа игроков.

Итак, давайте уже перейдём к конкретике.
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 2

PL/I — многогранный язык

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 3.3K

Майк Бедфорд раскрывает тайны PL/I - языка, который, как надеялись в IBM, заменит FORTRAN и COBOL.

Названия языков программирования варьируются от банальных до точно описательных, от совершенно бессмысленных до, как в случае с темой этого месяца, откровенно неточных. Речь идет о языке PL/I. Буква I - это римская цифра, обозначающая единицу, что объясняет, почему он иногда неправильно указывается как PL/1. Это расшифровывается как Programming Language One, но это, конечно, не так. На самом деле, два языка, которые мы рассматривали ранее в этой серии, предшествовали ему, как и некоторые другие.

Чтобы попасть в наш список классических языков, язык должен существовать, мягко говоря, долго, и PL/I, безусловно, соответствует этому критерию: он был выпущен в 1964 году. Он был разработан компанией IBM для использования на мэйнфреймах System/360 и впервые был применен в лаборатории Hursley Laboratories в Великобритании в рамках программы разработки 360.

Чтобы прояснить ситуацию, рассмотрим основные языки, продвигаемые ранее компанией IBM в начале 60-х годов. FORTRAN использовался для научных приложений, а COBOL - для бизнес-приложений. Будучи гораздо более простым, FORTRAN предлагал те же типы инструкций, предоставляемых современными обычными языками, но COBOL был совершенно другим. Поскольку он был ориентирован на работу с данными в коммерческих задачах, он стал первым языком, позволяющим определять иерархические структуры данных и впоследствии манипулировать ими. Целью создания PL/I было объединить возможности этих двух языков и тем самым создать решение, удовлетворяющее как научным или техническим, так и коммерческим потребностям.

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

Истории

Замена Miro, первый российский конструктор прототипов сайтов, сервис быстрых ответов в Telegram и другие стартапы

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

9 участников первого набора Product Radar. Битва за «Продукт недели» в самом разгаре! Product Radar — российская площадка для продвижения технологических продуктов, аналог Product Hunt.

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

Опыт участия в Epic MegaJam: 7 дней творения

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 969

Я «обычный» энтерпрайз программист, но недавно попробовал силы в Epic Mega Jam 2023. Опыт получился яркий, эмоциональный. Сразу захотелось поделиться. Вероятно, профессионал прочитает статью с рукой у лица, если вообще будет читать. Но текст больше для тех из нас, кто занят в смежных индустриях и неравнодушен к играм. 

До этого имел некоторый опыт с Unity примерно в 2015, а позже, в 2018, делал небольшую 2D игру на LibGDX, это небольшой движок на Java. Java — мой основной язык, было интересно оценить знакомый инструмент в новом амплуа. Долго искал повод познакомиться с двигателем Unreal Engine, еще с появления Unreal Development Kit, да все как-то было не с руки.

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

Возможна ли жизнь после плеймаркета?

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 6.6K

Привет, старина! Представь свой обычный рабочий день андроид разработчиком. Ты открываешь почту и видишь сообщение как на картинке. Твои действия?

Читать далее
Всего голосов 34: ↑32 и ↓2 +30
Комментарии 31

Основные варианты применения ИИ в разработке видеоигр

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 1.7K

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

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

10 вопросов для оценки качества услуг

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

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

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

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

Построение платформенного продукта в Авито

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

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

Наш опыт построения платформы мы постарались заложить во внешнее решение Plato, которое опирается на проверенные open-source решения.

О преимуществах платформы, процессах её разработки и сложностях в реализации — в этой статье.

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

Как построить систему отчетности для контакт-центра и почему это важно

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 435

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

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

Данное руководство проливает свет на методологию и значение показателей производительности контакт-центра. Используя расширенные инструменты отчетности, вы сможете предоставить своей команде действительно важную информацию, что должно привести к повышению ее производительности.

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

Геймификация в охране труда: кому, зачем и как?

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

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

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

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

Введение в трассировку лучей: простой метод создания 3D-изображений. Часть 3 — реализация алгоритма трассировки лучей

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

Предыдущая глава

Мы узнали всё, что нужно для перехода к практике! Теперь мы готовы написать наш первый трассировщик лучей. Вы уже должны быть в состоянии догадаться, как работает алгоритм трассировки лучей.

for (int j = 0; j < imageHeight; ++j) {
for (int i = 0; i < imageWidth; ++i) {
// вычисляем направление основного луча
Ray primRay;

...

Отрендерить статью
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 0

Ближайшие события

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
Открытый урок «Kafka Streams»
Дата 16 октября
Время 10:00
Место Онлайн
Вебинар онлайн-курса «DevOps 1C»
Дата 16 октября
Время 20:00 – 21:30
Место Онлайн
Питч-сессия pravo (tech) impulse
Дата 19 октября
Время 15:45 – 17:30
Место Москва
Вебинар «Разработка бэкенда на Clojure»
Дата 24 октября
Время 20:00 – 21:30
Место Онлайн
Russia Risk Conference 2023 — 19-я конференция по риск-менеджменту
Дата 25 – 26 октября
Время 10:00 – 19:00
Место Москва Онлайн
VK Инклюзия’23
Дата 27 октября
Время 14:00 – 21:30
Место Москва Онлайн
HolyJS
Дата 2 – 12 ноября
Время 15:00 – 19:00
Место Санкт-Петербург Онлайн
IT Recruiting – HR Forum 2023
Дата 8 – 10 ноября
Время 9:00 – 18:00
Место Москва
Онлайн IT HR-конференция HR42
Дата 17 – 18 ноября
Время 10:00 – 14:00
Место Онлайн
HighLoad++ 2023
Дата 27 – 28 ноября
Время 9:00 – 20:00
Место Москва Онлайн

Запуск Тетриса на осциллографе из 90-х

Уровень сложности Средний
Время на прочтение 20 мин
Количество просмотров 9.7K

В этой статья я хочу рассказать о том, как я запустил Тетрис на старом цифровом осциллографе. Без пайки и бега по граблям не обошлось... Зачем я это сделал — просто Just for fun.

Читать далее
Всего голосов 109: ↑108 и ↓1 +107
Комментарии 15

Как настроить сбор статистики и автоматическое отключение пользователей WireGuard в ispmanager с помощью Python и API

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 3.8K

Привет! Меня зовут Вячеслав, и я руководитель отдела маркетинга. Я поднял VPN-туннель по подписке на базе ispmanager. Однако мне этого было мало: нужно было, чтобы по окончании подписки туннель автоматически отключался и статистика по каждому пользователю собиралась ежедневно.

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

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

Когда стоит заменить A/B-тестирование сэмплированием Томпсона

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 1.7K

Какую рекламу показать пользователю, красную или синюю?

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

Но как узнать, какой из баннеров имеет наибольший уровень кликабельности?

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

Предположим, что в конце A/B-тестирования у вас получились следующие результаты:

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

Как сделать UI тестируемым и легкоизменяемым?

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

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

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

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

Япония — родина мобильного гейминга

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 3.7K
image

Мобильные игры были с нами всегда. Мы привыкли к тому, что в нулевых были чёрно-белые «Нокии» и «Сименсы», на которых были простенькие чёрно-белые игры. Мы все прекрасно помним, как появлялись первые телефоны с цветными экранами и полифонией — потихоньку они умнели, становились ярче и громче. Появлялись модели с выходом в Интернет (кто из нас не попадал на кругленькую сумму, просаживая весь трафик, качая очередные заставки на экран и игры?). В конце концов мы обменивались скачанными играми по ИК-порту. Однако мобильный гейминг начинался вовсе не со «Змейки»…
Читать дальше →
Всего голосов 53: ↑53 и ↓0 +53
Комментарии 7

Разбор фильма «Кто убил BlackBerry» | Выясни, какой ты фаундер: три попытки не потерять единорога из-за эмоций

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 1.7K

Разбор фильма "Кто убил BlackBerry" | Выясни, какой ты фаундер: три попытки не потерять единорога из-за эмоций

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

Передача и обработка IAsyncEnumerable в Typescript с ASP.NET Core Web

Уровень сложности Простой
Время на прочтение 17 мин
Количество просмотров 2.2K

Всем привет, Меня зовут Олег и я .NET разработчик в компании Bimeister. Я хотел поделиться своим интересным опытом по связи проекта на ASP.NET Core Web App с использованием IAsyncEnumerable коллекций и современного фронт-енд SPA приложения на Typescript.и Vue.js 3 версии.

Все эти технологии не новы и, на самом деле, фреймворк и технологии для веб части могут быть любые на ваш вкус: Angular, или React, или что-либо еще. Весь интерес представляет собой именно унификация процесса обмена с бэкендом на C# с современной асинхронной коллекцией. Я не буду заострять внимание на структуре обеих половин приложения подробно, скажу лишь, что использовал один из сложившихся в моей практики шаблонов для запуска  ASP.NET Core Web приложения с SPA. Все детали можно будет посмотреть в приложенном репозитории.

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