Как стать автором
Обновить
4
0

Пользователь

Отправить сообщение

Telogreika v1.0 — носимое устройство персонального обогрева на Arduino

Время на прочтение8 мин
Количество просмотров31K
image

На картинке скрин из нашумевшей игры про не очень далёкое будущее. Заметили странный воротник у типа? Думаете что это такое? Признаюсь честно, я совсем не пытался выяснить назначение этого устройства по сюжету, но мне сразу подумалось, что художник пытался изобразить ИНФРАКРАСНЫЙ ОБОГРЕВАТЕЛЬ! По-моему, логично. Сколько бы вы не протезировали органов и сколько бы дырок в черепе под нейролинк не насверлил вам Илон Машк, остатки вашей биологической плоти будут предательски старомодно мёрзнуть, создавая всем хорошо знакомое угнетающее ощущение «божечки, я сейчас точно кони двину от холода, если этот автобус не приедет в ближайшую минуту!»

Заходи под кат, чтобы узнать мои мысли по поводу существующих систем персонального обогрева и почему электрические греющие куртки это тупик. Всех с первой зимней пятницей!)
Всего голосов 167: ↑165 и ↓2+205
Комментарии190

Как я написал приложение, которое за 15 минут делало то же самое, что и регулярное выражение за 5 дней

Время на прочтение6 мин
Количество просмотров43K

От переводчика


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

Несколько недель назад вышла замечательная англоязычная статься об open-source python-библиотеки FlashText. Эта библиотека предоставляла быстрое работающее решение задачи поиска и замены ключевых слов в тексте.

Т.к. на русском материалов подобной тематики не так много, то я решил перевести эту статью на русский. Под катом вас ждет описание проблемы, разбор принципа работы библиотеки а так же примеры тестов производительности.
Поехали
Всего голосов 72: ↑57 и ↓15+42
Комментарии78

Как программировать если совсем не хочется? План спасения на случай перегорания или дедлайна

Время на прочтение8 мин
Количество просмотров77K


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

Читать дальше →
Всего голосов 39: ↑35 и ↓4+40
Комментарии55

Как сделать ваш код на Python быстрым и асинхронным с Sanic

Время на прочтение6 мин
Количество просмотров15K

Всем привет, в этой статье я расскажу о создании простых асинхронных проектов на фреймворке Sanic.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Пишем голосового ассистента на Python

Время на прочтение16 мин
Количество просмотров171K

Введение


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

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

image
Читать дальше →
Всего голосов 10: ↑9 и ↓1+12
Комментарии5

Электронная книга своими руками на STM32H750 от А до Э

Время на прочтение22 мин
Количество просмотров38K


В этой статье я хочу поделиться опытом разработки электронной книги с использованием недорогого контроллера STM32H750VB, распространенных дискретных компонентов и относительно недорогого дисплея E-Ink. Статья будет большой, так как приведены будут все процессы от постановки задачи до получения первой версии устройства, способного выполнять поставленную задачу. Все будет снабжено схемами, трассировками, кодом и комментариями. Почему в названии от «от А до Э»? Потому что нельзя просто так взять и сделать конечный продукт без ошибок и недоделок.

Читать дальше →
Всего голосов 127: ↑127 и ↓0+127
Комментарии79

Ищем простые числа до триллиона за тридцать минут

Время на прочтение21 мин
Количество просмотров25K
image

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

Сегодня я хотел бы поделиться с вами различными вариантами реализации поиска простых чисел на языке C#, начиная с классических алгоритмов — решета Эратосфена, Сундарама и Аткина, и кончая различными оптимизациями (сегментация, факторизация). Особый упор я делал на простоту: самый быстрый из алгоритмов, который мне удалось получить, содержит 120 строк кода и ищет простые числа до триллиона меньше, чем за 30 минут, а до миллиарда — меньше, чем за секунду (это далеко от производительности лучших из существующих библиотек по поиску простых чисел, но эти библиотеки обычно содержат свыше 4000 строк кода).
В заключение мы применим самую быструю реализацию для поиска максимального расстояния между двумя соседними простыми числами до триллиона. Прежде чем заходить под кат, я предлагаю вам попытаться угадать ответ. Для сравнения, для простых чисел до 100 максимальное растояние равно 8 (между соседними простыми числами 89 и 97), а до тысячи — 20 (между 887 и 907).

Весь исходный код можно найти на гитхабе.
Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии14

Кунг-фу стиля Linux: мониторинг дисковой подсистемы

Время на прочтение5 мин
Количество просмотров41K
Если, работая в Linux, нужно быстро взглянуть на сведения о работающих процессах — можно воспользоваться командой top, или — что немного лучше — командой htop. А как быть, если надо получить данные о состоянии дисковой подсистемы? Решить эту задачу помогут специализированные инструменты, некоторые из которых распространены далеко не так широко, как top.


Читать дальше →
Всего голосов 28: ↑25 и ↓3+36
Комментарии15

Стабилизация растений для ленивых романтиков. Ну и гиков тоже

Время на прочтение8 мин
Количество просмотров103K

Думаю, это очень классная история, когда ты подарил цветы, а они не вянут целый год!

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

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

Читать далее
Всего голосов 91: ↑89 и ↓2+129
Комментарии78

Играем в Doom в среде VMware ESXi на Raspberry Pi

Время на прочтение2 мин
Количество просмотров7.7K

Недавно мы опубликовали статью о VMware ESXi на Raspberry Pi. В начале октября разработчики анонсировали техническое превью гипервизора VMware ESXi на архитектуре aarch64 под названием ESXi-Arm-Fling.

Повторять суть той статьи не будем, вспомним лучше основной вывод — гипервизор на Raspberry Pi нужен для того, чтобы «обкатать» технологию работы ESXi на ARM-процессорах. Но еще можно развлечься. Если у вас есть свободное время, попробуйте тряхнуть стариной, поиграв в Doom в среде VMware ESXi на Raspberry Pi. Под катом — подробности, как это сделать.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии0

Пишем бот для пазл игры на Python

Время на прочтение18 мин
Количество просмотров11K
Давно хотел попробовать свои силы в компьютерном зрении и вот этот момент настал. Интереснее обучаться на играх, поэтому тренироваться будем на боте. В статье я попытаюсь подробно расписать процесс автоматизации игры при помощи связки Python + OpenCV.

image

Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Создание камеры-ловушки с использованием Raspberry Pi, Python, OpenCV и TensorFlow

Время на прочтение6 мин
Количество просмотров16K


Я сильно верю в обучение через практику, через создание чего-то нового. А для того чтобы что-то создавать, нужно чтобы работа приносила бы удовольствие.

Я начну рассказ о моём новом проекте с того, что раскрою причины, по которым решил попытаться создать камеру-ловушку на основе Raspberry Pi.

Я живу в Лондоне, мой сад часто посещают местные представители дикой природы. Случается это так часто, что я, заядлый садовник, мало-помалу начал расстраиваться. Разбитые горшки, выкопанные из земли растения, съеденные фрукты и овощи…

Я видел в своём саду маленьких лис (они — просто прелесть), больших лис, кошек (не моих), птиц. А однажды меня даже посетил ястреб-перепелятник.
Читать дальше →
Всего голосов 32: ↑24 и ↓8+26
Комментарии12

Уменьшаем потребление ESP8266 при автономной работе с датчиками

Время на прочтение3 мин
Количество просмотров13K

Вот уже более пяти лет WiFi модули на основе SOC ESP8266(ESP8285) успешно используются в автономных устройствах для измерения различных параметров объектов и окружающей среды с передачей по WiFi полученных данных.


В заметке «Как уменьшить потребление wifi модулей в десять и более раз» рассказывал о некоторых способах уменьшения времени активности WiFI сеанса таких модулей, что позволяет существенно сократить потребление энергии во время передачи данных. При этом типовое время сеанса передачи короткого сообщения удается уменьшить с 1-4 секунд до 0.12-0.3 секунды.


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


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


Более того, модуль измерения температуры на основе ESP8266 может периодически переключаться в режим глубокого сна, при котором ток потребления составляет менее 20 мкА. Просыпаясь, модуль читает показания датчика, сравнивает эти показания с предыдущими данными. Если показания изменились незначительно или находятся в допустимом интервале рабочих температур, то модуль вновь переключается в режим сна без сеанса связи.
Если показания датчика заметно изменились или вышли за пределы допустимого интервала, то модуль передает данные и / или сигнал тревоги по WiFi и переключается в режим глубокого сна.

Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии13

Сравнение встраиваемых ЯП по размеру в исполняемом файле

Время на прочтение5 мин
Количество просмотров6.2K

В рамках одного из моих SDK-проектов нам понадобилось добавить скриптование, которое бы оказало наименьший эффект на размер конечного бинарного файла, но при этом предоставляло хорошую фунциональность. Это дало старт проекту, который описан в этой статье. Прошу заметить, что т.к. в SDK у нас есть определенные требования, они частично перенеслись на язык скриптования, поэтому в проекте не участвовали некоторые достаточно известные встраиваемые ЯП (но Lua включен для сравнения).


Сайт проекта доступен по ссылке. Скажу сразу, что на данный момент для меня лично победителями являются Chibi-Scheme и Wasm3. Подробности для заинтересовавшихся под катом.

Читать дальше →
Всего голосов 10: ↑8 и ↓2+10
Комментарии59

Сложение двух чисел с плавающей запятой без потери точности

Время на прочтение9 мин
Количество просмотров81K
Здравствуйте, друзья, как вы думаете, если мы напишем такой код:

s = a+b;
z = s-a;
t = b-z;

