Как стать автором
Обновить
11
0
Vladislav Kuzemchik @kuzemchik

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

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

Как доделать игру

Время на прочтение9 мин
Количество просмотров27K
На блоге одного из создателей Aquaria и Spelunky есть любопытный пост с советами для тех, кто испытывает проблемы с доведением до конца своих игровых проектов. Этот список советов оказался для меня своего рода «зеркалом», в котором отражены многие проблемы, с которыми сталкивался я сам, и я был удивлен тем, насколько хорошо автору удалось уловить суть этих проблем и предложить свои решения, зачастую бескомпромисные.
image
Приближаясь к заключительной стадии разработки моей игры, я много думал о том, как завершать выполнение проектов в целом. Я заметил, что вокруг много действительно талантливых разработчиков, у которых возникают проблемы с доведением до конца игровых проектов. По правде говоря, я и сам оставил позади себя ряд незавершенных игр… Думаю, у многих та же ситуация. Не всякий проект удается, по разным причинам. Однако если вы стали замечать, что постоянно забрасываете проекты, которые имеют неплохой потенциал, вероятно, стоит оглянуться назад и изучить тому причины.
Читать дальше →
Всего голосов 142: ↑135 и ↓7+128
Комментарии54

Эмулятор компьютера с linux на JavaScript

Время на прочтение2 мин
Количество просмотров45K
Никакой серверной части. Только JS: полноценный эмулятор компьютера с линуксом на борту.

bellard.org/jslinux
(внимание, только хром и FF4)

Я долго с ним игрался — это не имитация, линукс ведёт себя как настоящий линукс — компилированные программы работают, ошибки в них вызывают segmentation fault, повреждение корневой файловой системы вызывает бурю возмущения в dmesg и т.д.
Эмулятор PC на JS с линуксом на борту

dd показывает при работе с памятью более чем приличную производительность — более 40 мб/с (не забываем, что это эмулятор, и что это JS в вашем браузере!).

Я никогда не думал, что мы доживём до подобного.

… А теперь начинается оргия:

* С использованием локального хранилища мы можем организовать диски (каждый key-value соответствует одному сектору).
* С использованием web-socket мы можем создать паравиртуализированный драйвер сети с выходом на железный машрутизатор и получить нормальную сеть.
* С использованием существующих технологий (NUMA, DRBD, corosync) можно организовать вычислительный кластер из браузеров.

(Кстати, показывать консоль в этом случае не обязательно — вы запускаете виртуальную машину у клиента в бэкграунде, виртуальная машина присоединяется к кластеру, начинает считать, по её аварийному завершению — закрытию браузера — кластер автоматически переконфигурируется).

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

Никто не мешает создать паравиртуализированный драйвер видео с помощью canvas, у вас есть webGL, для которого можно написать свой вариант cuda и получить довольно мощную акселерацию вычислений…

Ну и финал — запуск хрома внутри эмулируемой виртуальной машины.

Итак, эмуляция дошла до браузеров…
Всего голосов 362: ↑333 и ↓29+304
Комментарии356

Живите (опять) без скучных дел

Время на прочтение4 мин
Количество просмотров937
Если кратко, мы сделали веб-сервис, избавляющий от скучных дел. Причем клиенты выбирают сами, сколько платить:


Клиенты — наши начальники. Они сами оценивают работу и назначают оплату. Иллюстрация — Michael Dashow.

Когда-то хабр благосклонно принял мою статью Аутсорсинг жизни, водка, матрешка (в отличии от другой, 100 долларов в час). Речь шла о сервисе персональных ассистентов, который:
  • искал жестянщиков вытащить сосульку из крыши Пассата
  • делал визу в Польшу на 86 дней
  • в общем, скрашивал быт.

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

Департамент внутренней безопасности США требует от Mozilla убрать плагин MafiaaFire

