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

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

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

Как ответить запросом на запрос, или Базы данных не для чайников

Время на прочтение7 мин
Количество просмотров53K
В Технопарке я преподаю студентам курс «Базы Данных». Уже из названия ясно, что речь идет о неотъемлемой части современной IT-грамотности — без этой дисциплины сегодня трудно представить себе компьютерную специальность. Базы данных в том или ином виде сегодня окружают нас повсюду — в самом обычном смартфоне их сотни, что, разумеется, далеко не предел.


Читать дальше →
Всего голосов 104: ↑77 и ↓27+50
Комментарии35

«Оцените качество обслуживания»: Мотиватор, Инструмент управления или Демотиватор?

Время на прочтение12 мин
Количество просмотров24K
image
«Как Банк будет использовать полученную информацию и для чего?»

То, что удовлетворённость и лояльность клиентов – важно, знает каждый. Так же как и то, что лояльность клиентов зависит не только от скидок и бонусов, но и от других факторов, в том числе от качества обслуживания. Но хотят ли сегодня ритейлеры и поставщики услуг, в том числе финансовых, на деле управлять качеством обслуживания клиентов? Или большинству достаточно только делать вид? Однозначного ответа у меня пока нет. В одной из публикаций я задал читателям вопрос, см. Рисунок и подпись. Комментариев не последовало, поэтому хочу сам разобрать этот кейс. На истину в последней инстанции не претендую.
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии4

Сказ о Selenium тестировании

Время на прочтение4 мин
Количество просмотров24K
Когда перед вашей командой стоит задача написать действительно крупный проект, всегда становится задача тестировать написанный код. Если сервер тестировать относительно легко, то JS код чаще всего тестировать просто невозможно в связи с его природой.

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


А поговорим о следующем:
  1. Архитектура тестов
  2. Запуск тестов
  3. Кодовая база
  4. Таймауты
  5. Взаимодействие кода тестов и браузера.
  6. Разные среды исполнения
  7. Баги драйверов и самого селениума


Данная статья больше ориентирована на новичков, чем на профессионалов.

Читать дальше →
Всего голосов 12: ↑7 и ↓5+2
Комментарии7

Game Maker AI — С чего начать?

Время на прочтение8 мин
Количество просмотров35K
Game Maker — платформа разработки (в начальной концепции 2D) игр. На данный момент наиболее популярны Game Maker 8.0\8.1 и Game Maker Studio. Последний, к слову, поддерживает кросс-платформенную разработку (что, наверное, и является почти единственным фактором выживания движка в целом).

В последнее время GM теряет свою популярность под тенью таких гигантов, как Unity3D/Cryengine/Unreal. Я считаю потерю спроса на этот движок совершенно необоснованной, ведь для создания многих игр (например, под Android) нет необходимости в последних технологиях разработки 3D и других «ненужных» функциях, очень требовательных к системе пользователя. При использовании Game Maker для разработки таких игр можно достичь достаточно высокой производительности без видимых жертв со стороны графики или функционала.

Итак, ближе к делу. С некоторых пор я занимаюсь разработкой игр в среде GM. И в один прекрасный день передо мной возникла интереснейшая задача — разработать приемлемый AI для игры жанра TDS (Top Down Shooter). Признаться, до того момента я не сталкивался с разработкой искусственного интеллекта, и задача поначалу просто поставила меня в тупик. Три последующих дня я провел в поиске решения (естественно, методом проб и ошибок), и узнал я за эти 3 дня довольно много. На основе своего короткого и болезненного опыта, я постараюсь описать основные методы и сторонние библиотеки по разработке AI в среде Game Maker.
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии11

Инфраструктура и жизненный цикл разработки веб-проекта

Время на прочтение11 мин
Количество просмотров57K
Когда проект маленький, особых проблем с ним не возникает. Список задач можно вести в текстовом файле (TODO), систему контроля версий, по большому счёту, можно и не использовать, для раскладки файлов на живой сервер их можно просто скопировать (cp/scp/rsync) в нужную директорию, а ошибки всегда можно посмотреть в лог-файле. Глупо было бы, например, для простенького сервиса с двумя скриптами и тремя посетителями в день поднимать полноценную систему управления конфигурациями серверов.

