Pull to refresh
23
0
Иван Журавлев @InteractiveTechnology

CTO

Send message

Генерирование полигональных карт для игр

Reading time 24 min
Views 57K
Я хотел научиться генерировать интересные игровые карты, которые не обязательно были бы реалистичными, а также попробовать техники, с которыми раньше не работал. Обычно я создаю карты с другой структурой. Что можно сделать с тысячей полигонов вместо миллиона тайлов? Отчётливо различимые игроком области могут быть полезны для геймплея: местоположения городов, места квестов, территории для захвата или колонизации, ориентиры, точки поиска пути, зоны с разной сложностью и т.д. Я генерировал карты с помощью полигонов, а затем растеризировал их вот в такие карты:

image

Во многих процедурных генераторах карт, в том числе и некоторых моих предыдущих проектах, для генерирования карты высот используются функции шума (midpoint displacement, фракталы, diamond-square, шум Перлина и т.д.). Здесь я их не применял. Вместо неё я использовал структуру графов для моделирования элементов, определяемых ограничениями геймплея (высота, дороги, течение рек, места квестов, типы монстров) и функции шума для моделирования того, что не ограничивается геймплеем (форма побережья, расположение рек и деревьев).
Читать дальше →
Total votes 100: ↑99 and ↓1 +98
Comments 11

WebRTC: Делаем peer to peer игру на javascript

Reading time 13 min
Views 38K
Недавно мне довелось поработать над прототипом видеочата. Это был отличный повод поближе познакомиться с концепциями WebRTC и опробовать их на практике. Как правило, когда говорят про WebRTC, подразумевают организацию аудио- и видеосвязи, но эта технология может применяться и для других интересных вещей. Я решил попробовать сделать peer-to-peer игру и поделиться опытом ее создания. Видео того что получилось и подробности реализации под катом.


Читать дальше →
Total votes 94: ↑92 and ↓2 +90
Comments 52

Научно-популярные фильмы о физике

Reading time 1 min
Views 81K
Всем привет!

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

Недавно случайно наткнулся на ютубе на фильм с Брайаном Грином «Тайны мироздания» и удивился, что у видео так мало просмотров.

Не сказать, чтобы такая подача материала мне очень нравилась, но все равно, местами довольно интересно :) Может быть, будет интересно не только мне.

Сами видео под катом.
Читать дальше →
Total votes 81: ↑76 and ↓5 +71
Comments 35

MeCam — летающая камера за 49$

Reading time 2 min
Views 188K
Новый миниатюрный квадрокоптер MeCam, недавно представленный компанией Always Innovating, способен поменять наши представления о способах видео- и фотосъёмки. MeCam представляет собой летающую камеру на базе Linux, которая управляется голосом и передаёт фото и видео по Wi-Fi либо Bluetooth на iOS либо Android-устройство с возможностью последующей публикации в Youtube, Google+, Facebook либо Twitter. Также, как альтернатива управлению голосом, поддерживается функция «Follow Me», при которой квадрокоптер неотступно следует за пользователем, ориентируясь на сигнал его смартфона либо планшета. В устройство встроено 14 датчиков, позволяющие самостоятельно преодолевать препятствия, имеется система стабилизации для получения плавного изображения и возможность панорамной съёмки.
Читать дальше →
Total votes 110: ↑109 and ↓1 +108
Comments 115

Психологическая деформация программистов. Взгляд с обеих сторон баррикад

Reading time 6 min
Views 136K
Само наличие психологической деформации у какой-либо профессии, как правило, достаточно спорный момент ввиду того, что у разных людей она проявляется по-разному. Однако общую тенденцию можно выделить и, пожалуй, настало то время когда можно достаточно смело говорить, что программисты всё же имеют свой особенный психологический портрет который обусловлен их профессиональной деятельностью.

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

И что же них такого деформированного?
Total votes 461: ↑436 and ↓25 +411
Comments 558

Обработка ошибок в Node.js

Reading time 22 min
Views 71K


