Как стать автором
Обновить
1
0
Корнеев Юрий @endo

Программист

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

Как решить проблему блокировки изображений в email-рассылках: полное руководство

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

Блокировка изображений – одна из самых серьезных проблем, с которой сталкиваются маркетологи, когда проводят email-кампании. Обычно причина кроется в настройках по умолчанию или личных предпочтениях получателя. В результате у большого количества подписчиков изображения блокируются автоматически и письма не доносят до человека основную мысль сразу же, а то и вовсе выглядят испорченными. Поэтому важно оптимизировать рассылки для режима отключенных изображений. Как это сделать? Сервис DashaMail делится лайфхаками.

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

Читать далее
Всего голосов 25: ↑7 и ↓18-11
Комментарии37

Заповеди тимлида Авито

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

Мы уже публиковали свои внутренние документы с ожиданиями от инженеров и менеджеров продукта в плейбуке на Гитхабе. Пришло время поделиться ещё одним — кодексом тимлида.


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

Обзор техник реализации игрового ИИ

Время на прочтение55 мин
Количество просмотров56K
image

Введение


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

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

Что же такое «игровой ИИ»?


Игровой ИИ в основном занимается выбором действий сущности в зависимости от текущих условий. В традиционной литературе по ИИ называет это управлением "интеллектуальными агентами". Агентом обычно является персонаж игры, но это может быть и машина, робот или даже нечто более абстрактное — целая группа сущностей, страна или цивилизация. В любом случае это объект, следящий за своим окружением, принимающий на основании него решения и действующий в соответствии с этими решениями. Иногда это называют циклом «восприятие-мышление-действие» (Sense/Think/Act):

  • Восприятие: агент распознаёт — или ему сообщают — информацию об окружении, которая может влиять на его поведение (например, находящиеся поблизости опасности, собираемые предметы, важные точки и так далее)
  • Мышление: агент принимает решение о том, как поступить в ответ (например, решает, достаточно ли безопасно собрать предметы, стоит ли ему сражаться или лучше сначала спрятаться)
  • Действие: агент выполняет действия для реализации своих решений (например, начинает двигаться по маршруту к врагу или к предмету, и так далее)
  • … затем из-за действий персонажей ситуация изменяется, поэтому цикл должен повториться с новыми данными.
Читать дальше →
Всего голосов 67: ↑66 и ↓1+65
Комментарии15

Что я слушаю, когда занимаюсь спортом

Время на прочтение8 мин
Количество просмотров17K
На своей третьей статье я осмелел настолько, что решил слегка поэкспериментировать со стилем. Совсем чуть-чуть. Сделать обзор книг более авторским – в конце концов, я даю рекомендации основываясь на своих предпочтениях. Читателей, которых это раздражает я прошу перейти в конец статьи – книжные советы будут там.

Как я представляю себе своё знакомство с Гиктаймс? Как полутемный зал, наполненный гулом беседующих и спорящих межу собой людей. Внезапно, вспыхивающий свет выхватывает одинокую фигуру новичка:

— Здравствуй Гиктаймс. Меня зовут Вишманатанам Капут и я индус. И я пишу наш национальный код. Раздается нестройный хор голосов, в котором преобладает «Бывает», «Не вини себя», «Все мы индусы, в какой-то мере».
— И я написал вот это, — продолжил ободренный Вишманатанам, продемонстрировав залу листок с записью:

x = 73;
if (x != 73) {
x = 73;
}

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

— Но ты ведь больше не будешь? — спрашивает ведущий?
— Я, я, я …постараюсь, — неуверенно промямлил индус.
— Проходи и садись. Следующий.

— Здравствуй Гиктаймс. Я админ Роскомнадзора. Я понимаю, что я делаю, но мне были очень нужны деньги, чтоб эмигрировать в Канаду….

В зале поднялся глухой ропот. С галерки слышались отдельные, несвязанные выкрики: «Анус», «Заблокировать», «Чтоб не повадно было»…

