Ivan Begtin
9.09K subscribers
2.49K photos
4 videos
113 files
5.23K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and etc.

CTO&Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Email ivan@begtin.tech

Ads/promotion agent: @k0shk
Download Telegram
Google обновили Magika инструмент для идентификации типов файлов в зависимости от содержимого. Пишут что теперь он поддерживает более 200 форматов файлов (ранее было 100), полностью переписан на Rust и работает существенно быстрее. Можно обратить внимание что многие из упомянутых новыз форматов файлов это файлы с данными npz, pytorch, parquet, h5 и файлы кода zig, dart, kotlin и тд. Фактически Magika это альтернатива идентификации типа файла по расширению и альтернатива magic (утилита идентификации файлов в Unix-подобных операционных системах) и утилитам Siegfried и DROID используемых цифровыми архивистами.

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

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

Что характерно Magika занимается команда Security research в Google, а то есть можно предполагать что основное применение это, все же, цифровая форенсика.

Из интересного, разработчики пишут что чтобы обучить Magika они использовали 3-х террабайтный несжатый датасет.

В целом видно что над проектом работает группа ИИ инженеров, но не методистов и это сопутствующий продукт их работы потому что иначе они бы начали с реестра типов mime и расширений в который собрали бы метаданные из PRONOM и пары других крупных реестров форматов файлов.

#opensource #google #datatools #forensics
18🔥6
Для тех кто задумывается об архивации личных и не самых личных файлов утилита ydiskarc для архивации парок и файлов размещённых на Яндекс.Диск. Я создал её довольно давно и недавно актуализировал до удобного вида. Она использует открытое API Яндекс.Диск для получения метаданных о файлах и выгрузки их локально без использования ПО Яндекса или получения ключа доступа. Можно использовать на собственных папках или на каких-либо общедоступных, не требующих авторизации.

Поддерживает две команды:
- full - делает дамп всего содержимого в виде ZIP файла
- sync - сохраняет файлы с сохранением структуры папок

В процессе работы сохраняет все полученные метаданные в файлах _metadata.json в папках.

Может применяться, например, при архивации российских сайтов где какие-то материалы опубликованы на Яндекс.Диск и не поддаются индексированию классическими инструментами такими как веб-краулеры.

Ошибки, предложения и идеи можно оставлять в issues к репозиторию.

#opensource #tools #digitalpreservation
👍16311
Свежий российский портал открытых данных платформа.дом.рф один из немногих государственных ресурсов с открытыми данными появившихся в РФ в последнее время.

Из плюсов:
- новый портал с открытыми данными
- отраслевая специализация, данные по строительной отрасли

Из минусов:
- всего 10 наборов данных в CSV формате общим объемом около 4-5 мегабайт (самый большой 1.94 МБ)
- нет API (хотя обещают)
- нет указания условий использования (что делает это не открытыми данными, а общедоступными поскольку нужны свободные лицензии).
- условия использования (пользовательское соглашение) явным образом запрещает использование в коммерческих целях без получения разрешения от Дом.РФ - запросы рассматриваются 5 дней
- нет возможности автоматически обновлять датасеты (у них нет пермалинков и нет API), автоматизированный ETL процесс не построить

В целом, учитывая что Дом.РФ как раз активно и дорого торгует аналитикой, этот портал больше пока похож на замануху для покупки данных, а не как полноценный портал открытых данных.

Но кто знает, может это только начало?

#opendata #russia #datacatalogs
3👍3😁2🤣1
Когда-то довольно давно размышляя об архивации материалов с сайтов у меня был тезис что архивация зависит от CMS сайта, к разным CMS и соответственно сайтам на их основе должны быть разные подходы, как минимум отличающиеся списки неиндексируемых веб-страниц и как максимум разные стратегии индексирования зависящие от приоритета контента:

Первый приоритет: веб-страницы и документы
Второй приоритет: изображения
Третий приоритет: видео и архивы, иной "тяжелый контент"

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

