Ivan Begtin
8.07K subscribers
1.5K photos
3 videos
100 files
4.25K links
I write about Open Data, Data Engineering, Government, Privacy and Data Preservation and other gov and tech stuff
Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts ivan@begtin.tech

Contact @NMBabina for ads proposals
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