• Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

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



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

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

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

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

      Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
      Читать дальше →
    • Влияние планшета на ребенка (2-13 лет)

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


      Читать дальше →
    • 13 лучших роботов для детей

        image

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

        На рынке появилось много игрушек, которые можно программировать. Они демонстрируют детям преимущества программирования, мгновенно выполняя созданные команды. Раньше обучение этому было преимущественно теоретическим. Существует много хороших роботов, но не каждый из них подходит для всех.
        Читать дальше →
        • +12
        • 31,8k
        • 4
      • Самый популярный в мире фитнес-браслет Xiaomi Mi Band сменит модель с дисплеем?



          На прошлой неделе компания Xiaomi опубликовала результаты продаж фитнес-браслета Xiaomi Mi Band. Оказалось, что сейчас этот девайс, ценой всего около $15 (в Китае) является самым продаваемым устройством подобного типа в мире. На данный момент продано уже более 6 млн девайсов.

          Популярность устройства легко объяснить — Mi Band собран очень качественно, может многое, на что способны и более дорогие модели (например, умный будильник), плюс стоит, по меркам рынка носимых устройств, копейки. Сейчас разработчик планирует выпускать уже второе поколение браслетов.
          Читать дальше →
        • 10 роботов-гуманоидов, созданных по подобию человеческих способностей и эмоций

            image

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

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

            Данный список роботов, разработанных на протяжении последних нескольких лет, демонстрирует, что описанное выше может стать реальностью даже раньше, чем мы думаем.
            Читать дальше →
            • +6
            • 12,2k
            • 3
          • Как самому собрать аналоговый левитрон

            0.Предисловие


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

            1.Краткое описание


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

            Получилось вот что:


            Читать дальше →
          • DJI Matrice 100: может летать 40 минут и уворачивается от помех

              «Мне одному видится «Хеннелора» Пелевина?» sashas


              10 миллиардов долларов — оценка стоимости компании DJI. Стоит почти столько же как Яндекс.(upd как два Яндекса.) А инвесторы хвалятся вот так: «DJI is kicking everybody’s ass» или так: «They are the Apple of the space».

              Компания по производству дронов охватывает 3 рынка:
              • Phantom 3: для продвинутой фото и видеосъемки
              • Inspire 1: аэро фото и видео съемка коммерческого класса
              • Matrice 100: Martice 100 — платформа для создания промышленных летающих роботов, с открытым SDK для полного контроля
              (остается только захватить рынок дронов с ладошку, по цене 100$)

              Как будет выглядеть дрон будущего? Соберите и посмотрите сами. Так гласит рекламный лозунг нового коптера. А еще модульная система Guidance для ультразвукового ориентирования и уклонения от ракет помех.
              Читать дальше →
            • Как выбрать умные часы сегодня и что вообще происходит с этим рынком

                Эпиграф
                «Это у тебя „умные часы“ или просто красивые?»
                (с) Башорг




                Начиная свой блог на Хабре Гиктаймс, ребята из iCover попросили написать текст про умные часы и вообще рассказать о текущей ситуации на рыке. Я последний год активно копал эту тему и поэтому согласился. Тем более, что у них в магазине есть приличный выбор моделей.

                Если вам не хочется читать длинную простыню, то вот краткая выжимка: на мой потребительский и ни к чему не обязывающий взгляд, ситуация на начало июня 2015 года весьма простая — лучшими часами по-прежнему являются Pebble Steel. Извините.
                А теперь подробности письмом:
                Читать дальше →
              • Электрический Harley-Davidson будет, хотя и не очень скоро

                  image
                  Harley-Davidson LiveWire

                  Я немного увлекаюсь мотоциклами. То есть, своего мотоцикла у меня пока нет, но я, по крайней мере, ориентируюсь в этом разнообразном и весьма увлекательном мире. И знаю, что для каждого человека слово «мотоцикл» означает нечто своё.

                  Для кого-то мотоцикл вот такой:

                  image
                  Читать дальше →
                • Какие языки программирования и почему используются в сфере финансов



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

                    В нашем сегодняшнем материале мы поговорим как раз о том, как понять, какую из существующих технологий следует использовать в конкретной ситуации на фондовом рынке.
                    Читать дальше →
                    • +8
                    • 37,7k
                    • 8
                  • Еще раз о многопоточности в одну строку

                    Давеча понадобилось мне в моем проекте на Flask ускорить ответ сервера. Из-за того, что во view последовательно вызывается запрос к трём удаленным веб-сервисам, время загрузки страницы с данными не из кеша доходило до 10 сек. Да, возможно, Flask не тот фреймворк, который стоило использовать, но что имеем, то имеем.
                    Итак, приступим. Поскольку реальный код я публиковать не могу, рассмотрю на академических примерах.
                    Читать дальше →
                    • +17
                    • 29,7k
                    • 5
                  • IoT за копейки, или Что может DeviceHive

                      В современном мире «интернет вещей» (IoT) стремительно набирает популярность. Он в будущем поможет человечеству автоматизировать многие аспекты жизни, упростить рутинные операции, да и просто сделать жизнь комфортнее и приятнее. Современная элементная база только способствует этому. Еще несколько лет назад задача управления устройством из сети порождала необходимость использовать высокопроизводительные процессоры, что увеличивало стоимость конечного исполнительного устройства в разы. Сейчас же есть возможность построить простые и эффективные IoT-решения за копейки.

                      Сделать свой дом поистине «умным» можно и без использования модных Raspberry Pi или Arduino. Большинство IoT-задач сводится к подключению типовых датчиков и исполнительных механизмов со стандартными интерфейсами: I2C, SPI, UART. А иногда даже с элементарным аналоговым выводом, с которого нужно считать наличие напряжения или подать его, или просто замкнуть.


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

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



                          Проект Matrix Flare стартовал, как кастомная игрушка для одного ребенка, и постепенно развился в обучающий электронный конструктор для всех. Автор запустил на Kickstarter кампанию по сбору средств на проект, надеясь собрать сумму на массовое производство игрушки.

                          Проект вряд ли соберет нужное количество денег, но сам он достаточно интересный, так что мы его решили описать в блоге Medgadgets. Автор идеи рассчитывает на то, что Matrix Flare поможет детям (да и не только им) разобраться в основах программирования и электроники.
                          Читать дальше →
                        • 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 не пишем — фидбек по ней дать не могу). Валидатор используется в продакшене уже несколько лет практически в каждом проекте компании. Валидатор работает, как на сервере, так и на клиенте.
                            Читать дальше →
                          • Сравнение Security Enhanced NGINX и Hiawatha Web Server при отражении атак 7 уровня (BOTS/SQL/XSS etc.)

                              Добрый день.

                              В завершение «недели NGINX», мы решили рассказать об очень интересной сборке «безопасной» версии NGINX китайской компании Neusoft, о которой не было замечено ни одной статьи на Хабре, а именно — SeNginx. В дополнение к этому, мы также расскажем вам о втором веб сервере, которому не уделяется так много внимания, как Nginx — Hiawatha Web Server, и постараемся сравнить Hiawatha с SeNginx в плане использования их для обеспечения безопасности вашего сайта или web приложения.

                              image image

                              Отметим, что за 5 лет существования нашей хостинговой компании нам довелось повидать целый спектр атак различных уровней и типов на сайты и web приложения наших клиентов, а также поработать с London Metropolitan Police в поиске и поимке одного управляющего ботнетом. Сегодня DDoS атаки стали настолько частыми, что только за вчерашний день Arbor в одном из наших датацентров зафиксировал 49 DDoS атак 3/4 уровней мощностью до 20-25 Gbit/s (график 1 и график 2). И, хотя Arbor девайсы и могут при определенной настройке неплохо справляться с атаками 3 и 4 уровня, они практически бесполезны при атаках 7 уровня, целью которых является перегрузка ресурсов сервера, а также поиск уязвимостей в вашем приложении.

                              Самым бюджетным вариантом отражения атак 7 уровня являются различные варианты с использованием DNS RoundRobin + HaProxy, Nginx, Varnish Cache и т.д., которые либо позволяют рассредоточить атаку между несколькими серверами клиента, либо дают возможность обработать запросы ботов «в лоб» с помощью отдачи кешированной версии страницы. Данный подход, к сожалению, часто требует ручной настройки, постоянного мониторинга и редко эффективен при меняющихся типах атак.

                              Наглядное представление DNS RoundRobin + Nginx (источник):

                              image

                              После длительных поисков нами был найден отличный модуль к NGINX, написанный русскими программистами на Perl в 2012 году и позволяющий фильтровать ботов, которые заходят на ваш сайт в автоматическом режиме — Roboo (статья на Хабре). Модуль показал себя с наилучшей стороны, позволяя фильтровать сотни тысяч запросов от ботов с помощью NGINX с минимальной нагрузкой на сервер.
                              Читать дальше →
                            • Когда не помогает ЦАП. Цифровые потенциометры в деталях. Часть первая



                                Прогресс не обошёл стороной не только велосипед. Сегодня традиционные переменные и подстроечные резисторы в очень многих приложениях уступают место цифровым сопротивлениям. В англоязычных источниках их называют digital potentiometer, RDAC или digiPOT. Область применения этих устройств гораздо шире регулировки уровня звукового сигнала. В частности они приходят на помощь в очень многих случаях, когда требуется изменять параметры обратной связи, что трудно реализовать с помощью традиционных ЦАП.

                                Особенно эффективно их применение в связке с операционными усилителями. Так можно получить регулируемые усилительные каскады, преобразователи разного рода величин, фильтры, интеграторы, источники напряжения и тока и многое многое другое. Словом эти очень недорогие и компактные устройства могут быть полезными каждому разработчику электроники и радиолюбителю…

                                Изначально я хотел написать краткую статью, но в результате углубленного изучения темы материал с трудом уместился в две части. Сегодня я постараюсь рассказать об архитектуре данных устройств, их возможностях, ограничениях использования и тенденциях развития. В заключении вскользь затрону тему областей применения, поскольку конкретные примеры практической реализации схем на их основе будут рассмотрены во второй части. МНОГО примеров!

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

                                P.S.Так получилось, что уже вышла ещё одна статья из этой серии и в ней пример всего один, зато подробно разобранный. Для остальных обещанных примеров придётся писать третью.
                                Читать дальше →
                              • Первые четыре вопроса для основателя компании

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

                                Самолёт на взлёте

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

                                Всё это необходимо для запуска компании. Но это вовсе не те кирпичи, из которых строится стартап. Самые важные первые шаги вовсе не операционные, а скорее психологические. Не рациональные решения, а в большей степени выстраивание взаимоотношений и экспериментирование.
                                Читать дальше →
                                • +11
                                • 7,1k
                                • 3
                              • Краудинвестинг приносит слишком мало?



                                  При анализе работы нескольких сотен компаний, которые привлекли инвестиции при помощи такого популярного инструмента, как краудинвестинг, оказывается, что в этом случае компании продают гораздо меньше акций, чем в случае использования других инструментов получения финансирования, пишут «Ведомости». По данным Beauhurst, две компании из трех, которые собрали при помощи краудинвестинга до 500 тысяч фунтов стерлингов, продали инвесторам не более 20% собственных акций. В то же время, фондам прямых инвестиций за примерно такой же объем инвестиций стартап отдает 44% собственных акций, а бизнес-ангелам — 28%.

                                  Частные инвесторы, как следует из результатов исследования, довольно часто могут становиться жертвой завышения стоимости бизнеса. При этом можно исключить мелкие проекты, собравшие менее 100 тысяч фунтов, но картина останется прежней.
                                  Читать дальше →
                                • 14 рабочих стратегий Growth Hacking для B2B

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

                                  Человека, который ввёл этот термин в 2010 году зовут Шон Эллис (Sean Ellis), CEO компании Qualaroo.
                                  И вот как это было:



                                  Шон помогал многим интернет-компаниям, стартапам добиваться невероятного роста.
                                  Когда он решил уходить на покой, то, естественно, требовалось найти ему замену.
                                  На размещенную вакансию приходили традиционные маркетологи, которые делали анализ рынка, составляли планы
                                  по развитию, улучшали позиционирование, но это было не то…
                                  Читать далее...