Pull to refresh
21
0
Андрей Шубин @idegree

Senior Software Engineer

Send message

5 экспериментов с WiFi на ESP32

Reading time11 min
Views107K
Привет Хабр.

Платы ESP32 весьма популярны в виду низкой цены, неплохой вычислительной мощности (процессор 200МГц), развитого SDK с поддержкой как MicroPython так и Arduino IDE, наличием GPIO c поддержкой периферии (SPI, I2C и пр) и беспроводной связи (WiFi, Bluetooth). Сегодня мы посмотрим, что можно сделать на такой плате ценой всего лишь около 12$.



Мы рассмотрим разные варианты использования WiFi, от простого коннекта к сети до WiFi-сниффера. Для тестов понадобится любая плата с ESP32 (лучше с OLED-экраном, как на картинке) и Arduino IDE.

Для тех кому интересно как это работает, продолжение под катом.
Читать дальше →
Total votes 32: ↑30 and ↓2+41
Comments43

GO Scheduler: теперь не кооперативный?

Reading time8 min
Views37K
Если вы читали release notes для версии GO 1.14, то возможно заметили несколько довольно интересных изменений в рантайме языка. Вот и меня очень заинтересовал пункт: «Goroutines are now asynchronously preemptible». Выходит что GO scheduler (планировщик) теперь не кооперативный? Что же, после прочтения по диагонали соответствующего proposal любопытство было удовлетворено.

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

image
Читать дальше →
Total votes 46: ↑42 and ↓4+51
Comments9

Асинхронные задания в Django с Celery

Reading time11 min
Views59K
Перевод статьи подготовлен в преддверии старта курса «Web-разработчик на Python».




Если в вашем приложении есть какой-то длительный процесс, вы можете обрабатывать его не в стандартном потоке запросов/ответов, а в фоновом режиме.

К примеру, в вашем приложении пользователь должен отправить картинку-миниатюру (которую, скорее всего, нужно будет отредактировать) и подтвердить адрес электронной почты. Если ваше приложение обрабатывает изображение, а потом отправляет письмо для подтверждения в обработчике запросов, то конечному пользователю придется зачем-то ждать завершения выполнения обеих задач перед тем, как перезагрузить или закрыть страницу. Вместо этого, вы можете передать эти операции в очередь задач и оставить на обработку отдельному процессу, чтобы немедленно отправить пользователю ответ. В таком случае, конечный пользователь сможет заниматься другими делами на стороне клиента во время выполнения обработки в фоновом режиме. Ваше приложение в таком случае также сможет свободно отвечать на запросы других пользователей и клиентов.
Читать дальше →
Total votes 7: ↑6 and ↓1+9
Comments4

Разработка встроенного ПО: введение

Reading time7 min
Views18K
Привет, Хабр! Представляю вашему вниманию перевод статей Chris Svec, оригинал здесь. Публикуется с разрешения автора по лицензии CC-A-NC-ND.

Embedded software engineering 101: введение


Я запускаю цикл статей по обучению разработке встроенного программного обеспечения. Мы начнем с описания простого микроконтроллера, и после того, как Вы поймете, как он работает, разовьем это до понимания работы относительно сложных систем, таких как Fitbit или Nest.
Я назвал эту серию Embedded Software Engineering 101, и она начинается с этой недели прямо здесь в этом блоге.

Продолжайте читать для дальнейших объяснений и подробностей.


Одни строительные блоки на других строительных блоках.
Читать дальше →
Total votes 19: ↑11 and ↓8+10
Comments24

Пол Грэм: «Краткость = сила»

Reading time10 min
Views3.6K
На HackerNews сегодня подняли обсуждение статьи Пола Грэма 2002 года и мы решили воскресить её перевод из небытия.

image


«The quantity of meaning compressed into a small space
by algebraic signs, is another circumstance that facilitates
the reasonings we are accustomed to carry on by their aid.»
— Charles Babbage (1791-1871)


В дискуссии вокруг статьи "Месть ботанов" в рассылке LL1 Пол Прескод высказал мысль, которая не выходит у меня из головы.

Цель языка Python — это регулярность и читабельность, но не краткость .