Пост содержит перевод статьи «Error Handling in Node.js», которую подготовили сотрудники компании Joyent. Статья была опубликована 28 марта 2014 года на сайте компании. Dave Pacheco поясняет, что статья призвана устранить неурядицу среди разработчиков, касаемо лучших практик работы с ошибками в Node.js, а так же ответить на вопросы, которые часто возникают у начинающих разработчиков.
Читать дальше →
Total votes 46: ↑43 and ↓3 +40
Comments 11

Backend без проблем. Чудо или будущее?

Reading time 4 min
Views 24K
Всем привет!

Друзья, не мне вам рассказывать, да и сами вы знаете о том, как делается backend для серверных/клиент-серверных приложений. В нашем идеальном мире всё начинается с проектирования архитектуры, затем выбираем площадку, затем прикидываем нужное количество машин, как виртуальных, так и нет. Затем происходит сам процесс поднятия архитектуры для разработки/тестирования. Всё готово? Ну поехали писать код, делать первый коммит, обновлять код на сервере из репозитория. Открыли консоль/браузер проверили и поехало. Пока всё просто, а что дальше?
Читать дальше →
Total votes 77: ↑70 and ↓7 +63
Comments 79

Как выгодно и правильно погашать кредиты

Reading time 7 min
Views 233K
Поскольку на одного россиянина в среднем приходится 3 кредита, мы решили, что айтишникам тоже будет интересно узнать как правильно и выгодно гасить свои кредиты и долги.

Получить кредит очень просто, а вот рассчитаться с кредиторами – намного сложнее. Как оказывает практика, можно вылезти и из самой глубокой финансовой ямы, если не отчаиваться. Наши советы и методы помогут рассчитаться даже с крупными долгами: грамотно гасить долг, найти деньги для оплаты, выбрать оптимальный способ выплат.

Узнать как выгодно гасить кредиты
Total votes 32: ↑24 and ↓8 +16
Comments 42

Два и более рабочих места на одном компьютере — бесплатное решение

Reading time 12 min
Views 102K

В данной статье рассматривается идея и практическое руководство по создания многопользовательской рабочей станции (multiseat) с использованием виртуализации KVM, с возможностью удаленного управления через libvirt. С помощью этого руководства возможно создать два и более рабочих мест как в офисе, так и дома, которым может потребоваться возможность полного использования графической подсистемы компьютера. Причем можно на одном системном блоке реализовать одновременно работу различных операционных систем Windows, Linux, Mac OS X, остальное по вкусу.
Читать дальше →
Total votes 75: ↑67 and ↓8 +59
Comments 53

Основы Scala. 5 часов поедания мозгов

Reading time 3 min
Views 63K
Добрый день, уважаемое хабрасообщество!image

В конце ноября 2013 года мы с коллегой устроили встречу, на которой провели сеанс «интенсивного введения Scala в мозг добровольцев».

Выкладываю на суд общественности наше творчество и краткое описание «эксперимента».
Читать дальше →
Total votes 54: ↑52 and ↓2 +50
Comments 29

Экспорт Избранного на Хабре в PDF

Reading time 3 min
Views 35K
Доброго времени суток, хабровчане!


Думаю многих из вас когда-либо посещала мысль «вот бы сохранить статьи с Хабра».
Такая же мысль посетила и меня два дня назад. Сохранить захотел не просто каждую статью, а только те, что в избранном, да не поштучно, а сразу всё скопом.
Первая мысль — надо написать скрипт, который всё это вытянет. Python я уже подучил, но вот с генерацией PDF на нем сталкиваться ещё не приходилось.

Закручинился я было… Но OpenSource и Хабр спасли меня!
Краткая суть статьи для тех, кому не интересно много читать
В статье описан доработанный скрипт на Python fav2pdf.
Изначальный автор скрипта vrtx, за что ему большое спасибо.
«Usage — лучше тысячи слов!»
usage: fav2pdf.py [-h] [-d OUTPUT_DIR] [--from-date FROM_DATE]
                  [--to-date TO_DATE] [--all-in-one]
                  [--only-hubs [ONLY_HUBS [ONLY_HUBS ...]]] [--no-comments]
                  [--no-symlinks]
                  user

Tool for save favorite posts from habrahabr.ru in pdf's or html's