Время на прочтение1 мин
Количество просмотров1.2K
Плагин MafiaaFire Redirector, как и некоторые другие подобные расширения, осуществляет простой редирект для сайтов, чьи домены «конфискованы» американскими властями. Напомним, ранее массовые конфискации доменов случались с торрент-трекерами и покерными сайтами.

К чести Mozilla, они не согласились беспрекословно выполнить требование подразделения ICE Департамента внутренней безопасности (DHS) и попросили предоставить юридические основания для блокировки плагина. В качестве такого основания может быть решение суда или ордер, но в данном случае ничего подобного предоставлено не было.
Читать дальше →
Всего голосов 109: ↑99 и ↓10+89
Комментарии51

Software versioning

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

Методология изменения версий продукта программного обеспечения


   Software versioning — это процесс создания уникальных имен или номеров для различных версий продуктов программного обеспечения.

   При имеющейся категории номера версии (главная, второстепенная), номера обычно выставляются в возрастающем порядке и соответствуют новым разработкам в программном обеспечении. На начальном уровне отслеживанием постепенно появляющихся версий электронной информации занимается система управления версиями, позволяющая хранить несколько версий одного и того же документа, при необходимости, возвращаться к более ранним версиям, определяя, кто и когда сделал то или иное изменение и многое другое. Вместе с тем для отслеживания изменений программного обеспечения было создано большое количество схем присвоения номеров версиям.
Читать дальше →
Всего голосов 91: ↑76 и ↓15+61
Комментарии18

Silex — микрофреймворк от создателей Symfony2

Время на прочтение4 мин
Количество просмотров61K
Почти год назад я опубликовал статью о микрофреймворке под названием 'fat-free', написанном на PHP. Тогда этот фреймворк и сама статья вызвали некоторый интерес, поэтому я решил сделать обзор еще одного PHP микрофреймворка в стиле популярного Sinatra — Silex project.
image
Созданный в известной в РНР кругах Sensio Labs, не менее известным Fabien Potencier — автором одного из самых популярных на сегодня PHP фреймворков — Symfony, Silex является облегченной версией ожидаемого армией фанатов (к которым осмелюсь отнести и себя) Symfony2.

Для своей работы Silex использует ключевые компоненты Symfony2 в связке с несложной реализацией шаблона проектирования “Внедрение зависимостей” в виде сервис-контейнера Pimple, который позволяет максимально просто отделить логические части кода друг от друга — сделать их независимыми.

Как и у Symfony2 — у Silex интуитивно понятный API, что делает процесс разработки достаточно приятным и позволяет практически в несколько шагов добавлять свой функционал в сам фреймворк.
Читать дальше →
Всего голосов 92: ↑87 и ↓5+82
Комментарии72

Безопасность систем мгновенного обмена сообщениями на базе протокола XMPP: настоящее и будущее

Время на прочтение5 мин
Количество просмотров7.4K
Все чаще многие используют решения на основе протокола XMPP (Jabber) для мгновенного обмена сообщениями, в той или иной степени отказываясь от ICQ. Данный подход, безусловно, является правильным ввиду открытости Jabber – каждый может выбрать какой сервер ему использовать или же вовсе организовать работу своего собственного. Также протокол XMPP прекрасно себя зарекомендовал в корпоративной среде и многие компании уже несколько лет успешно используют Jabber наравне с электронной почтой для обмена информацией.
Принято считать, что коммуникационные решения на базе протокола Jabber являются наименее уязвимыми с точки зрения информационной безопасности. В данной статье я постараюсь проанализировать так ли это на самом деле и какие реальные перспективы имеет протокол XMPP в этом направлении. Вопрос будет рассмотрен в контексте использования протокола для обмена сообщениями как в личных целях на публичных и частных сервисах, так и в корпоративных условиях.

Jabber для личного общения

Нежелательные сообщения

