Как стать автором
Обновить
1
0

Пользователь

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

Яндекс выпустил антивирус для сайтов — Manul

Время на прочтение4 мин
Количество просмотров116K
Поиск Яндекса ежесуточно показывает людям больше восьми миллионов предупреждений о том, что страница, на которую они хотят перейти, заражена. Часто владелец сайта вспоминает о том, что его сайт может быть взломан и на нём может быть размещен вредоносный код, только тогда, когда худшее уже случилось, трафик упал, и пользователи успели заразиться.

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



Однако всегда хочется лучшего. Одна из главных проблем, с которыми мы сталкиваемся при общении с владельцами зараженных сайтов, — это поиск источника заражения на стороне сервера. У Яндекса, который каждые сутки размечает тысячи сайтов как зараженные вирусом и опасные для устройств человека, есть регулярно обновляемая база вирусов. И у нашей команды появилась идея, выросшая в большой проект, – антивирус для сайтов. Так мы создали Manul, который решили выложить в open source. Это утилита, которая поможет вебмастеру понять, что произошло с сайтом и вылечить его. Под катом я расскажу подробнее о том, как он устроен и какие проблемы решает.
Читать дальше →
Всего голосов 117: ↑110 и ↓7+103
Комментарии161

Оптимизация запросов MySQL с использованием пользовательских переменных

Время на прочтение14 мин
Количество просмотров66K
Введение. В современном мире существует большое количество задач, в рамках которых приходится обрабатывать большие массивы однотипных данных. Яркими примерами являются системы для анализа биржевых котировок, погодных условий, статистики сетевого трафика. Многие из этих систем используют различные реляционные базы данных, в таблицах которых содержатся такие объемы данных, что правильное составление и оптимизация запросов к этим таблицам становится просто необходимым для нормального функционирования системы. В этой статье описаны методы решения ( и сравнительные временные характеристики используемых методов ) нескольких задач по получению данных из таблиц СУБД MySQL, содержащих статистику о проходящем через маршрутизаторы одного из крупных российских сетевых провайдеров сетевом трафике. Интенсивность потока данных, поступающего с главного маршрутизатора такова, что ежесуточно в таблицы базы данных используемой системы мониторинга сетевого трафика поступает в среднем от 400 миллионов до миллиарда записей, содержащих информацию о транзакциях TCP/IP (рассматриваемый маршрутизатор экспортирует данные по протоколу netflow). В качестве СУБД для системы мониторинга используется MySQL.
Читать дальше →
Всего голосов 82: ↑74 и ↓8+66
Комментарии19

Простая методика построения фильтров товаров с помощью MongoDb и MapReduce

Время на прочтение8 мин
Количество просмотров32K
Впервые столкнувшись с MapReduce, я продолжительное время искал реальные примеры применения. Пресловутый поиск слов в тексте, встречающийся в каждой второй статье о MapReduce, искомым примером считать не будем. Наконец, на двух курсах по Big Data на Coursera, я нашёл не только живые примеры, но теоретическую подоплёку для более глубокого понимания происходящего. Возможность применить полученный багаж знаний не заставила себя долго ждать.

В этой небольшой статье я хочу поделиться опытом реализации классической для большинства Интернет-магазинов системы фильтров товаров по критериям применительно к туристическому порталу, где появилась задача поиска и фильтрации по базе в десятки тысяч отелей, каждый из которых описывается рядом параметров и наличием нескольких десятков предоставляемых сервисов из сотен возможных.
Всех интересующихся MongoDb и MapReduce приглашаю под кат.
Всего голосов 74: ↑69 и ↓5+64
Комментарии18

MongoDB от теории к практике. Руководство по установке кластера mongoDB

Время на прочтение9 мин
Количество просмотров88K
     Доброго времени суток, уважаемые читатели. В этом посте я хотел бы описать несколько примеров развертки mongoDB, отличия между ними, принципы их работы. Однако больше всего хотелось бы поделиться с вами практическом опытом шардирования mongoDB. Если бы этот пост имел план, он бы выглядел скорее всего так:

  1. Вступление. Кратко о масштабировании
  2. Некоторые примеры развертки mongoDB и их описание
  3. Шардинг mongoDB

    Пункты 1 и 2 — теоретические, а номер 3 претендует на практическое руководство по поднятию кластера mongoDB и больше всего подойдет тем, кто столкнулся с этим в первый раз.
Читать дальше →
Всего голосов 56: ↑52 и ↓4+48
Комментарии11

Генерация CSS-спрайтов с Gulp

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

Работая над одним большим проектом, мы с напарником задумались над тем, чтобы автоматизировать процесс сбора спрайтов на проекте.
До этого спрайты собирались ручками или с помощью онлайн сервисов, что отнимало достаточно времени.
Проект уже собирался Gulp'ом и было принято решение найти адаптированный под него сборщик спрайтов.
Ищем решение
Всего голосов 29: ↑26 и ↓3+23
Комментарии47

7 вещей, которые необходимо знать о Tor

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


1. Tor все еще работает


Судя по всему, сеть Tor остаётся невзломанной. По крайней мере, согласно внутреннему докладу NSA от 2012 года, хотя у этой организации и были возможности в определённых случаях раскрывать принадлежность определённых нод, в целом они не в состоянии раскрыть любую ноду по запросу. Да и раскрытия эти происходили по оказиям типа ошибки в браузере Firefox, который входил в tor bundle и прочим подобным. Если использовать Tor правильно, то вероятность раскрытия крайне мала.
Читать дальше →
Всего голосов 101: ↑91 и ↓10+81
Комментарии136

«Не навреди», или Как не стать корпорацией

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


Привет, хабровчане! Меня зовут Михаил Завилейский, я — генеральный директор замечательной компании DataArt. Мы занимаемся IT-аутсорсингом вот уже много лет, и все эти годы делаем все возможное, чтобы по духу оставаться все той же группкой профессионалов, собравшейся зарабатывать любимым делом, с которой все когда-то и начиналось. И пусть сейчас нас уже больше тысячи, мы отчаянно стараемся не превратиться в «корпорацию».

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

Откуда в компаниях берутся лишние рутины, бесполезные функции и менеджеры, бесцельные отчеты и ритуалы? В основном, это следствие трех причин:

1. Излишняя систематизация.
2. Инерция и шаблонность.
3. Управленческие ошибки.

Читать дальше →
Всего голосов 106: ↑75 и ↓31+44
Комментарии46

BOOTSTRA.386: тема для Bootstrap в духе 1980-х

Время на прочтение1 мин
Количество просмотров109K
Оказывается, некоторые темы для Bootstrap — это маленькие произведения искусства. В рамках надвигающейся пятницы хотелось бы рассказать об одной из таких тем.

Крис МакКензи — явно один из тех, кто скучает по старым добрым временам DOS, EGA/VGA и Turbo Vision, иначе он вряд ли бы решился сделать что-то подобное. Так что если вы успели устать от засилья плоского дизайна, то добро пожаловать в мир BOOTSTRA.386!

Осторожно: будьте готовы к острому приступу ностальгии. Единственное, чего не хватает для полного погружения — так это навигации с клавиатуры, ну и курсора в виде прямоугольного блока.

image

Читать дальше →
Всего голосов 201: ↑192 и ↓9+183
Комментарии45

Универсальный web-GUI для произвольных RESTful сервисов

Время на прочтение4 мин
Количество просмотров21K
Во многих компаниях, как и моей, есть много проектов и продуктов. И у продуктов бывают веб-интерфейсы, чтобы этими продуктами как-то манипулировать. В нашем случае это простенькие RESTful веб-сервисы, а поверх них ещё более простенькие веб-странички с формочками и кнопочками. Все эти веб-странички до того похожи друг на друга, что возникла мысль написать унифицированный продукт, который бы спрашивал сервер о поддерживаемых сервисах, и получал бы полное описание параметров к этим сервисам, так чтобы можно было нарисовать те самые простенькие формочки. То есть, веб-сервисы должны описывать себя, достаточно исчерпывающе, чтобы наш клиент мог построить GUI для них, и ничего не надо было бы делать руками. Как раз такая картинка гуглится по запросу «REST»:


Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии10

Elliptics от Яндекса. Как с его помощью создать своё отказоустойчивое хранилище

