Pull to refresh
-1
0
Павел Тетяев @Pahanini

Go, Цой, Postgres

Send message

Subtle Patterns: фоновые текстуры для вашего сайта

Reading time1 min
Views72K
Если вы запускаете новый сайт и заканчиваете его оформление, то есть смысл посмотреть коллекцию Subtle Patterns: отлично оформленную коллекцию фоновых текстур (паттернов) под лицензией Creative Commons Attribution 3.0 Unported. Их можно использовать без ограничений.



Сайт привлекает удобным предварительным просмотром: каждую текстуру можно мгновенно применить на всей странице в качестве фона. Сейчас там 93 работы, коллекция еженедельно пополняется отличными новинками.

Все текстуры на сайте Subtle Patterns являются повторяющимися, то есть склеиваются в бесшовную заливку.
Читать дальше →
Total votes 262: ↑247 and ↓15+232
Comments29

Блокируем китайцев

Reading time1 min
Views9K
Ниже пойдет текст достойный пера К.О.

Китайский трафик велик и беспощаден. Когда какая-нибудь смешная или не очень картинка попадает в китайские блоги, провайдер colocation начинает обижаться и рассказывать про несоответствие соотношений 3 к 2 российского и зарубежного трафика.

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

Примеров реализации есть несколько (ngx_http_geo_module, ngx_http_geoip_module или обычным deny), наиболее эффективный с помощью ngx_http_geo_module и базы wipmania (http://www.wipmania.com/ru/base/)

Облегчение на одном из серверов.
image

Читать дальше →
Total votes 48: ↑34 and ↓14+20
Comments58

Cкоростная синхронизация миллиарда файлов

Reading time7 min
Views96K
Есть несколько идентичных серверов (4 ноды) на Amazon EC2 с Ubuntu. Каждый генерирует и хранит у себя на диске кэш, который хотелось бы синхронизировать. Но простой rsync тут не подойдет — файлов несколько миллиардов, nfs — слишком медлителен, и т. д. Полный список рассмотренных вариантов с пояснениями ниже.

К тому же, время от времени нужно удалять устаревшие файлы сразу на всех серверах, что пока делается вручную и занимает несколько суток. Вопрос наиболее быстрой для такого Use Case файловой системы планирую описать позже. Оговорюсь только, что по нескольким причинам была выбрана XFS.

После теста нескольких кластерных технологий и файловых систем, по совету старшего товарища, решили использовать тот же rsync, но в связке с inotify. Немного поискав в интернете готовое такое решение, дабы не изобретать велосипед, наткнулся на csyncd, inosync и lsyncd. На хабре уже была статья о csyncd, но он тут не подходит, т.к. хранит список файлов в базе SQLite, которая вряд-ли сможет сносно работать даже с миллионом записей. Да и лишнее звено при таких объемах ни к чему. А вот lsyncd оказался именно тем, что нам и было нужно.

UPD: Как показала практика, необходимо ощутимое измение и дополние в тексте. Я решил внести лишь незначительные правки в основную часть, а новыми выводами поделиться в конце статьи.
Читать дальше →
Total votes 55: ↑55 and ↓0+55
Comments29

Как на самом деле работает mod_rewrite. Пособие для продолжающих

Reading time17 min
Views278K
image
Эта статья выросла из идеи продвинутого обучения наших сотрудников технической поддержки работе с mod_rewrite. Практика показала, что после изучения имеющихся в большом количестве учебников на русском языке саппортам хорошо дается решение шаблонных задач, но вот самостоятельное составление правил происходит методом проб и большого количества ошибок. Проблема заключается в том, что для хорошего понимания работы mod_rewrite требуется изучение оригинальной англоязычной документации, после чего — либо дополнительные разъяснения, либо часы экспериментов с RewriteLog.

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

Я предполагаю, что читатель уже знаком с тем, что такое mod_rewrite, и не буду описывать его основы, которые легко найти в интернете. Также нужно отметить, что в статье освещается работа mod_rewrite при использовании его директив в файле .htaccess. Отличия при работе в контексте <VirtualHost> изложены в конце статьи.

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

Почему так происходит?
Читать дальше →
Total votes 208: ↑203 and ↓5+198
Comments25

Авторизация в интернет-магазинах — излишне дорогой функционал

Reading time3 min
Views2.4K
Представьте, что вы, загрузив тележку супермаркета, очень спешите к кассе. Девушка-кассир вежливо спрашивает — а есть ли у вас накопительная карточка их магазина? Карточка есть, но… вы ее забыли в машине. В ответ вам предлагается — либо сходить за карточкой, либо оформить новую, заполнив анкету. А без этого ничего вам продавать не будут. Ваша реакция?

Реакцию предугадать несложно, но довольно часто разработчики интернет-магазинов создают для покупателя подобную ситуацию, когда предлагают ему зарегистрироваться или авторизоваться при оформлении заказа. В том или ином виде это выглядит примерно так (срисовано с одного известного сайта):

image

Намерения благие и понятные — дать пользователю возможность хранить историю и отслеживать статусы заказов, упростить ему в будущем заполнение формы. В результате же получается, что в этой точке идет потеря покупателей.
Далее о том, где и в каких количествах теряются покупатели и о возможном решении проблемы...
Total votes 97: ↑84 and ↓13+71
Comments98

Единая авторизация пользователей с поддержкой нескольких сервисов

Reading time6 min
Views67K
Yii EAuth extension При реализации одного из проектов на Yii framework у меня возникла задача сделать регистрацию и авторизацию пользователей через сторонние сервисы (Google, Facebook, Twitter, etc).

У данной задачи есть два пути решения:
  • Использовать сервис авторизации, например Loginza;
  • Реализовывать функции авторизации самостоятельно для каждого сервиса.
UPDATE: Актуальная версия и инструкция по настройке доступны на github.com. Инструкция в данной статье подходит для EAuth версии <= 1.1.3.
Я выбрал второй вариант...
Total votes 148: ↑136 and ↓12+124
Comments105

Мультидоменность в Apache без лишних хлопот на локальном хосте

Reading time3 min
Views48K
Интернет пестрит руководствами по настройке виртуальных хостов в Apache. Но, в большинстве случаев, создание такого поддомена представляется хлопотным делом.
По «стандартной» инструкции предлагается сделать следующее:
  1. Создать папку для сайта
  2. Создать конфигурационный файл с именем будущего домена
  3. Включить сайт специальной опцией
  4. Перезагрузить Apache
  5. Прописать наш домен в файле hosts

Некоторые пытаются оптимизировать данный процесс различными скриптами, но проблемы это, по сути, не решает.
Итак, попробуем добиться, чтобы процесс создания поддомена сводился лишь к созданию папки для сайта. Возможно ли это? Проверим…
Читать дальше →
Total votes 94: ↑81 and ↓13+68
Comments86

6 грустных кальмаров обнимаются нежно

Reading time3 min
Views3.3K
Примечание преводчика: текст взят из блога компании Asana, которая на данный момент проводит бета-тестирование своего productivity software.

Многие из наших пользователей уже встречались с «уникальными сообщениями об ошибках», когда наше приложение перестает работать по той или иной причине. Эти сообщения вышлядят достаточно необычно, и нам хотелось бы рассказать о том, как мы к ним пришли.


На изображении: Если вы свяжетесь с нами по поводу этой ошибки, используйте следующую уникальную фразу, идентифицирующую ошибку: 12 старых сверчков жужжат со счастливым видом
Читать дальше →
Total votes 133: ↑123 and ↓10+113
Comments58

Авторизация через ВКонтакте, Mail.ru и другие — 3 (ВКонтакте и OAuth)

Reading time3 min
Views33K
В прошлых двух частях мы сделали авторизацию через ВКонтакте, используя предоставленный ими javascript-виджет и через Майл.ру, используя как JS API, так и через взаимодействие сервер-сервер. Сегодня мы исправим наше упущение относительно ВКонтакте и рассмотрим авторизацию через ВКонтакте без использования клиентских javascript'ов.
В качестве ссылки на авторизацию мы можем использовать любой элемент, например картинку

, оформленную аналогичным образом со ссылкой на авторизацию через mail.ru.
Читать дальше →
Total votes 68: ↑55 and ↓13+42
Comments31

MySQL: оптимизация конструкции between

Reading time13 min
Views23K
Оптимизация явно не является коньком MySQL сервера. Цель данной статьи объяснить разработчикам, которые плотно не работают с базами данных и иногда не понимают, по какой причине запрос, который успешно отрабатывает в других СУБД, в MySQL безбожно тормозит, каким образом оптимизируется конструкция between в MySQL.
MySQL использует rule based оптимизатор. Зачатки cost based оптимизации в нем конечно присутствуют, но не в должной мере, в какой их хотелось бы видеть. По этой причине часто мощности получаемых после применения фильтров множеств вычисляются неверно. Это приводит к ошибкам оптимизатора и выбору неверного плана выполнения. При чем полученные between оптимизации невозможно изменить явным указанием: индексов для выполнения запроса и порядка соединения таблиц.
смотрим далее
Total votes 49: ↑48 and ↓1+47
Comments49

Мобильная полиция открывает двери

Reading time2 min
Views2.5K
В рунете запускается сервис анализа расходов на мобильную связь Mobilepolice.ru — сервис для тех, у кого баланс мобильного давно превратился в дырявый карман, в который постоянно кладут деньги. Со вчерашнего дня открыта регистрация для участия в бета-тестировании проекта.

С тех пор, как к двум вечным вопросам русской жизни добавился третий: «Куда у меня пропали деньги со счёта?» — напрашивалась идея сервиса, позволяющего анализировать информацию по расходам и выбирать оптимальный тариф. Но это не единственный «талант» проекта.

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



а также:
— отслеживать местоположение телефона,
— предупреждать о мошеннических страницах и сервисах (полиция же),
— блокировать телефон в случае утери.

Читать дальше →
Total votes 56: ↑44 and ↓12+32
Comments72

«Выглядит похоже». Как работает перцептивный хэш

Reading time6 min
Views122K
За последние несколько месяцев несколько человек спросили меня, как работает TinEye и как в принципе работает поиск похожих картинок.

По правде говоря, я не знаю, как работает поисковик TinEye. Он не раскрывает деталей используемого алгоритма(-ов). Но глядя на поисковую выдачу, я могу сделать вывод о работе какой-то формы перцептивного хэш-алгоритма.
Читать дальше →
Total votes 149: ↑145 and ↓4+141
Comments46

Алгоритм быстрого нахождения похожих изображений

Reading time8 min
Views62K

Введение


Недавно наткнулся на статью, размещенную на Хабрахабре, посвященную сравнению изображений «Выглядит похоже». Как работает перцептивный хэш. Так как я сам достаточно долго занимался этой тематикой (являюсь автором программы AntiDupl), то мне захотелось поделиться здесь своим опытом по данному вопросу. В статье я приведу два варианта алгоритма сравнения похожих изображений — базовый и улучшенный. Все они были проверены автором на практике в рамках указанного выше проекта. Изложение мое будет вестись без строгих доказательств, сложных формул и специальной математической терминологии. Надеюсь, что читатели простят меня за это.

Базовый Алгоритм


Мера схожести изображений


При сравнении похожих изображений первым встает вопрос: что считать мерой схожести изображений? Очевидно, что это величина имеет значение обратное различию изображений друг от друга. Следственно нужно выбрать некую метрику, характеризующую различие изображений друг от друга. Тогда схожими изображениями будут считаться изображения, отличие между которыми меньше некоторого порога. Для изображений с одинаковыми габаритами, обычно такой мерой различия служит среднеквадратическое отклонение пикселей одного изображения от другого. Хотя конечно, нам ни что не мешает выбрать другую метрику, например усредненную абсолютную разность пикселей изображений друг от друга.
Читать дальше →
Total votes 57: ↑55 and ↓2+53
Comments20

Используем быстрые селекторы для jQuery

Reading time3 min
Views40K
Как Вы знаете — в разработке объёмного JS-приложения где используется популярнейшая библиотека jQuery наступает момент когда остро встаёт проблема производительности. Все силы кидаются на амбразуру профайлера, каждый вызов скрупулёзно исследован, каждый функционально нагруженный кусок реализации обнюхан со всех сторон и выправлен. Но беда поступает не с той стороны, откуда её ждут 90% разработчиков. Селекторы — Как много в этом слове.
Давайте разберёмся — как работает эта магия и почему поиск DOM-элементов может стать причиной падения производительности приложения.
Читать дальше →
Total votes 159: ↑155 and ↓4+151
Comments31

Настройка и оптимизация MySQL сервера

Reading time9 min
Views313K
В этой статье будут описаны различные настройки MySQL, преимущественно те, которые влияют на производительность. Для удобства все переменные разделены по разделам (базовые настройки, ограничения, настройки потоки, кэширование запросов, тайминги, буферы, InnoDB). Сначала уточним имена некоторых переменных, которые изменились в версии 4 MySQL, а в сети продолжают встречаться и старые и новые варианты имен, что вызывает вопросы.
Читать дальше →
Total votes 180: ↑171 and ↓9+162
Comments19

Вышел DeaDBeeF 0.4.2

Reading time1 min
Views6.3K

Вышел DeaDBeeF 0.4.2


Любители foobar2000 и deadbeef, радуйтесь! Вышла новая версия этого прекрасного плеера. Внешне ничем не примечательный плеер (хотя я предпочитаю такую лаконичность) воспроизводит огромнейшее количество форматов, включая CUE разметки, которые под Linux поддерживают единицы плееров и то ужасно.
Быстрый, лёгкий, беспроблемный и просто приятный плеер от отечественного разработчика.


Подробнее
Total votes 120: ↑97 and ↓23+74
Comments115

Улучшаем border-radius.htc

Reading time1 min
Views17K
Думаю многим верстальщикам известно решение, которое заставляет IE рисовать скругленные уголки: «curved-corner» (или border-radius.htc).

В этой статье я расскажу, как избавиться от ошибок «Invalid argument» при его использовании, а также как в разы ускорить его работу.
Читать дальше →
Total votes 78: ↑73 and ↓5+68
Comments34

Защита e-mail от спамботов.

Reading time5 min
Views46K
Часто пользователи удивляются, откуда спаммеры узнают их e-mail адреса и выливают на них тонны спама. Оставляя за рамками этой статьи такие способы пополнения спаммерских базы, как вирусы, «слив» адресов владельцами почтового сервера или прослушивание HTTP и ICQ траффика, рассмотрим самый распространенный случай.
Одним из основных источников новых e-mail адресов являются собственно веб-страницы, на которых беспечные пользователи (а порой и владельцы сайта) открыто публикуют свой e-mail, откуда спамботы (сборщики e-mail) без проблем его извлекают и используют в своих нехороших целях.

Далее будут рассмотрены основные приемы шифрования e-mail адресов от спамботов, а также приведены результаты замера эффективности каждого из приемов, путем практического использования каждого способа для свежезарегистрированных e-mail адресов и оценки количества спама.
Читать дальше →
Total votes 55: ↑54 and ↓1+53
Comments79

7 бесплатных сервисов для проверки сайтов (о которых вы могли и не знать)

Reading time2 min
Views253K
Картинка для привлечения внимания
Мне достаточно часто приходится использовать различные онлайн-сервисы для проверки доступности сайтов и их поверхностных тестов и проверок.
Как показал краткий опрос коллег — почти у всех эти наборы сервисов отличаются. Я хочу показать вам свой, прошу в
подробности
Total votes 188: ↑181 and ↓7+174
Comments72

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Registered
Activity