На первый взгляд, язык программирования скорее не должен претендовать на такое. Насколько я понимаю, краткость (succinctness, лаконичность, компактность) = сила. А если так, то делая подстановку, мы получаем:

Цель языка Python — это регулярность и читабельность, но не сила.

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

Действительно ли краткость = сила? Похоже это важный вопрос, может самый важный вопрос для тех, кто занимается разработкой языков. Я пока не уверен, что ответ на него — просто «да», но для начала это неплохая гипотеза.

Гипотеза


Моя гипотеза состоит в том, что краткость есть сила, или они настолько близки, что за исключением патологических случаев вы можете принять их за нечто идентичное.
Читать дальше →
Total votes 11: ↑8 and ↓3+9
Comments10

Авторизация пользователя при помощи Starlette + Vue.js

Reading time7 min
Views5.2K

Вступление




Задача — создать пример авторизации пользователя с использованием фреймворков Starlette (https://www.starlette.io/) и Vue.js *, который был бы максимально комфортным разработчикам Django для «миграции» в асинхронный стек.

Почему Starlette? В первую очередь скорость. Starlette ультимативно быстр, и в тестах уступает только BlackSheep (https://pypi.org/project/blacksheep/). Во вторых Starlette весьма прост и писать на нем в силу его продуманности легко и приятно.

В качестве ORM мы будем использовать Tortoise ORM (со моделями и выборками «аля Django ORM»).

В качестве сессионного механизма мы будем использовать JWT.

* Описание фронтенда на Vue.js не входит в данную заметку.
Читать дальше →
Total votes 4: ↑3 and ↓1+7
Comments3

Clean Architecture глазами Python-разработчика

Reading time10 min
Views31K
Привет! Меня зовут Евгений, я Python-разработчик. Последние полтора года наша команда стала активно применять принципы Clean Architecture, уходя от классической модели MVC. И сегодня я расскажу о том, как мы к этому пришли, что нам это дает, и почему прямой перенос подходов из других ЯП не всегда является хорошим решением.


Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments26

Шпаргалка по шаблонам проектирования

Reading time2 min
Views1.4M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать дальше →
Total votes 192: ↑179 and ↓13+166
Comments66

10 шагов к успешному Python-проекту

Reading time9 min
Views34K
Материал, перевод которого мы сегодня публикуем, посвящён инструментам, которые позволяют оснащать Python-проекты средствами форматирования кода, тестирования, непрерывной интеграции и анализа зависимостей. Это помогает ускорить процесс разработки, способствует повышению качества, единообразия и безопасности кода. Предполагается, что у читателя этого материала уже есть некоторый опыт Python-разработки и проект на Python, с которым он, в ходе чтения, будет экспериментировать. Если такого проекта у вас нет — здесь можно узнать о том, как подготовить среду разработки и создать Python-пакет. Примеры, которые будут здесь приводиться, подготовлены с использованием macOS и Python 3.7.


Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments4

Лучшие вопросы средней сложности по SQL на собеседовании аналитика данных

Reading time14 min
Views89K
Первые 70% курса по SQL кажутся довольно простыми. Сложности начинаются на остальных 30%.

С 2015 по 2019 годы я прошёл четыре цикла собеседований на должность аналитика данных и специалиста по анализу данных в более чем десятке компаний. После очередного неудачного интервью в 2017 году — когда я запутался в сложных вопросах по SQL — я начал составлять задачник с вопросами по SQL средней и высокой сложности, чтобы лучше готовиться к собеседованиям. Этот справочник очень пригодился в последнем цикле собеседований 2019 года. За последний год я поделился этим руководством с парой друзей, а благодаря дополнительному свободному времени из-за пандемии отшлифовал его — и составил этот документ.

Есть множество отличных руководств по SQL для начинающих. Мои любимые — это интерактивные курсы Codecademy по SQL и Select Star SQL от Цзы Чон Као. Но в реальности первые 70% из курса SQL довольно просты, а настоящие сложности начинаются в остальных 30%, которые не освещаются в руководствах для начинающих. Так вот, на собеседованиях для аналитиков данных и специалистов по анализу данных в технологических компаниях часто задают вопросы именно по этим 30%.

Удивительно, но я не нашёл исчерпывающего источника по таким вопросам среднего уровня сложности, поэтому составил данное руководство.
Читать дальше →
Total votes 23: ↑21 and ↓2+25
Comments17

Создаем интернет-магазин на Nuxt.js 2 пошаговое руководство Часть 2

Reading time13 min
Views17K


Первая часть тут


Продолжаем разработку нашего интернет магазина. В этой части будет:


  • нормальная загрузка картинок по статическим адресам
  • генерация хлебных крошек на клиенте
  • страница товара
  • шапка
  • рабочая кнопка купить с синхронизацией товаров между вкладками (и сессиями)
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments10

Создаем интернет-магазин на Nuxt.js 2 пошаговое руководство Часть 1

Reading time27 min
Views84K


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


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


В этой статье я хочу поделиться как создать примитивный интернет-магазин:


  • Который будет быстро загружаться у пользователя.
  • Который полюбит Google (или любой другой поисковик) с точки зрения SEO.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments9

Открытый курс машинного обучения. Тема 1. Первичный анализ данных с Pandas

Level of difficultyEasy
Reading time15 min
Views1M


Открытый курс машинного обучения mlcourse.ai сообщества OpenDataScience – это сбалансированный по теории и практике курс, дающий как знания, так и навыки (необходимые, но не достаточные) машинного обучения уровня Junior Data Scientist. Нечасто встретите и подробное описание математики, стоящей за используемыми алгоритмами, и соревнования Kaggle Inclass, и примеры бизнес-применения машинного обучения в одном курсе. С 2017 по 2019 годы Юрий Кашницкий yorko и большая команда ODS проводили живые запуски курса дважды в год – с домашними заданиями, соревнованиями и общим рейтингом учаcтников (имена героев запечатлены тут). Сейчас курс в режиме самостоятельного прохождения.

Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments61

6 лучших практик безопасности для Go

Reading time8 min
Views5.8K
Перевод статьи подготовлен специально для студентов курса «Разработчик Golang».





Популярность Golang за последние годы существенно увеличилась. Успешные проекты, такие как Docker, Kubernetes и Terraform, сделали большую ставку на этот язык программирования. В последнее время Go де-факто стал стандартом для создания инструментальных средств командной строки. Что касается безопасности, то Go успешно справляется согласно своим отчетам об уязвимостях, имея только один реестр CVE с 2002 года.

Однако отсутствие уязвимостей не означает, что язык программирования является сверхбезопасным. Мы, люди, можем создавать небезопасные приложения, если мы не следуем определенным правилам. Например, зная правила написания безопасного кода от OWASP, мы можем задуматься о том, как применять эти методы при использовании Go. И это именно то, чем я займусь в этот раз. В этом посте я покажу вам шесть практик, которые необходимо принимать во внимание при разработке с применением Go.
Читать дальше →
Total votes 17: ↑7 and ↓100
Comments11

Разработка более быстрых приложений на Vue.js

Reading time14 min
Views24K
JavaScript — это душа современных веб-приложений. Это — главный ингредиент фронтенд-разработки. Существуют различные JavaScript-фреймворки для создания интерфейсов веб-проектов. Vue.js — это один из таких фреймворков, который можно отнести к довольно популярным решениям.

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



В этом материале будет описан процесс создания простого Vue.js-приложения, предназначенного для работы с заметками о неких задачах. Вот репозиторий фронтенда проекта. Вот — репозиторий его бэкенда. Мы, по ходу дела, разберём некоторые мощные возможности Vue.js и вспомогательных инструментов.
Читать дальше →
Total votes 29: ↑20 and ↓9+23
Comments11

Все, что вы хотели узнать про области видимости в Python, но стеснялись спросить

Reading time4 min
Views74K
В преддверии старта нового потока по курсу «Разработчик Python», решили поговорить про области видимости в Python. Что из этого вышло? — Читайте в материале ниже.




Сегодня мы будем говорить о важных теоретических основах, которые необходимо понимать и помнить, чтобы писать грамотный, читаемый и красивый код. Мы будем вести речь об областях видимости переменных. Эта статья будет полезна не только новичкам, но и опытным программистам, которые пришли в Python из другого языка и хотят разобраться с его механиками работы.
Читать дальше →
Total votes 13: ↑7 and ↓6+4
Comments19

Пол Грэм: «Главная идея в вашей голове» (The Top Idea in Your Mind)

Reading time5 min
Views8.4K
Недавно я понял, что недооценивал важность того, о чем люди думают в душе по утрам. Я и раньше знал, что в это время в голову часто приходят отличные идеи. Теперь я скажу больше: вряд ли вы сможете сделать что-то действительно выдающееся, если не будете думать об этом в душе.

Вероятно, каждый, кто работал над сложными проблемами, знаком с этим явлением: вы прилагаете все усилия, чтобы разобраться, терпите неудачу, начинаете заниматься чем-то другим – и вдруг видите решение. Это мысли, которые приходят в голову, когда вы не пытаетесь думать целенаправленно. Я всё более уверен, что для решения трудных задач такой способ мышления не просто полезен, но необходим. Проблема в том, что при этом вы можете только косвенно управлять своим мыслительным процессом. [1]

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

Я понял это после того, как мою голову дважды на долгое время захватывала идея, которую я не хотел бы там видеть.
Читать дальше →
Total votes 22: ↑17 and ↓5+23
Comments2

Домашний веб-сервер на солнечных батареях отработал 15 месяцев: аптайм 95,26%

Reading time10 min
Views25K

Первый прототип солнечного сервера с контроллером заряда. Фото: solar.lowtechmagazine.com

В сентябре 2018 году энтузиаст из Low-tech Magazine запустил проект «низкотехнологичного» веб-сервера. Задача была снизить энергопотребление настолько, чтобы домашнему self-hosted серверу хватало одной солнечной панели. Это непросто, ведь сайт должен работать 24 часа в сутки. Посмотрим, что получилось в итоге.

Можете зайти на сервер solar.lowtechmagazine.com, проверить текущее энергопотребление и уровень заряда аккумулятора. Сайт оптимизирован на минимальное количество запросов со страницы и минимальный трафик, так что должен выдержать скачок посещаемости с Хабра. По расчётам разработчика, расход энергии на одного уникального посетителя составляет 0,021 Вт⋅ч.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments38

Современный курс по Node.js в 2020

Reading time4 min
Views110K


Дорогие товарищи инженеры, сообщество Метархия представляет вашему вниманию современный курс по Node.js, который включает глубокий разбор всех возможностей и аспектов платформы. Основной упор делается на то, как создавать надежные высоконагруженные сервера приложений и API без привязки к конкретному фреймворку и даже протоколу, т.е. абстрагировать бизнес-логику в отдельный слой. К лекциям прикреплено множество примеров кода, демонстрирующих гибкую структуру приложений и архитектурные приемы, в том числе работу с СУБД через слой доступа к данным, создание интерактивных приложений на вебсокетах, обеспечение безопасности, Graceful shutdown, межпроцессовое взаимодействие, предотвращение утечек памяти, масштабирование и кластеризацию при помощи процессов и потоков. На текущий момент в курсе 38 лекций (около 35 и ½ часов видео), 37 репозиториев с примерами кода, 4 PDF со слайдами. Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию.

Читать дальше →
Total votes 40: ↑40 and ↓0+40
Comments15

Использование asyncio для создания асинхронных драйверов устройств на MicroPython v.1.12

Reading time43 min
Views14K
Изученая возможности MicroPython для своих целей натолкнулся на одну из реализаций библиотеки asyncio и, после недолгой переписки с Piter Hinch — автором библиотеки, понял, что мне необходимо глубже разобраться с принципами, базовыми понятиями и типичными ошибками использования методов асинхронного программирования. Тем более, что раздел для начинающих — как раз для меня.

Летом 2020 года вышло обновление этой библиотеки, описанное в asyncio v3, при наличии времени и заинтересованности непременно дополню перевод обновленного Руководства.


Это руководство предназначено для пользователей, имеющих разный уровень опыта работы с asyncio, в том числе содержит специальный раздел для начинающих.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments0

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity