Ivan Begtin
8K subscribers
1.9K photos
3 videos
101 files
4.61K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and other gov related and tech stuff.

Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts [email protected]
Download Telegram
Для тех кто интересуется инструментами работы с данными в командной строке, ещё один полезный инструмент trdsql [1]. Утилита написанная на Go позволяет делать SQL запросы к файлам в формате CSV, LTSV, JSON иTBLN. Удивительно что в этом списке нет JSON lines, но в целом утилита выглядит весьма неплохо и полезна для всех кто постоянно работает с файлами и не грузит их в одну из SQL СУБД, но синтаксис SQL любит и знает.

Из интересного - утилита умеет анализировать данные и выдавать рекомендации по запросам.

Ссылки:
[1] https://github.com/noborus/trdsql

#datatools #commandline
Для тех кто "любит командную строку также как люблю её я" (c). Командная строка - это стиль жизни, удобство и привычка. Я сижу за командной строкой уже с незапамятных времен UNIX и MS-DOS и для многих задач это гораздо быстрее чем что-либо ещё.

Есть ли оболочки для работы с данными?

- nushell [1] потрясающая штука для тех кто работает в командной строке и работает с данными. Умеет открывать CSV, JSON и кучу других типов файлов и показывать их таблицами. Имеет язык запросов (набор функций) позволяющих таблицами работать с файлами и ещё много всего. Пока один важный минус - не поддерживает файлы JSON lines, Parquet и BSON, но это поправимо и не критично.

- Textualize и Rich [2] набор утилит и библиотека для создания оболочек для Python. Позволяет очень много, а Rich Cli ещё и умеет подсвечивать дата файлы удобным образом.

- bubbletea [3] создаём терминальные приложения на языке Go. Может многое, а ещё его использует gum [4] позволяющий создавать стильные скрипты без строчки кода на Go

В 2021 году в Google проводили исследование по доступности инструментов командной строки с полезными советами как их дорабатывать [5].

Командная строка - это, часто, возможность делать что-то быстро, без задержек и раздражения. Современные инструменты позволяют сделать работу с ними значительно удобнее.

Ссылки:
[1] https://www.nushell.sh
[2] https://www.textualize.io/
[3] https://github.com/charmbracelet/bubbletea
[4] https://github.com/charmbracelet/gum
[5] https://dl.acm.org/doi/fullHtml/10.1145/3411764.3445544

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

Работа с данными
- datacrafter - ETL движок для NoSQL данных с обработкой их с помощью конфигурационных файлов написанных на YAML. Заход на аналог Meltano или Dagster, но для NoSQL. Используется в datacrafter.ru
- apicrafter - автоматизированная оболочка для генерации REST API для доступа к данным в базах MongoDB. Используется в datacrafter.ru
- metacrafter - утилита по автоматической идентификации семантических типов данных. Используется для идентификации персональных данных в наборах данных. Поддерживает базы данных с SQL, файлы JSON, CSV, JSON lines, BSON и MongoDB
- undatum - утилита для командной строки для обработки иерархических данных в JSON lines и BSON. Поддерживает также CSV, но это не основная возможность. Позволяет считать статистику, извлекать частоты значений, уникальные значения, преобразовывать данные
- mongorefine - экспериментальная библиотека для Python по обработке данных в MongoDB как если бы MongoDB была бы колоночной, а не документальной базой. Позволяет проводить операции над коллекциями данных на колоночном уровне: добавлять, удалять, преобразовывать. Функции похожи на функции OpenRefine, известного открытого инструмента для подготовки данных
- mongo2md - утилита и библиотека для Python по автоматическому документированию коллекций для MongoDB
- diffmongo - библиотека для Python по сравнению данных в коллекциях MongoDB

Парсинг и сбор данных
- newsworker - библиотека для Python по автоматическому извлечению текстов новостей из сайтов где нет RSS лент. Работает полностью автоматически, разбирает структуру страницы, идентифицирует картинки, даты, тексты и формирует новостную ленту. Использует библиотеку qddate
- qddate - библиотека для Python для автоматической идентификации дат в любом написании. Умеет распознавать более 300 форматов на многих языках. Используется во многих других репозиториях и проектах.
- russiannames - библиотека для Python по автоматическому парсингу имён на русском языке, идентификации гендера и немножко национальных признаков. Умеет идентифицировать ФИО в форматах "Иван Петров", "Сидоров Иван Петрович", "Иванов В.А.", "Иванова А." и тд. Включает большую базу фамилий, имен и отчеств.
- docx2csv - библиотека для Python и утилита извлечения таблиц из файлов docx. Очень удобна для генерации CSV файлов из разного рода корпоративных и госотчетов. Но только для docx
- lazyscraper - утилита командной строки по быстрому извлечению таблиц и иных данных из веб-страниц с минимальными усилиями кодирования. Фактически только через написание xpath запроса. Изначально хотелось сделать её ещё более умной, но и это оказалось полезным.

Работа с веб-архивами и цифровая архивация
- metawarc - утилита для автоматизации обработки WARC файлов. Изначально создавалась в целях расследований для автоматизации извлечения свойств файлов MS Office и PDF из веб-архивов. Когда ты вначале всё архивируешь, а потом уже из веб архива собираешь метаданные. Я с её помощью проводил исследования использования пиратского ПО в российских госорганах несколько лет назад.
- apibackuper - утилита по автоматизации выгрузки данных из общедоступных API. Используется в Национальном цифровом архиве и в datacrafter.ru для формирования наборов данных
- ydiskarc - утилита для архивации данных по публичным ссылкам на Яндекс диск. Используется в Национальном цифровом архиве для архивации папок с Яндекс Диска
- wparc - утилита по архивации контента сайтов на Wordpress и медиа файлов с этих сайтов посредством встроенного в Wordpress REST API. Используется в Национальном цифровом архиве
- spcrawler - утилита по выгрузке данных из сайтов на базе Sharepoint используя их общедоступное API. Не завершена, но в работе.

#opensource #datatools #data #commandline #python
This media is not supported in your browser
VIEW IN TELEGRAM
Для тех кто любит работать с командной строкой со всем чем только можно замечательный инструмент Mods [1], утилита работающая с OpenAI и LocalAI и генерирующая результаты на основе входящих пайплайнов (конвейеров) от других утилит командной строки, а результат работы mods также пригоден для дальнейшей конвейерной обработки.

Я вот люблю командную строку ещё с того времени когда основными операционными системами были [MS/PC]-DOS и FreeBSD и всегда приятно когда находишь очередной удобный инструмент чтобы можно было делать разное, что раньше было делать сложнее.

Из практичного там мне более всего нравится генератор документации в Markdown и команды вроде
mods "write a new section to this readme for a feature that sends you a free rabbit if you hit r" | glow

Стоит ещё и упомянуть что эта утилиты от команды Charm.sh [2], которые за последние годы насоздавали множество утилит и библиотек для командной строки которые выглядят не только интересно, но и, часто, просто мило.

Много инструментов чтобы сделать ваши утилиты более мимимишными.

Ссылки:
[1] https://github.com/charmbracelet/mods
[2] https://charm.sh/

#opensource #commandline #ai
Забавная утилита для командной строки ai-renamer [1] переименует фотографии в зависимости от их содержимого. Бывает полезно, но... очень многие хранят десятки фотографий одного и того же места или объекта и потом выбирают лучшую фотографию из многих.

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


Ссылки:
[1] https://github.com/ozgrozer/ai-renamer

#ai #commandline #tools
Свежий симпатичный поисковик по смыслам слов semantic grep [1] использует Word2Vec для выборки связанных по смыслу слов и уже их ищет по тексту.

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

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

Лично я большой любитель командной строки и инструментов работы в ней, хороших поисковиков по текстовым файлам всегда нехватает (и всегда много!)

Ссылки:
[1] https://github.com/arunsupe/semantic-grep

#opensource #ai #commandline #tools #data
Со стороны и не скажешь, но всю жизнь я лично был большим фанатом командной строки. Потому что печатать быстрее и удобнее чем кликать в интерфейсе, а визуальное растровое отображение элементов интерфейса нужно, на самом деле, очень редко.

Тем больше меня радует начавшийся ренессанс TUI (Text User Interface) приложений, в виде командной строки или в виде интерактивных, но текстовых, инструментов которые можно запускать локально или на терминале.

Поэтому подборка полезного open source с командной строкой и TUI:
- stu [1] текстовый навигатор (TUI) для корзин s3. Удобно для тех кто любит командную строку и работу с серверами через терминал. Работает на базе движка ratatui [2] для Rust, помогающего быстро создавать текстовые приложения.
- csvlens [3] ещё одна утилита с текстовым интерфейсом для манипуляции с CSV файлами. Тоже на базе ratatui. Кстати, стоит посмотреть галерею других TUI приложения, там много полезного [4]
- goaccess [5] текстовый интерфейс для анализатора логов веб сервера в реальном времени.
- visidata [6] текстовый интерфейс для просмотра табличных данных в разных форматах
- htop [7] альтернатива top, монитору процессов для Unix.

Ссылки:
[1] https://github.com/lusingander/stu
[2] https://github.com/ratatui/ratatui
[3] https://github.com/YS-L/csvlens
[4] https://ratatui.rs/showcase/apps/
[5] https://github.com/allinurl/goaccess
[6] https://github.com/saulpw/visidata
[7] https://github.com/htop-dev/htop/

#cli #commandline #opensource #tools #datatools
Для настоящих фанатов работы с командной строкой переосмысление работы с оболочками/терминалами в виде Wave Terminal [1] проекта с открытым кодом для который, с одной стороны даёт возможность работать с несколькими сессиями командной строки, а с другой позволяет организовывать пространство в виде виджетов. Сейчас эти виджеты включают:
- окно терминала
- системная информация по нагрузке памяти и CPU в реальном времени
- папки с файлами
- диалоговое окно с чатботом
- окно браузера

Для Windows прозрачная интеграция с WSL и дистанционным подключением к серверам, для других OS пока не пробовал.

Ко всему ещё и под открытой лицензией, в общем-то для тех кто живёт командной строкой не продукт, а мечта. Хотя я лично для W10 и W11 давно привык к Windows Terminal [2], но этот продукт может его потеснить потому что выглядит неплохо.

И, сразу понятно как создатели могут монетизировать такой продукт:
- виджеты для дистанционного подключения к Grafana, Prometheus, Datadog, Newrelic и тд.
- сервис взаимодействия с чат ботами через свои сервера с возможностью переключения на разные AI модели, собственно это уже проксируется через них для одной модели, просто пока денег за это не берут
- интеграция с дата инженерными платформами, базами данных и тд. где есть конвееры и нагрузка на ресурсы

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

Для дистанционной отладки продуктов и для операций DataOps и DevOps может быть весьма полезной прикладной штукой

Ссылки:
[1] https://github.com/wavetermdev/waveterm
[2] https://github.com/microsoft/terminal

#opensource #commandline