Для проверки гипотезы я подумывал сделать/заказать фрилансерам/организовать конкурс или хакатон с такими инструментами под разные CMS. Продвинулся тогда только с анализом типовых API каталогов данных что потом превратилось в Dateno где идет именно индексация датасетов через API.

Но несколько инструментов я все таки сделал и один из них wparc умеет архивировать содержимое сайтов на Wordpress. Дело в том что у сайтов на базе Wordpress по умолчанию есть REST API через интерфейс /wp-json через который можно получить контент страниц, постов, таксономий, файлов и иных материалов. Интерфейс этот держат открытым не на всех сайтах, но на очень многих.

Многие российские госсайты тоже использовали и используют Wordpress и этот инструмент я использовал во время нескольких архивационных кампаний для сохранения контента и файлов. Кроме того он косвенно является инструментом форенсики потому что часто на сайт загружают файлы которые через API доступны, а на веб-страницах уже нет (ссылки удаляют, файлы остаются), кроме того есть точки подключения API через которые отдают чувствительный контент.

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

Мысли у меня когда-то были сделать что-то более универсальное и уметь архивировать сайты на Bitrix, Drupal и других популярных CMS'ках, но это было довольно давно и цифровая архивация для меня хобби (работа - это Dateno) и все наработки пошли на сбор данных для Dateno.

Тем не менее wparc весьма полезен а я для разгрузки головы в последнее время беру разный legacy код и привожу его в порядок и wparc также привел добавив туда опции анализа точек подключения к API.

Открытый код доступен, инструмент рабочий, пригодится еще не раз.

#opensource #digitalpreservation
👍83
В рубрике полезного чтения про данные, технологии и не только:
- Saloni's guide to data visualization гайд по визуализации данных с акцентом на наглядность научных данных, хорошие примеры, понятные советы
- Useful patterns for building HTML tools обзор HTML инструментов, в том числе созданных с помощью LLM.Немного за пределами моих интересов, но взгляд на эти инструменты который я лично упускал.
- Economics of Orbital vs Terrestrial Data Centers про обоснованность и возможность создания дата центров на орбите Земли. Любопытно, хотя и не кажется практичным в ближайшие годы
- Cloudflare Radar 2025 Year обзор трендов 2025 года от Cloudflare, обзор большой, в том числе страновой и есть что посмотреть по разным странам. Тянет на отдельную заметку, а пока просто закладка на чтение

#readings #data #dataviz
👍54
Forwarded from Dateno
We’ve launched Dateno API v2 -- a major upgrade to our data search platform

We’re excited to announce the release of Dateno API v2, one of the most important components of our dataset search engine. This new version is a significant step forward for everyone who integrates Dateno into analytics platforms, data pipelines, and AI/LLM workflows.

What's new in API v2?

1. A clear and stable contract model: all responses are strictly typed and consistent across endpoints
2. Predictable pagination and metadata, making it easier to build UIs, exports, and analytics
3. A much more powerful search, built on a unified index with full-text search, facets, sorting, and relevance scoring
4. A richer, normalized data model for catalogs, datasets, and resources — ready for automation and analysis, not just display
5. Consistent error handling, with clearly separated client, infrastructure, and internal errors
6. Improved performance and reliability, with an asynchronous architecture and health-check endpoints
7. Designed for future growth without breaking changes, thanks to built-in versioning and extensibility

Important: The new API v2 is available in test mode until the end of January. During this period, we encourage developers and teams to explore it, integrate it, and share feedback before it becomes the default production version.

API v2 makes Dateno easier to integrate, more predictable to work with, and better suited for professional use cases - from data analytics to machine learning and AI-powered applications.

Learn more and start testing: https://api.dateno.io

#Dateno #API #DataEngineering #OpenData #SearchAPI #Analytics
2👍2🔥2
Множество предсказаний о журналистике в 2026 году https://www.niemanlab.org/collection/predictions-2026/ на сайте Nieman Lab