Для личного общения Jabber массово стал использоваться сравнительно недавно, что обуславливает фактическое отсутствие коммерческого спама (или spim’а в терминологии XMPP Standards Foundation). Я специально акцентировал внимание на отсутствии именно коммерческого спама, поскольку в настоящий момент на крупных jabber-серверах имеют место единичные рассылки, которые организовываются при помощи скриптов на Python «школьниками » just for fun и не направлены на продвижение каких-либо товаров и услуг. В ближайшее время возможно появление коммерческого спама в Jabber, однако массового развития как в ICQ он получить не должен. О предпосылках этого хорошо написано в этом посте.
Читать дальше →
Всего голосов 71: ↑69 и ↓2+67
Комментарии43

Что почитать на выходных? Рекомендуем, выпуск №8

Время на прочтение2 мин
Количество просмотров1K
Это подборка статей на тему веб-разработки на платформе .NET (и не только). За день перед выходными я предлагаю набор интересных ссылок, которые стоит посетить в свободные минуты на выходных, чтобы узнать что-то новое и интересное.

Вы можете следить за циклом этих советов по следующей ссылке.

Темы номера:ASP.NET MVC/WebMatrix:
  • Glimpse — серверный firebug для проектов ASP.NET (link);
  • WebMatrix- работа с пакетом определения мобильных клиентов от 51Degrees.mobi (link);
  • ASP.NET MVC 3- использование скаффолдинга контроллеров (link);
  • Модуль импорта/экспорта рецептов в Orchard CMS 1.1 (link);
  • ReSharper 6 предложит глубокую поддержку Razor (link);
  • Демонстрационное приложение MVC Music Store v3.0 для изучения ASP.NET MVC (link);
  • Razor- вывод секций в мастер-страницах мастер-страниц (link);
  • ASP.NET MVC 3 Tools Update, now with Drop-Down Lists! (link);
Читать дальше →
Всего голосов 88: ↑47 и ↓41+6
Комментарии6

Ожидание нескольких событий в nodejs

Время на прочтение6 мин
Количество просмотров14K
Наверное, каждый, кто начинает изучать nodejs, испытывает трудности с переходом на событийно-ориентированное программирование. Все просто, пока мы можем выполнять действия последовательно: начинать следующее, дождавшись завершающего события от предыдущего. Но что делать, если таких действий много и они продолжительны во времени? А если мы не можем продолжать, пока не дождемся завершения каждого из них?

Почитать рассуждения новичка
Всего голосов 29: ↑23 и ↓6+17
Комментарии7

Храните ваши клятвы; Отношения с Node

Время на прочтение2 мин
Количество просмотров1.3K
Клятвы могут быть прекрасны. Алексис Селлир, сыскавший славу за разработку «LESS» (и «less.js»), начинает становиться звездой Open Source, выпустив в свет Vows, — каркас для разработки на Node.JS, управляемой асинхронным поведением.

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

re2c — компилятор регулярных выражений

Время на прочтение3 мин
Количество просмотров8.2K
Задача выделения из потока символов определенных лексем является весьма распространенной. Часто ее решают с помощью лексических анализаторов, конфигурируемых регулярными выражениями. Многие анализаторы построены по принципу генерации программного кода, который в свою очередь реализует логику регулярных выражений. Фактически, это компиляция языка регулярных выражений в код языка программирования.

Например, flex — это один из таких анализаторов. Старый, но проверенный годами.

Я много пользовался flex'ом, он имеет и плохие и хорошие стороны, но по большому счету, жаловаться не приходилось.

Но вчера наткнулся на интересный проект — re2c. По сути, на этой штуке можно писать лексические анализаторы прямо на коленке за несколько минут.

Подробности
Всего голосов 39: ↑37 и ↓2+35
Комментарии18

60 кадров в секунду: новые впечатления от старого видео

Время на прочтение3 мин
Количество просмотров240K
Здравствуйте, уважаемые читатели этой статьи.

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

Сидя вечером в начале этой недели я случайно, сразу на нескольких сайтах столкнулся с интересной новостью, гласящей «Кэмерон снимет продолжения «Аватара» со скоростью 60 кадров в секунду».
Кэмерон человек далеко не глупый, оттого мне стало интересно, что он хочет извлечь из этих 60 кадров, ведь человеческий глаз различает лишь 24-25 кадров за секунду.
Читать дальше →
Всего голосов 119: ↑102 и ↓17+85
Комментарии270

