• Ещё большее ускорение WebAssembly: новый потоковый и многоуровневый компилятор в Firefox

    • Перевод
    Оба авторе: Лин Кларк — разработчик в группе Mozilla Developer Relations. Занимается JavaScript, WebAssembly, Rust и Servo, а также рисует комиксы о коде.

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

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

    Firefox 58 также включает в себя двухуровневый компилятор. Новый базовый компилятор компилирует код в 10–15 раз быстрее, чем оптимизирующий компилятор.

    Вместе эти два изменения означают, что мы компилируем код быстрее, чем он поступает из сети.



    На десктопе мы компилируем 30-60 МБ кода WebAssembly в секунду. Это быстрее, чем сеть доставляет пакеты.
    Читать дальше →
  • CoffeeMiner: взлом WiFi для внедрения криптомайнера в HTML-страницы

    • Перевод
    Предупреждение: эта статья и проект имеют исключительно образовательные цели.

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

    Цель этой статьи — объяснить, как провести атаку MITM (человек посередине) для внедрения определённого JavaScript-кода в страницы HTML, чтобы заставить все устройства, подключённые к WiFi, майнить криптовалюту для злоумышленника.

    Задача состоит в создании скрипта, который проводит автономную атаку в сети WiFi. Это то, что мы назвали CoffeeMiner, поскольку атаки такого типа можно проводить в кафе.
    Читать дальше →
    • +11
    • 7,1k
    • 2
  • Как читать математику

    • Перевод
    Математика — это «язык, который ни читать, ни понять невозможно без инициации» (Эдвард Ротштейн, «Эмблемы ума»)

    Протокол чтения — набор стратегий, которые должен использовать читатель для получения всех преимуществ от чтения текста. Набор стратегий для поэзии отличается от художественной литературы, а стратегии чтения художественной литературы отличаются от научных статей. Будет нелепо читать художественную книгу и задаваться вопросом, какие источники позволили автору утверждать, что главный герой — загорелый блондин; но будет неправильно читать научную литературу и не задать такой вопрос. Этот протокол чтения расширяется на протоколы просмотра и прослушивания в живописи и музыке. На самом деле большинство вводных курсов по литературе, музыке и искусству посвящено изучению этих протоколов.

    Для математики существует особый протокол чтения. Как мы учимся читать литературу, так и математику мы должны научиться читать. Школьникам следует изучать протокол чтения для математики так же, как они учатся правилам чтения романа или стихотворения, учатся понимать музыку и живопись. Замечательная книга «Эмблемы ума» Эдварда Ротштейна выявляет взаимосвязь между математикой и музыкой, неявно затрагивая протоколы чтения для математики.
    Читать дальше →
  • Итоги развития компьютерного зрения за один год

    • Перевод
    Часть первая. Классификация/локализация, обнаружение объектов и слежение за объектом

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

    Введение


    Компьютерным зрением обычно называют научную дисциплину, которая даёт машинам способность видеть, или более красочно, позволяя машинам визуально анализировать своё окружение и стимулы в нём. Этот процесс обычно включает в себя оценку одного или нескольких изображений или видео. Британская ассоциация машинного зрения (BMVA) определяет компьютерное зрение как «автоматическое извлечение, анализ и понимание полезной информации из изображения или их последовательности».

    Термин понимание интересно выделяется на фоне механического определения зрения — и демонстрирует одновременно и значимость, и сложность области компьютерного зрения. Истинное понимание нашего окружения достигается не только через визуальное представление. На самом деле визуальные сигналы проходят через оптический нерв в первичную зрительную кору и осмысливаются мозгом в сильно стилизованном смысле. Интерпретация этой сенсорной информации охватывает почти всю совокупность наших естественных встроенных программ и субъективного опыта, то есть как эволюция запрограммировала нас на выживание и что мы узнали о мире в течение жизни.
    Читать дальше →
  • Составляем DNS-запрос вручную

    • Перевод
    • Tutorial
    Об авторе. Джеймс Рутли — бэкенд-разработчик в компании Monzo.

    В этой статье мы изучим двочиный формат сообщений Domain Name Service (DNS) и напишем вручную одно сообщение. Это больше, чем вам нужно для использования DNS, но я подумал, что для развлечения и в образовательных целях интересно посмотреть, что находится под капотом.

    Мы узнаем, как:

    • Написать запросы DNS в двоичном формате
    • Отправить сообщение в теле датаграммы UDP с помощью Python
    • Прочитать ответ от DNS-сервера

    Писать в двоичном формате кажется сложным, но в реальности я обнаружил, что это вполне доступно. Документация DNS хорошо написана и понятна, а писать мы будем маленькое сообщение — всего 29 байт.
    Читать дальше →
    • +21
    • 12,9k
    • 8
  • Производительность консолей и оболочек

    • Перевод
    Есть хорошее демо MSR от 2012 года, которое показывает эффект времени отклика при работе на планшете. Если не хотите смотреть три минуты видео, они по сути создали устройство, которое симулирует произвольные задержки вплоть до доли миллисекунды. Задержка 100 мс (0,1 секунды), типичная для современных планшетов, выглядит ужасно. На 10 мс (0,01 секунды) задержка заметна, но уже можно нормально работать, а при задержке менее 1 мс всё просто идеально — как будто вы пишете карандашом по бумаге. Если хотите проверить это самостоятельно, возьмите любой Android-планшет со стилусом и сравните с нынешним поколением iPad Pro со стилусом Apple. У устройства Apple время отклика намного больше 10 мс, но разница всё равно кардинальная — она такая, что я реально использую новые iPad Pro для записи заметок и рисования диаграмм, в то время как Android-планшеты считаю совершенно неприемлемыми в качестве замены карандашу и бумаге.

    Что-то похожее вы увидите в шлемах VR с разными задержками. 20 мс выглядит нормально, 50 мс лагает, а 150 мс уже непереносимо.

    Странно, но редко приходится слышать жалобы на задержку ввода с клавиатуры или мыши. Казалось бы, причиной может быть то, что ввод с клавиатуры и мыши очень быстрый — и происходит практически мгновенно. Часто мне говорят, что так оно и есть, но я думаю, что ситуация совершенно обратная. Идея того, что компьютеры быстро реагируют на ввод данных — настолько быстро, что человек не замечает разницы — самое распространённое заблуждение, которое мне приходилось слышать от профессиональных программистов.
    Читать дальше →
  • Сравнение отклика клавиатур

    • Перевод
    Если вы посмотрите на «игровые» клавиатуры, то многие из них продаются по цене $100 или выше на заявлениях об их быстроте. В рекламных объявлениях можно встретить такие заявления:

    • Специально разработанные клавиши, которые сокращают время регистрации нажатия
    • В 8 РАЗ БЫСТРЕЕ — скорость опроса 1000 Гц: время отклика 0,1 миллисекунды
    • Получи абсолютное преимущество над своими противниками со сверхбыстрой работой клавишных переключателей 45g и срабатыванием на 40% быстрее, чем у стандартных переключателей Cherry MX Red
    • Самая высокая в мире частота опроса 1000 Гц
    • Самая быстрая в мире игровая клавиатура, частота опроса 1000 Гц, время отклика 0,001 секунды
    Несмотря на все эти заявления, я нашёл только одного человека, который публично протестировал время отклика клавиатуры — и он проверил только две клавиатуры. Вообще, по моему глубокому убеждению, если кто-то делает заявления о производительности без бенчмарков, то вероятно эти заявления не являются правдой, как непротестированный (или иным образом проверенный) программный код следует по умолчанию считать нерабочим.

    Ситуация с игровыми клавиатурами во многом напоминает разговор с продавцом машин:

    Продавец: Эта машина супербезопасна! У неё двенадцать подушек безопасности!
    Я: Это хорошо, но как она выглядит в краш-тестах?
    Продавец: Двенадцать подушек безопасности!


    Конечно, у игровых клавиатур частота опроса 1000 Гц, и что из этого?
    Читать дальше →
  • Вредные заклинания в программировании

    • Перевод
    С тех пор, как я посмотрел легендарное видео Wat Гэри Бернхардта, меня завораживает странное поведение некоторых языков программирования. Некоторые из них таят больше сюрпризов, чем другие. Например, для Java написана целая книга с описанием пограничных ситуаций и странной специфики. Для C++ вы просто можете почитать сами спецификации всего за $200.

    Далее поделюсь с вами моей коллекцией самых неожиданных, забавных и всё-таки валидных «заклинаний» программирования. По сути, использование этих особенностей поведения ЯП считается пагубным, поскольку ваш код никоим образом не должен быть непредсказуемым. Хорошо, что многие линтеры уже осведомлены и готовы посмеяться над вами, если попробуете какое-то из перечисленных дурачеств. Но как говорится, знание — сила, так что начнём.
    Читать дальше →
  • Время отклика компьютеров: 1977−2017

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

    Компьютер Отклик
    (мс)
    Год Тактовая
    частота
    Кол-во
    транзисторов
    Apple 2e 30 1983 1 МГц 3,5 тыс.
    TI 99/4A 40 1981 3 МГц 8 тыс.
    Haswell-E 165 Гц 50 2014 3,5 ГГц 2 млрд
    Commodore Pet 4016 60 1977 1 МГц 3,5 тыс.
    SGI Indy 60 1993 0,1 ГГц 1,2 млн
    Haswell-E 120 Гц 60 2014 3,5 ГГц 2 млрд
    ThinkPad 13 ChromeOS 70 2017 2,3 ГГц 1 млрд
    iMac G4 OS 9 70 2002 0,8 ГГц 11 млн
    Haswell-E 60 Гц 80 2014 3,5 ГГц 2 млрд
    Mac Color Classic 90 1993 16 МГц 273 тыс.
    PowerSpec G405 Linux 60 Гц 90 2017 4,2 ГГц 2 млрд
    MacBook Pro 2014 100 2014 2,6 ГГц 700 млн
    ThinkPad 13 Linux chroot 100 2017 2,3 ГГц 1 млрд
    Lenovo X1 Carbon 4G Linux 110 2016 2,6 ГГц 1 млрд
    iMac G4 OS X 120 2002 0,8 ГГц 11 млн
    Haswell-E 24 Гц 140 2014 3,5 ГГц 2 млрд
    Lenovo X1 Carbon 4G Win 150 2016 2,6 ГГц 1 млрд
    Next Cube 150 1988 25 МГц 1,2 млн
    PowerSpec G405 Linux 170 2017 4,2 ГГц 2 млрд
    Пакет вокруг света 190
    PowerSpec G405 Win 200 2017 4,2 ГГц 2 млрд
    Symbolics 3620 300 1986 5 МГц 390 тыс.
    Читать дальше →
  • Будущее интернет-протоколов

    • Перевод
    Автор — Марк Ноттингем, член Internet Architecture Board и сопредседатель рабочих групп IETF по HTTP и QUIC


    Когда Интернет стал популярным в 90-е годы, то основному трафику хватало всего нескольких протоколов: IPv4 маршрутизировал пакеты, TCP превращал их в соединения, SSL (позже TLS) шифровал эти соединения, DNS именовал хосты для подключения, а HTTP как прикладной протокол часто использовал их все.

    За многие годы эти ключевые интернет-протоколы изменились совсем незначительно: в HTTP добавилось несколько новых заголовков и методов, TLS медленно сменил пару минорных версий, TCP приспособился к управлению заторами, а в DNS появились функции вроде DNSSEC. Сами протоколы в работе оставались практически неизменными очень долгое время (кроме IPv6, который уже получает достаточное внимание в сообществе операторов связи).

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

    Теперь ключевые интернет-протоколы претерпят серьёзные изменения. Хотя они в целом должны быть совместимы с нынешним Интернетом (иначе не получат распространения), но это может иметь разрушительные последствия для тех, кто осмелился использовать недокументированные свойства протоколов или сделал предположение о неизменности протоколов в будущем.
    Читать дальше →
    • +18
    • 7,1k
    • 5