— Мы вне политики, —перекрывая гул сказал ведущий, — проходи и садись.
Админ РКН сел посередине стихийно образовавшего вокруг него пустого пространства.
Дальше была моя очередь.

— Здравствуй Гиктаймс. Мне 45 лет и я качок…
Читать дальше →
Всего голосов 41: ↑29 и ↓12+17
Комментарии46

Создание языка программирования с использованием LLVM. Часть 1: Введение и лексический анализ

Время на прочтение7 мин
Количество просмотров58K
Добро пожаловать в учебник «Создание языка программирования с LLVM». Этот учебник знакомит вас с созданием простейшего языка программирования, и при этом показывает, каким оно может быть легким и интересным, а также даёт вам начальные знания, которые вы затем сможете применить на других языках программирования. Код в этом учебнике также может быть использован в качестве стартовой площадки для ваших творений с помощью LLVM.

Целью данного учебника является постепенное представление нашего языка, описание его пошагового создания. Это позволит нам охватить достаточно широкий спектр вопросов проектирования языков и использования LLVM, попутно показывая и объясняя код без огромного количества ненужных деталей.
Читать дальше →
Всего голосов 65: ↑61 и ↓4+57
Комментарии28

Создание языка программирования с использованием LLVM. Часть 9: Добавляем отладочную информацию

Время на прочтение32 мин
Количество просмотров6.8K
Оглавление:

Часть 1: Введение и лексический анализ
Часть 2: Реализация парсера и AST
Часть 3: Генерация кода LLVM IR
Часть 4: Добавление JIT и поддержки оптимизатора
Часть 5: Расширение языка: Поток управления
Часть 6: Расширение языка: Операторы, определяемые пользователем
Часть 7: Расширение языка: Изменяемые переменные
Часть 8: Компиляция в объектный код
Часть 9: Добавляем отладочную информацию
Часть 10: Заключение и другие вкусности LLVM

9.1. Введение


Добро пожаловать в главу 9 руководства “Создание языка программирования с использованием LLVM”. В главах с 1 по 8, мы построили маленький язык программирования с функциями и переменными. Что случится, если что-то пойдёт не так, как тогда отлаживать программу?
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии13

MMO с нуля. С помощью Netty и Unreal Engine. Часть 1

Время на прочтение58 мин
Количество просмотров51K
Всем привет! В нескольких статьях я хотел бы поделиться опытом создания подобия ММО игры используя Unreal Engine и Netty. Возможно архитектура и мой опыт кому-то пригодится и поможет начать создавать свой игровой сервер в противовес unreal dedicated server, который слегка прожорлив или заменить собой фреймворки для разработки многопользовательских игр такие как Photon.

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

Часть 1. Общая картина, сборка библиотек, подготовка клиента и сервера к обмену сообщениями
Часть 2. Наращивание игрового функционала + алгоритм Diamond Square


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

Статический анализ как часть процесса разработки Unreal Engine

Время на прочтение13 мин
Количество просмотров9.9K
PVS-Studio & Unreal Engine

Проект Unreal Engine развивается — добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта — появление в коде новых ошибок, которые желательно выявлять как можно раньше. Одним из способов сокращения количества ошибок является использование статического анализатора кода PVS-Studio. Причем анализатор также быстро развивается и учится находить новые паттерны ошибок, некоторые из которых будут рассмотрены в этой статье. Если вас заботит качество кода ваших проектов, то эта статья для вас.
Читать дальше →
Всего голосов 27: ↑22 и ↓5+17
Комментарии1

Скорочтение: работает или нет? Часть 2: разбор методик

Время на прочтение8 мин
Количество просмотров48K
Краткое содержание первой части: скорочтение – это набор разных механик, которые [в некоторых случаях] помогают получать информацию из текста быстрее, чем при обычном чтении. Тем не менее, даже скорочтение не поможет читать с «пулеметной» скоростью – ваши способности возрастут, но вряд ли превысят 500-600 слов в минуту (среди комментаторов к предыдущей части материала, правда, были и те, кому удалось развить скорость чтения и до 700 слов в минуту). Большинство громких заявлений скорочтецов, ставивших мировые рекорды в тысячи слов в минуту, – не более чем самореклама и неподтвержденные данные (исключение – «человек дождя» Ким Пик).

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

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

