Search
Write a publication
Pull to refresh
0
0
Send message

ESP8266 с чего начать или первый опыт

Reading time7 min
Views338K
В этой статье я хочу поделиться опытом того, что делать, когда в руки впервые попадают платки ESP8266. Сразу оговорюсь, что ковыряние в таких железках, равно как и программирование, это моё хобби за мои деньги и в свободное от основной деятельности время. Поэтому прошу отнестись с определенной скидкой к степени критики данного материала.

Почему я это решил написать? Всё просто: я убил 3 недели времени на то, чтобы разобраться с чего начинать и как это работает. Кроме того, попробую собрать небольшой каталог ссылок по работе с ESP8266. Надеюсь, что эта информация поможет сэкономить вам хоть толику времени.

image

Итак, приступим!
Читать дальше →

Курс MIT «Безопасность компьютерных систем». Лекция 1: «Вступление: модели угроз», часть 1

Reading time15 min
Views144K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3

Создание мышки WX-Mouse в корпусе razer Mamba TE

Reading time5 min
Views14K


Проект W-Mouse дорос до использования топового сенсора PMW3360. W-Mouse — это мышь разработанная человеком с ником Walkie, включая схему и программное обеспечение.

Раньше использовались сенсоры фирмы avago — adns-30x0, adns-60x0, adns-9x00 совместно с контролером atmega32u4.

Новый вариант использует топовый сенсор 3360 и контролер atXmega128a4u и получил название WX-Mouse.

Основные достоинства W-Mouse

  • Точность работы сенсора, обеспечивается, в том числе установкой сенсора на высоту наилучшей фокусировки, это возможно т.к. W-Mouse умеет показывать графическую картинку считываемую непосредственно с сенсора т.е. видим поверхность коврика «глазами» сенсора.
  • Настройка оптимальной работы сенсора на конкретной поверхности.
  • Настройка динамики движения. Например можно настроить так, чтобы на низких скоростях смещение было более «подробное», а при увеличении скорости мыши, смещение ускорялось.

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

Или например можно настроить, чтобы прицел был более отзывчивым в начале движения, это полезно для отслеживания двигающейся «туда-сюда» цели (трекинг цели).

  • Возможность использования настраиваемой фильтрации — удобно чертить прямые линии в CAD программах.

Шесть типов облаков, которые нужно знать – и что они рассказывают о погоде

Reading time4 min
Views541K


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

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

Как создать нейросеть всего из 30 строк JavaScript-кода

Reading time4 min
Views26K


Перевод How to create a Neural Network in JavaScript in only 30 lines of code.

В этой статье мы рассмотрим, как можно создать и обучить нейросеть с помощью библиотеки Synaptic.js, позволяющей проводить глубокое обучение в связке Node.js с браузером. Давайте создадим простейшую нейросеть, решающую XOR-уравнение. Также можете изучить специально написанный интерактивный туториал.
Читать дальше →

Каналы связи L2 и L3 VPN — Отличия физических и виртуальных каналов разного уровня

Reading time7 min
Views252K


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

Исторически, в то время мир вошел в настоящую компьютерную революцию v. 3.0. – старт облачных технологий распределенного хранения и обработки данных. Причем, если предыдущей «второй революцией» был массовый переход к технологиям «клиент-сервер» в 80-х годах, то первой можно считать начало одновременной работы пользователей с использованием отдельных терминалов, подключенных к т.н. «мейнфреймам» (в 60-х прошлого столетия). Эти революционные перемены произошли мирно и незаметно для пользователей, но затронули весь мир бизнеса вместе с информационными технологиями.

При переносе IT-инфраструктуры на облачные платформы и удаленные ЦОД (центры обработки данных) ключевым вопросом сразу же становится организация надежных каналов связи от клиента к дата-центрам. В Сети нередко встречаются предложения провайдеров: «физическая выделенная линия, оптоволокно», «канал L2», «VPN» и так далее… Попробуем разобраться, что за этим стоит на практике.
Читать дальше →

Защита от DDoS атаки на уровне веб-приложений

Reading time4 min
Views10K

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


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

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

Pwn iNt All! Находим уязвимости в скриптовых движках и вскрываем usermode-механизмы защиты Windows. Часть 1

Reading time9 min
Views6.1K

Операционные системы – дело тонкое. И очень защищенное! Обойти их механизмы защиты — дело сложное и трудоемкое, даже слегка похожее на волшебство. Но говорят, что сын маминой подруги уже нашел несколько RCE-уязвимостей, написал эксплойт, и обошел все защитные механизмы. Попробуем и мы!

Сделаем это на примере задания № 11 из прошедшего NeoQUEST-2018. Задачка реалистичная — рассмотрим “живой” сценарий удаленного выполнения кода, похожий на тот, что возникает в процессе эксплуатации Javascript-движков в браузерах. Будем искать уязвимости в некотором интерпретаторе, реализовывать их с получением ARW-примитива, а в результате — обойдем защиту ОС Windows пользовательского режима. Задание оказалось крайне сложнопроходимым интересным, поэтому посвятим ему целый цикл статей с подробным описанием пути к успеху.

По легенде, у нас имеется бинарник программы, а также адрес, на котором крутится подобный сервис. Также упомянуто о том, что первой ступенькой к успеху является некая «ключевая» функция.

Итак, приступим!
Читать дальше →

Как работает JS: анимация средствами CSS и JavaScript

Reading time12 min
Views92K
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы

Анимация — неотъемлемая часть современных веб-интерфейсов. От того, насколько она уместна, привлекательна и производительна, зависит немалая доля впечатлений пользователя от работы с сайтом или веб-приложением. Сегодня, в переводе тринадцатой части серии материалов, посвящённых особенностям JavaScript и связанных с ним технологий, мы поговорим об анимации, выполняемой средствами CSS и JS, а также обсудим подходы к её оптимизации.

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

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

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

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


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

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

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

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

Мега-Учебник Flask, Часть XX: Магия JavaScript

Reading time14 min
Views29K

(издание 2018)


Miguel Grinberg




Туда Сюда


Это двадцатый выпуск серии Мега-учебника Flask, в котором я собираюсь добавить всплывающее окно, появляющееся при наведении указателя мыши на имя пользователя.

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

Контроль сложности и архитектура UDF

Reading time21 min
Views18K

Сложность — главный враг разработчика. Есть такая гипотеза, хотя я бы отнес ее к аксиомам, что сложность любого программного продукта с течением времени, в процессе добавления нового функционала неизбежно растет. Растет она пока не достигнет порога при котором любое вносимое изменение гарантированно, т.е. с вероятностью близкой к 100%, внесет ошибку. Есть также дополнение к этой гипотезе — если такой проект продолжать и далее поддерживать, то рано или поздно он достигнет такого уровня сложности, что нужное изменение внести будет невозможно вообще. Невозможно будет придумать решение, не содержащее в себе какие либо костыли, заведомые антипаттерны.
Читать дальше →

Оцифровка звука на STM32 (АЦП+DMA) и кодирование в Speex для передачи

Reading time7 min
Views50K
image В продолжение своей вчерашней статьи на Geektimes хочу рассказать подробнее про реализацию оцифровки и кодирования звука на микроконтроллере STM32.

В статье покажу как настроить проект в STM32CubeMX, собирать данные с АЦП в два кольцевых буфера посредствам DMA, подключить библиотеку Speex и кодировать данные. Возможно многим материал покажется весьма очевидным, но надеюсь хоть кому-то он будет полезен.

Прошу под кат.
Читать дальше →

Мышление в стиле Ramda: Декларативное программирование

Reading time8 min
Views12K
1. Первые шаги
2. Сочетаем функции
3. Частичное применение (каррирование)
4. Декларативное программирование
5. Бесточечная нотация
6. Неизменяемость и объекты
7. Неизменяемость и массивы
8. Линзы
9. Заключение

Данный пост является четвёртой частью серии о функциональном програмировании под названием «Мышление в стиле Ramda».

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

Когда мы начинаем писать маленькие функциональные строительные блоки и объединять их, мы обнаруживаем, что нам необходимо написать множество функций, которые будут оборачивать операторы JavaScript, такие как арифметика, сравнение, логика и управление потоком. Это может показаться утомительным, но мы находимся за спиной Ramda.
Читать дальше →

HMD + Kinect = Дополненная виртуальность

Reading time5 min
Views10K

В этой заметке я хочу рассказать об идее и Proof-Of-Concept добавления объектов реального мира в Виртуальную Реальность.

На мой взгляд, описанная идея в ближайшее время будет реализована всеми игроками VR-рынка. ИМХО, единственная причина, по которой это до сих пор не сделано — желание выкатить идеальное решение, а это не так-то просто.

SEO оптимизация статьи: актуальный план

Reading time12 min
Views111K

Осторожно! Лонгрид.


Речь пойдет об оптимизации страницы статьи для поисковых систем. Данный материал больше подходит для продвижения в Яндексе.


Специально для Хабровцев, в заключении есть список всех разделов применимых к Хабрастатьям.


27.04.2018 UPD// Эта страница уже в ТОПе Яндекса "оптимизация статьи". И в топе Google.


SEO оптимизация статьи
Читать дальше →

На что стоит променять Cortex-M3?

Reading time31 min
Views57K
ARM Cortex-M3 — это, пожалуй, самое популярное на сегодняшний день 32-разрядное процессорное ядро для встраиваемых систем. Микроконтроллеры на его базе выпускают десятки производителей. Причина этому — универсальная, хорошо сбалансированная архитектура, а следствие — непрерывно растущая база готовых программных и аппаратных решений.

Ругать Cortex-M3, в общем-то, не за что, но сегодня я предлагаю подробно рассмотреть Cortex-M4F — расширенную версию всеми любимого процессорного ядра. Перенести проект с микроконтроллера на базе Cortex-M3 на кристалл на базе Cortex-M4F довольно просто, а для ряда задач такой переход стоит затраченных усилий.

Под катом краткий обзор современных Cortex'ов, обстоятельное описание блоков и команд, отличающих Cortex-M4F от Cortex-M3, а также сравнение процессорных ядер на реальной задаче — будем измерять частоту мерцания лампы на микроконтроллерах с разными ядрами.

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

Разработка AI для пошаговой игры на Node.js (часть 2)

Reading time16 min
Views8.3K
И снова здравствуйте, друзья!

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

А я перейду к рассказу о следующем этапе работы!
Читать дальше →

Сегодня стать ZCPE может каждый

Reading time2 min
Views5.8K
Пользуясь случаем, хотелось бы лишний раз напомнить о существовании сертификации PHP инженеров. На дворе уже 2018й и мир увидела PHP 7.2, сертификация постоянно обновляется. Текущая версия: ZCPE-2017. Получить сертификат сейчас, или все же дождаться выхода обновленной версии — решать вам.
Читать дальше →

Слухи об отмене теоремы Котельникова сильно преувеличены

Reading time15 min
Views34K

tl;dr:


Учёные из Колумбийского университета во главе с Кеном Шепардом и Рафой Юсте заявили, что обошли столетнюю теорему отсчётов (теорема Найквиста — Шеннона, теорема дискретизации, в русскоязычной литературе — теорема Котельникова): 1, 2. Теперь фильтры защиты от наложения стали необязательными, ведь шум от наложения спектров можно восстановить после дискретизации. Звучит безумно? Да. Я предлагаю $1000 первому, кто докажет, что это не безумие. Чтобы получить награду, обязательно прочтите до конца.

«Фильтруй перед дискретизацией!»


Эта мантра насмерть вбита в головы поколений студентов-инженеров. Здесь под «дискретизацией» подразумевается преобразование непрерывной функции времени в серию дискретных значений. Такой процесс происходит везде, где компьютер оцифровывает сигнал из реального аналогового мира. «Фильтровать» — значит удалять из сигнала высокочастотные составляющие. Поскольку этот процесс происходит в аналоговом мире, то требует реального аналогового оборудования: цепей из резисторов, конденсаторов и усилителей. Создание такой цепи может стать утомительным и трудоёмким процессом, например, если на электронных микросхемах не хватает места. Научная группа Шепарда рассмотрела это ограничение в контексте устройства для записи сигналов от нервных клеток.

Теперь авторы заявляют, что изобрели «парадигму сбора данных, которая не требует фильтров для защиты от наложения для каждого канала, тем самым преодолевая ограничения масштабирования существующих систем». По сути они говорят, что вместо аппаратных цепей можно использовать программное обеспечение, которое работает на цифровой стороне уже после дискретизации. «Ещё одним преимуществом такого подхода к сбору данных является то, что все шаги обработки сигнала (разделение каналов и удаление) реализованы в цифровом виде», сказано в научной работе.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity