• Как работает JS: обзор движка, механизмов времени выполнения, стека вызовов

    • Translation
    Популярность JavaScript растёт, его возможности используют на разных уровнях применяемых разработчиками стеков технологий и на множестве платформ. На JS делают фронтенд и бэкенд, пишут гибридные и встраиваемые приложения, а также многое другое.

    Анализ статистики GitHub показывает, что по показателям активных репозиториев и push-запросов, JavaScript находится на первом месте, да и в других категориях он показывает довольно высокие позиции.


    Статистические сведения по JavaScript с GitHub

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

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

    Как ни странно, существует множество разработчиков, которые регулярно пишут на JavaScript, но не знают, что происходит в его недрах. Пришло время это исправить: этот материал посвящён обзору JS-движка на примере V8, механизмов времени выполнения, и стека вызовов.
    Читать дальше →
  • SDN & NFV и при чем тут Облака

      Аббревиатуры SDN и NFV в последнее время звучат все чаще и звучат вместе. В тендерах операторы связи требуют от производителей обязательной поддержки SDN и NFV, т.к. уверены, что эти технологии оказывают положительное влияние на OPEX, CAPEX и TTM. Быстрый серфинг интернета показывает, что SDN — это Software-Defined Networking, а NFV — это Network Functions Virtualization. Обе технологии связаны с виртуализацией и с сетями, т.е. на первый взгляд складывается впечатление, что они очень похожие, если не одно и то же. Давайте разбираться, так ли это на самом деле! Проверка по Google Trend сначала подтверждает гипотезу: тренд запроса «SDN and NFV» начинается в 2013 году:


      Читать дальше →
      • +9
      • 10.6k
      • 2
    • Создание и тестирование Firewall в Linux, Часть 1.3. Написание char device. Добавление виртуальной файловой системы…

      • Tutorial
      Содержание первой части:

      1.1 — Создание виртуальной лаборатории (чтобы нам было где работать, я покажу как создать виртуальную сеть на вашем компьютере. Сеть будет состоять из 3х машин Linux ubuntu).
      1.2 – Написание простого модуля в Linux. Введение в Netfilter и перехват трафика с его помощью. Объединяем все вместе, тестируем.
      1.3 – Написание простого char device. Добавление виртуальной файловой системы — sysfs. Написание user interface. Объединяем все вместе, тестируем.

      Содержание второй части:

      Скрытый текст
      2.1 — Введение во вторую часть. Смотрим на сеть и протоколы. Wireshark.
      2.2 — Таблицы Firewall. Transport Layer. Структуры TCP, UDP. Расширяем Firewall.
      2.3 — Расширяем функциональность. Обарабатываем данные в user space. libnetfilter_queue.
      2.4 — (*Опиционально) Изучаем реальную Buffer Overflow атаку и предотвращаем с помощью нашего Firewall'а.
      Читать дальше →
    • Создание и тестирование Firewall в Linux, Часть 1.2. Простой перехват трафика с Netfilter

      Содержание первой части:

      1.1 — Создание виртуальной лаборатории (чтобы нам было где работать, я покажу как создать виртуальную сеть на вашем компьютере. Сеть будет состоять из 3х машин Linux ubuntu).
      1.2 – Написание простого модуля в Linux. Введение в Netfilter и перехват трафика с его помощью. Объединяем все вместе, тестируем.
      1.3Написание простого char device. Добавление виртуальной файловой системы — sysfs. Написание user interface. Объединяем все вместе, тестируем.

      Содержание второй части:
      Скрытый текст
      2.1 — Введение во вторую часть. Смотрим на сеть и протоколы. Wireshark.
      2.2 — Таблицы Firewall. Transport Layer. Структуры TCP, UDP. Расширяем Firewall.
      2.3 — Расширяем функциональность. Обарабатываем данные в user space. libnetfilter_queue.
      2.4 — (*Опиционально) Изучаем реальную Buffer Overflow атаку и предотвращаем с помощью нашего Firewall'а.

      Читать дальше →
      • +33
      • 21k
      • 8
    • Современная операционная система: что надо знать разработчику

        Александр Крижановский (NatSys Lab.)


        Александр Крижановский

        Нас сегодня будет интересовать операционная система – ее внутренности, что там происходит… Хочется поделиться идеями, над которыми мы сейчас работаем, и отсюда небольшое вступление – я расскажу о том, из чего состоит современный Linux, как его можно потюнить?

        По моему мнению, современная ОС – это плохая штука.




        Дело в том, что на картинке изображены графики сайта Netmap (это штуковина, которая позволяет вам очень быстро захватывать и отправлять пакеты сетевого адаптера), т.е. эта картинка показывает, что на одном ядре с разной тактовой частотой до 3 ГГц Netmap позволяет 10 Гбит – 14 млн. пакетов в сек. отрабатывать уже на 500 МГц. Синенькая линия – это pktgen – самое быстрое, что, вообще, есть в ядре Linux’а. Это такая штуковина – генератор трафика, который берет один пакет и отправляет его в адаптер много раз, т.е. никаких копирований, никакого создания новых пакетов, т.е., вообще, ничего – только отправка одного и того же пакета в адаптер. И вот оно настолько сильно проседает по сравнению с Netmap (то, что делается в user-space показано розовой линией), и оно вообще где-то там внизу находится. Соответственно, люди, которые работают с очень быстрыми сетевыми приложениями, переезжают на Netmap, Pdpdk, PF_RING – таких технологий море сейчас.
        Читать дальше →
      • Вперёд в п(р)ошлое. Geforce FX. The Dawn of War

          Со дня своего основания в Microsoft умели две самые важные вещи в жизни: вовремя проанализировать что-то чужое и сделать на этом какие-то свои деньги. Во многом именно благодаря Microsoft как главному генератору самых максималистских идей вся IT-индустрия шла (и до сих пор идёт) выгодными прежде всего самому Microsoft путями развития. Результатом реализации множества таких идей стало не только банкротство многих гигантов IT-индустрии, но и стремительная всеобщая унификация. Все компоненты в PC от железа до софта становились всё более универсальными и похожими, теряя возможности выгодно отличаться. И вот, в 2002 году, когда Microsoft в очередной раз приложила свои шаловливые монополистические ручонки к 3D-индустрии, по производителям 3D-чипов громовой волной раскатилась спецификация DirectX9…

          И как все мы хорошо помним ) уже следующий 2003 год ознаменовал приход киношной графики на PC. Ну да, ведь так всё и было: WinXP, игры на DVD, требующие установить DirectX9, и… одинаковые видеокарты с какими-то там шейдерами. Условно можно сказать, что спецификация DX9 должна была положить конец различиям результатов рендеринга одного и того же изображения на картах разных производителей. Тем не менее, даже эта спецификация не смогла тогда окончательно обуздать NVIDIA. И правильно, иначе зачем NVIDIA было вкладывать во что-то перспективное деньги?

          И вот тут мы подходим к тому, что побудило меня в очередной раз ткнуть труп палкой и таки написать этот обзор.

          Danger: Внутри много БОЛЬШИХ картинок. Только первая — уже ДВА мегабайта.
          Читать дальше →
        • ES6 по-человечески

          От переводчика:
          Предлагаю вашему вниманию перевод краткого (действительно краткого) руководства по ES6. В нём можно ознакомиться с основными понятиями стандарта.
          Оригинальный текст в некоторых случаях был дополнен или заменён на более подходящий источник. Например, часть определения ключевого слова const является переводом документации с MDN.
          Чтобы лучше разобраться в некоторых концепциях (для выполнения качественного перевода) использовалось описание стандарта на сайте MDN, руководство "You Don't Know JS: ES6 & Beyond" и учебник Ильи Кантора.


          Перевод выложил на Гитхаб: https://github.com/etnolover/ES6-for-humans-translation. В случае нахождения ошибок пишите, исправлю.
          Ссылка на оригинальный текст: https://github.com/metagrover/ES6-for-humans


          Update 22.07.2016: добавил опрос про const


          Содержание



          Читать дальше →
        • [ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только

          • Translation
          Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.



          Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
          Читать дальше →
          • +140
          • 81.7k
          • 15
        • Что на самом деле может виртуальная память



            Мы в 1cloud стараемся рассказывать о различных технологиях — например, контейнерах, SSL или флеш-памяти.

            Сегодня мы продолжим тему памяти. Разработчик Роберт Элдер (Robert Elder) в своем блоге опубликовал материал с описанием возможностей виртуальной памяти, которые известны не всем инженерам. Мы представляем вашему вниманию основные мысли этой заметки.
            Читать дальше →
            • +17
            • 30.7k
            • 4
          • Аполло Роббинс — Искусство отвлекать внимание



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


              Оригинал видео


              P.S. Как всегда, вы можете предложить интересные видео на перевод в комментариях.
              • +23
              • 17.1k
              • 8
            • Искусство Feature Engineering в машинном обучении

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



                В предыдущей статье («Введение в машинное обучение с помощью Python и Scikit-Learn») мы с вами познакомились с основными этапами решения задач машинного обучения. Сегодня подробнее поговорим о техниках, которые позволяют заметно увеличить качество разрабатываемых алгоритмов. Одна из таких техник — Feature Engineering. Сразу отметим, что это своего рода искусство, обучиться которому можно только прорешав огромное количество задач. Тем не менее, с опытом вырабатываются некие общие подходы, которыми хотелось бы поделиться в данной статье.
                Читать дальше →
              • Железо на службе у алгоритма

                  Борис Бабаян о прошлом, настоящем и будущем вычислительной техники

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

                  Мне удалось побеседовать на эту тему с Борисом Арташесовичем Бабаяном, директором по архитектуре компании «Интел».

                  Борис Бабаян известен как главный архитектор компьютерных вычислительных систем «Эльбрус-1», «Эльбрус-2» и «Эльбрус-3». Некоторые из его идей использованы в архитектуре Transmeta. В настоящее время Борис возглавляет разработку новой микропроцессорной архитектуры в компании «Интел».

                  Чтобы совсем покончить с формальностями, перечислю звания, степени и должности Бориса: член-корреспондент РАН, доктор технических наук, профессор, заведующий кафедрой «Микропроцессорные технологии» МФТИ, Intel Fellow, лауреат Государственной и Ленинской премий.

                  Дальнейшее повествование построено от лица Бабаяна. Мои скупые комментарии оформлены в виде врезок либо ссылок на интернет-страницы.

                  Поехали!
                • GPRS не помеха для звонков

                    Статья навеяна вопросами о возможности совершать/принимать голосовые сервисы во время открытой GPRS/EDGE сессии, а также негодованием по этому поводу, выраженному в статье о проблемах с неким «овальным» оператором в России :)
                    Дабы развеять некоторые TyMaHные моменты, мы с Вами рассмотрим технические предпосылки, необходимые для реализации возможности принимать/совершать голосовые вызовы при активной GPRS/EDGE сессии.

                    Читать дальше →
                  • OAuth 2.0 простым и понятным языком

                      Логотип OAuth 2.0

                      На хабре уже писали про OAuth 1.0, но понятного объяснения того, что такое OAuth 2.0 не было. Ниже я расскажу, в чем отличия и преимущества OAuth 2.0 и, как его лучше использовать на сайтах, в мобильных и desktop-приложениях.

                      Что такое OAuth 2.0


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

                      Читать дальше →
                    • LifeTrak: мы думали, что у Pebble нет конкурентов

                        Осенью 2014 года в продажу поступит четвертый по счету LifeTrak с индексом R450 (R415). Компания успешно открыла для себя возможности циркуля, и создала первый круглый гаджет в своей продуктовой линейке.

                        При этом столь радикальный подход к форме сопровождается традиционным бережным подходом к «содержанию». Те, кто помнит, как чутко изменялись устройства LifeTrak, то революции от R450 и не ждут, В новом гаджете количество ключевых особенностей, заявленных разработчиком, повысится всего на единицу, с 12 до 13! В общем, часики не для суеверных.

                        Нам, как официальному дистрибьютору LifeTrak в РФ, удалось в числе первых получить новинку и ее протестировать. Что нам понравилось, а что нет в новых часах от LifeTrak — читаем под катом.


                        Осторожно, трафик, много фотографий.
                        Читать дальше →
                      • Map-Reduce на примере MongoDB

                        В последнее время набирает популярность семейство подходов и методологий обработки данных, объединенных общими названиями Big Data и NoSQL. Одной из моделей вычислений, применяемых к большим объемам данных, является технология Map-Reduce, разработанная в недрах компании Google. В этом посте я постараюсь рассказать о том, как эта модель реализована в нереляционной СУБД MongoDB.

                        Что касается будущего нереляционных баз вообще и технологии Map-Reduce в частности, то на эту тему можно спорить до бесконечности, и пост совершенно не об этом. В любом случае, знакомство с альтернативными традиционным СУБД способами обработки данных является полезным для общего развития любого программиста, так же как, к примеру, знакомство с функциональными языками программирования может оказаться полезным и для программистов, работающих исключительно с императивными языками.

                        Нереляционная СУБД MongoDB представляет данные в виде коллекций из документов в формате JSON и предоставляет разные способы обработки этих данных. В том числе, присутствует собственная реализация модели Map-Reduce. О том, насколько целесообразно применять именно эту реализацию в практических целях, будет сказано ниже, а пока ограничимся тем, что для ознакомления с самой парадигмой Map-Reduce эта реализация подходит как нельзя лучше.

                        Итак, что же такого особенного в Map-Reduce?
                        Читать дальше →
                        • +54
                        • 55.4k
                        • 8
                      • Всё, что вы должны знать о прототипах, замыканиях и производительности

                        • Translation
                        • Tutorial

                        Не всё так просто


                        На первый взгляд, JavaScript может показаться достаточно простым языком. Возможно, это из-за достаточно гибкого синтаксиса. Или из-за схожести с другими известными языками, например, с Java. Ну или из-за достаточно малого количества типов данных, по сравнению с Java, Ruby, или .NET.

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

                        В JavaScript поиск данных зависит от двух вещей: прототипного наследования и цепочек областей видимости. Для разработчика понимание этих двух механизмов совершенно необходимо, ибо ведет к улучшению структуры, а, зачастую, ещё и производительности кода.
                        Читать дальше →
                      • 27+ ресурсов для онлайн-обучения


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

                          Статья содержит перечень ресурсов для онлайн-обучения, представляющих интерес преимущественно для программистов.

                          Читать дальше →
                        • Доработка проветривателя или управление вентиляцией от датчика углекислого газа

                            image
                            Уровень углекислого газа (CO2) один из важных показателей качества воздуха в помещении. Еще его уровень очень удобно использовать для управления вентиляцией.

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

                            Читать дальше →