Как принять закон или обработка данных в распределённых системах понятным языком

Время на прочтение23 мин
Количество просмотров7K
Если ваша работа не связана с компьютерными технологиями, вы, вероятно, не думали долго о том, как хранятся данные на компьютерах или в облаке. Я говорю не о физических механизмах работы жёстких дисков или чипов памяти, а о чём-то одновременно более сложном и более понятном, чем вы думаете.

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



«Каких ещё островах?», — спросите вы?
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии11

PropTypes — проверка типов в React

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

React. Продвинутые руководства. Часть Вторая


Продолжение серии переводов раздела "Продвинутые руководства" (Advanced Guides) официальной документации библиотеки React.js.


PropTypes — проверка типов в React


По мере того, как ваше приложение будет расти — вы можете наткнуться на большое количество ошибок, связанных с проверкой типов. Для некоторых приложений, вы можете использовать расширения JavaScript такие как Flow или TypeScript осуществляя проверку типов всего вашего приложения. Но если вы не используете таковые — React предоставляет некоторые встроенные возможности проверки типов.


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

Создание редактора квестов и диалогов для Unreal engine: Часть 2 технические аспекты

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

Здравствуйте меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Сегодня я продолжу рассказывать про плагин для редактирования квестов и диалогов. В предедущей статье я рассказал как пользоваться плагином, сегодня я расскажу что нужно знать чтобы плагин мог взаимодействовать с миром игры и её интерфейсом.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии8

Эффективное хранение: как мы из 50 Пб сделали 32 Пб

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

Видео доклада




Текстовая Версия


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


Индексы и тела писем составляют 15 % объёма, файлы — 85 %. Место для оптимизаций надо искать в файлах (аттачах в письмах). На тот момент у нас не была реализована дедупликация файлов; по нашим оценкам, она может дать экономию в 36 % всего объёма почты: многим пользователям приходят одинаковые письма (рассылки социальных сетей с картинками, магазинов с прайсами и т.д.). В этом посте я расскажу про реализацию такой системы, сделанной под руководством PSIAlt.
Всего голосов 87: ↑84 и ↓3+81
Комментарии88

Руководство для начинающих VR-разработчиков

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


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

1. Изучаем оборудование


Спросите себя: меня интересует разработка для десктопных устройств, наподобие HTC Vive, или меня больше привлекают мобильные устройства вроде Samsung Gear VR или Google Cardboard? Если вы пока не определились, то почитайте обзоры и подумайте о том, что лучше выбрать для вашего рынка. Если для ваших идей требуются контроллеры движения или качественная графика, то ориентируйтесь на подключаемые к компьютеру очки VR. Модели, которые сегодня поддерживаются движками Unity, Unreal и веб-реaлизациями:
Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии9

Создаём простейшую VR-демку с Unreal Engine

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


По мере того, как виртуальная реальность становится мейнстримом, всё больше разработчиков игр изъявляют желание создавать новый контент для устройств вроде HTC Vive и Oculus Rift. Из доступных движков особенно выделяются два: Unreal Engine and Unity3D. В этой статье мы рассмотрим процесс разработки маленькой демки на основе Unreal Engine. Мы делаем уровень, по которому можно будет свободно перемещаться, а также брать или уничтожать объекты.
Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии0

Осень на рынках инди-игр

Время на прочтение11 мин
Количество просмотров9.7K
image
Фото Розы Дик

Ах, осень. Время пожинать посеянное и созерцать смену времён года.