Время на прочтение10 мин
Количество просмотров29K
Добрый день, дорогие читатели!

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



ХабраМузыка – это ваше личное хранилище музыки с поддержкой региональности, реплицирования данных, минимальной нагрузкой на диск и сеть, а также простым HTTP API, который можно использовать в любом вашем приложении или на личном сайте.

Под катом — пошаговые подробности.
Читать дальше →
Всего голосов 65: ↑60 и ↓5+55
Комментарии35

Настройка роутера Mikrotik для различных задач в SOHO

Время на прочтение9 мин
Количество просмотров358K
Данная статья является калькой с написанной мной собственноручно внутренней инструкции, по которой мы настраиваем новые маршрутизаторы в фирме. Пункты будут расположены в более-менее хронологическом порядке, но каждый из них является самостоятельной мини-инструкцией к одному из используемых в нашей компании сервисов.
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии89

Как я поборол DDoS за 15 минут

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


Привет, Хабр!

Сегодня я бы хотел рассказать об одном удачном опыте из своей жизни. О том, как я отбил DDoS атаку на свой сайт, не имея особых технических навыков. Эта статья может быть для вас полезна, а кому-то просто интересна. Сразу скажу, что это не универсальный метод и подходит не всем. Но для отражения мелких и средних атак самое то.
Читать дальше →
Всего голосов 71: ↑35 и ↓36-1
Комментарии28

Оптимальный способ хранения большого количества файлов на сервере

Время на прочтение4 мин
Количество просмотров47K
Как известно в одной папке не стоит хранить большое количество файлов т.к. очень быстро может произойти сбой в системе или попросту файлы будут очень медленно считываться.

Для решения этой задачи многие программисты берут md5 имени файла f789f789abc898d6892df98d09a8f8, после чего разбивают имя примерно таким образом:

/f7/89/f789abc898d6892df98d09a8f8.jpg
Читать дальше →
Всего голосов 45: ↑10 и ↓35-25
Комментарии41

Эти чертовы инкрементальные айдишники

Время на прочтение2 мин
Количество просмотров58K
Как программисту, принимавшему участие в разработке платежных систем, мне неоднократно приходилось анализировать на наличие уязвимостей различные платежные сервисы, хранящие персональные данные клиентов и я постоянно сталкиваюсь с одной очень распространенной проблемой. Имя этой проблеме — инкрементальные айдишники.

Пример №1.
Сайт крупнейшего агрегатора платежных методов в России, обслуживает лидера онлайн-игр. После оплаты заказа переадресовывает клиента на урл вида aggregator-domain/ok.php?payment_id=123456, который в свою очередь переадресовывает на сайт онлайн-игры с адресом вида (декодировал для читабельности) online-game-domain/shop/?...amount=32.86...&currency=RUB...&user=user_email@gmail.com...&item_name=1 день премиум аккаунта...
Перебирая значения параметра payment_id, мы можем видеть логины юзеров в онлайн-игре, покупки, которые они совершали, их сумму.


Читать дальше...
Всего голосов 175: ↑139 и ↓36+103
Комментарии93

Оптимизация сложных запросов MySQL

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

Введение


MySQL — весьма противоречивый продукт. С одной стороны, он имеет несравненное преимущество в скорости перед другими базами данных на простейших операциях/запросах. С другой стороны, он имеет настолько неразвитый (если не сказать недоразвитый) оптимизатор, что на сложных запросах проигрывает вчистую.

Прежде всего хотелось бы ограничить круг рассматриваемых проблем оптимизации «широкими» и большими таблицами. Скажем до 10m записей и размером до 20Gb, с большим количеством изменяемых запросов к ним. Если в вашей в таблице много миллионов записей, каждая размером по 100 байт, и пять несложных возможных запросов к ней — это статья не для Вас. NB: Рассматривается движок MySQL innodb/percona — в дальнейшем просто MySQL.
Читать дальше →
Всего голосов 52: ↑47 и ↓5+42
Комментарии20

Настройка WebSVN на Windows для интеграции в Jira с поддержкой авторизации SVN и кодировки исходников Delphi

Время на прочтение5 мин
Количество просмотров5.7K
Выкладываю данную инструкцию, т.к. самому пришлось искать необходимую информацию по крупинкам. Инструкция рассчитана на людей, имеющих мало опыта в web технологиях и web разработке. Все программные комплексы настроены на выделенном под программистские нужды «сервере» под управлением Windows 7 Pro 32 bit.
Что имеем:
  • Visual SVN Server 2.6.0 (Apache Subversion 1.8.0 + Apache HTTP Server 2.2.25)
  • доступ к SVN уже настроен через ssl на порт 8443
  • Jira 6.0 с установленным плагином JIRA Subversion plugin
  • осуществлена базовая настройка JIRA Subversion plugin (в задачах отображаются соответствующие коммиты со списками файлов)
  • на SVN хранятся в том числе исходные коды, написанные на Delphi 7 с кодировкой CP1251

Что хотим получить:
  • просмотр содержимого коммитов
  • использование уже существующей системы авторизации SVN для доступа к исходному коду

Читать дальше →
Всего голосов 12: ↑6 и ↓60
Комментарии1

Создание отказоустойчивого IPSec VPN туннеля между Mikrotik RouterOS и Kerio Control

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


Начиная с версии 8.1 Kerio Control для создания туннелей VPN можно использовать не только пропиетарный протокол Kerio VPN, но и вполне себе расово правильный IPSec. И конечно же мне сразу захотелось скрестить Mikrotik и Kerio Control.

Я попробовал разобраться
Всего голосов 18: ↑17 и ↓1+16
Комментарии9

Аналог ip unnumbered в Mikrotik RouterOS

Время на прочтение3 мин
Количество просмотров40K
Сразу скажу, что на написание поста меня вдохновила аналогичная статья, опубликованная на Хабре еще в 2009 году. Поэтому я не буду пересказывать ее содержимое и приводить конфигурацию Cisco-девайсов.

Сегодня, когда IPv4-адреса стали еще большим дефицитом, чем автомобиль «Москвич» во времена СССР, выделять клиенту сеть /30 или /31 — это преступление. В Cisco для обхода этих проблем есть режим «ip unnumbered», позволяющий назначить клиенту единственный адрес, не расходуя адреса впустую. Давайте посмотрим как это делается в Mikrotik RouterOS. Представим такую (сильно упрощенную) схему:



Наш шлюз (provider-gw) подключен интерфейсом ether1 к интернету посредством BGP (или другим способом, это не важно) и у нас есть собственная «большая» публичная сеть, например — 123.45.60.0/22. Первый клиент подключен к VLAN-интерфейсу vlan100, который, предположим, заведён в ether2. Второй — к vlan200.
Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии15

Asterisk на Mikrotik

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

Задался идеей поднять voip на mikrotik. Кто помнит, в старых версиях routeros был модуль для voip, потом его выпилили, а жаль. Нативно поднять астериск на routeros не выйдет, однако есть возможность поднять виртуальный роутер с openwrt в режиме metarouter, вот отсюда и будем исходить.

Долгие поиски привели меня на сайт openwrt.wk.cz (доступен только по ipv6), откуда и был скачан образ openwrt для mt-mips. Все эксперименты проводил на 2011UAS-2HnD. Так как не у всех есть ipv6, я сделал зеркало для установки пакетов с него (ms1.nserver.us/openwrt.wk.cz.), где и лежат необходимые пакеты. Кстати, во время поисков, так и не удалось найти полноценную статью по этой теме не то что на русском, но и на любом другом.

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии28

Mikrotik + IPSec + Cisco. Часть 2. Тоннель на «сером» IP

Время на прочтение3 мин
Количество просмотров48K
В продолжение к посту.
В прошлый раз я рассматривал соединение, когда со стороны циски и микрота были реальные IP'ы.
Здесь рассмотрю пример «серого реальника», т.е серый IP, который провайдер маскирует у себя под внешний с безусловной переадресацией (binat).

Техническая задача: организовать ipip-тоннель между офисами, с шифрованием ipsec, при помощи Mikrotik RB450G и Cisco 2821.



Ньюансы

на циске внешний IP, а на микротике серый, который маскируется провайдером под внешний, с безусловной переадресацией (обращения к этому внешнику из интернета редиректятся на интерфейсный, серый «IP»).
Схема:

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии1
1

Информация

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