Как стать автором
Обновить
65
0
Сундуков Алексей @alekciy

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

Отправить сообщение

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

Время на прочтение6 мин
Количество просмотров28K
image

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

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

Читать дальше →
Всего голосов 52: ↑41 и ↓11+30
Комментарии72

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

Время на прочтение1 мин
Количество просмотров164K
Прошелся по закладкам и образовалась такая толстенькая подборочка ресурсов с бесплатными и качественными иконками, с которой спешу поделиться с тобой %username%!

Iconfinder


image


Читать дальше →
Всего голосов 168: ↑151 и ↓17+134
Комментарии39

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

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

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

Приятной работы!
Всего голосов 85: ↑57 и ↓28+29
Комментарии157

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

Время на прочтение6 мин
Количество просмотров5.9K
Форумы о Linux всегда будут лакомым кусочком для троллей, и сейчас я расскажу вам почему. Вопреки всем наказам вроде «Не корми тролля!» и «Такие посты лучше игнорировать» люди будут продолжать отвечать, потому что тролли (как и всевозможные дистрибутивы Linux) бывают совершенно разношерстные. В частности, есть тролли, которые выглядят довольно искренними и пылкими, поэтому им всегда отвечают.
Читать дальше →
Всего голосов 208: ↑159 и ↓49+110
Комментарии353

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

Время на прочтение6 мин
Количество просмотров33K
Данная статья рассматривает одну из проблем хранения PHP-сессий в memcached: отсутствие их блокировки.

Введение

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

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

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

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

Как это сделано?
Читать дальше →
Всего голосов 217: ↑212 и ↓5+207
Комментарии103

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

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

Условия



По условиям конкурса от кода требовалось следующее:
Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии16

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

Время на прочтение3 мин
Количество просмотров7.1K
Не секрет, что пользователи любят, когда контент на сайте обновляется чаще, чем раз в год. Эту любовь пользователей к динамическим страничкам разделяют и поисковики. Google, например, умеет определять наличие обновляющихся блоков на страничке и добавляет ей немного кармы (читай, PR).

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

продолжение
Всего голосов 81: ↑80 и ↓1+79
Комментарии60

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

Время на прочтение5 мин
Количество просмотров22K
Хочу поделиться простым эмпирическим методом, который я использую для определения того, в каком порядке должны идти столбцы в составном индексе. Этот способ подходит не только для 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;
Читать дальше →
Всего голосов 52: ↑47 и ↓5+42
Комментарии17

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

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

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

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

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

Nested Sets + PostgreSQL TRIGGER

Время на прочтение11 мин
Количество просмотров12K

Задача

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

Тюнинг nginx

Время на прочтение8 мин
Количество просмотров96K
Статья написана по материалам моего доклада на CodeCamp 2009.

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

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

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

Читать дальше →
Всего голосов 102: ↑100 и ↓2+98
Комментарии69

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

Время на прочтение4 мин
Количество просмотров109K
На хабре часто обсуждаются принципы работы MySQL. Данный хабратопик посвящен механизмам блокировок, используемым в MySQL. Топик поможет начинающим изучать MySQL и, в некоторой степени, опытным хабралюдям.

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


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

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

Время на прочтение4 мин
Количество просмотров23K
Возникла задача мониторинга нескольких серверов, находящихся в разных ДЦ, имеющих разные ОС и ПО.

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

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


Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии35

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

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

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

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

Время на прочтение1 мин
Количество просмотров947
Проблема 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, но хоть что-то…
Всего голосов 23: ↑9 и ↓14-5
Комментарии16

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

Время на прочтение1 мин
Количество просмотров21K
Так исторически сложилось, что домены сайтов называют с префиксом www или без.

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

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

Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии59

Opera Widgets SDK beta

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

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

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

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

Информация

В рейтинге
Не участвует
Откуда
Самара, Самарская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Lead
Git
PHP
Bash
SQL
Docker
Linux