Рубрика «csv»

a screenshot of a terminal querying a csv file on the web

Скриншот терминала, запрашивающего файл csv в вебе

Когда был максимальный курс доллара к евро?

Вот небольшая программа, вычисляющая это:

curl -s https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.zip 
| gunzip 
| sqlite3 -csv ':memory:' '.import /dev/stdin stdin' 
  "select Date from stdin order by USD asc limit 1;"

Результат: 2000-10-26. (Можете попробовать запустить её самостоятельно.)

Как это работает:

Читать полностью »

Статья Хилла Уейна, автора почтовой рассылки «Компьютерные штучки», которая посвящена формальным методам и применению математики в программировании, истории и культуре программного обеспечения, философии и теории программирования, а также всяким экзотическим штукам и нишевым темам. В общем, рекомендуем.

В прошлом выпуске рассылки Уейн игрался с языком программирования J, который работает как арифметический калькулятор в консоли, и пошутил по ходу дела:

Я столько времени трачу на интерактивные вычисления, что даже не мог оторваться от этих функций… Может, мне просто хорошенько освоить Excel?

Пошутив про офисную программу, Хилл Уейн решил действительно посмотреть на неё поближе… и был поражён увиденным: «Это как найти сундук с сокровищами у себя на чердаке», — пишет он. И перечисляет некоторые новые функции современного Excel, о которых мало кто знает.
Читать полностью »

Приветствую вас, глубокоуважаемые!

«Выбросило меня тогда из кабины, в тысячный раз подумал он. Ударило обо что-то головой, так я больше и не оправился…» (С) АБС, «Улитка на склоне»

Пока коронaвирус бороздит просторы планеты, предлагаю с одного ракурса взглянуть, как мы (человечество) исследовали мировой океан.

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

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

Кто, как, когда и на чем исследовал мировой океан: список экспедиций с 1772 по 2018 годы с разбивкой по странам, интересные подробности и небольшой статистический анализ — под катом!

image
Читать полностью »

Часто при решении задач системной интеграции требуется представить некоторый объем данных в том или ином формате. При этом потребителем данных может быть кто угодно, а вот источником почти всегда является корпоративная база данных. К примеру, производитель может требовать у поставщика периодические отчеты о движении своих товаров в формате XLSX или XML, etc.

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

Если принять, что по факту в корне процесса выборки данных лежит SQL-запрос, то в идеале цепочку преобразований хотелось бы видеть такой:

$d'=f(SQL(d))$

где
$d$ — исходные данные,
$SQL(d)$ — SQL-запрос на выборку данных,
$f$ — функция, которая преобразует выборку в требуемый формат,
$d'$ — данные в требуемом формате.

Для Oracle PL/SQL существует ряд встроенных и сторонних пакетов, которые реализуют подобную функциональность. Это DBMS_XMLGEN, DBMS_XMLQUERY, AS_XLSX, PL/JSON и другие.

Однако, когда встал вопрос о преобразовании данных в формат CSV, готовых решений почему-то не нашлось. Пришлось делать самому, далее будет показано, как.Читать полностью »

Новая структура данных Redis 5 под названием «потоки» (streams) вызвала живой интерес в сообществе. Как-нибудь я поговорю с теми, кто использует потоки в продакшне, и напишу об этом. Но сейчас хочу рассмотреть немного другую тему. Мне начинает казаться, что многие представляют потоки неким сюрреалистичным инструментом для решения ужасно трудных задач. Действительно, эта структура данных *также* осуществляет обмен сообщениями, но будет невероятным упрощением считать, что функциональность Redis Streams ограничена только этим.

Потоки — потрясающий шаблон и «ментальная модель», которую можно с большим успехом применить в проектировании систем, но на самом деле потоки, как и большинство структур данных Redis, являются более общей структурой и могут использоваться для кучи других задач. В этой статье мы представим потоки как чистую структуру данных, полностью игнорируя блокирующие операции, группы получателей и всю остальную функциональность обмена сообщениями.
Читать полностью »

Редактируем CSV-файлы, чтобы не сломать данные - 1

Продукты HFLabs в промышленных объемах обрабатывают данные: адреса, ФИО, реквизиты компаний и еще вагон всего. Естественно, тестировщики ежедневно с этими данными имеют дело: обновляют тест-кейсы, изучают результаты очистки. Часто заказчики дают «живую» базу, чтобы тестировщик настроил сервис под нее.

Первое, чему мы учим новых QA — сохранять данные в первозданном виде. Все по заветам: «Не навреди». В статье я расскажу, как аккуратно работать с CSV-файлами в Excel и Open Office. Советы помогут ничего не испортить, сохранить информацию после редактирования и в целом чувствовать себя увереннее.

Материал базовый, профессионалы совершенно точно заскучают.
Читать полностью »

Привет! Эта статья про плагин Rainbow CSV, который я написал для 5 текстовых редакторов:

VS Code, Vim, Sublime Text 3, Atom, Gedit

Думаю, что многие читатели этой статьи периодически сталкиваются с CSV (comma-separated), ТSV (tab-separated) и подобными файлами. Если попробовать открыть их в текстовом редакторе (а как иначе узнать что там внутри?), то откроется совершенно невзрачная картина как с левой стороны изображения. Глядя на это сложно сказать даже сколько колонок в таблице. С правой стороны картинки тот же файл с включенным RainbowCSV, читаемость значительно повысилась за счет синтаксической подсветки.

image

Читать полностью »

Всех с пятницей! В своём прошлом посте про хеш-стеганографию я предложил иной подход в стеганографии — не вкраплять никакой информации в контейнер, а просто упорядочивать контейнеры в нужном порядке и тем самым передавать скрытую информацию. Два дня назад romabibi опубликовал proof of consept для хеш-стеганографии в соц.сети вКонтакте.

Однако в использовании картинок как контейнеров есть важный изьян. Цитирую коммент alekseev_ap:

Всё это очень интересно, но КПД такой системы чрезвычайно низкий. Сколько надо отправить десятков (а то и сотен) килобайт чтобы передать строку из нескольких слов?!

Действительно, если изображение весит условно 0.5 — 2 Мбайт, а на каждое изображение мы передаем от 1 до 3 нибллов, то получаемая скорость очень мала: от 0.5 до 6 B/MB

Поэтому для практического применения нужно найти такой контейнер, который обладал бы следующими свойствами:

  1. был бы очень мал;
  2. при большом количестве контейнеров, стоящие друг за другом; не вызывал бы "подозрений";
  3. при смене порядка контейнеров, они бы не вызывали "подозрение".

Итак, капитан-очевидность решение: необходимо осуществлять хеш-стеганографию в больших датасетах. Одна строка — один ниббл (полубайт).

Хеш-стеганография в dataset-ах. На этот раз быстрая - 1

Читать полностью »

Среднее качество полноты извлечения ссылок на встроенные ресурсы html-парсерами Apache.JMeter
Среднее качество работы парсеров (для семи сайтов)

Предлагаю:

  • посчитать среднее качество полноты извлечения ссылок на встроенные ресурсы html-парсерами Apache.JMeter;
  • проверить правда ли извлечение ссылок в Apache.JMeter 3.0 стало более полным;
  • испытать в деле плагин CsvLogWriter.

Как гласит народная мудрость: Верить верь, но…
Читать полностью »

Плохой пример хорошего теста

Примечание переводчика:
Изначально статья задумывалась как вольный перевод текста Дона Дрейка (@dondrake) для Cloudera Engineering Blog об опыте сравнения Apache Avro и Apache Parquet при использовании Apache Spark. Однако в процессе перевода я углубился в детали и нашел в тестах массу спорных моментов. Я добавил к статье подзаголовок, а текст снабдил комментариями со злорадным указанием неточностей.

В последнее время в курилках часто возникали дискуссии на тему сравнения производительности различных форматов хранения данных в Apache Hadoop — включая CSV, JSON, Apache Avro и Apache Parquet. Большинство участников сразу отметают текстовые форматы как очевидных аутсайдеров, оставляя главную интригу состязанию между Avro и Parquet.

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

Как любой уважающий себя инженер, я подумал, что было бы неплохо провести полноценные performance-тесты, чтобы наконец проверить, на чьей стороне правда. Результат сравнения — под катом.

Apache Parquet LogoЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js