Pull to refresh
65
0
Сундуков Алексей @alekciy

Инженер-программист

Send message

Защита пользователей почтового сервера от спаммеров — несколько шагов, которые помогут вам отослать спаммеров подальше

Reading time6 min
Views27K
image

Здравствуйте, Хабровчане!

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

Читать дальше →
Total votes 52: ↑41 and ↓11+30
Comments72

Склад бесплатных иконок

Reading time1 min
Views164K
Прошелся по закладкам и образовалась такая толстенькая подборочка ресурсов с бесплатными и качественными иконками, с которой спешу поделиться с тобой %username%!

Iconfinder


image


Читать дальше →
Total votes 168: ↑151 and ↓17+134
Comments39

Классический скин

Reading time1 min
Views1.9K
Opera classic skin Многим, как и мне, не пришелся по душе гламурный, но слишком тёмный новый скин Opera 9.5. Скин входящий в состав и названный «Классическим» — тоже особо положительных эмоций не вызывает.

Радостная новость для нас — в хранилище скинов Opera появился "Opera 9 Classic Skin", который выглядит очень привычно и естественно. На Opera 9.5 становится как родной.

Приятной работы!
Total votes 85: ↑57 and ↓28+29
Comments157

Анатомия Linux тролля с благими намерениями

Reading time6 min
Views5.9K
Форумы о Linux всегда будут лакомым кусочком для троллей, и сейчас я расскажу вам почему. Вопреки всем наказам вроде «Не корми тролля!» и «Такие посты лучше игнорировать» люди будут продолжать отвечать, потому что тролли (как и всевозможные дистрибутивы Linux) бывают совершенно разношерстные. В частности, есть тролли, которые выглядят довольно искренними и пылкими, поэтому им всегда отвечают.
Читать дальше →
Total votes 208: ↑159 and ↓49+110
Comments353

Особенности хранения сессий PHP в memcached

Reading time6 min
Views33K
Данная статья рассматривает одну из проблем хранения PHP-сессий в memcached: отсутствие их блокировки.

Введение

Ни для кого не секрет, что одним из самых популярных способов повышения производительности сайта является использование memcached. Об этом неоднократно говорили и приводили многочисленные примеры. Самый простой способ сделать это — использовать memcached для хранения сессий PHP. Для этого нет необходимости переписывать весь код, достаточно нескольких простых действий. Я не буду рассказывать, почему надо хранить сессии в memcached. Я расскажу о том, почему хранение сессий в memcached опасно.
Читать дальше →
Total votes 75: ↑66 and ↓9+57
Comments75

Сверхплавное передвижение объектов

Reading time2 min
Views7K
Иногда у веб-разработчиков возникает задача, которая требует плавного движения объекта по экрану. Это может быть строка загрузки, какой-то спрайт (например, машинки на клавогонках) или что-то ещё. Проблема возникает, когда сдвиг даже на одну точку кажется слишком резким и портит общее ощущение от происходящего. Как этого избежать? Использовать приёмы антиалиасинга.

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

Как это сделано?
Читать дальше →
Total votes 217: ↑212 and ↓5+207
Comments103

XSS-червь: кто меньше?

Reading time2 min
Views9.4K
Наткнулся на днях на новость о конкурсе, в котором предлагают создать минимальный JavaScript-код, который будет сам себя копировать дальше. Автор конкурса — Robert Hansen aka RSnake, достаточно крупный специалист по информационной безопасности.

Условия



По условиям конкурса от кода требовалось следующее:
Читать дальше →
Total votes 46: ↑45 and ↓1+44
Comments16

Кешируем блоки HTML при помощи nginx

Reading time3 min
Views7K
Не секрет, что пользователи любят, когда контент на сайте обновляется чаще, чем раз в год. Эту любовь пользователей к динамическим страничкам разделяют и поисковики. Google, например, умеет определять наличие обновляющихся блоков на страничке и добавляет ей немного кармы (читай, PR).

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

продолжение
Total votes 81: ↑80 and ↓1+79
Comments60

Определяем порядок столбцов в составном индексе

Reading time5 min
Views22K
Хочу поделиться простым эмпирическим методом, который я использую для определения того, в каком порядке должны идти столбцы в составном индексе. Этот способ подходит не только для MySQL, он также применим к любым СУБД, в которых используются b-tree индексы.

Давайте начнем с запроса, который возвращает пустой результат, но при этом делает полный скан таблицы. EXPLAIN покажет на нем, что нет доступных индексов (т.е. possible_keys = NULL)

SELECT * FROM tbl
WHERE
  status='waiting' AND
  source='twitter' AND
  no_send_before <= '2009-05-28 03:17:50' AND
  tries <= 20
ORDER BY date ASC LIMIT 1;
Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments17

Обзор системной архитектуры социальной сети Campus.ru

Reading time11 min
Views19K
Представляю Вашему вниманию обзор высокоуровневой системной архитектуры социальной сети www.campus.ru, разработки компании ООО «Креатив Медиа». На мой взгляд, данный материал интересен тем, что позволяет оценить применимость рассмотренных подходов и технологий в разработке интернет-ресурсов. По крайней мере, когда наша компания начинала проект «Кампус», мне очень не хватало подобной информации.
Дальше очень много букв
Total votes 95: ↑88 and ↓7+81
Comments133

Средневзвешенная система голосования

Reading time3 min
Views3.3K
Вступление. Эту статью написал мой друг — Семён Шторкин, владелец нижегородского сайта-коммьюнити для фотографов (фотогорький). Пока его, к сожалению, нет на Хабре, но попробую этим топиком заработать для него инвайт :)

Добрый день. Хочу поделиться с уважаемым хабрасообществом весьма объективной системой оценок и рейтингов, основанной на средневзвешенной системе с оценками по пятибалльной шкале.
Читать дальше →
Total votes 111: ↑107 and ↓4+103
Comments61

Nested Sets + PostgreSQL TRIGGER

Reading time11 min
Views12K

Задача

Как удобно делать выборки из деревьев типа Nested Sets, и как не удобно им управлять. Как удобноуправлять деревьями типа id->parent_id, но как не удобно и накладно использовать рекурсии при выборках. Понятно, что прииспользовании модулей для управления деревьями часть проблемы снимается, но при этом процесс работы с базой данных несовсем прозрачен т.е. для изменения данных мы используем одни методы, для изменения расположения узла в дереве — другие,плюс еще транзакции не помешали бы. Эту нестыковку можно решить двумя способами:
  • Использовать для работы с таблицей хранимые процедуры, в которой объединить оба метода обновления (вставки, удаления);
  • Использовать триггеры, для исключения вообще каких-либо нестандартных методов работы;
Первый способ неудобен тем, что при изменении структуры таблицы, нам потребуется еще изменять процедуру, а так же бытьмаксимально внимательным, при работе с таблицей, что бы все изменения данных проходили через наши процедуры, а не прямымизапросами. Второй способ несколько утяжеляет тяблицу введением дополнительных булевых полей, а так же приходится делатьнекоторые «финты ушами», хотя позволяет добиться максимальной прозрачности работы.Первый способ — в топку, тем более где-то интернетах уже есть подобное решение.База данных — PostgreSQL, как актуальная мне на данный момент, дополнения для MySQL напишу позже.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments13

Тюнинг nginx

Reading time8 min
Views96K
Статья написана по материалам моего доклада на CodeCamp 2009.

Для многих из нас настает тот долгожданный день, когда аудитория сайта начинает стремительно расти. Каждое утро мы, затая дыхание, смотрим на графики google analitycs и расплываемся в улыбке, когда взят рубеж в очередную тысячу посетителей в день. Как правило, рост посещаемости не совпадает с ростом технической базы и сайт начинает тормозить. Тут в игру вступает сисадмин...

У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

Пришло время оптимизировать nginx...

Читать дальше →
Total votes 102: ↑100 and ↓2+98
Comments69

Блокировки в MySQL

Reading time4 min
Views108K
На хабре часто обсуждаются принципы работы MySQL. Данный хабратопик посвящен механизмам блокировок, используемым в MySQL. Топик поможет начинающим изучать MySQL и, в некоторой степени, опытным хабралюдям.

Механизм блокирования в MySQL


Одновременный доступ нескольких клиентов к хранилищу данных может приводить к ошибкам различного типа. Например, одновременное чтение одним клиентом и запись другим клиентом одной и той же строки таблицы с большой вероятностью приведет к сбою или чтению некорректных данных. Механизмы блокировок позволяют избежать ситуаций одновременного доступа к данным, регламентируя механизм взаимодействия пользователей между собой.
Читать дальше →
Total votes 65: ↑62 and ↓3+59
Comments18

MonIT + M\MonIT = простой и бесплатный мониторинг нескольких серверов

Reading time4 min
Views23K
Возникла задача мониторинга нескольких серверов, находящихся в разных ДЦ, имеющих разные ОС и ПО.

ТЗ получилось примерно такое:

  1. Мониторинг системы (cpu, mem, load average, bandwidth).
  2. Мониторинг состояния сервисов (запущен или нет).
  3. Мониторинг функционирования сервисом (отвечает на запросы корректно или нет).
  4. Контроль потребляемых сервисами ресурсов и общего их состояния.
  5. Централизованая «админка» для всей этой радости.
  6. Уведомление по email, самостоятельное исправление проблемы (например рестарт упавшей службы).


Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments35

Причесываем трафик — динамический шейпер на Linux

Reading time4 min
Views58K
причесываем трафик
Предположим у вас есть домашняя сеть (или не домашняя, а сеть небольшого офиса) с выходом в интернет через не очень скоростной канал. А пользователей — много, и каждый хочет что-то скачивать, да с максимальной скоростью. Вот тут перед нами встатет задача, как максимально эффективно распределить наш интернет-канал между пользователями так, чтобы они не мешали друг другу. В этой статье я опишу, как можно решить такую задачу с помощью Linux-сервера.

Сформулируем, что же мы хотим получить в результате:
1. Чтобы канал поровну делился между пользователями.
2. Чтобы канал зря не простаивал.
3. Чтобы онлайн-игры, ssh и telnet не «лагали» даже при полной загрузке канала, например торрентами.
Читать дальше →
Total votes 100: ↑98 and ↓2+96
Comments98

Маленькая хитрость или что-то типа background-repeat в IE6

Reading time1 min
Views936
Проблема png в ie6 и background-repeat известна, но не всегда всё так уж очень плохо. Например, имеется полупрозрачный png размером 1х100, и нужно растянуть его по горизонтали (сделать полосочку). Кто-то скажет, что это невозможно, но не спешите, напишем фильтр для ИЕ6 как-то так:

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='css/img/menu-gradient-main.png', sizingMethod='scale');

Запускаем и удивляемся… Работает! Вся фишка в значении «scale» свойства sizingMethod, оно делает как раз то что нам нужно, т.е растягивает png по ширине контейнера.

Точно также можно растянуть png и по высоте. В итоге мы, конечно, получаем не полноценный background-repeat, но хоть что-то…
Total votes 23: ↑9 and ↓14-5
Comments16

Организация постоянных редиректов с www.domain на domain и обратно.

Reading time1 min
Views21K
Так исторически сложилось, что домены сайтов называют с префиксом www или без.

Есть несколько взглядов как истинно должен называться домен, прогрессивное человечество считает, что без www — nowww.ru, многие западные эксперты считают обратное.

Однако речь не об этом, а о том, как в наших любимых web серверах организовать постоянный редирект туда-обратно.

Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments59

Opera Widgets SDK beta

Reading time1 min
Views815
Не останавливаясь на достигнутом, разработчики компании Opera Software продолжают выпуск интересных и давно ожидаемых средств разработки. В частности, сегодняшний пресс-релиз сообщает о выходе в публичное тестирование Opera Widgets SDK beta. Данный инструмент позволяет создавать виджеты как для десктопной версии Opera, так и для мобильных версий, поддерживающих работу оперных виджетов. Основные компоненты:
Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments0

Как вовремя узнать, что ваш сервер не работает?

Reading time3 min
Views20K
Случается, что сайты перестают работать. Причины могут быть самые разные: в датацентре «упал» канал, сервер вырубился, кто-то что-то намудрил с базой или файлами на сервере, сисадмин неудачно обновил ПО или переносил аккаунты. Или кое-кто забыл оплатить хостинг.

В большинстве случаев такая ситуация нежелательна, а устранить ее надо как можно скорее. Для этого нужно как можно скорее узнать о случившемся. Но как? Для себя и для наших клиентов мы используем сервисы мониторинга сайтов. О них я сегодня и расскажу.
Читать дальше →
Total votes 86: ↑71 and ↓15+56
Comments71

Information

Rating
Does not participate
Location
Самара, Самарская обл., Россия
Works in
Date of birth
Registered
Activity