Как стать автором
Обновить
23
0
Иван Журавлев @InteractiveTechnology

CTO

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

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

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

image

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

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

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


Читать дальше →
Всего голосов 94: ↑92 и ↓2+90
Комментарии52

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

Время на прочтение1 мин
Количество просмотров81K
Всем привет!

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

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

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

Сами видео под катом.
Читать дальше →
Всего голосов 81: ↑76 и ↓5+71
Комментарии35

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

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

Интернет через ICMP

Время на прочтение1 мин
Количество просмотров29K
Здравствуйте! Вы забыли заплатить за интернет, провайдер заблокировал TCP и UDP, а про ICMP забыл, и любой ресурс пингуется? Тогда этот топик для вас!

image
Читать дальше →
Всего голосов 193: ↑181 и ↓12+169
Комментарии83

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

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

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

И что же них такого деформированного?
Всего голосов 461: ↑436 и ↓25+411
Комментарии558

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

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


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

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

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

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

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

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

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

Узнать как выгодно гасить кредиты
Всего голосов 32: ↑24 и ↓8+16
Комментарии42

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

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

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

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

Время на прочтение3 мин
Количество просмотров63K
Добрый день, уважаемое хабрасообщество!image

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

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

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

Время на прочтение3 мин
Количество просмотров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


И как же они меня спасли?
Всего голосов 87: ↑86 и ↓1+85
Комментарии93

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

Время на прочтение9 мин
Количество просмотров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» — решение далее по тексту, а пока что начнём с теории процесса.
Читать дальше →
Всего голосов 136: ↑134 и ↓2+132
Комментарии75

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

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

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

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

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

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

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

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

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

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

image

Читать дальше →
Всего голосов 65: ↑49 и ↓16+33
Комментарии57

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

Время на прочтение5 мин
Количество просмотров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);
});

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

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

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





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

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

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

Время на прочтение6 мин
Количество просмотров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;

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

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

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

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

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

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

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

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

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

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


Склоняй меня полностью!
Всего голосов 161: ↑155 и ↓6+149
Комментарии141
1
23 ...

Информация

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