positional arguments:
  user                  habrahabr.ru username

optional arguments:
  -h, --help            show this help message and exit
  -d OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Directory for output
  --from-date FROM_DATE
                        From date
  --to-date TO_DATE     To date
  --all-in-one          Save all posts in one PDF-file
  --only-hubs [ONLY_HUBS [ONLY_HUBS ...]]
                        Save only posts from hubs. For multiple: "--only-hubs
                        Hub1 Hub2 --"
  --no-comments         Dont save comments from posts
  --no-symlinks         Dont create symlinks to posts
  --create-html         Create html's instead of pdf's
  --create-url-list     Just save user.txt with all links


И как же они меня спасли?
Total votes 87: ↑86 and ↓1 +85
Comments 93

Iodine: DNS туннель через закрытый WiFi

Reading time 9 min
Views 103K
Дано: полное отсутствие интернета и виднеющийся WiFi hot-spot, в котором предлагают ввести логин-пароль. Или 3G, в котором нет интернета (потому что закончились деньги), но есть страничка провайдера с предложением дать оных денег.
Задача: получить интернет (легальным?) методом посредством туннелирования его через DNS.
Решение: linux+ iodine + routing + NAT + squid, и всё это под управлением network manager'а.
В статье: описание организации DNS туннеля посредсредством программы iodine, нюансы организации маршрутизации через образовавшийся туннель, самописный помощник для iodine и network manager.

Лирика: Занесла меня судьба на славный остров Кипр, кой славен своим П/пафосом, фраппэ и таким интернетом, после которого российские опсосы начинают выглядеть ангелами во плоти. В частности, попытка подключиться к интернетам закончилась ожиданием, что местный провайдер (Сyta) смилостивится, таки закончит пить оный фраппэ и дотянет до меня поганый ADSL 4Мб/768кбит всего-навсего за €151 (подключение) + €40 в месяц (за 4 мегабита! >_<). Ожидание тянулось и тянулось (как бы уже третья неделя пошла), а рядом был славный PrimeTel, который предлагал за €4/час (172р/час) осчастливить меня интернетом прямо тут и сейчас через едва видный WiFi. Я бы даже и согласился, но видна точка доступа была только на балконе, а в квартире связь была нестабильной и часто терялась. Так что оставалось одно решение (помимо взлома WEP-сети соседей, что уж совсем уголовщина) — это злоупотребить сервисом DNS, который безвозмездно, то есть даром, предоставляет PrimeTel для своих незарегистрировавшихся подлюченцев.

Те, кому интересно «howto» — решение далее по тексту, а пока что начнём с теории процесса.
Читать дальше →
Total votes 136: ↑134 and ↓2 +132
Comments 75

Почему 98% текстов на ваших сайтах не работают. Вообще. И как это починить

Reading time 7 min
Views 284K

Вот так люди видят вашу страницу

Привет!
Проблема вот в чём. Если зайти на практически любой сайт интернет-магазина или компании с услугами, вы встретите контент. Точнее — отвратительные тексты, которые писали, кажется, маркетологи, воспитанные сеошниками.

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

По моим примерным подсчётам (усреднение с ряда позиций), конверсии для нас выглядят так:
  • Только название и картинка — около 1,5%.
  • С описанием от производителя — чуть более 2%.
  • С описанием человека, который держал это в руках и знает правила — около 6%.

Ниже — рассказ про то, как мы доводили время на сайте от 3 минут сначала до 6:40, а потом до 20:48. Да-да, двадцати минут сорока восьми секунд для среднего посетителя. Честного среднего, с учётом отказов и по полной выборке.
Читать дальше →
Total votes 294: ↑282 and ↓12 +270
Comments 121

Продающий дизайн интернет-магазина. Часть 1. Аналитика

Reading time 13 min
Views 146K
Сегодня я хочу поговорить про дизайн интернет-магазина и подойти к этому вопросу основательно. В статье не будут затронуты другие аспекты связанные с интернет-магазинами, только дизайн. Эта первая часть статьи, она больше про аналитику и общие моменты, которые прорабатываются еще до интерфейсов, а вторая статья будет больше про сами интерфейсы.