С ростом проекта требования растут. Становится неудобно держать в TODO-файле несколько десятков задач и багов: хочется приоритетов, комментариев, ссылок. Появляется необходимость в системе контроля версий, специальных скриптах/систем для раскладки кода на сервер, системе мониторинга. Ситуация усугубляется, когда над проектом работает несколько человек, а уж когда проект разрастается до нескольких серверов, появляется полноценная инфраструктура («комплекс взаимосвязанных обслуживающих структур или объектов, составляющих и/или обеспечивающих основу функционирования системы», Wikipedia).

На примере нашего сервиса "Календарь Mail.ru" я хочу рассказать о типичной инфраструктуре и жизненном цикле разработки среднего по размерам веб-проекта в крупной интернет-компании.

Срыв покровов
Всего голосов 102: ↑93 и ↓9+84
Комментарии46

Эдвард руки — С++

Время на прочтение10 мин
Количество просмотров55K
Я искал, с чем бы сравнить программирование на С++ и я вспомнил фильм 1990 года режиссера Тима Бертона — «Эдвард руки-ножницы»
Читать далее
Всего голосов 145: ↑115 и ↓30+85
Комментарии217

Как выбрать издателя для вашей мобильной игры, или 5 правильных вопросов от разработчиков

Время на прочтение6 мин
Количество просмотров26K
Команда KamaGames Studio с помощью друзей из KamaGames решила подумать над вопросом выбора издателя для мобильных игр. Этот вопрос актуален для многих инди-разработчиков, и рано или поздно приходится его решить.

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

image

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

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

Lock-free структуры данных. 1 — Начало

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

Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с хабрасообществом своим опытом, наблюдениям и размышлениями о том, что такое lock-free структуры данных, как их реализовывать, подходят ли концепции контейнеров стандартной библиотеки STL к lock-free контейнерам, и когда стоит (и стоит ли вообще) применять lock-free структуры данных.

Читать дальше →
Всего голосов 165: ↑161 и ↓4+157
Комментарии39

Как повысить качество кода

Время на прочтение4 мин
Количество просмотров23K
Все мы наслышаны о красивом коде. Книги и страницы специализированных ресурсов пестрят рекомендациями, стандартами и просто хорошими советами. Современные языки предлагают множество путей изящного выражения идей разработчика. Вообще все хорошо. Вроде бы. Но реальная жизнь сурова. По ряду вполне объективных причин только самые счастливые из нас имеют возможность работать с действительно качественной кодовой базой. Большинство же, зная чуть ли не все подробности идеального способа работы, живут здесь и сейчас, за пределами рая, довольствуясь имеющимся.

Но как сделать свою жизнь лучше? Как заставить уровень качества кода расти. Приведу несколько собственных правил-размышлений на эту тему.
Читать дальше →
Всего голосов 23: ↑13 и ↓10+3
Комментарии7

Детальный ликбез про корпоративный бэкап, как сравнивать системы + пара практических советов

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

Cистема резервного копирования может работать вот так

Чем корпоративный бэкап отличается от домашнего?
Масштаб — инфраструктуры до петабайта. Скорость – тысячи транзакций в секунду, поэтому, например, нужно уметь забирать бэкап из базы данных на лету, не останавливая запись. Зоопарк систем: рабочие машины, мобильные телефоны и планшеты, профили людей в «облаке», копии баз данных CRM/ERP, все это на разных ОС и в тяжелых разветвленных системах.

Ниже я расскажу про решения от IBM, EMC, CommVault, Symantec и то, что они дают как бизнесу в целом, так и IT-отделу. Плюс о некоторых подводных камнях.

Давайте посмотрим на эти особенности бэкапа в обычных российских компаниях. В том числе таких, которые бэкапятся только на случай изъятия оборудования.
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии25

Развитие таксономии творческого самовыражения через понятийный аппарат математической теории игр

Время на прочтение5 мин
Количество просмотров25K
Данная статья является логическим продолжением предыдущей.

Цель данной статьи — создать симбиоз таксономии творческого самовыражения и математической теории игр. Это поможет развить таксономию предложенную ранее, а также подвести её под математический базис.

Для раскрытия понятийного аппарата и определения точки с которой возможно развитие представленной ранее таксономии, необходимо прежде всего ответить на вопрос «Какие признаки игры используются в математической теории игр?».
Характеризующими признаками подобных игр являются:

  1. Наличие нескольких участников игры.
  2. Неопределенность поведения участников, связанная с наличием у каждого из них нескольких вариантов действий.
  3. Различие (несовпадение) интересов участников
  4. Взаимосвязанное поведение участников, поскольку результат получаемый каждым из них, зависит от поведения всех участников.
  5. Наличие правил поведения, известных всем участникам.

