Как стать автором
Обновить
0
Руслан Мезенцев @RMiBread⁠-⁠only

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

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

BrowserID: почтовый адрес как ID пользователя

Время на прочтение2 мин
Количество просмотров2.1K
Mozilla закончила разработку BrowserID — единой децентрализованной системы аутентификации, которая использует HTML5, криптографию с открытым ключом и цифровые подписи. Она основана на упрощённой интерпретации Verified Email Protocol.

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


Так будет работать система, если Gmail станет поддерживать BrowserID. В этом случае отпадёт необходимость подтверждать свой email на сайте Browserid.org, который сейчас является пока единственным центром идентификации первого уровня.

Кроме отсутствия паролей, ключевым преимуществом BrowserID является защита приватности — в отличие от OpenID и всех подобных систем, провайдер identity в BrowserID не получает данных о том, на каком сайте залогинился пользователь.
Как поставить форму BrowserID на своём сайте

Запускаем jQuery на движке Node.js вместо браузера

Время на прочтение2 мин
Количество просмотров21K
Библиотека jQuery — это общепризнанное средство манипуляции сразу несколькими форматами данных (XML, HTML, объекты DOM, обыкновенные объекты), да притом работающее посредством удобного (цепного) вызова методов с удобными (краткими) названиями. Поэтому ничуть не удивляют попытки приспособить jQuery не только к одному клиентскому, но также ещё и к серверному джаваскрипту — в частности, к Node.js.

Признаюсь честно, что когда разработчики jQuery превозмогли проблему №7102, то её название («Register jQuery as a CommonJS async module») на какое-то время даже заставило меня обмануться: я сперва подумал было, что и в Node.js (так как модули Node.js и СommonJS имеют немало общего) отныне jQuery станет работать невозбранно. Ан нет, не тут-то было. Пристальное вглядывание в коммит и в запрос на слияние позволяет осознать, что jQuery, в сущности, обрёл возможность регистрироваться только как AMD-модуль и даже проверяет свойства define.amd и define.amd.jQuery перед саморегистрацией.

Собственно говоря, архитектура jQuery «затóчена» под употребление в условиях браузерной DOM: код jQuery полагается на существование объекта window, который служит аргументом главного замыкания, окаймляющего весь код jQuery. Прежде же таких неявных предположений было ещё больше, и только с устранением проблемы №6690 библиотека jQuery перестала полагаться на существование глобальных объектов navigator и location, начав вместо того получать их как свойства объекта window. (Понятно, что такое предположение никак не подходило для Node.js, где глобальные объекты служат свойствами объекта global, а вовсе не window; а равно не подходило и ко многим прочим реализациям CommonJS.)

Потому для запуска jQuery в Node.js применяются готовые реализации браузерной DOM — такие, как пакет jsdom, на основе которого невозбранно работает, например, вот какой код, предлагаемый в качестве примера:

Читать дальше →

pyxs — библиотека к xenstore на питоне

Время на прочтение1 мин
Количество просмотров2.6K
Вступление: Ключевым элементом всех тулстеков для Xen является xenstore — сервис, позволяющий иметь «общую БД» для всех доменов на хосте. Давным-давно существует библиотека libxs для доступа к ней из приложений на Си. К ней есть биндинг на питоне (xen.lowlevel.xs), однако, у него есть очень серьёзные проблемы с многопоточной подпиской на события. Нас это не устраивало и для работы нашего сервиса memory on demand была написана библиотека pyxs, которая позволяет иметь очень комфортную работу с xenstore, многопоточные подписки и т.д.

По здравому размышлению было принято решение отдать её людям под LGPL-лицензией.

Примеры использования

Простое чтение и запись:
from pyxs import Client

xs=Client():
xs["/foobar/a"] = "baz"
print xs["/foobar/a"]


Второй важный класс — это Monitor для организации подписки на множественные изменения, ради которого всё писалось:

from pyxs import Monitor

xs=Monitor():
xs.watch("/local/domain/1")
xs.watch("/local/domain/2")
while true:
    print xs.wait()

Нас разбудит каждый раз, когда что-то поменяется в первом ИЛИ втором пути.

Сссылка на гитхабе: github.com/selectel/pyxs
Документация: pyxs.readthedocs.org

Тестирование скорости алгоритмов шифрования в PHP

Время на прочтение2 мин
Количество просмотров12K
Долгое время в своих проектах в случае необходимости шифрования, практически автоматически, выбирал AES (он же Rijndael), входящий в библиотеку Mcrypt.

Но на днях в процессе работы над скриптом бэкапа (в котором очень большое внимание уделяется скорости выполнения), решил протестировать, какой алгоритм самый быстрый.
Читать дальше →

Программатор для ПЛИС