Если вы мелкий разработчик игр, вы, вероятно, заметили некоторые циклические изменения в процессе создания игр. Игры сейчас выглядят более красивыми, чем были когда-либо, не так ли? Планка качества поднимается на недостижимую высоту. Из-за увеличившегося объёма работы ваша команда расширяется. Теперь вам нужно кормить так много ртов, что кажется рискованным экспериментировать с новыми безумными игровыми механиками. К счастью, хорошо понятно, игры каких жанров станут прорывными хитами. К несчастью, есть избыток похожих игр: вероятно, вы не выдержите с ними конкуренции.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии41

Открытие студии мобильной разработки «с нуля» в Питере — 3.5 года спустя. Реинкарнация. Часть 3

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


И снова здравствуйте… продолжаю long read про наш опыт, без «приукрас». Картинка выше только для привлечения внимания.

Часть 2 и Часть 1 обязательная к прочтению. Нет, конечно, можно и не читать, только тогда и эту статью пропускайте смело :). В части 2 запустил опрос, надо продолжать или нет — подавляющее большинство одобрило, посему встречайте часть 3… Кстати, вот парадокс, я ради любопытства разместил кусочек материала на pikabu, и знаете что? Ничего кроме "-20" к тамошней карме. Боюсь делать выводы поспешные, скорее всего там люди ждут другой материал. Напоминаю, что рассказываю наш опыт создания компании по разработке мобильных приложений «с нуля», вспоминая 2-х годичный опыт и добавляя его (upd.2016 — новым взглядом).

Мне в комментариях написали, что за подобные знания платят иногда по 15к рублей в час. Елки-палки, видимо не тем занимаюсь. Надо податься в бизнес-тренеры-менторы-консультанты-инфобизнесмены. Но буду рад, если сказанное поможет кому-то добиться успехов, совсем не боюсь конкуренции и за последними совсем не слежу — у каждого свой путь, чем и хороша стезя предпринимательства. У нас есть свой канал на youtube, каждый день (рабочий) мы записываем короткие видео, иногда даже по итогу дня — наш опыт, без фантазий, лукавства и т.п. Подписывайтесь, мне будет приятно :) а вам, надеюсь, полезно.

Итак, let's go…
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии8

5 книг, которые помогут мыслить нестандартно и почему это важно именно сейчас

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


Потребляя гигабайты информации, мы начинаем мыслить шаблонно. Роботы автоматизируют все больше специальностей, и незаменимыми становятся лишь те работники, кто мыслит нестандартно. Многие считают, что креативность — это врожденный навык. Я тоже так думал, пока не прочел эти книги. Они доказали, что мыслить нестандартно может научиться каждый.
Читать дальше →
Всего голосов 49: ↑35 и ↓14+21
Комментарии35

Первые шаги в оптимизации и полировке игры на Unity3d

Время на прочтение8 мин
Количество просмотров45K
imageПосле того как я закончил мой первый проект, пришла мысль о портировании его на мобильные устройства или хотя бы запуске на встроенном GPU. Во всех гайдах по оптимизации, в одном из первых советов вам сообщат, что не стоит переживать о производительности заранее, начинайте оптимизировать, после того как все закончите, и вы постепенно приведете все в порядок. Так и я, выпустив изначально игру на десктоп, решил, что никогда не будет поздно оптимизировать ее под мобильные устройства. К сожалению, мне не удалось в полной мере достичь поставленной цели, потому как, похоже, что мобильные игры следует с самого начала разрабатывать с прицелом на слабое железо. На данный момент, для дальнейшей оптимизации под мобильные платформы я вижу только необходимость серьезно переделать геймплей и дизайн игрового мира. Однако и в текущем варианте получен ценный опыт оптимизации под Unity3d и результирующий прирост производительности более чем в 300% на интегрированном GPU.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии51

Основы левел-дизайна

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

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

В этой статье я буду говорить о разработке многопользовательской карты для Call of Duty: Modern Warfare. Давайте назовём её «Tugurios». Она будет создаваться в антураже трущоб. Теперь мы немного поговорим об истории и сеттинге карты.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии7
1
23 ...

Информация

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