Как мы видим, уже первый признак игры пересекается с вопросом-разветвителем таксономии Кроуфорда — «Наличие соперника», что переносит математические игры в категорию "Конфликт".
Второй признак дополняет данный вывод заявляя, что соперник должен быть действующим агентом, т.к. алгоритмы искусственного интеллекта рано или поздно можно просчитать.
Третий и четвертый признаки не позволяют выйти нам за пределы данной категории, т.к. они одновременно удовлетворяют требованиям категории "Соревнование" и категории "Игра".
Пятый признак соответствует категории "Забава", но т.к. у нас есть признаки категории более низкого класса "Конфликт", то для развития мы выберем именно её.

Типы игр в математической теории игр

— Кооперативные, некооперативные и гибридные игры


Кооперативные или коалиционные игры в теории игр — игры, в которых игроки могут объединяться в группы, взяв на себя некоторые обязательства перед другими игроками и координируя свои действия.
Некооперативные игры — игры, в которых каждый игрок должен играть за себя.
image
Слева направо: 1. Настольная игра Dungeons&Dragons 2. Настольная игра Монополия 3. Шутер от первого лица Halo 4. Файтинг Mortal Kombat

Гибридные игры — игры, которые включают в себя элементы кооперативных и некооперативных игр. В таких играх игроки могут образовывать группы, но игра может вестись в некооперативном стиле (к примеру kill stealing в League of Legends).
image
Скриншот из игры League of Legends

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

Читать дальше →
Всего голосов 26: ↑18 и ↓8+10
Комментарии8

Суровый геймдев на примере трех игр для Android

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


Разработка игр в целом – очень увлекательный и интересный процесс. Особенно он интересен тогда, когда ты занимаешься этим один, независимо ни от кого, имея за плечами небольшой опыт во всем, что позволит создать полноценный продукт для индустрии развлечений. Казалось бы, если для этого есть время и возможности, то почему бы не переодеться в шкуру инди-разработчика и создать нечто интересное, что сможет понравиться людям и принесет прибыль? Конечно да, но только помимо множества явных подводных камней существуют и едва заметные грабли, которые лежат на последней ступени процесса создания игры и больно лупят по голове. После чего остается мысль — «Ведь я же старался, потратил много времени, но ничего не получил взамен», а следом — «Ничего, в следующий раз я сделаю лучше!». Под катом история о том, как на эти грабли мне пришлось наступить трижды.
Читать дальше →
Всего голосов 66: ↑58 и ↓8+50
Комментарии57

Основные ошибки при проектировании главного меню игры

Время на прочтение4 мин
Количество просмотров27K
Почему важно главное меню? Встречают, как говорится, по одежке. Думаю, никто не будет спорить, что первое впечатление очень важно. Главное меню — это то, что встречает пользователя перед входом в вашу восхитительную игру. Что же это будет? Вежливый опрятный дворецкий или туповатого вида небритый верзила, от которого разит перегаром?

По опыту(как игрок и как разработчик) выделил топ основных ошибок при проектировании главного меню игры.
Читать дальше →
Всего голосов 33: ↑22 и ↓11+11
Комментарии18

Проектирование интерфейсов в MMORPG Skyforge

Время на прочтение8 мин
Количество просмотров30K
Здравствуйте, я Антон Кругляков, руководитель команды User Interface проекта Skyforge. В этой статье я расскажу о нашем опыте проектирования дизайна интерфейса. Я старался максимально уменьшить теоретическую часть, но, глядя на финальный результат, понимаю, что не особо преуспел в этом.

Уникальные отличия


Читать дальше →
Всего голосов 62: ↑54 и ↓8+46
Комментарии32

GNOME Shell Extensions

Время на прочтение3 мин
Количество просмотров49K
В комментариях к новой версии GNOME3 в процессе обсуждения недостатков среды предсказуемо стали проскакивать различные рецепты борьбы с ними с помощью расширений. С помощью беглого поиска по Хабру я нашел несколько статей описывающих конкретные расширения и ссылку на единую базу расширений. Статьи за два года заметно устарели, а базой, по-моему, можно пользоваться только путем перебора всех имеющихся расширений. Поэтому я предлагаю обсудить и собрать в одном месте кто какие расширения использует и какие лучше. Вероятно кто-то среди предложенных расширений найдет решение своей проблемы и обретет счастье. Для затравки опишу расширения, которые кажутся мне интересными и полезными. Кто заинтересовался — прошу под кат.