Время на прочтение3 мин
Количество просмотров59K
Хочу рассказать о том, как развивается проект http://marsohod.org.

Цель проекта — популяризация проектирования для ПЛИС.
Тема ПЛИС постепенно набирает популярность — и совершенно заслуженно. Ведь теперь мы фактически получили простую возможность создать свою цифровую микросхему. Вам не потребуется нано-фаб и миллион долларов — все можно просто сделать имея компьютер и микросхему ПЛИС на плате разработчика. Вы знаете, что 90% производителей микросхем в мире не имеют собственных фабрик? Они проектируют и тестируют в ПЛИС, а производство заказывают сторонним производителям.

Когда-то и программирование микроконтроллеров считалось чуть ли не чудом. Теперь можно купить платку Ардуино и научить старшеклассника «мигать светодиодом».

Я хочу показать, что и ПЛИС — это вполне доступная технология.

Плата «Марсоход» — это самый простой и дешевый девелопер кит на микросхеме ПЛИС компании Альтера EPM240T100C5. Проект — опен соурс — схемы платы есть на нашем сайте. Кроме того, опубликованно уже более 50 проектов выполненных на базе нашей платы.

Дальше я расскажу о программаторе для ПЛИС. Считается, что учиться проектированию ПЛИС гораздо дороже, чем учиться микроконтроллерам. Отчасти это мнение связано с тем, что программаторы вендоров ПЛИС довольно дороги.

Теперь есть альтернатива. Вы сможете сделать простой программатор USB сами!
Читать дальше →

Релиз Qt 4.8

Время на прочтение2 мин
Количество просмотров2.9K
Коллеги, поздравляю нас с выходом очередной версии этого очень хорошего кроссплатформенного фреймворка. В первую очередь Qt — это набор примитивов и готовых модулей для разработки GUI кроссплатформенных приложений на C++, но за годы развития область применения Qt значительно расширилась. Код для создания «резиновых», легко локализуемых интерфейсов давно доступен не только из C++, но и из многих других языков — python, ruby, php. Технология QML, о которой в последний месяц мы много прочитали благодаря конкурсу от Nokia, позволяет создавать полноэкранные интерфейсы, основанные не на виджетах, а на графических примитивах, их взаимодействии и анимации. Встроенные средства для использования Javascript в качестве скриптового языка приложений, тесная интеграция с WebKit, собственная кроссплатформенная IDE — о Qt можно рассказывать довольно долго. Но я этого делать не буду — только кратко расскажу про то, что нового.

Под катом - краткий список нововведений

Подарите Вебвизор своему сайту

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

Мы уверены, что каждый сайт похож на живое существо – он хочет, чтобы о нем заботились, и мечтает быть нужным и полезным. Поэтому мы решили дать возможность каждому владельцу сайта сделать ему подарок — а именно Вебвизор.

Мы внедрили Вебвизор в Яндекс.Метрику еще в апреле этого года, но до этого времени он не был общедоступен. С сегодняшнего дня использовать его возможности может каждый, у кого есть сайт.

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

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

Подарите сайту Вебвизор – и вы всё увидите сами.

Команда Яндекс.Метрики, за полезные подарки

.

Как далеко от идеи игры до её воплощения: интервью с разработчиками Yocto Technology Group

Время на прочтение12 мин
Количество просмотров3.9K
imageНе так давно молодая команда разработчиков YTG (Yocto Technology Group) отпраздновала свой первый релиз. Когда я увидела то, что у них в итоге получилось, то была приятно удивлена. McGyro, а именно так называется их игра для iPad, iPhone и iPod Touch, порадовал меня интересной концепцией геймплея, основанной на наличии в устройствах гироскопа, весёлой и лёгкой манерой подачи сюжета, остроумными диалогами, а также запоминающимся визуальным стилем. В художественном исполнении игры, мне, как большому любителю мультяшного стиля, понравилось всё. Нарисовано довольно лаконично, но в то же время стопроцентно передаёт атмосферу американского вестерна. Дух дикого дикого запада чувствуется везде, даже в главном меню игры, которое стилизовано под старый деревянный указатель, слегка раскачивающийся на ветру на фоне пустынного ландшафта. Так и тянет выбрать дорогу и отправиться на поиски приключений.

image