Многое про технологии и ИИ, есть даже про API для новостей. Для дата журналистов может быть полезным.

#thoughts #readings #journalism
👍52🔥2
Я как то уже рассуждал здесь и вслух о том что ИТ профессии часто формируют устойчивые когнитивные искажения, например, когда все окружающее воспринимается как таблицы или как данные, лично я считаю что в этом нет ничего зазорного и сам иногда впадаю в состояние автоматического построения структур данных в голове и доведение их до 3NF.

Но то что кто-то может назвать когнитивным искажением, можно назвать и способом взгляда на те или иные явления. И вот один из таких способов восприятия реальности - это смотреть на все как на список. Список дел, список строк в файле, список записей в БД и так далее. А если по списку можно проходить и что-то делать с тем что в нем находится то он является перебираемым или на английском языке iterable.

Собственно под восприятия мира данных того что большая часть структур данных, форматов дата файлов и тд - это перебираемые списки я когда-то создал, а недавно обновил библиотеку iterabledata для Python.

Изначально она создавалась для того чтобы реализовать для JSON/JSON lines файлов логику перебора содержимого по принципу csv.DictReader, стандартной библиотеки в Python в которой перебираемые объекты возвращаются как словари. Заодно добавив к этому что чаще всего эти файлы с данными сжаты чем-то Gzip, LZMA, Zstandard и тд.

А в этот раз я обновил эту библиотеку для большей универсальности и поддержки десятков новых форматов данных DBF, JSON-LD, KML, GML, CSVW, Annotated CSV, MessagePack и еще много, полный список.

Включая некоторые экзотические форматы такие как WARC для веб-архивации, которые тоже можно рассматривать как объекты со списками для перебора.

А в качестве наглядного примера, преобразование дампа Википедии из сжатого XML в Parquet.

Особенность Iterable Data именно в универсальности инструмента, но не в скорости обработки данных. Для супербыстрой обработки, например, CSV файлов есть и другие инструменты, но CSV лишь один из десятков встречающихся форматов данных.

Так что инструмент полезный и обновлялся мной сейчас в контенте задач в Dateno, в открытые репозитории которого я и перенес его из личных пэт проектов.

#opensource #dateno #datatools #dataengineering
👍104❤‍🔥11👌1
Рассеянные мысли про разное:
1. В продолжение когнитивных искажений или искажений восприятия в наблюдениях последнего времени часто встречаю ещё два случая:
- декларативизация всего что возможно, иногда в форме YAML'ификации, когда декларативное описание (в сформе структурированного описания конфигурации) кажется панацеей для всего. Панацеей оно, конечно, не является и даже вызывает раздражение у многих разработчиков, но становится удобным при использовании ИИ агентов которые как раз такое декларативное описание понимают очень неплохо.
- маркдаунизация всего и вся, ловлю себя на том что стало неудобно писать тексты в Word'е, совсем неудобно, все время хочется использовать синтаксис маркдауна. Кроме того для скармливания объектов ИИ также часто преобразование в Markdown кажется более логичным чем во что-то другое.
2. По прежнему жизненно не хватает продвинутых инструментов управления контактами, такое ощущение что они вымирают и ни один из крупнейших сервисов не дает удобного API для их обогащения. Например, для управления контактами в Google нужно оттанцевать много с бубном чтобы добавить/изменить контакт автоматически. Когда у тебя пара сотен контактов - это не проблема, когда несколько тысяч - уже ощутимо.

#thoughts
🤔72
Полезное чтение про данные, технологии и не только

AI
- Introduction to AI Agents хорошо написанный четко изложенный документ от Google. Полезно для быстрого погружения в тему
- State of Agent Engineering обзор от LangChain состояния разработки ИИ агентов через опрос 1300 специалистов
- 2025 LLM Year in Review обзор 2025 года с точки зрения LLM, с погружением в технологии, от Андрея Карпатого
- AI Scraping and the Open Web о том что владельцы контента перешли к юридической защите от ИИ скрейперов после того как технические меры перестали работать