Осторожно! Много иллюстраций.

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

Проектировщик интерфейсов: кто именно нужен компаниям

Время на прочтение7 мин
Количество просмотров56K
В последние несколько лет проектирование интерфейсов начало приобретать немалую популярность. Отечественные компании, чей бизнес так или иначе связан с компьютерами и интернетом стали понимать, что просто «дизайна» в том понимании, в каком он употребляется у нас уже недостаточно, нужно не только красиво, но и удобно. В результате мы видим немалое количество вакансий с такими словами в описании, как UX, UI, UCD, usability и всё в таком духе.

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

Статья может быть интересна в первую очередь тем, кто только начинает осваивать проектирование интерфейсов и веб-дизайн, чтобы понять чему нужно учиться, дабы соответствовать ожиданиям работодателя. Более опытным коллегам может быть интересно чего сейчас требует рынок и какие скиллы следует подкачать, чтобы оставаться на волне. Работодателям статья, возможно, поможет определиться и более четко сформулировать, кого же в действительности они хотят нанять.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии32

Руководство по проектированию реляционных баз данных. Каскадное удаление данных

Время на прочтение6 мин
Количество просмотров94K
Дополнение к циклу переведенных статей.
Статьи: 1-3, 4-6, 7-9, 10-13, 14-15


Информация в статье относится к 5-й части руководства.

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


Введение.


Если отталкиваться от обывательской позиции человека, который разрабатывает базы данных, то внешние ключи – это удобно и упрощает жизнь (в большинстве случаев, всегда есть исключения.). Даже будучи невеждой в реляционной теории баз данных, к осознанной необходимости использования внешних ключей, на определенном этапе своего развития, приходит практически любой практик (утверждение — более относится к начинающим), который не стоит на месте в своем развитии и продолжает мыслить. Даже если он еще не знает, что то, что ему нужно называется связью по внешнему ключу, он начинает самостоятельно организовывать данные определенным образом, разбивать на отдельные таблицы и связывать их между собой. Настолько это становится очевидным.
Но при использовании внешних ключей, даже если не знать такого определения, возникает необходимость следить за связываемыми данными. Рассматриваемым объектом данной статьи является, если так можно сказать, своеобразный спутник, который следует за такой организацией данных. И в данном случае уже гораздо полезнее знать теорию, т.к. это может значительно упростить жизнь в процессе работы с базой данных.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии2

Руководство по проектированию реляционных баз данных (14-15 часть из 15) [перевод]

Время на прочтение4 мин
Количество просмотров130K
Продолжение.
Предыдущие части: 1-3, 4-6, 7-9, 10-13
Продолжение. Каскадное удаление данных.

14. Другой пример: база данных интернет-магазина.


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

Система интернет-магазина.

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

  • Отображение товаров
  • Классификация товаров
  • Регистрация клиентов
  • Добавление товаров в корзину покупок
  • Отображение содержимого корзины покупок
  • Оформление заказов посетителями
  • И т.д.


Определяем сущности и отношения.

Из списка задач мы можем вывести сущности, которые имеют важные роли в нашей системе. Товары, категории, клиенты и заказы – сущности, которые можно найти почти в каждой базе данных интернет-магазина. В данном примере я покажу вам модель, содержащую только следующие сущности: клиент, заказ и товар. Определившись с сущностями, мы можем подумать над связями между ними.
Читать дальше →
Всего голосов 14: ↑10 и ↓4+6
Комментарии3

Рендер ландшафта в WebGL — 2

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

Часть вторая


Приветствую в серии статей о WebGL рендринге ландшафта, используемом в игре Trigger Rally!

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

В этой статье я расскажу об структуре данных вершин, а так же о морфинге.
image

От переводчика: в статье много косноязычия и технических неточностей. Помогите их исправить!
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии18

Рендер ландшафта в WebGL

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

Часть первая — Введение


В этой серии постов, я буду рассказывать о технологии рендринга ландшафта в игре «Rally Trigger», базируемой на WebGL.
image

От переводчика: случайно натолкнулся на эту серию статей, которая на данный момент еще только пишется. Нужно сказать — статьи отменные, все отлично разжёвано!
Читать дальше →
Всего голосов 66: ↑56 и ↓10+46
Комментарии25

Информация

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