Алексей @megahertz
fullstack
Алгоритм коллаборативной фильтрации
2 min
16KКоллаборативная фильтрация (англ. collaborative filtering) — это метод, который даёт автоматические прогнозы исходя из наколенной информации о интересах и вкусах пользователей.
Чаще всего можно рекомендовать музыку или книги уже имея какие-то данные о пользователе. Например, Amazon или Ozon запоминают, что я ищу или куда ходил и из этих данных строит мне рекомендацию. Но лучше, чтобы пользователь сам вводил их в свой профиль, можно даже ему рассказать, что у вас эта система стоит и чтобы он сам мог выбирать что ему дать в следующий раз.
Чаще всего можно рекомендовать музыку или книги уже имея какие-то данные о пользователе. Например, Amazon или Ozon запоминают, что я ищу или куда ходил и из этих данных строит мне рекомендацию. Но лучше, чтобы пользователь сам вводил их в свой профиль, можно даже ему рассказать, что у вас эта система стоит и чтобы он сам мог выбирать что ему дать в следующий раз.
+29
Realplexor: производительный Comet-сервер с API для PHP и Javascript (realtime)
5 min
21K
 Dklab Realplexor — это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера. Хотя идейным вдохновителем Realplexor-а был предыдущий проект, dklab_multiplexor, код Realplexor-а не имеет с ним практически ничего общего. Поэтому я и решил сменить название. Несопоставимы также возможности продуктов (см. ниже), да и размер кода увеличился в 7 раз.
Realtime-направление сейчас довольно активно развивается на Западе, и в нем особенно выделяется продукт Tornado — событийно-ориентированный веб-сервер на языке Python. Правда, Tornado — это не столько Comet-сервер, сколько инструмент, с помощью которого можно запрограммировать «в том числе» и Comet-сервер. Ключевые слова: Comet, Push Server, Long polling, JavaScript, XMLHttpRequest.
Главные преимущества Realplexor-а:
- простота использования: наличие API для JavaScript, API для PHP (в будущем — и для других языков);
 - простота конфигурирования;
 - широкий функционал (либо отстутствующий, либо недоступный напрямую в аналогах).
 
Лучше один раз увидеть...
Я сделал отдельную онлайн-песочницу, чтобы продемонстрировать функционал нового Realplexor-а и то, для чего вообще нужны Comet-серверы (кстати, это физически тот же самый демон Realplexor-а, что использует мой новый стартап РуТвит). Песочница реализует что-то типа многоканального чата: зайдя, вы получите как будто бы 2 независимых «браузера», запущенных на разных компьютерах.
- Верхний «браузер» отображает каналы — в них моментально появляются новые сообщения, как только кто-то их туда отправляет на стороне сервера. Конечно же, эту страницу могут просматривать одновременно сотни тысяч пользователей, и они все будут видеть одно и то же (реализовано с использованием Realplexor JavaScript API). Можно «на лету» добавлять новые каналы (подписка) или скрывать уже имеющиеся (отписка).
 - Нижний браузер содержит формы, позволяющие добавлять сообщение в произвольный канал, указав его имя. Форма AJAX-ом отправляется на сервер, и уже там PHP-скрипт записывает в Realplexor полученный текст через PHP API. (И да, так можно чатиться.)
 
 Песочница демонстрирует следующие функции Realplexor-а:
+85
Почему российские компании катастрофически отстают от западных?
6 min
2.2KХочу поднять тему менеджмента и смежных с ним областей знания, так как считаю, что им уделяется крайне мало внимания на Хабре. Западные компании тратят огромные суммы на обучение своих менеджеров и развитие систем управления. Пришло время и нам обратить внимание на эти вопросы. (Осторожно, дальше много текста).
Думаю, каждый посетитель Хабра хотя бы раз, но представлял себе день, когда на арену мирового IT-бизнеса взойдут российские компании и отвоюют большую часть покупателей и западных конкурентов. И казалось бы, у нас для этого есть все шансы: наличие талантливых программистов, большое количество людей увлеченных сферой IT, помогает специфика отрасли, позволяющая вести бизнес без границ и без значительного вмешательства чиновников и милиции, да и, в конце концов, перед глазами пример компании Google, которая как ни крути имеет русские корни!
 
