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

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

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

Классические задачи Computer Science на языке Python. Обзор книги

Время на прочтение7 мин
Количество просмотров12K
Привет, Хабр!

Одной из самых интересных наших книг по Python в течение уходящего года оставались "Классические задачи Computer Science на языке Python" от Дэвида Копеца.



Для тех, кто еще не успел ознакомиться с этой книгой, предлагаем ее обзор, написанный по оригинальному изданию в октябре 2019 года. Также можно ознакомиться с небольшим обсуждением на Reddit. Также все желающие могут высказаться по поводу допечатки — для этого в конце статьи поставлена голосовалка.
Читать дальше →

Как увидеть ℼ? Нужно швырнуть ℼ в стену

Время на прочтение2 мин
Количество просмотров49K
Лучший способ объяснить школьникам и самому себе, что такое фазовое (конфигурационное) пространство.

image


Дано: Два блока массой 1 кг и 100 (10 000, 1 000 000,… 100x) кг. Трение в системе отсутствует, удары абсолютно упругие (потерь энергии нет). Более массивный блок ударяет менее массивный и тот отскакивает от него, а потом от стенки слева. Справа стены нет, тела могут двигаться в бесконечность.

Вопрос: Сколько столкновений совершит маленький блок, пока система не придет в состояние, когда столкновения невозможны (скорость маленького тела меньше скорости большого, двигающегося в бесконечность)?

Ответ невероятен:

image


В очередной раз поражаюсь изящности объяснений от 3Blue1Brown. Предлагаю читабельный конспект с небольшими сокращениями и дополнениями.

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

Читать далее

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

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

Введение


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

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

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

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

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


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

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

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

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

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

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

Весь исходный код можно найти на гитхабе.
Читать дальше →

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

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


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

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

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

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

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

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

Читать далее

Играем в 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. Под катом — подробности, как это сделать.
Читать дальше →

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

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

image

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

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


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

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

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

Я видел в своём саду маленьких лис (они — просто прелесть), больших лис, кошек (не моих), птиц. А однажды меня даже посетил ястреб-перепелятник.
Читать дальше →

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

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

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


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


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


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


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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Информация

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