Pull to refresh
1
0
Кирилл @kirilloid

Программист

Send message

Data Mining в онлайн играх

Reading time11 min
Views32K
АионВо всех онлайн сервисах и играх самая большая доля аудитории уходит прямо на старте – в первые же минуты и часы знакомства с продуктом. Этой теме уже посвящены сотни книг и статей с самыми различными гипотезами успеха и причин лояльности аудитории – уникальность, простота, юзабилити, бесплатность, обучение или инструкция, эмоциональность, и еще множество факторов считаются крайне важными.

Мы захотели узнать, почему уходят игроки и можно ли предсказать их уход. Предмет исследования – ММОРПГ Аион, однако наши результаты оказались применимы к широкому кругу игр и онлайн сервисов.
Заглянуть в будущее
Total votes 214: ↑206 and ↓8+198
Comments87

Делаем приватный монитор из старого LCD монитора

Reading time2 min
Views971K


Вы наконец-то можете сделать кое-что со своим старым LCD монитором, который завалялся у Вас в гараже. Превратите его в шпионский монитор! Для всех вокруг он будет выглядеть просто белым экраном, но не для Вас, потому что у Вас будут специальные «волшебные» очки.

Всё что Вам нужно – это пара старых очков, нож для бумаги и растворитель для краски.

Читать дальше →
Total votes 1484: ↑1466 and ↓18+1448
Comments327

Эффективное использование Vim

Reading time11 min
Views73K

Введение


Я очень люблю редактор Vim, использую его в своей работе (для написания кода) уже больше четырех лет и хочу поделиться своим опытом его использования.

Эта статья — не набор “волшебных команд” и рецептов (cookbook, как называют такие наборы по-английски), хотя они тут тоже присутствуют, а, скорее, попытка описать, как общие принципы построения эргономичных интерфейсов можно применить в практике использования Vim, чтобы сделать из него удобную и эффективную среду работы с текстами.

Эта статья также не является tutorial’ом для начинающих пользователей Vim, хотя и им (а также пользователям Emacs) может быть интересна, поскольку некоторые упоминаемые принципы являются достаточно общими и действуют не только в системах редактирования текстов, а вообще везде, где идет речь об использовании компьютера для редактирования чего-либо. Тем не менее, я предполагаю, что читатель знаком с основными концепциями, применяемыми в Vim (режимы, регистры, буфера, команды) и не останавливаюсь на их подробном описании.

По умолчанию Vim настроен очень старомодно, и эта настройка подразумевает, что пользователь при работе с текстом будет мыслить метафорами пятидесятилетней давности, как будто бы сейчас заря эпохи UNIX. Однако дизайн Vim позволяет сделать несколько настроек, после которых система станет выглядеть вполне прилично и станет работать весьма эффективно, сочетая в себе полезные черты и древних юниксовых инструментов работы с текстом, и современных WYSIWIG-процессоров, при этом обходя, насколько это возможно, присущие им недостатки. Вот об этих настройках и приемах их использования и пойдет речь.
Читать дальше →
Total votes 141: ↑128 and ↓13+115
Comments67

Примеры работы с разными map API

Reading time6 min
Views82K

Есть много статей на тему знакомства с Google Map Api и Yandex Map Api, но про остальные картографические сервисы не так много практического материала. В недавнем времени работал с Api:
  1. Google map
  2. Yandex map
  3. Yahoo map
  4. Bing map
  5. OpenStreet map

И хотел обобщить работу с вышеупомянутыми сервисами, а именно инициализация карты и установление маркеров по клику мышки. Материалы в статье представлены в виде Html кода, javascript и результата — скриншота, а так же исходники на vs 2010 MVC3.
Читать дальше →
Total votes 63: ↑59 and ↓4+55
Comments22

Использование пакетного менеджера Node.js на Windows

Reading time1 min
Views11K
Мне долгое время хотелось полноценно поиграться с нодом, но так сложилась жизнь, что я пользуюсь Windows как на работе, так и дома.

Только недавно портировали, собственно, сам нод на Windows (и не без помощи Microsoft, за что им спасибо). Это хорошо, но как же быть с пакетным менеджером npm который используется чуть менее чем во всех туториалах?

Продолжительный поиск привел к нескольким статьям, в которых в общих чертах говорилось об установке чего-то, непонятно чего и непонятно как (cygwin и т. п.)

Долгое время я не мог вменяемо завести npm, но в какой то момент подвернулась замечательная статья некоего Pablo M. Cibraro. В которой простым языком описано что и как делать.

В общем итоге нам предлагают поставить Python, затем скачать утилиту, за авторством Japj. И запуска ее точно так же, как и npm — python ryppi install <имя_модуля>

Кроме того, что бы использовать express вам понадобится его модифицированная версия (потому что в оригинальной используются специфические для *nix команды)

И еще одна ремарка для новичков, таких как я. Для того, что бы использовать модули нода нужно поместить их в папку node_modules в папке с запускаемым файлом js.
Total votes 9: ↑6 and ↓3+3
Comments2

Элемент input в html 5, мультиаплоад

Reading time3 min
Views55K
У элемента input в HTML 5 появился атрибут multiple, с помощью которого мы можем выбрать для загрузки несколько файлов. Этот атрибут принимает только одно значение «multiple», в живую будет выглядеть так:

<input type="file" multiple="multiple" name="files[]" />


Обратите внимание на name, мы явно в нем указали, что это массив.

Сразу появляется вопрос, какой браузер это новшество не понимает, ответ легко предсказуем, это семейство Internet Explorer. Начиная с 9 версии и ниже, они не поддерживают этот функционал и просто проигнорируют атрибут, искренне надеюсь что в финальной 10 версии они это поправят.
Кроме того что, мы дали пользователям загрузить сразу много файлов, мы должны позаботиться о них, и дать им возможность загрузит именно те файлы которые нам необходимы. И тут на помощь приходит еще один новый атрибут accept. Который принимает "MIME Media Types".

<input type="file" multiple="multiple" name="files[]" accept="image" />

Читать дальше →
Total votes 97: ↑94 and ↓3+91
Comments36

Создание приложений реального времени с помощью Server-Sent Events

Reading time7 min
Views52K
Буквально недавно стало известно, что Firefox 6 получит SSE (уже есть в Opera 10.6+, Chrome, WebKit 5+, iOS Safari 4+, Opera Mobile 10+) так, что поддержка более половины всех браузеров (охват аудитории пользователей) уже не за горами. Настало время присмотреться к этой технологии. SSE предложил Ian Hickson более 7 лет назад, но только год назад она стала появляться в браузерах. У нас же есть WebSockets зачем нам ещё один какой-то протокол?! Но во всем есть свои плюсы и минусы, давайте посмотрим чем же SSE может быть полезен.

Идея SSE проста — клиент подписывается на события сервера и как только происходит событие — клиент сразу же получает уведомление и некоторые данные, связанные с этим событием. Чтобы понять полезность протокола SSE необходимо сравнить его с привычными методами получения событий, вкратце объясню их суть:
Читать дальше →
Total votes 87: ↑85 and ↓2+83
Comments55

Спортивное программирование вместе с ABBYY

Reading time2 min
Views11K
imageКогда мы писали пост про нашу кафедру, мы упоминали о том, что в мае состоится студенческая online-олимпиада по программированию ABBYY Cup. Настало время рассказать о ней подробнее.

ABBYY Cup стартует в воскресенье 15 мая в 10:00. Попробовать в нем свои силы может любой студент. Участникам будут предложены пять задач различной сложности, на решение которых отводится восемь часов. Как и в любой другой олимпиаде по программированию, для того чтобы заработать максимальные баллы, вам придется не просто решить поставленную задачу, но и уложиться в определенные ограничения по времени и по используемой памяти.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments16

Ripple — браузерный эмулятор для тестирования мобильных платформ

Reading time3 min
Views17K
imageВсе, кто занимается мобильным вебом, обязательно сталкиваются с проблемой тестирования на различных платформах. С одной стороны, тестировать надо на реальных устройствах, с другой стороны многие компании не могу достаточно быстро собрать парк нужных устройств. Сегодня я хотел бы написать про браузерный эмулятор для тестирования мобильных платформ под названием Ripple Emulator.
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments6

.phar — исполняемые PHP-архивы

Reading time4 min
Views53K
Данную статью я хочу посвятить одному интересному нововведению в PHP 5.2 (с версии 5.3 входит в стандартную поставку PHP) — PHAR.
image
PHAR — это утилита для создания исполняемых архивов в PHP, аналог JAR в Java.
PHAR ползволяет упаковать много файлов в один, в результате чего Ваше приложение может работать с целой библиотекой, как с одним файлом.
PHAR умеет создавать, читать, записывать и конвертировать такие форматы, как TAR, ZIP и, собственно, PHAR.
Доступ к файлам в архиве осуществляется напрямую, без необходимости распаковки архива, через PHP Stream Wrapper, тоесть с файлами из архива работают все функции, которые поддерживают PHP Stream Wrapper.
Читать дальше →
Total votes 137: ↑128 and ↓9+119
Comments80

Evercookie — самые устойчивые куки

Reading time1 min
Views73K
Samy Mamkar разработал систему, которая позволяет хранить куки в 8 местах, автоматически восстанавливая друг друга, и даже добиться того, чтобы куки, поставленное в одном браузере, действовало и в другом.

Удалить это куки практически невозможно! (Все возможно, конечно, но слишком много мороки)

Куки хранятся в:
  • HTTP Cookies;
  • Local Shared Objects (Flash);
  • Сохранение куки в значениях RGB автосгенерированных и форсированно кэшированных PNG с использованием HTML5 canvas;
  • Сохранение куки в Web History;
  • HTML5 Session Storage;
  • HTML5 Local Storage;
  • HTML5 Global Storage;
  • HTML5 Database Storage через SQLite.

При удалении из одного из этих мест кука автоматически восстанавливается из оставшихся. Работает даже если пользователь сменит браузер (через Local Shared Objects из Flash).

Описание (на английском) и демо: http://samy.pl/evercookie/.
Попробуйте удалить куки, почистить систему и зайти назад.



Как пользоваться?
Читать дальше →
Total votes 111: ↑107 and ↓4+103
Comments68

MySQL Performance real life Tips and Tricks. Part 3-rd.

Reading time14 min
Views23K
Решил продолжить цикл заметок по данной тематике. В данной статье особое место хотел уделить профайлингу MySQL запросов. Описать средства, которые предоставляются MySQL для профайлинга, и что нужно делать для определения узких мест запроса.

Также, после опубликования первых двух статей я получил пару отзывов и вопросов, связанных с проектированием БД / расстановкой индексов / составлением запросов. На многие вопросы старался отвечать. С некоторыми из них поделюсь и в этой статье.

Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments40

ES5 Harmony Proxy — меняем семантику JavaScript внутри самого JavaScript

Reading time10 min
Views11K
Прокси — это новые объекты JavaScript для которых программист должен определить своё поведение. Стандартное поведение всех объектов определено в движке JavaScript, который чаще всего написан на C++. Прокси позволяют программисту определить практически любое поведение объекта JavaScript, они полезны для написания базовых объектов или оберток функций или для создания абстракций виртуальных объектов и предоставляют API для мета-программирования. Сейчас Прокси не входит в стандарт, но его стандартизация запланирована в ECMAScript Harmony. Чтобы избежать путаницы уточню, что эти Прокси не имеют ничего общего с прокси серверами.

Где их можно использовать


1. Общие промежуточные абстракции
2. Создание виртуальных объектов: обертки существующих объектов, удаленные(от слова далекий) объекты, ленивое создание объектов (Пример ORM — Ruby ActiveRecord, Groovy GORM)
3. Прозрачное ведение логов, трассировки, профилирования
4. Внедрение предметно-ориентированных языков
5. Динамический перехват несуществующих методов, создание отсутствующих методов (__noSuchMethod__)
6. База для специфичных итераторов
Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments39

Советы как подготовить справку пользователя для ПО на английском

Reading time5 min
Views8.3K
Привет! Сегодня мы открываем блог на Хабре. Наша специализация – переводы на английский язык, написание и рассылка пресс-релизов в Рунете, а также создание справочных систем для ПО. За несколько лет работы накопились некоторые знания, которыми хотим поделиться с вами. Надеюсь, что блог будет вам полезен. Желаю приятного прочтения и жду вас в постоянных посетителях.

image

Начинаем мы с поста о создании руководств пользователя для софта на английском языке. Cправка пользователя – это важная составляющая программного продукта. Создание справки требует особой тщательности, т.к. ошибки и непонятные формулировки в ней часто воспринимаются как дефект самой программы и портят впечатление о продукте. Журналисты упоминают плохо написанную или переведенную справку как недостаток в обзорах, а пользователи голосуют рублем – если они с трудом или вообще не понимают инструкции в руководстве, то едва ли они зарегистрируют триал. С другой стороны программу с качественно переведенной справкой легче продать.
Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments22

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

Reading time6 min
Views3.9K
Представьте, у вас есть проект, состоящий из нескольких модулей и, например, 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));

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

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

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

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

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

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

#404fest: Секция Дизайн

Reading time2 min
Views9.1K
imageНа прошедшем Фестивале 404 я рулил дизайнерской секцией. Самые интересные доклады секции были записаны на видео. Предлагаю вашему вниманию подборочку наиболее интерестного дизайнерского видео с Фестиваля.

Вся дизайнерская секция была во второй день, но самый полезный дизайнерский доклад открывал Фестиваль в первый день. Перед нами выступил Билл Бакстон — дизайнер с большой буквы. Что там дизайнер — ученый, специалист по взаимодействию человека и компьютера, личность мирового масштаба.

Билл Бакстон (Microsoft Research)
Дизайн, веб-сайты и новые стандарты

Всё началось в 1993 с браузера Mosaic, тогда наши представления о веб-сайтах складывались из традиций GUI, которые в свою очередь были продиктованы персональными компьютерами и ноутбуками. Но с тех пор, когда смартфоны стали использовать для доступа в интернет, стало понятно, что традиционная модель не идеальна. В своей презентации я загляну за эру мобильных устройств и расскажу про цифровую эко-систему в которой мы будем жить совсем скоро, а так же о разных формах жизни, которые населят эту систему. Нынешние проблемы с вебом и мобильным интернетом померкнут в сравнении с грядущими переменами. Браузеры будущего будут отличаться от нынешних, как сейчас интернет отличается от газет и журналов.



Читать дальше →
Total votes 41: ↑36 and ↓5+31
Comments6

20 наиболее необходимых инструментов для проверки отображения сайта

Reading time5 min
Views30K
Доступность контента и отображение информации на сайте чрезвычайно важна. Говоря простым языком, что хорошего может сделать то, что находится у вас на сайте, если определенные люди не смогут увидеть это? Конечно, этот новый модный дизайн с мелким шрифтом и малоконтрастными цветами для вас и ваших друзей выглядит классно, но вот что насчет тех, у кого слабое зрение, или тех, кто не различает некоторые цвета, или тех, у кого какие-либо другие проблемы со зрением — они ведь просто не смогут ничего найти, не говоря уже о том, чтобы прочитать хоть что-нибудь на вашем сайте. Вам надо, даже не «надо», а вы ДОЛЖНЫ сделать свой сайт доступным для как можно большего числа посетителей.

Только вот, что же делать, чтобы гарантировать доступность своего сайта? После прочтения данной статьи ваша задача значительно упростится. Ниже вы найдете 20 инструментов, помогающих сделать сайт более доступным.

Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments11

JS1k — пишем отличное веб приложение в 1024 байт

Reading time7 min
Views3.4K


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

Тема текущего JS1k "Oregon Trail" — классическая игра для Apple II (что это можно нагуглить). Поэтому рекомендуется написать что-то в этом духе, но это не обязательно.

Начало


Вам необходимо придумать небольшое приложение или демку, которое по вашему мнению может влезть в 1кб (продумать детали и управление). Если вы сомневаетесь в своих прикидках, то можно посмотреть, что впихнули в прошлом году: Legend Of The Bouncing Beholder, Tiny chess. Прочитайте правила и используйте html шаблон — тогда ваше приложение будет 100% работать в демо среде.
Начните писать скрипт, без каких-либо оптимизаций, но следите за его размером. Если он стал больше 4-5Кб — вам стоит придумать другую тему или в будущем придется попотеть (у меня было 4393 байт).
Читать дальше →
Total votes 62: ↑59 and ↓3+56
Comments48

Плагины VIM о которых следует знать, часть 1: surround.vim

Reading time3 min
Views16K
Топик — вольный перевод статьи Vim Plugins You Should Know About, Part I: surround.vim Петериса Круминса.

UPD: вторая часть

Что такое плагин surround.vim? Вот что говорит о нем автор, Тим Поп (Tim Pope):

Surround.vim работает со всем, что «окружает»: скобками, кавычками, тегами XML и т.п. Плагин предоставляет сочетания клавиш, которыми можно легко удалять, изменять и добавлять пары таких окружающих элементов.
Читать дальше →
Total votes 60: ↑57 and ↓3+54
Comments39

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Registered
Activity