Облачная инфраструктура
- Let’s talk about GitHub Actions в блоге Github о том как они переделали Github Actions. Важное для всех что Github Actions использует. Важное тем что для многие GA стали заменой собственных ETL/ELT инструментов и многие конвееры работы с данными и другими действиями живут на Github.

Инструменты
- headson инструмент для выполнения команд типа head/tail для JSON и YAML файлов. Бывает полезно, но как-то узковато, больший универсализм был бы полезнее
- AGENTS.md спецификация для управления кодирующими ИИ агентами через специальный Markdown файл
- chandra модель для OCR с обещанием поддержки сложных структур и таблиц. Надо пробовать, правда ли так работает.
- Mistral OCR 3 свежая ИИ модель от Mistral для OCR, тоже обещают работу со сложными таблицами

Разное
- On the Immortality of Microsoft Word о бессмертии MS Word и почему Markdown не может заменить его, например, в работе юристов с документами

#opensource #ai #readings
👍7🔥4
В продолжение рефлексии про применение ИИ агентов в разработке. Мои личные ощущения от применения для различных задач.

Документирование. Почти на 100% закрывается с помощью ИИ агентов, при условии что сам код ясно написан и в коде документация присутствует (в Python это обязательные docstrings). Как простая документация так и сложная генерируется без излишних сложностей, но как и код её необходимо тестировать промптами в условном стиле "проверь что все примеры упомянутые в документации являются рабочими" (в реальной работе немного сложнее, но и так можно).

Тестирование. Около 90-100% тестов кода могут генерироваться автоматически, остальное с некоторой помощью. Закрывает практически все общепонятные ошибки связанные с особенностью языка и его стилистики. не закрывают какую-либо сложную логику работы с не самыми очевидными продуктами, устройствами, интеграцией и тд.

Исправление ошибок. По ощущениям эффективности уже в районе 50-80% (до 8 из 10 задач выполняются сразу правильно, без необходимости корректироки). Практически все задачи линтинга кода и большая часть задач исправления ошибок по итогам неудачных тестов. Наиболее часто несрабатывающие исправления касаются взаимодействия с другими сервисами, серверами, параллельно разрабатываемыми продуктами.

Генерация кода. Варьируется от 40% до 70% эффективности, чем более комплексная задача тем хуже результат в виде кода. Простые задачи умеют хорошо делать уже почти все ИИ агенты, сложные часто приводят к переусложненному коду. Например, в качестве теста я делал REST API поверх написанного на Python SDK. Cursor при его реализации начал ваять сложный промежуточный код для обработки данных и преобразования типов хотя все то же самое можно было бы сделать значительно проще простыми исправлениями в оригинальном SDK. Вот эта вот контекстность в решении проблем это особенность ИИ агентов. Они пока не предполагают что решения проблем могут быть за пределами рассматриваемой ими кодовой базы.

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

Разработка дата продуктов (декларативное создание баз данных). Это то что я рассказывал ранее про то что справочные данные можно создавать в виде множества YAML файлов которые расширять и собирать в наборы данных с помощью ИИ агентов. Здесь эффективность весьма вариативна. Чем больше гранулярности в задаче, тем она выше, но исправлять результаты и расширять их нужно практически всего. Однако и это снижает трудоемкость создания датасетов в десяток раз, не меньше.

#thoughts #ai
🔥13
Суверенное импортозамещение по французски La Suite numerique (Цифровой комплект) в виде набора приложений с открытым кодом включающий:
- Tchap - мессенжер
- France Transfer - сервис передачи больших файлов
- Docs - совместная работа над документами
- Grist - управление проектами
- Visio - видеоконференции
- Messagerie - электронная почта
- Fichiers - управление общими файлами.

Все это в варианте, либо локального развертывания, либо на федеральном портале ProConnect

Комплект разрабатывается для госорганов и госучреждений Франции, но предоставляется всем желающим.

#opensource #france #government
🔥7👍54
Anna’s Archive решила создать резервную копию Spotify

🎵Проектом заархивированы метаданные и музыкальные файлы платформы Spotify. Архив занимает ~300 ТБ, распространяется через торренты и включает около 86 миллионов музыкальных файлов

Это первый подобный открытый «архив сохранения» музыки такого масштаба, доступный для зеркалирования и резервирования любым пользователем с достаточным дисковым пространством.

https://annas-archive.li/blog/backing-up-spotify.html

🏴‍☠️ Anna’s Archive - некоммерческая метапоисковая система для теневых библиотек с открытым исходным кодом, созданная командой анонимных архивистов Pirate Library Mirror и запущенная как прямой ответ на усилия правоохранительных органов по закрытию Z-Library в 2022 году. Проект ставит себе целью «каталогизацию всех существующих книг и отслеживание прогресса человечества на пути к тому, чтобы сделать все эти книги легкодоступными в цифровой форме».

В статье «Критическое окно теневых библиотек» они объяснили , что делают это потому, что текст обладает самой высокой плотностью информации. Но их миссия (сохранение знаний и культуры человечества) не делает различий между типами носителей. Иногда появляется возможность работать вне текстовой среды. Копирование Spotify - это именно такой случай.
1👍12🥰98❤‍🔥5🔥5👏1
В рубрике как это устроено у них (наверное) портал открытых данных ЕАЭС opendata.eaeunion.org

Содержит реестры и ресурсы ЕАЭС в части разрешительной работы и совместной деятельности.

Предоставляет отраслевые данные через REST API и по стандарту API OData.

Плюсы:
- данные общедоступны декларируемые явным образом как открытые
- хорошо документированное стандартизированное API
- много разных отраслевых данных

Минусы:
- свободные лицензии не указаны явным образом
- нет возможности массовой выгрузки (сразу все), у API ограничение по выгрузке до 5000 записей за раз
- данные рассеяны по множеству отраслевых подсайтов что неудоьно при желании скачать все

#opendata #datacatalogs
7
В рубрике как это устроено у них открытые данные в Австрии собраны на национальном портале data.gv.at где опубликовано 63 тысячи с небольшим наборов данных по самым разным тематикам. Портал работает на базе ПО CKAN, к нему доступно REST API, а данные экспортируются в форматах связанных данных и почти у всех наборов данных есть привязанная свободная лицензия. В целом портал и все инициативы по открытым данным в Австрии напрямую взаимосвязаны и ссылаются на политики Евросоюза и, в частности, сейчас имеют фокус на публикацию данных особой ценности (HVD) и переход к публикации данных необходимых для обучения ИИ.

Некоторые особенности австрийского портала данных в том что, как и во многих других странах, создатели портала используют искусственное дробление наборов данных для демонстрации их количества. так из 63 тысяч наборов данных 52 тысячи наборов данных - это файлы муниципальных бюджетов страны (1692 муниципалитета) разбитые по годам примерно за 20 лет и по нескольким вида бюджетной отчетности с другого официального портала www.offenerhaushalt.at

Все эти 52 тысячи наборов данных можно свести от 1 до 1692 (единая база или дробление только по территориям), а все остальное это очень искусственное разделение не имеющее отношения к сценариям использования пользователями.

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

В целом же в Австрии 58 порталов данных и это скорее всего не все из них подсчитаны, реально может быть и больше. Многие данные публикуются в исследовательских репозиториях данных или в каталогах геоданных, которые лишь частично собираются на национальном портале.

#opendata #austria #datacatalogs
21
У меня есть довольно давняя отложенная нерабочая задача - это извлечь с каталога музейного фонда РФ (goskatalog.ru) материалы по армянскому культурному наследию для чего я когда-то выгружал с портала данных Минкультуры РФ битый датасет этого реестра и преобразовывал 88ГБ текстовый файл в 2.7ГБ файл Parquet с 31.7 записями о культурных объектах. А также есть примерно 100 регулярных выражений позволяющих найти записи в которых есть прямое или косвенное упоминание Армении или армянской культуры.