Кое-что об инициативах

Время на прочтение1 мин
Количество просмотров852
Привет, Хабр!
Вчера, во время обсуждения www.i-gorod.com, возникла мысль собрать команду с целью создания социально-значимого и эффективного ресурса.
Так вот, идея получила развитие, и нашлись люди, серьезно настроенные её реализовать.
Мы не только воплотим что-то хорошее (нужное), но и продемонстрируем, что в России можно создавать полезные веб-инструменты с разумными затратами.

Текущие участники:
estronas, zaisl, humbug, maxyc, artamonovg, mikenerevarin, putnik, andryx, barmaley13, lukaville, wo1fer, logan, kuzemchik, teplenew, bestfriend;

Люди, от которых мы ждем ответа в личку:
xni, ur001, nshopik, devart, darbin, lomalkin;

Наши ближайшие планы:
— формирование команды;
— выбор лучшей идеи будущего сервиса;
— разработка коммуникационной составляющей проекта;

Будем рады ваших комментариям и идеям по развитию.

Кто хочет присоединиться к проекту — пишите!
Всего голосов 179: ↑144 и ↓35+109
Комментарии154

Сборка проекта без единой глобальной переменной

Время на прочтение6 мин
Количество просмотров4K
Представьте, у вас есть проект, состоящий из нескольких модулей и, например, jQuery или любая другая библиотеки в CDN. У вас есть огромное желание не показывать пользователю ваши глобальные переменные и по возможности не показывать jQuery и $. Ну и, конечно, сделать все без изменения кода проекта.
Причины для сокрытия глобалов могут быть разные: для красоты, из соображений безопасности, для затруднения анализа кода и другие. Пользователь взаимодействует с вашим кодом, используя события, которые он не сможет сломать — больше ему ничего и не нужно.

Самый очевидный способ — создать единственный namespace в который пассивно экспортировать прочие объекты, а jQuery и $ в конце удалить.

После сборки код будет какой-то такой:
(function(window, undefined){
    // include ./js/YourNamespace.js
    var YourNamespace = (function () {
        // что-то ещё
        return {};
    }());
    // include ./js/YourNamespace/SomeObject.js
    YourNamespace.SomeObject = (function () {
        // что-то ещё
        return function () {

        };
    }());
    // Cleanup
    delete window.$;
    delete window.jQuery;
}(window));

Это идеальный вариант, но чаще бывает не так. Посмотрите ваш код, такой ли он?

Под катом универсальное решение, позволяющее собрать любой код без единой глобальной переменной.
Читать дальше →
Всего голосов 58: ↑50 и ↓8+42
Комментарии35

Опубликован закрытый ключ AirPort Express

Время на прочтение2 мин
Количество просмотров5.7K
Американский разработчик Джеймс Лейрд (James Laird), помогая своей девушке наладить связь между точкой доступа и базовой станцией AirPort Express, не нашёл другого выхода, как разобрать AirPort Express, считать ROM и провести обратный инжиниринг программы, после чего он смог извлечь закрытый ключ. Этот ключ используется для декодирования пакетов по закрытому протоколу Apple AirPlay (RAOP).

Наладив девушке систему, хакер поделился с общественностью своим открытием. Фактически, теперь можно сделать эмулятор AirPort Express на чём угодно.
Читать дальше →
Всего голосов 92: ↑87 и ↓5+82
Комментарии84

Заметки о кросс–компиляции приложений под DD-WRT

Время на прочтение8 мин
Количество просмотров19K
Недавно у меня перестал работать вайфай-рутер и после некоторых раздумий я заказал Asus RT-N16. Хотелось наконец–то познакомиться с альтернативными прошивками. Характеристики этого рутера уже описывались на Хабре. Итак, DD-WRT установлена (v2.24), самба заведена, в первый юсб порт воткнута системная флешка, а во второй — внешний жесткий диск. А дальше я заинтересовался: а смогу ли я запустить свои программы на этом рутере? Я не нашел в сети руководства по сборке программ под рутер и надеюсь этой статьей восполнить пробел. Приведу пошаговое руководство с описанием небольших проблем, встреченных на пути.