Вынужден огорчить – ни у одной российской компании сейчас нет шансов стать хоть сколько-нибудь заметным игроком во всемирной паутине. Речь о построении успешной компании с долгосрочными конкурентными преимуществами, а не о копировании американских идей с добавкой нелегального контента. Не произойдёт это по ряду причин, которые, к сожалению, свойственны всему российскому бизнесу, включая IT-отрасль. И все эти причины относятся к
Мечты
Думаю, каждый посетитель Хабра хотя бы раз, но представлял себе день, когда на арену мирового IT-бизнеса взойдут российские компании и отвоюют большую часть покупателей и западных конкурентов. И казалось бы, у нас для этого есть все шансы: наличие талантливых программистов, большое количество людей увлеченных сферой IT, помогает специфика отрасли, позволяющая вести бизнес без границ и без значительного вмешательства чиновников и милиции, да и, в конце концов, перед глазами пример компании Google, которая как ни крути имеет русские корни!
 Вынужден огорчить – ни у одной российской компании сейчас нет шансов стать хоть сколько-нибудь заметным игроком во всемирной паутине. Речь о построении успешной компании с долгосрочными конкурентными преимуществами, а не о копировании американских идей с добавкой нелегального контента. Не произойдёт это по ряду причин, которые, к сожалению, свойственны всему российскому бизнесу, включая IT-отрасль. И все эти причины относятся к
+59
Кроссбраузерная одноцветная полупрозрачность
3 min
13KВ этой статье я рассмотрю метод создания блоков с одноцветным полупрозрачным фоном.
Например, таких:

Сразу оговорюсь, что я не буду использовать opacity и абсолютное позиционирование, чтобы разместить контент поверх полупрозрачного блока.
Например, таких:

Сразу оговорюсь, что я не буду использовать opacity и абсолютное позиционирование, чтобы разместить контент поверх полупрозрачного блока.
+181
Глубокая трассировка в Internet Explorer
3 min
3.1KTranslation