Задача универсальная, можно вместо поиска армянской культуры искать культуру еврейскую, чувашскую, адыгскую - вариаций много. Ключевое в том что есть большой файл с данными, много регулярных выражений и надо найти все идентификаторы записей в которых присутствует хотя бы одно совпадение. При этом искать надо не по всем полям, а буквально по 4-м: название, описание, место, авторы

А теперь о подходах как такую задачу можно решить.

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

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

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

Экономное хардкорное программирование. Обращаешь внимание что регулярные выражения - это медленно почти всегда и на то что не все поля в оригинальных данных нужны. Оптимизируешь и пересобираешь оригинальный файл с данными так чтобы он содержал только id записи и поля с нужными текстами, переписываешь регулярные выражения на pyparsing или разворачиваешь их в текст для полного мэтчинга и, конечно, тоже разрезаешь файл с данными на 100 (или сколько нужно) и параллельно запускаешь обработку не обязательно на продвинутом железе. Думаешь о том не переписать ли все это на Rust

Управленческое решение. Находишь человека с нужными навыками в своей команде и предаешь ему эту задачу. Как он это сделает тебя волнует не особенно, главное чтобы результат был к ожидаемому сроку.

Поиски волонтера. Описываешь целесообразность и нужность задачи в виде мини ТЗ. Закидываешь с сообщества где могут быть потенциальные волонтеры готовые ее решить. Задача не самая сложная, не самая простая, как раз по силам.

Вайб-кодирование. Описываешь эту задачу ИИ агенту и он за тебя генерирует код (скорее всего не самый высокопроизводительный) и дальше уже по аналогии с ленивым программированием

Продвинутое вайб кодирование. Ставишь задачу нескольким ИИ агентам и сравниваешь результаты. Долго тюнишь лучший из результатов уточняющими запросами по оптимизации кода.


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

#thoughts #programming #dataengineering
🔥42
В рубрике как это устроено у них Fairstack 1.0 комплект продуктов и сервисов от Китайской академии наук (СAS) по организации инфраструктуры работы с данными для исследователей. Включает множество инструментов с открытым кодом и разработанных в компьютерном центре CAS для организации работы исследователей.

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

#opendata #datacatalogs #china
👍3
Ещё в рубрике как это устроено у них FranceArchives официальный архивный портал Франции. Включает более 29 миллионов записей из которых более 5 миллионов - это оцифрованные документы, фотографии, карты и иные цифровые артефакты агрегированные из сотен музеев и архивов страны.

Предоставляют открытое API в виде интерфейса SPARQL, у каждой записи есть RDF, JSON-LD и N3 карточки с описанием со всеми метаданными в структурированой форме и есть возможность получить карточку записи в виде CSV файла.

#opendata #data #digitalpreservation
12👍2🔥1😢1
Любопытные граждане нашли в выложенных документах по делу Эпштейна что текст там замарывали в виде слоя к PDF файлу и содержание под слоем читается даже без спецсредств, просто выделением текста

Думаю что в ближайшее время Минюст США эти документы начнет снимать и заменять на реально вымаранные, но как же они умудряются в одну и ту же лужу вступать неоднократно. Я помню как много лет назад в США сотрудники Пентагона выкладывали вымаранные документы, тоже через PDF слой, а считывали его через комбинацию: Ctrl+A, Ctrl+C, Ctrl+V.

Все это приводит к нескольким тезисам:
1. Некомпетентность свойственна не только сотрудникам госорганов небогатых стран, но и богатых.
2. Если что-то рассекречено, надо сразу делать копию, потому что уже завтра могут начать править, удалять и исправлять.

#privacy #usa #documents
😁17👏4😱4❤‍🔥2🤣1