Intro to BirdNET-Pi: Eavesdropping on my feathered friends
С помощью BirdNET-Pi на Raspberry Pi можно легко настроить систему пассивного акустического мониторинга птиц. Проект использует модель BirdNET от Cornell Lab of Ornithology для идентификации видов по их пению, а открытое сообщество разработало удобное ПО для Raspberry Pi. Автор делится опытом установки у себя и у родителей, отмечая радость от наблюдений и общения с соседями.
На примере графиков за май видно, как домовые воробьи активны с 5 утра до 6 вечера, голубые сойки кричат около часа после 16:00, а американские дрозды ненадолго появляются после рассвета. Сравнение данных за апрель и июнь показывает сезонные изменения в поведении видов. Инструкции по установке максимально подробны и рассчитаны на новичков, что делает систему доступной даже при минимальных технических знаниях.
Комментарии (23)
- Обсуждение посвящено использованию технологии BirdNET для идентификации птиц по звуку, в частности проекту BirdNET-Pi для непрерывного мониторинга с помощью Raspberry Pi.
- Участники делятся альтернативами и дополнениями: мобильное приложение Merlin для идентификации в реальном времени, проект BirdNET-Go, сервис Birdweather и модель Perch v2 от Google.
- Подчёркивается удобство использования видеодомофонов (например, UniFi) с RTSP-потоком в качестве аудиоисточника без необходимости установки отдельного микрофона.
- Обсуждаются практические применения: интеграция с Home Assistant, создание генеративной музыки на основе звуков птиц и возможность обнаружения других животных, например, лягушек.
- Упоминаются экспериментальные и нишевые проекты, такие как устройство для отпугивания голубей с помощью аудиозаписей хищников.
Improvements to OCaml code editing: the basics of a refactor engine
-
Цель стажировки – заложить основу для системы рефакторинга в Merlin, вдохновлённой IntelliJ и Gleam.
-
Первый эксперимент – команда «вынести выражение на верхний уровень» (extract to toplevel).
-
Как работает
- Выделяется наибольшее выражение внутри выбранного фрагмента.
- Оно переносится в новое
let-связывание на уровень выше. - Если выражение не чистое, создаётся thunk
unit -> …, чтобы сохранить семантику. - Свободные переменные превращаются в параметры новой функции.
-
Примеры
- Константа
3.14159→let const_name1 = 3.14159. print_endlineвнутри блока → оборачивается вfun () -> ….a + b + c + (c * x * y) + z→ функция, принимающаяx, y, a, b, c.
- Константа
-
Результат – работающий прототип, готовый к расширению другими командами.
Комментарии (16)
- Участники рады появлению базового рефакторинга «extract expression» и обсуждают, какие более продвинутые преобразования (например, map ↔ for) хотели бы видеть.
- Уточняли, будет ли автоматически заменяться одинаковый код в той же области видимости: пока нет, чтобы не «угадать» намерения пользователя.
- Кто-то делится самописными vim-скриптами для поиска и рефакторинга, работающими на любом языке.
- Поднимался вопрос о поддержке VS Code: разработчики утверждают, что вкладывают время и в VS Code, и в Emacs, но Emacs проще расширять.
- Обсуждали родство OCaml и F#, а также возможность использования ИИ для крупных рефакторингов.