Анализ данных с Jupyter Notebooks

Недавно открыл для себя такую штуку, как Jupyter Notebooks. Это такой инструмент для интерактивных вычислений.

Вот например я делал анализ статистики корректирующих патчей для OpenBSD. Собрал общедоступные данные о патчах в таблицу, построил графики и скриншоты этих графиков выложил на гитхаб. И хотя я опубликовал скрипт для сбора этой статистики, но вряд ли кто-то захочет проверить эти графики и даже мне нужно будет потратить некоторое время чтобы обновить их для новых выпусков OpenBSD. C Jupyter Notebook мы получаем воспроизводимость для анализа данных, все необходимые куски кода, данных и комментарии к ним находятся в одном месте - в ноутбуке.

То же самое с расчётами #RaceTheTube для Московского метро - всё источники данных, манипуляции над ними я опубликовал, но всё это разрозненно и нужно потратить время, чтобы повторить расчёты. С Jupyter Notebook у вас не будет этой проблемы.

Чтобы попробовать Jupyter Notebook в деле я сделал анализ результатов полумарафона “Лужники”, в котором сам участвовал в прошлом месяце. Комментарий к этому анализу я написал отдельным постом в ФБ.

Ещё начал делать анализ статистики о разработке в проектах CRIU и OpenBSD, но там я пока сделал не все, что хотел.

18.09.2017

Own repository with OpenBSD packages

Right now OpenBSD ports tree contains about 10042 ports according to ports.su. Resources of OpenBSD developers are limited and thus not all new ports are comitted to the official tree. It’s a reason why we have a big number of ports out of tree. See a list of some repositories with out-of-tree ports. Maintaining packages is not so simple when you have more than one OpenBSD machine: build a package on a machine with required CPU architechture, keep it somewhere, rebuild for each new release and so on.

For Ubuntu and Fedora there are convenient services available where you can get your own package repository. Ubuntu has Launchpad PPA and Fedora project has COPR. You can put there source packages which are under an open source license, e.g. development snapshots of your software. Users then only need to add the repository address with one command and can install the packages via apt-get in case of Ubuntu and yum (or dnf) in case of Fedora.

It would be nice to have similar service for OpenBSD. I’m even agree to pay a small amount of money for using such service :)

17.09.2017

Рассылки о разработке и тестировании

Прислали мне список почтовых рассылок и я не нашел в них те рассылки, на которые подписан сам.

Вот какие рассылки читаю я:

Все новости, которые сыпятся в соцсетях, я обычно читать не успеваю. Чтобы оставаться оставаться в курсе того, что происходят в opensource я читаю рассылку Changelog Weekly.

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

Дайджест портала Software-Testing.RU о тестировании ПО. Чтобы понять информативна ли она будет для вас посмотрите архив выпусков.

А вы какими-то интересными рассылками о разработке или тестировании можете поделиться?

10.08.2017

Обратная связь для разработчиков PostgreSQL

Когда я тестировал PostgreSQL, то у меня было много вопросов к тому, в каких условиях используют DBA эти СУБД: на какой файловой системе, сколько RAM и CPU на сервере, какие дополнительные расширения они устанавливают и т.д. Время ресурс не бесконечный, а тестирование ПО вещь дорогая, поэтому хотелось знать ответы на эти вопросы, чтобы правильно спланировать тестирование и фокусироваться на тех конфигурациях тестовых окружений, которые бы покрывали нужды большинства пользователей СУБД PostgresPro.

Чтобы получить ответы на такие вопросы есть два способа:

  1. общение с представителями компаний, у которых больше все установок СУБД и которые приносят больше всего дохода компании-производителю. Такое общение обычно происходит со стороны отдела продаж или со стороны менеджера продукта. С таким способом как минимум два недостатка: вероятность искажения информации пока она дойдет от пользователей до отдела разработки и тестирования и отсутствие оперативности в предоставлении информации.
  2. автоматический сбор нужных метрик средствами самого продукта и отправка их разработчикам.

Второй способ широко используется и для коммерческих продуктов и для открытых проектов. Но для PostgreSQL я не нашёл расширения, которое бы собирало параметры СУБД и отправляло на удаленный сервер. Поэтому решил сделать его сам.

В первую очередь я посмотрел на расширение для MariaDB. Их расширение для сбора статистики по умолчанию установлено и выключено. После включения с заданной периодичностью расширение собирает значения 850 параметров и отправляет их на сервер компании MariaDB. Статистику некоторых параметров можно посмотреть на специальной страничке.

Для своего расширения я решил вместо данных в формате списка key=value использовать JSON. Просто потому что это будет удобнее и в PostgreSQL хорошая поддержка JSON (операторы и тип данных). Отправка отчёта с данными с помощью самого расширения мне показалась излишним. Для отправки проще использовать curl, а периодичность настроить в crontab(1).

Составил список того, что интересно было бы знать при разработке: версия СУБД, список расширений, настройки СУБД из postgresql.conf, размер БД на диске, файловая система диска, на котором находится $PGDATA, информация о CPU и RAM, информация об операционной системе и идентификатор СУБД. Для части параметров можно составить SQL запросы и на выходе получить JSON структуру. А некоторых параметров в БД нет. Для таких параметров сделал отдельные SQL функции на C, вывод которых уже добавлял в отчёт. Так получилось расширение pg_feedback. Было бы здорово сделать ещё сервис с web-ui, чтобы смотреть статистику по полученным отчётам, но пока получилось их только собирать и складывать в СУБД - pg_feedback-webui. Да и не уверен я, что нужно писать специальный сервис, когда есть Logstash и Kibana.

22.07.2017

Переносимый интерфейс операционных систем

Читаю документацию по функции statfs(2), а там такое:

Nobody knows what f_fsid is supposed to contain (but see below).

Дальше идёт объяснение того, как f_fsid используется в разных ОС, но суть в том, что нет единого мнения как значение из этого поля использовать. Это несмотря на то, что поле присутствует в описании struct statvfs в POSIX 1003.1-2001.

19.07.2017

Where is the OpenBSD community?

Yesterday I decided to determine where the OpenBSD community should have its interactive communication. Options included were Google Plus, Reddit and other social networks. The results were not surprising, with community prefer old-style communication - mailing lists maintained by project people. Less popular community resources see below:

03.07.2017

Обратно на OpenBSD

Поскольку мой основной ноутбук стал совсем старым (шутка ли MBP Mid 2010), то я стал раздумывать над его заменой. После исследования наиболее актуальных моделей на Яндекс.Маркете в финал вышли: MacBook Air, Dell Latitude, Lenovo X1 Carbon. MBA у меня был пару лет во время работы в Virtuozzo и вцелом показался очень удобным за исключением того, что у него был глянцевый экран и не было трекпойнта, который мне после ThinkPadов очень полюбился. Серия Dell Latitude понравилась своей такой же строгостью стиля как старые ThinkPadы. И выбирая между Latitude и X1 Carbon я всё-таки остановил свой выбор на X1.

С операционной системой долго выбирать не пришлось - я знал, что раз уж прийдется переезжать с одного ноутбука на другой, то это мой шанс опять вернуться на OpenBSD, по которой я успел сильно соскучиться за несколько лет использования Mac OS. У одного из разработчиков OpenBSD Reyk Floeter тоже X1 и он описал проблемы OpenBSD на X1. Поэтому я заранее знал к чему нужно быть готовым. Но после покупки мне всё равно пришлось повозиться с установкой.

Во-первых, на ноутбуке стояла чистая лицензионная Windows и перед форматированием диска хотелось её сохранить. Я знаю про CloneZilla, g4u, SystemRescueCD и другие инструменты, с помощью которых можно загрузиться и сделать полный бэкап диска. Но для g4u нужен CDROM, которого нет в X1, для SystemRescueCD не получилось сделать загрузочную флешку, а c CloneZilla что-то тоже не получилось. И тут выяснилось, что кроме установочной флешки OpenBSD мне больше ничего не надо - в установочном образе есть dd и ядро прекрасно определяет мой внешний USB HDD.

Во-вторых сразу после начала загрузки в EFI режиме гас экран :) Проблема решилась включением опции CSM в BIOS.

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

em0 at pci0 dev 31 function 6 “Intel I219-V” rev 0x21: msi em0: Hardware Initialization Failed em0: Unable to initialize the hardware

Потом я конечно разобрался, что проблема была из-за включенной опции ‘Wake on Lan’ в BIOS и позже нашел обсуждение этого бага в рассылке.

Кстати пока выбирал себе ноутбук я собрал с них dmesg. Если выбираете Latitude, то можно заранее посмотреть что из железа не работает.

02.07.2017

Крепёж для велосипеда на стену

Когда я купил велосипед, то сразу начал думать как и где я буду его хранить. Выбирать где именно хранить особенно не приходилось - в квартире места для велосипеда не было, поэтому вариант только один - балкон. Оставалось выбрать крепеж на стену. В магазинах очень популярны разного рода металлические крюки для крепления на стену и на которые уже вешается велосипед. Мне они все казались массивными и не эстетичными для квартиры. Больше всего зацепил крепеж от канадцев - пластмассовый крепеж в виде буквы П, в который предполагалось вставлять колесо байка. Но при все своей простоте цена крепежа просто зашкаливала - около двух тысяч рублей. Я тогда нашел себе более дешёвый аналог - Cycle Snap, но слишком уж понравился канадский Clug. Производитель Clug ещё примечателен тем, что одно время на сайте выкладывал STL модель крепежа для самостоятельной печати на 3D принтере. Но потом они ее убрали объяснив это тем, что 3D печать не гарантирует вам такого же качества, как крепеж в их онлайн магазине.

Сегодня друзья прислали ссылку на блог, в котором автор описывает как он по найденным в интернете фотографиям Clug сделал STL модель и выложил её для всех желающих. Качество печати у 3D принтера действительно не такое как у оригинального Clug, но если для вас это не имеет значения, то сгодится и так.

24.06.2017

Лайфхак с TeX

Изредка пользуюсь LaTeX и каждый раз меня удручает его установка - весь дистрибутив занимает около 2 Гб. Если вам не нужны все расширения, которые есть в полном дистрибутиве, то лучше и быстрее установить базовый пакет BasicTeX. Его установщик занимает 64 Мб и после установки всего 110 Мб. Недостающие расширения можно поставить с помощью tlmgr. Например: tlmgr install collection-fontsrecommended.

09.05.2017