User
Исследование факторов ранжирования в Яндексе
Начнем с внешних факторов. Критерии выбора внешних ссылок:
Простой способ тестирования рекламы
авторизация приложений и схема подписи данных на базе OAuth 2.0
Данные о текущем пользователе (или о текущем профиле) FB передает в параметре signed_request, а именно:
- algorithm — HMAC-SHA256;
- user_id — айди текущего пользователя;
- oauth_token — зашифрованная строка, которую можно использовать в дальнейшем для доступа к Graph API, Old Rest API или FQL;
- expires — когда истекает oauth_token;
- profile_id — появляется на табе профиля.
47 принципов игровой механики
Чтобы использовать игровой арсенал в полном объёме, нужно знать все имеющиеся методы и сочетать их друг с другом. Существующие термины, концепции и научные теории в данной области можно хотя бы напечатать в виде колоды карт и вытягивать их в случайной последовательности.
Компания SCVNGR занимается разработкой мобильных игр и создала именно такую колоду карт, которую можно позаимствовать и использовать в своих целях. Вот здесь приводится объяснение каждого из 47-ми терминов и примеры их использования: достижения, фиксированный интервал, поведенческий кураж, информационная теория фрагментарной информации (то есть что любую информацию для пользователей нужно выделять минимально возможными порциями — так она лучше усваивается), динамика достижений, совместная игра, кросс-ситуационные хит-парады, бесконечный геймплей, мысль о великой цели, бесплатный завтрак, лотерея, собственность и т.д.
Нейронные сети, основанные на гомеостатических нейронах: самоорганизация и целенаправленное поведение
Введение
В данном топике я хочу рассказать о модели необычной нейронной сети, в разработке которой мне посчастливилось участвовать. Данная модель была разработана около года назад (про авторство написано в последнем разделе), однако исследование ее после этого прекратились из-за совершенной нехватки времени (занятости в своих собственных проектах). Тем не менее я опишу ее здесь в надежде на то, что некоторые мысли покажутся читателям интересными и дадут ростки возможных дальнейших исследований в данном направлении.
Сразу оговорюсь, что эта модель не претендует никоим образом на прототип ИИ. Мы скорее хотели исследовать возможность самоорганизации и перспективы возникновения целостного целенаправленного поведения в динамической системе «эгоистичных» (гомеостатических) нейронов.
Как мне кажется, для более полного понимания логики работы модели будет полезно прочитать мой топик про Теорию функциональных систем, однако опять же это на ваше усмотрение.
Поехали!
Счастливый ProductOwner — верхом на пороховой бочке
Разберем, какой оседлать собственное подразделение разработки и добиться успеха.
re2c — компилятор регулярных выражений
Например, flex — это один из таких анализаторов. Старый, но проверенный годами.
Я много пользовался flex'ом, он имеет и плохие и хорошие стороны, но по большому счету, жаловаться не приходилось.
Но вчера наткнулся на интересный проект — re2c. По сути, на этой штуке можно писать лексические анализаторы прямо на коленке за несколько минут.
Пишем интерпретатор трехадресного кода
Введение
Добрый день.
Продолжаю писать о около-компиляторных темах. В этот раз затрону вопрос о проектировании и создании интерпретатора, который работает с синтаксическими деревьями.
Рекомендую ознакомиться с предыдущей статьёй — «Пишем LR(0)-анализатор. Простыми словами о сложном», потому что в интерпретаторе я не строю синтаксический анализатор с нуля, а использую наработки, описанные в той статье. Ах да, еще один немаловажный момент — писать будем на JavaScript. Я не поклонник этого языка, но считаю что это наиболее удобный для общественности способ посмотреть результат. Не каждый рискнёт качать неизвестно что, да и это всё же сложнее чем просто открыть страничку. Нетипичность инструмента компенсируется «учебностью» примера. Скорость работы не важна (100-150 строк лимит, мне кажется больше никто не захочет набирать того чтобы поиграться с интерпретатором), а понятность кода у JS достаточно велика.
Визуализация графов. Метод связывания ребер
Это граф зависимостей некой программной системы. Он представляет собой дерево разбиения на пакеты (серые шарики — пакеты, белые — классы), на которое поверх наложены ребра зависимости одних классов от других. Чтобы не рисовать стрелки направления, ребра нарисованы в виде градиентных линий, где зеленый — это начало, а красный — конец ребра. Как видите, граф настолько визуально перегружен, что архитектуру программы невозможно проследить.
Под катом описание метода, решающего эту проблему.
Двадцатка лучших веб-шрифтов
Сейчас самое время повышать уровень дизайна своих работ с помощью веб-шрифтов
Без преувеличения, сейчас сетевая типографика переживает захватывающий период своей жизни. Недавние технологические скачки приблизили нас еще на шаг ближе к типографической нирване в интернете. Шаг, которого все так долго ждали.
Свобода использования веб-шрифтов вне безопасного списка на всех ведущих ОС стала возможной, по большому счету, благодаря трем основным, почти одновременным технологическим факторам: широко распространенной поддержке правила @font-face в браузерах; появлению таких «шрифтохранилищ» как Typekit и Fontdeck; создание нового формата шрифтов — архивированного файла шрифта WOFF.
Будни разработки облака, часть первая
Когда концепция «оплата по потреблению» только-только оформлялась, а я судорожно искал «как считать», мне казалось, что процессор и память — это два самых простых ресурса.
Действительно, у нас есть xencontrol (библиотека управления гипервизором Xen), которая может точно сказать про каждый домен (запущенную виртуальную машину), сколько у неё есть памяти, сколько наносекунд времени было потрачено. Эта библиотека запрашивает информацию напрямую (через xenbus) у гипервизора и подвергает её минимальной обработке.
Выглядит эта информация примерно так (вывод биндинга xencontrol для питона):
{ 'paused': 0, 'cpu_time': 1038829778010L, 'ssidref': 0, 'hvm': 0, 'shutdown_reason': 0, 'dying': 0, 'mem_kb': 262144L, 'domid': 3, 'max_vcpu_id': 7, 'crashed': 0, 'running': 0, 'maxmem_kb': 943684L, 'shutdown': 0, 'online_vcpus': 8, 'handle': [148, 37, 12, 110, 141, 24, 149, 226, 8, 104, 198, 5, 239, 16, 20, 25], 'blocked': 1 }
Как мы видим, есть поле mem_kb, соответствующее выделенной памяти для виртуальной машины и есть поле cpu_time, содержащее какое-то умопомрачительное число (хотя на самом деле это всего лишь 17 минут). cpu_time считает с точностью до наносекунд (точнее, величина, которая тут хранится считается в наносекундах, реальная точность около микросекунды). Память, как понятно, в килобайтах (хотя внутренней единицей учёта, что гипервизора, что ядра линукс является страница — её размер по-умолчанию 4 килобайта).
Казалось бы «бери и считай», однако, дьявол кроется в деталях…
Извините за жёлтый заголовок ниже, но именно так звучал вопрос в полемике в ходе обсуждения одной из проблем:
Hyper-threading + Xen = воровство денег у клиентов
XSD: частичная валидация
Один компьютер на двоих (и более) или multiseat на базе Ubuntu 10.04 LTS
Вступление
Вот время работы системным администратором в небольшом офисе при обновлении парка компьютеров появилась небольшая проблема. Современные компьютеры дают уровень производительности, много превосходящий необходимый для офисных компьютеров. Причем реалии рынка таковы, что различия в производительности мало сказываются на цене. И вроде бы дешевые компьютеры на базе Atom по ценовому признаку практически не отличаются от более производительных компьютеров на базе обычных процессоров Amd и Intel (материнская плата с процессором Atom стоит около 100-150 у.е. на май 2010 года, Минск, и та же цена на октябрь 2010 в том же Минске).
Та же ситуация и с жесткими дисками: для офисной работы нет необходимости в объеме диска более 40-80 Гб. Но на рынке такие жесткие диски уже практически не представлены. На момент написания статьи в продаже были жесткие диски емкостью 160 Гб (38$), 250 Гб (39$), 320 Гб (40$), 500 Гб (41$), дальше различия по ценам заметны сильнее. Цена за гигабайт жестких дисков малого объема довольно высока. Та же ситуация и со всеми остальными комплектующими.
Возникает закономерный вопрос, как рационально все это использовать? Давайте подойдем логически — чтобы удешевить систему можно либо купить комплектующие похуже (не сильно удешевляет), либо отказаться от некоторых комплектующих. По сути, в рабочем месте обязательными являются устройства ввода (клавиатура, мышь, планшет и т.д.) и устройства отображения информации (монитор, проектор и т.д.). Остальная часть системы пользователей особо не касается, и от нее можно избавляться. Безусловно, от всего избавиться не получится. Давайте заглянем под крышку системного блока. Тут мы обязательно видим материнскую плату, видеокарту (может быть уже на материнской плате), процессор (тоже может быть на материнской плате) и память. А вот остальные комплектующие уже не так важны. Оптический привод мало востребован, и поэтому его, скорее всего, не будет.
С жестким диском тоже интересная ситуация. Его может и не быть, тогда у нас будет так называемая бездисковая станция. Тут вся информация загружается по сети с сервера (реализация PXE+NFS и немного бубна). Но хочется чего-то большего.
Тогда и возникла идея подключить к одному компьютеру две клавиатуры, две мыши и два монитора и заставить их работать независимо. В зарубежных источниках такие системы называются multiseat.
Но можно на этом и не ограничиваться, а делать бездисковую multiseat-станцию. Этот вариант отлично подойдет для пары multiseat-станций с сервером. В данной статье не рассматривается.
Командный эксперимент
Материальная помощь идеям
Веб-студии и команды фрилансеров – участники стартапов? (попытка разобраться)
Веб-студии и команды фрилансеров – участники стартапов? (промежуточные результаты)
1. Мы приглашаем на Startup Weekend представителей веб-студий и команд фрилансеров, которые хотели бы поучаствовать в создании стартапов
Бижайший Startup Weekend пройдет в Москве с 11 по 13 февраля, зарегистрироваться можно здесь. Регистрация на Уикенды в других городах здесь.
На Уикенде вы сможете плотно пообщаться с авторами идей и понять, в какой из них вам хотелось бы поучаствовать. Ваш день – воскресенье. В воскресенье с утра, дожившие до этого момента авторы идей, смогут встретиться и поговорить с представителями команд разработчиков о перспективах совместной деятельности. Мы предполагаем начать эту встречу с “трубы” (устоявшийся уикендовский сленг :) – это speed-dating формат минутного разговора “каждый автор с каждой командой”.
Во встрече принимают участие только зарегистрировавшиеся в качестве представителей команд участники Уикенда.
Команды разработчиков должны быть готовы рассматривать авторов в качестве полноправных участников возможного совместного проекта.
Garbage Collection наглядно
Как устроен AES
О чём эта статья
Долгое время я считал, что криптографические алгоритмы шифрования и хеширования, вроде AES и MD5, устроены очень сложно и написать их совсем не просто, даже имея под рукой полную документацию. Запутанные реализации этих алгоритмов на разных языках программирования только укрепляли это мнение. Но недавно у меня появилось много свободного времени и я решил разобраться в этих алгоритмах и написать их. Оказалось, что они очень просто устроены и для их реализации нужно совсем немного времени.
В этой статье я напишу как устроен алгоритм шифрования AES (которого иногда называют Rijndael) и напишу его на JavaScript. Почему на JavaScript? Чтобы запустить программу на этом языке, нужен только браузер в котором вы читаете эту статью. Чтобы запустить программу, скажем, на C, нужен компилятор и найдётся совсем мало желающих, готовых потратить время на компиляцию кода из какой то статьи. В конце есть ссылка по которой можно скачать архив с html страницей и несколькими js файлами — это пример реализации AES на JavaScript.
Операционные усилители (на основе простейших примеров): часть 2
Вместо скучного вступления
В прошлый раз я пытался вкратце объяснить основные принципы работы операционных усилителей. Но я просто не могу отказать в просьбе о продолжении темы. На этот раз схемы немного сложнее, но постараюсь не растягивать нудные математические выводы.
Знакомство с WebGL
Введение
Статья создана с целью показать основные действия, необходимые для отображения 3d в современном браузере, используя технологию WebGL. Для достижения цели рассмотрим задачу построения нескольких линий в трехмерном пространстве.
Схема работы:
- Получаем WebGL контекст из canvas'а.
- Загружаем программу шейдеров. А именно:
- создаем программу шейдоров;
- получаем исходный код отдельно для вершинного и фрагментного шейдеров;
- компилируем коды шейдеров;
- присоединяем к программе;
- активируем программу.
- Устанавливаем две матрицы: model-view и projection.
- Размещаем, заполняем, активируем буферы данных вершин.
- Рисуем.
HTML5 Canvas — создание аркады-скроллера по шагам
Предисловие
Это инструкция по созданию игры, которую я накодил за пару вечеров. Целью было не столько создание достойного представителя жанра, сколько проверка возможностей Canvas и ООП в JavaScript. Чтобы было интереснее, я поставил условие — никаких внешних файлов со спрайтами, вся графика рисуется встроенными методами. Также, не используется никаких фреймворков и библиотек. Просто потому, что в такой небольшой игре их использование ИМХО не оправдано.
В целом, Canvas молодая платформа, и может вызывать интерес перенесением на нее классических игровых концепций.
Задача
Cоздание классической скроллер аркады, с бесконечным количеством врагов разных типов, которые появляются волнами. За сбитых врагов дают очки, лучший результат записывается.
Исполнение
Сразу предупреждаю, статья довольно длинная, т.к. постарался описать каждый аспект игры. Ссылка на рабочий пример в конце.
Information
- Rating
- Does not participate
- Location
- Ялта, Республика Крым, Россия
- Date of birth
- Registered
- Activity