Это первая статья. Всего их будет 3.

image

Читать дальше →
Total votes 65: ↑49 and ↓16 +33
Comments 57

Производительность фронтэнда. Часть 2 — кешируем динамический контент с помощью etagify

Reading time 5 min
Views 5.6K
От переводчика: Это шестая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona.





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

Эта статья посвящена etagify — модулю middleware для Connect, который генерирует ETag-и на лету на основе MD5-хешей ответов, и хранит эти хеши в памяти. Etagify избавляет от лишней рутины при сборке проекта, предельно прост в использовании и увеличивает производительность больше, чем можно было бы ожидать (в своих тестах мы получили ускорение загрузки страниц на 9%):

myapp = require('express').createServer();
myapp.use(require('etagify')());
...
app.get('/about', function(req, res) {
  res.etagify(); 
  var body = ejs.render(template, options);
  res.send(body);
});

Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Comments 0

Производительность фронтэнда. Часть 1 — конкатенация, компрессия, кэширование (4-я из 12 статей о Node.js от Mozilla)

Reading time 9 min
Views 14K
От переводчика: Это четвёртая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona. Эта статья о том, как увеличить скорость загрузки ресурсов сайта и модуле connect-cachify, созданном в Mozilla для этой цели.





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

Но сначала окинем взглядом наиболее распространённые пути улучшения производительности. Если у вас уже есть опыт оптимизации фронтэнда, можете пропустить эти разделы и перейти в конец статьи, где описано, как с помощью connect-cachify автоматически делать то, что вам раньше доводилось делать вручную.
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Comments 2

Приручаем конфигурации веб-приложений с помощью node-convict

Reading time 6 min
Views 9.4K
От переводчика: Это седьмая статья из цикла о Node.js от команды Mozilla Identity, которая занимается проектом Persona.





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

Постановка задачи


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

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

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

var conf = {
  // окружение приложения - 
  // "production", "development", или "test
  env: process.env.NODE_ENV || "development",
 
  // IP адрес
  ip: process.env.IP_ADDRESS || "127.0.0.1",
 
  // Порт
  port: process.env.PORT || 0,
 
  // Настройки БД
  database: {
    host: process.env.DB_HOST || "localhost:8091"
  }
};
 
module.exports = conf;

Это работает неплохо, но есть ещё пара проблем:

  • Что если в конфигурации указаны некорректные данные? Мы можем сберечь время и нервы, обнаруживая ошибки как можно раньше.
  • Насколько легко разобраться в конфигурации администраторам, тестировщикам и другим членам большой команды, когда им надо менять настройки или искать дефекты? Более декларативный и лучше документированный формат сделал бы их жизнь легче.

Читать дальше →
Total votes 21: ↑18 and ↓3 +15
Comments 1

Как сделать модуль 1С-Битрикс

Reading time 4 min
Views 76K
В сети легко можно найти мануал по созданию модулей с пользовательскими компонентами, но не рассматриваются другие типичные ситуации. А между тем, это могло бы помочь развитию разработчиков и улучшению общего уровня кода под Битрикс.

Можно много спорить о самом Битриксе, но он продолжает существовать, и разработчикам нужны знания. Я опишу создание модулей на примере шуточного модуля “Почта России”. Он запретит редактирование элементов инфоблоков в субботу, воскресенье и в обед.
Читать дальше →
Total votes 15: ↑10 and ↓5 +5
Comments 13

Petrovich просклоняет русские имена

Reading time 3 min
Views 64K
Вам часто приходится иметь дело со склонением имён пользователей на русском языке? При рассылке писем, при отображении страниц и упоминаний, при генерации рекламных объявлений? Скорее всего, приходится изворачиваться и писать все сообщения в именительном падеже — Иванов Пётр Сергеевич.

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

Для решения этой проблемы при использовании Ruby существует Petrovich — удобная легковесная библиотека для автомагического склонения русскоязычных имён, фамилий и отчеств.


Склоняй меня полностью!
Total votes 161: ↑155 and ↓6 +149
Comments 141

Information

Rating
Does not participate
Location
Волгоград, Волгоградская обл., Россия
Date of birth
Registered
Activity