• DDoS атака в обход Qrator. Как защититься?

      Есть сервисы, защищающие нас от DDoS атак. Они работают по принципу прокси: в DNS прописывается их IP, они фильтруют трафик и проксируют на ваш сервер. Все они настоятельно рекомендуют прятать свой IP и в публичном доступе давать только IP прокси-защитника. Вполне здравый подход, достаточный для успешной защиты. А я расскажу на чем можно проколоться и как от этого защитится.
      Читать дальше →
    • Как реализовать конвертацию из растра в черно-белый вектор на сайте

        Все графические файлы делятся на два глобальных типа — растровые и векторные. Иногда нужно сделать конвертацию из растра в черно-белый вектор. Например, для трассировки черно-белых иконок, QR-кодов, штрих-кодов, картинок с растровыми надписями, чеков или картинок в блоге.

        image
        Читать дальше →
        • +14
        • 17,9k
        • 5
      • Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

          Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



          Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

          Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

          Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

          Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

          Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
          Читать дальше →
        • LIVR — «независимые от языка правила валидации» или валидация данных без «проблем»

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

            Основные проблемы, которые встречаются в библиотеках валидации данных

            Проблема №1. Многие валидаторы проверяют только те данные, для которых описаны правила проверки. Для меня важно, чтобы любой пользовательский ввод, который явно не разрешен, был проигнорирован. То есть, валидатор должен вырезать все данные для которых не описаны правила валидации. Это просто фундаментально требование.

            Проблема №2. Процедурное описание правил валидации. Я не хочу каждый раз думать про алгоритм валидации, я просто хочу описать декларативно, как должны выглядеть правильные данные. По сути, я хочу задать схему данных (почему не «JSON Schema» — в конце поста).

            Проблема №3. Описание правил валидации в виде кода. Казалось бы, это не так страшно, но это сразу сводит на нет все попытки сериализации правил валидации и использования одних и тех же правил валидации на бекенде и фронтенде.

            Проблема №4. Валидация останавливается на первом же поле с ошибкой. Такой подход не дает возможности подсветить сразу все ошибочные/обязательные поля в форме.

            Проблема №5. Нестандартизированные сообщения об ошибках. Например, «Field name is required». Такую ошибку я не могу показать пользователю по ряду причин:
            • поле в интерфейсе может называться совсем по другому
            • интерфейс может быть не на английском
            • нужно различать тип ошибки. Например, ошибки на пустое значение показывать специальным образом

            То есть, нужно возвращать не сообщение об ошибках, а стандартизированные коды ошибок.

            Проблема №6. Числовые коды ошибок. Это просто неудобно в использовании. Я хочу, чтобы коды ошибок были интуитивно понятны. Согласитесь, что код ошибки «REQUIRED» понятней, чем код «27». Логика аналогична работе с классами исключений.

            Проблема №7. Нет возможности проверять иерархические структуры данных. Сегодня, во времена разных JSON API, без этого просто не обойтись. Кроме самой валидации иерархических данных, нужно предусмотреть и возврат кодов ошибок для каждого поля.

            Проблема №8. Ограниченный набор правил. Стандартных правил всегда не хватает. Валидатор должен быть расширяемый и позволять добавлять в него правила любой сложности.

            Проблема №9. Слишком широкая сфера ответственности. Валидатор не должен генерировать формы, не должен генерировать код, не должен делать ничего, кроме валидации.

            Проблема №10. Невозможность провести дополнительную обработку данных. Практически всегда, где есть валидация, есть необходимость в какой-то дополнительной (часто предварительной) обработке данных: вырезать запрещенные символы, привести в нижний регистр, удалить лишние пробелы. Особенно актуально — это удаление пробелов в начале и в конце строки. В 99% случаев они там не нужны. Я знаю, что я до этого говорил, что валидатор не должен делать ничего кроме валидации.

            3 года назад, было решено написать валидатор, который не будет иметь всех вышеописанных проблем. Так появился LIVR (Language Independent Validation Rules). Есть реализации на Perl, PHP, JavaScript, Python (мы на python не пишем — фидбек по ней дать не могу). Валидатор используется в продакшене уже несколько лет практически в каждом проекте компании. Валидатор работает, как на сервере, так и на клиенте.
            Читать дальше →
          • Как определить дубликаты картинок с помощью PHP

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



              Потому рано или поздно встает вопрос автоматизации процесса поиска повторов, и тут мы рассмотрим основные, а также попробуем в деле.
              Читать дальше →
            • Бильярдный бот: история создания

                Привет, хабрахабр! Эта статья посвящена подробному описанию процесса создания бильярдного бота, который без участия человека играет в игру pool billiard и принимает решения, зарабатывая очки. Статья будет полезна и интересна людям, увлекающимся созданием ботов и программированием.


                Читать дальше →
              • Как мы открывали магазин в ТЦ МЕГА: история ошибок

                  Интерес к рознице был заметен изначально — с самых первых статей на хабре и на других сайтах мы начали получать запросы на франшизу. Запросы шли со всей страны — Питер, Новосибирск, Краснодар, Ростов-на-Дону, Пермь, Хабаровск, Сочи и так далее. Даже страной дело не ограничилось — люди из Украины, Беларуси и Казахстана тоже хотели открыть у себя магазин Madrobots. Но франшиза — это в первую очередь отлаженные процессы. Как мы могли объяснять, как открыть магазины в других городах, если сами этого толком не умели?

                  Мы решились открыть наш магазин в большом торговом центре, и теперь готовы рассказать вам о проблемах, косяках, процессах, решениях и выводах. Заходите, под катом интересно.
                  Читать дальше →
                • Поиск решения для смс-уведомлений e-mail to sms в Windows или Linux

                    Поиск решения для смс-уведомлений e-mail to sms в Windows или Linux.

                    идеальная схема для меня схема: е-мейл на смc (e-mail to sms),
                    Используемое оборудование: Huawei E169G, Huawei E630 (PCMCIA) + PC (Windows \ Unix)
                    Оператор: МТС

                    image

                    Читать дальше →
                  • Зарядка для глаз

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

                      Не будешь делать зарядку — потеряешь зрение через несколько лет!


                      Ниже написано то, что надо делать. Зарядка отнимает 5-7 минут ежедневной жизни, но зато существенно понижает вероятность нужды в очках.
                      Читать дальше →
                    • Московское ценообразование

                        Новинка в магазине Lefutur:

                        Наручные часы Tibida


                        Если Вам надоел стандартный циферблат с неспешно идущими стрелками, если Вы хотите быть непохожими на других, то новые часы от LeFUTUR – для Вас!
                        С ними Вы всегда будете находиться в центре внимания, всегда найдется тема для разговора и обсуждения. Позвольте себе быть эксклюзивным.

                        Цена: 15990р

                        А вот эти же часы на сайте производителя, который кстати отправляет их в Россию без проблем.

                        Цена: $149.24 * 23.41 = 3494р.

                        Накрутка 350%



                        И кто-то после этого еще наркотиками торгует?
                      • 11 порталов для выбора Иконок

                          Коллекция ссылок больших порталов и поисковиков, для выбора всевозможных Иконок(Icons) разного типа. Практически на всех есть широкий выбор размеров.

                          В этой коллекции я уверен что вы найдете что вам нужно ;)

                          Ну интересное так точно!!!

                          1. http://www.iconspedia.com
                          Читать дальше →
                        • Gobby — сделаем вместе

                            Что такое Gobby?


                            Gobby — свободный совместный (коллаборативный) редактор, поддерживающий множество открытых документов для одной сессии и многопользовательский чат.
                            Он может работать в Windows, Mac OSX, Linux. Редактор позволяет нескольким пользователям одновременно редактировать один и тот же документ.
                            С помощью Gobby можно быстро обсудить или вместе отредактировать какой-либо текстовый материал (например, как это делаем мы ;) ).

                            Made in Gobby
                          • Кластер «своими руками»

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

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

                              Читать дальше →
                            • Социальная инженерия как траффикогенератор. Хроники лабораторий.

                                В свое время, очень много было написано о том, насколько ж эффективно именно продвижение контента, а не традиционное SEO/SEM с его платными беклинками, размещением в директориях и каталогах. Были даже наглядные подтверждения, пособия, обсуждения результатов экспериментов с последующим желанием объединиться в клан. И я, как молодой и жадный к различным околопрофессиональным знаниям, решил попробовать, а что ж это такое, продвижение контента через социальные сети.

                                Интерес подогревало то, что в то время я заруливал маркетингом в одной не слишком хорошей, а сейчас и совсем нехорошей, аутсорсинговой компании окологалактического калибра. То есть, определенная материальная заинтересованность все же была, а направление деятельности компании показало вектор движения -> Западный, англоязычный сегмент. Сейчас я не хотел бы, чтоб меня каким-либо образом ассоциировали с этой конторой, по сему, каких-либо прямых ссылок вы не увидите. Только дневник. Итак.

                                Полный текст новости
                              • Определение наличия Acrobat-плагина в броузере

                                  Столкнулся с проблемой определения наличия плагина. Гуглёж дал результаты не сразу. Основная проблема была в пятой строке.
                                  var isPDFInstalled = false;
                                  if (window.ActiveXObject) {
                                      var control;
                                      try {
                                          control = new ActiveXObject('AcroPDF.PDF');
                                      } catch (e) { }
                                      if (!control) {
                                          try {
                                              control = new ActiveXObject('PDF.PdfCtrl');
                                          } catch (e) { }
                                      }
                                      if (control) {
                                          isPDFInstalled = true;
                                      }
                                  } else {
                                      isPDFInstalled = navigator.mimeTypes && navigator.mimeTypes["application/pdf"];
                                  }
                                  
                                  if (isPDFInstalled) {
                                      document.write('okay');
                                      // ну или что-то другое
                                  } else {
                                      document.write('shit');
                                      // ну или что-то другое
                                  }
                                • Альтернативные потоки данных в NTFS или как спрятать блокнот

                                    Введение


                                    Поддержка альтернативных потоков данных (AltDS) была добавлена в NTFS для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Использование AltDS скрыто от пользователя и не доступно обычными средствами. Проводник и другие приложения работают со стандартным потоком и не могут читать данные из альтернативных. С помощью AltDS можно легко скрывать данные, которые не могут быть обнаружены стандартными проверками системы. Эта статья даст основную информацию о работе и определении AltDS.
                                    продолжение
                                  • Продолжаем твикать Висту

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

                                      1. Отключение System Restore (восстановление системы). Вещь конечно хорошая, но как и в случае с файрволом, лучше пользоваться сторонними программами, а встроенную отключить — она ест очень много ресурсов.
                                      Правый клик по ярлыку «Компьютер» → Свойства → Дополнительные параметры системы → закладка «Защита системы» → убираем все галки.

                                      2. Отключение мониторинга производительности. В Висте (равно как и в предыдущих 2000/ХР) есть встроенный механизм журналирования всевозможных параметров системы, который тратит ресурсы, а используется очень маленьким процентом пользователей. К сожалению, стандартными средствами его не отключить, но у MS есть специальная утилитка для этого. Результат после отключения заметен невооруженным взглядом.
                                      Качаем утилиту, устанавливаем, запускаем. Выбираем поочередно каждый счетчик в списке «Extensible Performance Counters» и убираем галку «Performance Counters Enabled». Перезагружаемся.

                                      3. Повышение приоритета активных процессов над фоновыми. В реестре есть важный ключ, который определяет насколько активным приложениям выделяется процессорного времени больше, чем фоновым. По умолчанию он равен 2, я бы советовал поставить 6, хотя можно и поиграться. Результат существенен.
                                      regedit → HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl → увеличиваем значение ключа Win32PrioritySeparation.

                                      Да, и кстати, UAC отключается намного проще и без мсконфига: Панель управления → Учетные записи → Отключить контроль учетных записей

                                      P.S. Пора заводить отдельный блог для хабратвиков :)
                                    • Оптимизируем Vista

                                        Предисловие

                                        Сколько сотен раз слышал, как Windows Vista ругают за ее медлительность, «глючность», несовместимость, неудобство и прочее. Признаться честно, я и сам до недавнего времени был, мягко говоря, не в восторге от Vista, пытался ее использовать но потом от нее отказался.



                                        Но два месяца назад по работе пришлось вплотную столкнуться с Vista, и я заинтересовался » а как можно заставить ее работать хорошо? И вот, по прошествии двух месяцев, хочу поделится с вами своим опытом и надеюсь получить и от вас полезные советы. Если вы

                                        Уверен, многие из вас уже столкнулись или еще столкнутся с необходимостью использовать Vista, поэтому данная статья будет интересна и тем, кто эту ОС не используют. Кстати, далее будет совет, как использовать Windows Vista легально в течении 120 дней!

                                        Надеюсь, вы оцените мою статью — я потратил на ее написание почти половину своего выходного :) Понятно, что для кого-то ниже написанное покажется «детским лепетом», кто-то всё это уже знает, но почему-то не делает. А кто-то почерпнет полезную для себя информацию.

                                        Сразу отмечу, что не хочу никого убедить использовать Vista или вызвать холивар — если кому-то данная тема не интересна, просто пройдите мимо, пожалуйста. Спасибо.

                                        UPD спустя час: удивительно, как любят ставить минусы топикам про Vista, где ее не «опускают»! А то что это полезная многим статья про все более широко распространяющуюся ОС — видно некоторым начхать :(
                                        UPD спустя четыре часа: спасибо за позитивную оценку статьи, жду большего количество полезных дополнений к ней :)
                                        UPD спустя почти неделю :) ускоряем копирование в Висте! Наконец-то однокилобайтный ярлык не удаляется по 30 секунд :) Пуск->Панель управления (не классическая)->Программы->Включение или отключение компонентов Windows. Снимаем галку «Удаленное разностное сжатие». Ура.

                                        Думаю над продолжением статьи, уже есть наработки :)
                                        Читать дальше →
                                      • ООО и ведение валютных операций

                                          Всем привет!

                                          Моей компании уже три года и в этом году мы попали в план проверок валютного контроля РосФинНадзора по ведению валютных операций.

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

                                          Эта информация будет полезна как тем кто кто уже ведет свою деятельность, так и тем, кто только собирается открывать валютный счет или вообще регистрировать ООО. Не знаю, насколько это относится к ИП, но в любом случае, будьте осторожны.
                                          Читать дальше →