После прочтения поста Стива Сойдерса о бесплатном инструменте — dynaTrace Ajax, я был дико заинтригован. Он предлагает полную анализ трассировки в IE6-8, включая JavaScript, прорисовку и сетевой трафик. Я протестировал несколько сайтов, но более интересный результат получил с тяжелым JavaScript'ом в Gmail в IE8.
+48
Отдаём статику nginx'ом
2 min
5.1KНачиная с версии 0.8.11 в nginx появилась новая возможность для раздачи статики — использование AIO (Asyncronous Input-Output — неблокирующий ввод-вывод) для Linux и FreeBSD. 
Чем это событие знаменательно? До этого момента nginx использовал неблокирующий режим только при работе с сетью — любая работа с файлами блокировала рабочий процесс. К чему это приводило? Если у вас есть много разного контента, который не весь находится в кэше ОС (фотохостинг, etc) — то рано или поздно все 50, 150, 200 процессов будут ждать дисковые операции и не смогут обслужить нового клиента — даже если нужный ему контент можно отдать из файлового кэша или запросить с бэкенда.
Чем это событие знаменательно? До этого момента nginx использовал неблокирующий режим только при работе с сетью — любая работа с файлами блокировала рабочий процесс. К чему это приводило? Если у вас есть много разного контента, который не весь находится в кэше ОС (фотохостинг, etc) — то рано или поздно все 50, 150, 200 процессов будут ждать дисковые операции и не смогут обслужить нового клиента — даже если нужный ему контент можно отдать из файлового кэша или запросить с бэкенда.
+34
Архитектура системы приема электронных платежей на сайте
6 min
13KДля многих проектов наступает момент, когда хочется, чтобы сайт приносил прибыль.
И не только в виде оплаты рекламных баннеров или контекстной рекламы, но и в виде денежек от своих посетителей.
Неважно, что им предложить — крутой спецэффект на аватар, футболку с символикой проекта или доступ к приватным сообщениям первой красавицы сайта. Важно, как получить за это деньги. Причем желательно сразу, пока пользователь не передумал потратить свои кровные.
Такое ограничение сразу приводит к вычеркиванию из списка методов оплаты заполнение квитанции в Сбербанке. Да, это тоже метод, но метод небыстрый. Особенно, если на дворе поздний вечер, пользователь расслабился забутылкой пива чашкой чая. Какой Сбербанк, тёпленьким его брать, тёпленьким!
И не только в виде оплаты рекламных баннеров или контекстной рекламы, но и в виде денежек от своих посетителей.
Неважно, что им предложить — крутой спецэффект на аватар, футболку с символикой проекта или доступ к приватным сообщениям первой красавицы сайта. Важно, как получить за это деньги. Причем желательно сразу, пока пользователь не передумал потратить свои кровные.
Такое ограничение сразу приводит к вычеркиванию из списка методов оплаты заполнение квитанции в Сбербанке. Да, это тоже метод, но метод небыстрый. Особенно, если на дворе поздний вечер, пользователь расслабился за
+57
Почему с нами остаются 90% клиентов
2 min
18KЭто не шутка. 90% от числа позвонивших в нашу компанию остаются с нами и пользуются услугами нашей компании как минимум еще один раз. Я решил не мудрить с теорией и изложить основное тезисами. Уверен, кому-нибудь пригодится. Наш бизнес — такси, однако большинство «ноу-хау» применимы совершенно в любом бизнесе. 
+321
Проектирование программного обеспечения
5 min
313K Сегодня процесс создания сложных программных приложений невозможно представить без разделения на этапы жизненного цикла. Под жизненным циклом программы будем понимать совокупность этапов:
Остановимся детально на процессе проектирования. В ходе проектирования архитектором или опытным программистом создается проектная документация, включающая текстовые описания, диаграммы, модели будущей программы. В этом нелегком деле нам поможет язык UML.
- Анализ предметной области и создание ТЗ (взаимодействия с заказчиком)
 - Проектирование структуры программы
 - Кодирование (набор программного кода согласно проектной документации)
 - Тестирование и отладка
 - Внедрение программы
 - Сопровождение программы
 - Утилизация
 
Остановимся детально на процессе проектирования. В ходе проектирования архитектором или опытным программистом создается проектная документация, включающая текстовые описания, диаграммы, модели будущей программы. В этом нелегком деле нам поможет язык UML.
+20
Картинки делают вашу информацию интереснее
4 min
13KПриветствую всех! Я представляю вам свой Первый Пост На Хабре, он является объединяющим симбиозом нескольких постов моего личного блога [
], и речь сейчас пойдёт о универсальной вещи, которая поможет увеличить продажи вашего товара, задержать на вашем сайте лишний десяток посетителей, и сделать из сложной многобуквенной статьи простой доходчивый рассказ. Также будут даны описания и адреса хранилищ этих вещей.А вещь эта называется «Картинка».
В чём суть?
Идея проста до безобразия: текст нужно сопровождать информативными картинками по теме. Скорее всего, это понятно всем, но на практике об этом заботятся не многие, и те, кто заботятся, вне очереди получают свои плюсы на пути к успеху.
+101
Вскрываем эксплоиты, шифрованный javascript, вредоносные iframe — русский мануал Malzilla
3 min
5.7K Интересуясь информационной безопасностью, я часто имею дело с зараженными сайтами, содержащими фреймы на эксплоиты, шифрованный javascript, запутанные редиректы… Для облегчения работы я использую open source программу Malzilla. К сожалению на русских просторах интернета очень мало информации об этой тулзе, поэтому я хочу перевести официальный мануал к ней. Всего в нем 6 частей, ниже следует перевод первой из них.
+75
Договор на техническое обслуживание и поддержку сайта
9 min
125KДобрый день, коллеги!
В нашей компании, существовала проблема с договором на техническую поддержку сайтов. В договоре мы хотели четко прописать круг наших обязанностей, время выделяемое в месяц на работы над сайтом заказчика, способы оплаты при превышении выделяемого времени, ответственность заказчика и четкие инструкции по предоставлению материалов. Этим договором и хотим с вами поделится.
В нашей компании, существовала проблема с договором на техническую поддержку сайтов. В договоре мы хотели четко прописать круг наших обязанностей, время выделяемое в месяц на работы над сайтом заказчика, способы оплаты при превышении выделяемого времени, ответственность заказчика и четкие инструкции по предоставлению материалов. Этим договором и хотим с вами поделится.
+57
1001-ый способ вертикального выравнивания
2 min
128KО вертикальном выравнивании блока неизвестной высоты по центру или низу родителя сказано много. Есть способы, основанные на display:table-cell для хороших браузеров (без кавычек) и expression для IE, способы, основанные на относительном позиционировании (могут плохо работать при переполнении). В этой заметке будет описан способ, работающий на особенностях такого мощного отображения, как встроенный блок (display:inline-block).
+40
Когда Photoshop отображает совсем не то, что надо
3 min
290K
Такая вот ситуация: дизайнер присылает макет, а у верстальщика открывается какая то лабуда светлая, или темная (если верстальщик испольует МасOS, а дизайнер Win.). Или же верстальщик сохраняет картинку, а там цвета другие стали.
Разберемся почему так и как с этим жить.
+143
Типограф Евгения Муравьева для TinyMCE
1 min
3.1KВ топике Новая версия веб-типографа Студии Муравьёва был представлен замечательный типограф.
Я использовал его в своем движке магазина, и побочным продуктом стал простой и удобный плагин для TinyMCE.

При нажатии на кнопку не отображается никаких всплывающих окон, текс молча типографируется.
Типограф обрабатывает тексты не только по классическим законам (неразрывные пробелы, правильные кавычки, свисающая пунктуация и др.), но и по взятым канонам из «Справочника издателя и автора» Мильчина А. Э. Любители типографики должны это оценить.
Я использовал его в своем движке магазина, и побочным продуктом стал простой и удобный плагин для TinyMCE.

При нажатии на кнопку не отображается никаких всплывающих окон, текс молча типографируется.
+37
Bing покажет соседей по хостингу
1 min
14KОказывается, поисковик Bing умеет делать обратный поиск по IP-адресу. Вводите запрос вида [IP:123.123.123.123] — и получите список сайтов на этом IP. 

Список сайтов с одинаковым IP-адресом означает, что все они физически располагаются, скорее всего, на одном и том же сервере. Таким образом, вы можете узнать своих «соседей» по хостингу.
Имейте в виду, что соседей нужно выбирать с умом. Если на вашем IP сидят какие-то спамеры, до добра это не доведёт.
У крупных сайтов никаких «соседей» по хостингу, разумеется, нет, потому что они располагаются на одном или нескольких выделенных серверах. Но и здесь Bing может показать что-то интересное. Например, для Хабрахабра [IP:62.213.122.2] он выдаёт список приблизительно 34400 зарегистрированных пользователей. Причём порядок выдачи явно выбран не случайно, а по рейтингу входящих ссылок на каждый профиль. То есть это альтернативный рейтинг пользователей Хабрахабра. На первом месте хабраюзер xaoccps, который лидирует и в рейтинге хабралюдей. Но дальше идут явные расхождения, причём Bing, пожалуй, получше отражает реальность, чем собственный рейтинг на Хабре.
Вводя запросы от 62.213.122.2 до 62.213.122.6, можно увидеть и другие проекты «Тематических медиа», в том числе «секретные».
Вообще, функция обратного поиска по IP есть в различных домейнерских сервисах, но среди поисковых систем Bing единственный, кто умеет такое показывать. Кстати, эта фича досталась ему в наследство от MSN/Live.