то не кажется ли вам, что в результате его выполнения получится, что t=0? С точки зрения привычной математики действительных чисел это и правда так, а вот с точки зрения двоичной арифметики с плавающей запятой в переменной t будет кое-что другое. Там будет то, что спасает нас от потери точности при сложении чисел $a$ и $b$. Кого интересует данная тема, прошу под кат.

Всего голосов 99: ↑97 и ↓2+135
Комментарии172

Поворотная камера на raspberry pi zero c web-интерфейсом(DIY)

Время на прочтение3 мин
Количество просмотров9.2K


Родилась идея сделать бюджетную web камеру, используя доступные ингредиенты. Желательно, чтобы у нее был готовый web-интерфейс, чтобы можно было управлять ею удаленно, вращая в разные стороны, чтобы можно было настройки менять, чтобы делать фото-/видео-, скачивать записанное, motion detection чтобы, чтобы, чтобы, чтобы…

Идея родилась давно, реализована и была испытана в качестве watchdogа в автотранспортном средстве… Ну это, когда вы выходите из авто под знаком эвакуации на 5 минут и боитесь, что вас увезут на эвакуаторе, пока вы в магазине очки выбираете, а webкамера стережет и шлет письма на телефон. Но это так, к слову. А в данной статье покажем, как сделать подобную камеру, как работает, как ее настроить и т.п.
Всего голосов 13: ↑13 и ↓0+13
Комментарии13

Система рекомендаций фильмов с GUI на Python

Время на прочтение13 мин
Количество просмотров12K

«Без опыта я никому не нужен! Где взять опыт?» — часто думают люди, осваивающие новую для себя сферу или изучающие новый язык программирования. Решение есть — делать пет-проекты. Представленный под катом проект системы рекомендации фильмов не претендует на сложность и точность аналогичных систем от энтерпрайз-контор, но может стать практическим стартом для новичка, которому интересны системы рекомендации в целом. Этот пост также подойдет для демонстрации как использовать Python-библиотеку EasyGUI на практике.

Важное предупреждение: если вы крепкий миддл либо сеньор, то проект может показаться вам простым. Однако не стоит спешить опускать палец вниз и забывать про тех, кто не так опытен, и кому пост может быть полезен, ведь все мы когда-то были джунами.
Приятного чтения!
Всего голосов 12: ↑9 и ↓3+9
Комментарии10

Алгоритм Jerdella: решаем проблемы семантического безумия в IT-системах банков

Время на прочтение15 мин
Количество просмотров4.3K
Семантические проблемы в IT системах. Что бывает, когда много разных людей начинают творить

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

Ветхозаветную легенду можно с легкостью перенести на современные крупные компании, внедряющие современные ИТ-решения. В пример таких компаний, вне всякого сомнения, можно отнести современные российкие банки, которые имеют десятки, а то и сотни бизнес-подразделений, в которых складывается своя субкультура общения, построенная на своих правилах и уникальном стиле делового оборота. Естественно, при формировании ИТ-инфрастурктуры учитывается устоявшийся в коллективе стиль именования бизнес-сущностей. За последние десять лет появилось множество работ на эту тему, например эта [1]. Те, кто сталкивался с аналитикой информационных систем в банках знают, что такое сделать так называемый «маппинг» данных, особенно, если конечные системы делали разные команды аналитиков, разработчиков и заказчиков или вендоров. Как правило, на 60% составление маппинга является уяснением сути и семантики передаваемых данных.

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии61

Самый маленький офисный пакет в мире

Время на прочтение8 мин
Количество просмотров35K


Всем нам знаком традиционный офисный пакет — текстовый редактор, электронные таблицы, программа для создания презентаций, возможно, приложение для создания диаграмм или заметок. Всё это мы видим в Microsoft Office и в Google Docs. Все эти программы мощны и объёмны. Но каким будет минимальное количество кода, требуемое для создания офисного пакета?
Читать дальше →
Всего голосов 65: ↑63 и ↓2+81
Комментарии26

Язык тестовых сценариев Testo Lang: простая автоматизация сложных тестов

Время на прочтение12 мин
Количество просмотров12K

Картинка для привлечения внимания


Если Вы разрабатываете более-менее сложный программный продукт, то Вам должна быть знакома ситуация, когда системные (end-to-end) тесты по тем или иным причинам автоматизировать не удаётся. На это могут быть разные причины, я приведу несколько примеров:


  • У приложения нет и не может быть API, за которое можно зацепиться, по соображениям безопасности;
  • Приходится поддерживать legacy-проект, про автоматизацию тестирования которого никто никогда не задумывался;
  • Во время тестирования задействуется сторонний продукт, например — антивирус;
  • Необходимо проверить работоспособность продукта на большом количестве различных целевых платформ;
  • Тестовый стенд представляет собой сложную гетерогенную систему, включающую в себя промежуточное сетевое оборудование.

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


Если Вы ищете решение этой проблемы — то прошу под кат.

Всего голосов 18: ↑18 и ↓0+18
Комментарии27

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность