Pull to refresh
161
0
Артём @artch

User

Send message

Под капотом Screeps — виртуализация в MMO-песочнице для программистов

Reading time 9 min
Views 16K

В этой статье я расскажу про одну малоизвестную технологию, которая нашла ключевое применение в нашей онлайн-игре для программистов. Чтобы долго не тянуть резину, сразу спойлер: кажется, что такого шаманства в нативном коде Node.js, к которому мы пришли после нескольких лет разработки, до нас еще никто не делал. Движок изолированных виртуальных машин (опенсорсный), который работает под капотом проекта, был написан специально для его нужд, и на данный момент используется в продакшене нами и еще одним стартапом. А возможности изоляции, которые он дает, не имеют аналогов и заслуживают, чтобы о них рассказали.


Но давайте обо всем по порядку.


Предыстория


Вы любите программирование? Не тот рутинный энтерпрайз-кодинг, которым многие из нас вынуждены заниматься 40 часов в неделю, борясь с прокрастинацией, вливая в себя литры кофе и профессионально выгорая; а программирование — ни с чем не сравнимый волшебный процесс трансформирования мыслей в работающую программу, получение наслаждения от того, что только что написанный тобой код воплощается на экране и начинает жить той жизнью, которой велит ему создатель. В такие моменты слово "Создатель" хочется написать с большой буквы — настолько чувство, возникающее в процессе, иногда бывает близко к благоговению.



Жаль лишь, что совсем немного реальных проектов, связанных с каждодневным заработком, могут предложить своим разработчикам такие чувства. Чаще всего для того, чтобы не терять страсть к программированию, энтузиастам приходится затевать интрижку на стороне: программистское хобби, пет-проект, модный open-source, просто скрипт на питоне по автоматизации своего умного дома… или поведения персонажа в какой-нибудь популярной онлайн-игре.

Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Comments 13

20 ноября — запуск первой стратегической MMO-игры для… программистов

Reading time 4 min
Views 22K
В следующий четверг состоится запуск проекта, над которым мы работали последние несколько месяцев. Screeps — первая известная мне стратегическая игра в MMO-песочнице, созданная для программистов. Вместо традиционного Point'n'click, геймплей заключается в написании и постоянном улучшении программы для AI ваших юнитов на JavaScript, которая управляет ими непрерывно и автономно — даже когда вы не онлайн. Это радикально новая идея, и если вы программист, вам определенно стоит на это взглянуть.



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

Под катом технические и игровые подробности.
Читать дальше →
Total votes 72: ↑70 and ↓2 +68
Comments 80

Nested routing в AngularJS

Reading time 2 min
Views 27K
image
В AngularJS, как известно, нет возможности штатными средствами сделать многоуровневую маршрутизацию, в которой перезагрузка нижних уровней маршрутов бы не приводила к пересозданию элементов верхнего уровня. Стандартный сервис $route инициализирует вид, контроллер и его scope целиком каждый раз, когда изменяется URL страницы.

Для решения этой проблемы написано несколько сторонних решений, включая известный ui-router. По ряду причин ни одно из решений для некоторых моих проектов не подошло, и я написал собственную библиотеку, которую здесь и представляю: angular-route-segment.

Что она позволяет делать?
Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Comments 19

AngularJS для привыкших к jQuery

Reading time 4 min
Views 165K
AngularJS — прекрасный фреймворк для построения веб-приложений. У него замечательная документация, снабженная примерами. В обучающих «пробных» приложениях (вроде TodoMVC Project) он очень достойно показывает себя среди остальных прочих фреймворков. По нему есть отличные презентации и скринкасты.

Однако если разработчик никогда ранее не сталкивался с фреймворками, подобными Angular, и пользовался в работе в основном библиотеками вроде jQuery, то ему может быть трудно изменить свой образ мышления. Как минимум, так было со мной, и я бы хотел поделиться некоторыми заметками на эту тему. Может быть, кому-то это будет полезно.
Читать дальше →
Total votes 77: ↑74 and ↓3 +71
Comments 146

Ключевое отличие AngularJS от Knockout

Reading time 6 min
Views 48K
imageЗа последнее время я несколько раз успел поучаствовать в дискуссиях о том, чем Angular лучше или хуже Knockout и других JS-фреймворков. И очень часто я сталкивался с тем, что есть некоторое непонимание сути различий в подходах, заложенных в эти продукты. Иногда дело доходило даже до того, что в качестве преимущества Knockout приводились валидные по умолчанию префиксы «data-», что ну просто совсем смешно (не говоря уж о том, что их можно использовать и в Angular).

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

  1. Модульная организация кода, тестируемость и жестокая война с любыми глобальными данными.
  2. Пропаганда декларативного подхода через создание собственных HTML-директив.
  3. Механизм проверки изменения данных в дата-биндинге без использования коллбэков.

И третий пункт мне здесь видится наиболее сложным для понимания. Поговорим именно о нем.
Читать дальше →
Total votes 68: ↑66 and ↓2 +64
Comments 64

Вебсокеты: боевое применение

Reading time 6 min
Views 78K
imageВебсокеты — это прогрессивный стандарт полнодуплексной (двусторонней) связи с сервером по TCP-соединению, совместимый с HTTP. Он позволяет организовывать живой обмен сообщениями между браузером и веб-сервером в реальном времени, причем совершенно иным способом, нежели привычная схема «запрос URL — ответ». Когда два года назад я присматривался к этому стандарту, он был еще в зачаточном состоянии. Существовал лишь неутвержденный набросок черновика и экспериментальная поддержка некоторыми браузерами и веб-серверами, причем в Файрфоксе он был по умолчанию отключен из-за проблем с безопасностью. Однако теперь ситуация изменилась. Стандарт приобрел несколько ревизий (в том числе без обратной совместимости), получил статус RFC (6455) и избавился от детских болезней. Во всех современных браузерах, включая IE10, заявлена поддержка одной из версий протокола, и есть вполне готовые к промышленному использованию веб-серверы.

Я решил, что настало время попробовать это на живом проекте. И теперь делюсь, что из этого вышло.
Что вышло
Total votes 96: ↑91 and ↓5 +86
Comments 137

Здравствуйте, с вами говорят Чип и Дэйл

Reading time 1 min
Views 9.5K
Мы проводим плановые профилактические работы. Но так как Дейл и на этот раз обязательно что-нибудь сломает, а Чип вообще не любит посторонних людей на площадке, то мы отключили сайт совсем. Кроме того, мы и правда не можем оставить сайт работающим в режиме только для чтения на базе временного бэкапа, потому что Чип и Дейл — это на самом деле не наши штатные разработчики, а вымышленные герои мультипликационного детектива. У нас вообще все непросто.

Пожалуйста, никуда не уходите, скоро должна прийти Гаечка.
Total votes 80: ↑68 and ↓12 +56
Comments 20

Завершен конкурс на мессенджер ВКонтакте для Android

Reading time 1 min
Views 8.2K
Итоговый призовой фонд конкурса составил 3,2 млн рублей. В число призеров вошло 9 работ, всего по словам организаторов было 300 участников, из которых 55 прислали работы на проверку. Как и в прошлом конкурсе для iPhone победил 21-летний петербуржец, студент СПбГУ Степан Коршаков. Как говорится на странице результатов конкурса, его приложение «Сообщения ВКонтакте» превосходит работы других участников конкурса по скорости и стабильности. Главный приз составил 1 миллион рублей.

Приложение выложено на Google Play Market.

Второе место получают:
Читать дальше →
Total votes 58: ↑52 and ↓6 +46
Comments 76

Очевидные 3 правила безопасности

Reading time 2 min
Views 59K

Правило №1. Делайте все авторизационные куки HttpOnly


Куки с флагом HttpOnly не видны браузерному коду, а отправляются только на сервер. На практике у вас почти никогда нет необходимости получать их содержимое со стороны клиента (если такая необходимость почему-то у вас возникла — пересмотрите архитектуру авторизации, скорее всего, там что-то не так). А вот злоумышленнику, нашедшему XSS — а XSS так или иначе когда-нибудь где-нибудь найдется — отсутствие HttpOnly на авторизационных куках доставит много радости.

Читать дальше →
Total votes 173: ↑140 and ↓33 +107
Comments 117

I'm Feeling Lucky в стандартном поиске браузера

Reading time 2 min
Views 5.6K
Когда-то давно, когда горы были выше, а деревья зеленее, в браузерах поиск в адресной строке работал так, как это было правильно: он использовал функцию Google I'm Feeling Lucky. Вы могли легко вводить «хабр» вместо «habrahabr.ru», вводя «Сан-Франциско», вы сразу же попадали на сайт этого города в Википедии (ведь туда вы и хотели, правда?), а фраза «php in_array» моментально перекидывала вас на документацию по этой функции, в синтаксисе которой вы в очередной раз забыли, needle или haystack идет первым.