Список сайтов с одинаковым IP-адресом означает, что все они физически располагаются, скорее всего, на одном и том же сервере. Таким образом, вы можете узнать своих «соседей» по хостингу.
Имейте в виду, что соседей нужно выбирать с умом. Если на вашем IP сидят какие-то спамеры, до добра это не доведёт.
У крупных сайтов никаких «соседей» по хостингу, разумеется, нет, потому что они располагаются на одном или нескольких выделенных серверах. Но и здесь Bing может показать что-то интересное. Например, для Хабрахабра [IP:62.213.122.2] он выдаёт список приблизительно 34400 зарегистрированных пользователей. Причём порядок выдачи явно выбран не случайно, а по рейтингу входящих ссылок на каждый профиль. То есть это альтернативный рейтинг пользователей Хабрахабра. На первом месте хабраюзер xaoccps, который лидирует и в рейтинге хабралюдей. Но дальше идут явные расхождения, причём Bing, пожалуй, получше отражает реальность, чем собственный рейтинг на Хабре.
Вводя запросы от 62.213.122.2 до 62.213.122.6, можно увидеть и другие проекты «Тематических медиа», в том числе «секретные».
Вообще, функция обратного поиска по IP есть в различных домейнерских сервисах, но среди поисковых систем Bing единственный, кто умеет такое показывать. Кстати, эта фича досталась ему в наследство от MSN/Live.
+58
Web Optimizer 0.5.5 «falcon», RC4
3 min
462
После продолжительных летних каникул мы собрались с силами и выпустили новую сборку приложения для автоматического ускорения сайтов — Web Optimizer — под кодовым именем «falcon» (сокол). По заверению множества пользователей (зафиксировано более 900 реальных установок) приложение стало значительно стабильнее и мощнее.Загрузить: code.google.com/p/web-optimizator/downloads/list
Основные изменения
+28
Автоматическая загрузка файлов на Яндекс.Диск
4 min
26KПредлагаю вашему вниманию PHP скрипт автоматической загрузки файлов на сервис Яндекс.Диск. Скрипт прост до безобразия, достаточно передать ему в качестве параметров логин, пароль и путь к файлу и в результате он загрузит ваш файл на сервис и выдаст вам ссылку на него. Не знаю, сколько еще меня вместе с моими постами будет терпеть Яндекс, но все-таки приведу исходный код скрипта :)
+88
Сверхплавное передвижение объектов
2 min
7.1KИногда у веб-разработчиков возникает задача, которая требует плавного движения объекта по экрану. Это может быть строка загрузки, какой-то спрайт (например, машинки на клавогонках) или что-то ещё. Проблема возникает, когда сдвиг даже на одну точку кажется слишком резким и портит общее ощущение от происходящего. Как этого избежать? Использовать приёмы антиалиасинга.
Мы сделали небольшой пример (а затем и ещё один с зацикленным фоном), в котором можно посмотреть, как выглядит плавный сдвиг с субпиксельной точностью и антиалиасингом, и как выглядит тот же сдвиг без этого эффекта.
Как это сделано?
Мы сделали небольшой пример (а затем и ещё один с зацикленным фоном), в котором можно посмотреть, как выглядит плавный сдвиг с субпиксельной точностью и антиалиасингом, и как выглядит тот же сдвиг без этого эффекта.
Как это сделано?
+207
Information
- Rating
 - 4,970-th
 
- Location
 - Россия
 
- Date of birth
 
- Registered
 
- Activity
 