Меня же, помимо ковбойской тематики, очень заинтересовал путь команды разработчиков к их первому релизу. Что скрывать, делать игры мечтают многие. Но не всем мечтам суждено сбыться: кто-то навсегда остаётся инди, рассматривая создание игр как хобби; кто-то совершенствует свои знания в стенах всемирно-известной геймдев компании, доволен собой, и лишь иногда приходит лёгкое сожаление о том, что он делает (пусть и очень хорошо) только одну маленькую составляющую и не может повлиять на концепцию игры в целом, при этом вдруг начинает ощущаться недостаток простора для творчества, но неприятное чувство проходит так же быстро, как началось; а кто-то вдруг совсем устаёт от своих чисто коммерческих проектов и под влиянием осенней депрессии начинает писать на Хабр о том, как не похожи мечты начинающего игродела на ожидающую его реальность. Многие мечтают делать игры в кругу своей маленькой и дружной команды, в уютненьком офисе, с азартом обсуждая новые идеи за кружкой чая или кофе. Но насколько это реально? Об этом и о многом другом я поспешила разузнать у разработчиков, когда выдалась возможность поприставать с вопросами.

Читать дальше →

Мониторинг прогнозированием с помощью rrdtool, как это делается

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


Введение


Недавно я описывал созданную мной систему мониторинга транзитного VoIP методом прогнозирования. Самым сильным плюсом данного метода в задаче мониторинга транзитного VoIP является то, что нет необходимости выставлять критерии того, что считать нормальной работой величин, находящихся под мониторингом, а что – потенциальным сбоем.
Ядром системы является rrdtool, в котором реализованы прогнозирование методом Хольта-Винтерса и механизм выявления аберраций.
Мониторинг методом прогнозирования можно использовать не только для VoIP, но и для любого другого типа трафика, а так же, для величин, которые изменяются во времени с некой прогнозируемой цикличностью. В отличие от стандартных методов, при мониторинге с помощью прогнозирования не осуществляет мониторинг состояния величин, находящихся под мониторингом, зато осуществляется мониторинг динамики изменения их состояний во времени.
Если вам интересна математика прогнозирования рекомендую прочесть. Чтобы быть хоть немного в курсе темы, прочтите главу “Метод прогнозирования реализованный в rrdtool” моего предыдущего поста.
Читать дальше →

ИИ на пяльцах: 5 полезных приемов

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

Вашему вниманию представляю свой вольный перевод, обещанный г-ном Takezo в его комменте о будущем ИИ в GameDev.

Введение


Прикольно наблюдать за внутриигровой визуализацией, особенно если ты сам ее и создал! Однако, в погоне за этим ярким впечатлением легко забыть, что не нужно визуализировать все подряд.
Ниже вы найдете видео туториал по визуализации геймплея и ИИ, записанный в секретной исследовательской лаборатории AiGameDev.
Читать дальше →

Синтез фракталов: IFS и L-системы

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

Введение

[1]
Фракталом (лат.«fractus» – дроблёный, сломанный, разбитый) называют сложную геометрическую фигуру, обладающую свойством самоподобия, т.е. составленной из нескольких частей, каждая из которых подобна целой фигуре. В более широком смысле под фракталами понимают множества точек в евклидовом пространстве, имеющие промежуточную (дробную) метрическую размерность (размерность Хаусдорфа).
Размерность Хаусдорфа – естественный способ определить размерность множества в метрическом пространстве. Размерность Хаусдорфа согласуется с нашими обычными представлениями о размерности в тех случаях, когда эти обычные представления есть. Например, в трёхмерном евклидовом пространстве хаусдорфова размерность конечного множества равна нулю, размерность гладкой кривой – единице, размерность гладкой поверхности – двум и размерность множества ненулевого объёма – трём.
Читать дальше →

Игры на CANVAS/WebGL

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

Vortal Combat


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

Читать дальше →

Алгоритм определения движения через сравнение двух кадров

Время на прочтение4 мин
Количество просмотров21K
Здравствуйте, хабражители.
Хочу с вами поделиться своими наработками по обработке изображений. В последнее время занимаюсь написанием домашнего сервера под «умный дом» и начал с видеонаблюдения.
Задача оказалась не такой тривиальной. По поводу всего видеонаблюдения я напишу отдельно (если кому-то это интересно), а сейчас хотел бы затронуть тему «Алгоритм определения движения через сравнение двух кадров».
Этот алгоритм необходим для включения (выключения) записи видео с видеокамер.
Читать дальше →

Как создать визуальную библиотеку изображений с HTML5 Canvas

Время на прочтение14 мин
Количество просмотров4.6K
Сегодня утром, открыв почту, получил очередную рассылку от Code Project, в которой был описан интересный путь создания галереи изображений при помощи Canvas элемента. Статья показалась достаточно интересной и я решил опубликовать ее перевод
здесь

NAT не firewall, повторим еще разок

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


Посмотрите на рисунок. Вот так конфигурируется классический NAT на маршрутизаторе Cisco, допустим там больше ничего не сконфигурировано. А теперь ответьте сами себе на вопрос. Может ли при определенных условиях кто-либо обратиться извне на RDP порт (TCP 3389) супер секретного сервера 192.168.0.250 и попытаться подобать пароль к нему. Уточним, что сервер стоит одиноко в сети и никуда сам не обращается (имеется в виду, что на нем нет никаких троянов, автоматических обновлений и прочих прелестей).

Считаете — нет? Вспомним анекдот.

Лекция по филологии. Старый профессор рассказывает:

— В некоторых языках мира двойное отрицание означает согласие. В других, двойное отрицание так и остается отрицанием. Но, нет ни одного языка в мире, в котором двойное согласие означает отрицание. Голос с задней парты:
- Ну да, конечно, профессор.

Демоны на PHP

Время на прочтение4 мин
Количество просмотров76K
Памятка начинающему экзорцисту.

Прежде, чем начать: я знаю, что такое phpDaemon и System_Daemon. Я читал статьи по этой тематике, и на хабре тоже.

Итак, предположим, что вы уже определились, что вам нужен именно демон. Что он должен уметь?
  • Запускаться из консоли и отвязываться от неё
  • Всю информацию писать в логи, ничего не выводить в консоль
  • Уметь плодить дочерние процессы и контролировать их
  • Выполнять поставленную задачу
  • Корректно завершать работу

Отвязываемся от консоли


// Создаем дочерний процесс
// весь код после pcntl_fork() будет выполняться двумя процессами: родительским и дочерним
$child_pid = pcntl_fork();
if ($child_pid) {
    // Выходим из родительского, привязанного к консоли, процесса
    exit();
}
// Делаем основным процессом дочерний.
posix_setsid();

// Дальнейший код выполнится только дочерним процессом, который уже отвязан от консоли

Читать дальше →

Node.JS на Android, если Android порутованный

Время на прочтение1 мин
Количество просмотров8.6K
Оказывается, ещё в начале 2011 года японский исследователь по имени Тосио Мори, действующий под псевдонимом forest1040, выяснил, что возможно запустить Node.js на устройстве с Android, если обладать правами рута. Итоги его наблюдений изложены на нижеследующих тринадцати слайдах:


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

  • Получить права рута на устройстве под Android
     
  • Использовать qemu и собрать Linux для ARM
     
  • Внутри ARM Linux собрать Node.js
     
  • Скопировать собранный Node.js на устройство под Android

Читать дальше →

О регистрации на сайтах

Время на прочтение6 мин
Количество просмотров80K
Мы часто выполняем на многих сайтах действие, которое постоянно эволюционирует и улучшается (а иногда наоборот). Это регистрация. Именно о разных способах и особенностях регистраций на сайтах я бы хотел с вами поговорить. Это не громоздкое исследование, а просто небольшие и (надеюсь) полезные выдержки из моего опыта дизайнера интерфейсов.


Пример удачной регистрации на сайте Tumblr.

Начну с определения самого понятия «регистрация», с ним всё не так просто, как может казаться. В результате полевых исследований нашей компании оказалось, что разные люди (клиенты, посетители и мы сами) нередко воспринимают это слово по-разному. Для того, чтобы избежать непонимания, опишу то, как я сам вижу регистрацию.
Читать дальше →

Esprima — парсер для javascript, написанный на javascript

Время на прочтение3 мин
Количество просмотров14K
В сети и на github появилась разработка парсера Esprima, позиционированного на парсинг вообще и для javascript в частности. Он написан на Javascript и переводит скармливаемый текст в структуру JSON, которую затем можно анализировать, например, для препроцессирования кодов, создания сахарных обёрток для JS, автоматизированного поиска ошибок без запуска кода, преобразования языков (кросс-компиляции), преобразования серверного JS в клиентский или наоборот, для минификации кода или наоборот, для разбора обфусцированного. Но это — всё идеи для будущего. Появился архив совсем недавно (в середине ноября — первый коммит с 2000 строк кода), но уже приобрёл своих иследователей, судя по форкам. Формат парсинга совместим с Mozilla SpiderMonkey Parser API.
Читать дальше →

Выпущена новая версия пакетного менеджера NuGet 1.6

Время на прочтение2 мин
Количество просмотров5.6K
image
Вчера пакетный менеджер NuGet для платформы .NET получил очередное обновление до версии 1.6. Ниже перечислены нововведения в новой версии.

Семантическое версионирование

Добавлена поддержка механизма семантического версионирования (Semantic Versioning (SemVer), который позволяет задавать условия зависимостей пакетов по версиям в определенной нотации. Например:

1.0 = 1.0 ≤ x

(,1.0] = x ≤ 1.0

(,1.0) = x < 1.0

[1.0] = x == 1.0

(1.0,) = 1.0 < x

(1.0,2.0) = 1.0 < x < 2.0

[1.0,2.0] = 1.0 ≤ x ≤ 2.0

пустое значение = последняя версия.

Описание нотации и документация по версионированию в NuGet 1.6 доступна по следующей ссылке.

Читать дальше →

Информация

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