Но потом Гугл понял, что $110 млн в год, которые они теряют из-за того, что вам никто не показал рекламу на эти запросы — это непозволительно много, и больше браузеры по умолчанию не хотят демонстрировать нам всю телепатическую магию поиска I'm Feeling Lucky, а вместо этого демонстрируют промежуточное звено поисковой страницы, на которой вы все равно как всегда сразу же нажимаете на первую ссылку (ведь где еще может быть Википедия?), но зато посмотрели рекламу и добросовестно уменьшили рекламодателю CTR.

Как вернуть все взад
Total votes 67: ↑61 and ↓6 +55
Comments 36

Фрагментация?

Reading time 5 min
Views 5.4K
imageКогда я читаю про фрагментацию устройств на Андроиде, я мысленно киваю, соглашаясь с автором статьи. Когда я вижу тезисы о том, что фрагментация устройств мешает разработке ПО, то я недоуменно поднимаю брови. Но когда мне пытаются доказать, что фрагментация Андроида — это главная проблема этой платформы и главный минус для разработчиков мобильного ПО, я, откровенно говоря, начинаю смеяться. Простите, но это либо чисто маркетинговая намеренная чушь, либо совершеннейшее непонимание ситуации.

Читать дальше →
Total votes 210: ↑159 and ↓51 +108
Comments 226

Гугл + Фото + Андроид =?

Reading time 3 min
Views 51K
Вот как описывает одну из интересных особенностей Гугл+ известный гуглер и по совместительству главный евангелист этого проекта Вик Гундотра:

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

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

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

Читать дальше →
Total votes 46: ↑38 and ↓8 +30
Comments 48

Госмедсоцсеть за 55 миллионов и 16 дней

Reading time 1 min
Views 695
На сайте госзакупок размещен заказ Минздравсоцразвития «на выполнение работ по созданию социальной сети медицинских работников и пациентов на основе портала главных внештатных специалистов Министерства здравоохранения и социального развития Российской Федерации». То есть на создание государственной медицинской соцсети.

Цена контракта: 55 миллионов рублей.
Сроки выполнения работ: не более 16 дней со дня заключения контракта.

Пруфлинк

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

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

UPD2
11 октября госзаказ был отменен самим заказчиком.
Total votes 185: ↑157 and ↓28 +129
Comments 154

Согласие на цензуру Google в Китае выдумано

Reading time 1 min
Views 1.7K
Так как дезинформация относительно Гугла в Китае наделала шуму на Хабре и поселилась в умах и сердцах хабралюдей, считаю нужным привести реальный источник и развеять вымышленные интерпретации в хабратопике и новости на CNеws.

AFP:
«Google agreed… that it will respect China's laws and regulations,» Zhang Feng, a top official with the Ministry of Industry and Information Technology, told reporters.

«That is to say, it will not provide any information that will endanger China's national security, damage China's national interests, instigate ethnic hatred, spread superstitious information, damage social stability, or (provide) pornography, violence or slanderous information.»

A Tokyo-based Google spokeswoman said its current arrangement would not require the company to censor either its google.cn or google.com.hk sites.

«As we stated in our blog the other day, the products we are keeping on Google.cn (Music, Translate, Product Search) do not require Google to censor,» spokeswoman Jessica Powell said in an email to AFP.

«All other products, like web search, we are offering from Google.com.hk, and without censorship. So in short, there is no censorship being done by Google on either domain.»

Кратко: когда Гугл поссорился с Китаем, он сделал автоматический редирект с google.cn на google.com.hk. Это нарушало китайские законы, и власти обязали Гугл убрать автоматический редирект. Гугл оставил просто картинку на land page, которая ведет на google.com.hk по клику. Это законы не нарушает и Гуглу продлили лицензию.

Всё. Никакой фильтрации контента на google.cn нет и не будет, так как на google.cn вообще нет поискового контента.

UPD: Топик с вымыслами убран. Этот оставлю, чтобы могли прочитать те, кто поверил новости на CNews.
Total votes 80: ↑72 and ↓8 +64
Comments 54

Купи Кремль

Reading time 1 min
Views 687
imageНедавно Яндекс объявил на Хабре о том, что теперь их карты легально интегрируются ВКонтакте. Был призыв использовать API Яндекс.Карт для создания новых приложений в этой соцсети. Сказано — сделано. Хочу представить свою игру ВКонтакте на платформе Яндекс.Карт, упрощенный аналог почившей Monopoly City Streets.