В качестве подопытной программы мне хотелось запустить Easysync, о которой я недавно писал. Повторюсь, что это открытая программа для синхронизации файлов в стиле дропбокса. Программа написана с использованием Qt 4, а в качестве движка синхронизации используется Unison. Так что, эта статья описывает как откомпилировать Qt, Unison, Easysync для архитектуры MIPS и рассказывает о запуске Easysync на вашем домашнем рутере.
Поехали!
Всего голосов 58: ↑55 и ↓3+52
Комментарии42

Кодогенерация на основе UML-модели

Время на прочтение3 мин
Количество просмотров30K
Как нам уже известно, Visual Studio 2010 Ultimate предоставляет достаточно удобные возможности для реверс-инжиниринга. С помощью средств Visual Studio мы можем на основе существующего кода построить UML-модель и понять как у нас, собственно, все работает, но при этом не прилагать гигантские усилия по созданию диаграмм вручную и поддержанию их в актуальном состоянии.

Все бы хорошо, но у данного инструмента напрочь отсутствует возможность синхронизации модель с кодом. Т.е., после изменения модели, нам приходится вручную изменять классы. В случае большого количества мелких изменений, получается довольно неудобно, и по этой причине от полноценного моделирования частенько отказываются.
Далее - трафик
Всего голосов 44: ↑36 и ↓8+28
Комментарии21

Сайт Сколково

Время на прочтение2 мин
Количество просмотров64K
Читал тут ленту друзей, наткнулся на интересное замечание относительно сайта Сколково и, в частности, на чем и за сколько он сделан.

Собственно, сам сайт великого Фонда развития Инновационного центра «Сколково». Мотнем скроллом вверх-вниз и запомним общий концепт.

Поищем, сколько же стоит разработка этого сайта. Конечно, на хабре огромное число разработчиков, порядок цен все знают, но мы же пишем волшебный проект, поэтому и цены у него должны быть волшебные:
На PR-сопровождение деятельности фонда планируется потратить 38,7 млн руб. На медиаразмещение и рекламу — 92,8 млн руб., на брендинг — 12,9 млн руб., на веб-сайт и блоги — 3,1 млн руб.

Дизайнеры, сколько бы ориентировочно взяли за разработку дизайна сайта Сколково? 500$? 1к$? 10k$?
А программисты?

Дорого берете, скажу я Вам, за натягивания шаблона на Joomla.

Эх, вот Вам хотя бы хорошая песенка про Сколково, чтобы лишний раз не расстраивались.

UPD: внимательный хабрапользователь DarkPreacher верно подметил, что все-таки не Joomla, a UMI:
Читать дальше →
Всего голосов 416: ↑393 и ↓23+370
Комментарии699

Синхронизация в стиле Dropbox на вашем собственном сервере

Время на прочтение3 мин
Количество просмотров4.8K
Этим топиком я хотел бы начать диалог о синхронизации файлов. На Хабре были уже топики и про Дропбокс и про альтернативные сервисы (раз, два). Сервисы отличные, но меня интересовал вопрос: а как же я могу организовать синхронизацию файлов на своем собственном железе? Я начал искать уже готовую программу, но нашел немногое. Похоже, что большинство людей просто вызывают rsync/unison из cron'а. Написание клиент–серверной программы, которая бы отслеживала изменения файлов в папке, казалось делом несложным, и я решил попробовать.
Под катом то, что из этого получилось.
Всего голосов 17: ↑17 и ↓0+17
Комментарии18

Принцип цикады и почему он важен для веб-дизайнеров

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

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →
Всего голосов 696: ↑682 и ↓14+668
Комментарии119

Информация

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