Для тех, кто не в курсе явления Monopoly City Streets: это экономическая стратегия на реальной карте. Игрокам нужно торговать недвижимостью, покупать и продавать перспективные объекты, сдавать дома в аренду, конкурировать друг с другом и перехватывать выгодные территории — и все это происходит на карте вашего родного города.
Читать дальше →
Total votes 84: ↑62 and ↓22 +40
Comments 63

Стирая границы устройств

Reading time 3 min
Views 1.6K
imageХоть главная и пестрит на данный момент словами «Android 2.2» и «Froyo», но я не могу молчать. На гуглоконференции Вик Гундотра показал нечто, что я, лично применяя к себе как потребитель, считаю самым серьезным революционным прорывом в коммуникационных девайсах со времен Palm Pilot. И почему-то про это на Хабре совсем не сказали ни в нескольких заметках о Froyo с конференции, ни в обзорах перепрошитого Нексуса. Ускорение работы, флеш, хот-споты и красивый маркет — это все здорово, но это не меняет настолько сильно принцип работы с устройством, как такая вещь, как cloud-to-device messaging API.

Читать дальше →
Total votes 191: ↑174 and ↓17 +157
Comments 127

Отключение двухчасового авторебута в Windows 7 RC

Reading time 1 min
Views 28K
С 1 марта 2010 года Release Candidate версии Windows 7 стали перегружаться каждые 2 часа. Так как непосредственно срок годности истекает только в июне, то, отключив этот авторебут, вы сможете спокойно и легально пользоваться своей RC еще несколько месяцев.

Ниже три простых шага, чтобы это сделать.
Читать дальше →
Total votes 126: ↑97 and ↓29 +68
Comments 90

Download Master Plugin ломает Prototype-сайты

Reading time 1 min
Views 3.4K
С недавнего времени у меня на Клавогонках у некоторых пользователей начались проблемы совершенно мистического плана — не работали функции, которые ну никак не могли не работать, всплывали абсолютно дикого вида ошибки и гейзенбаги. Долго и мучительно пытаясь выяснить в чем проблема, и не без помощи сообразительных юзеров я обнаружил, что последняя версия Download Master (довольно популярная программа), выпущенная вроде бы где-то в ноябре, содержит удивительнейший Firefox-плагин, который ставится в браузер автоматически. Плагин этот зовется Download Master Plugin 1.2 и его удивительность заключается в том, что он подгружает в глобальное javascript-пространство страницы библиотеку jQuery целиком как она есть. По-настоящему подгружает, со всеми функциями, и (внимание!) с функцией $(). Тем самым, разумеется, ломая аналогичную функцию из Прототайпа.

Tест кейс
Total votes 88: ↑77 and ↓11 +66
Comments 77

Клавогонки — статистика 2009

Reading time 2 min
Views 2.1K

Хочу представить небольшую статистику Клавогонок за 2009 год.

В 2009 году на Клавогонках зарегистрировалось 72107 человек. Из них 10643 проехало хотя бы 100 заездов.

Суммарно всеми игроками было набрано 8438806 текстов (размер одного текста в среднем 200-300 символов).

Самый многочисленный заезд был зафиксирован 26 ноября в 22:00 (соревнование с рейтингом х5) — в нем участвовало 94 человека.

Далее немного графиков, а в конце топика — волшебная формула.

Формула, где формула?!
Total votes 112: ↑95 and ↓17 +78
Comments 46

100 000 пользователей

Reading time 1 min
Views 666
КлавогонкиХотел поделиться радостью. Вчера, 31 августа 2009 года, спустя полтора года после запуска проекта, на Клавогонках зарегистрировался стотысячный пользователь. Это огромная цифра, которой может похвастаться далеко не каждый ресурс. Клавогонки действительно потихоньку выходят в народ.

За эти полтора года постоянно велась работа над проектом, сделано более тысячи коммитов и исправлено множество багов, два раза сменен хостинг (теперь и, видимо, окончательно на Амазоне), выполнен редизайн, добавлялись различные режимы игры и улучшался функционал. Скоро грядет серьезное нововведение, связанное с соревновательным элементом, которое сделает гонки и тренировки еще азартнее.

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

Спасибо всем, кто поддерживает проект — многие из тех, кто узнал о сайте с первого обзора на Хабре полтора года назад, до сих пор остались регулярными посетителями, сообщили о множестве багов и предложили массу улучшений, многие из которых реализованы. Будем надеяться, что так будет продолжаться и дальше.
Total votes 103: ↑81 and ↓22 +59
Comments 79

Information

Rating
Does not participate
Location
Кировская обл., Россия
Registered
Activity