beldmit: (Программизм)
Поиск забытых индексов при FOREIGN KEY для PostgreSQL.

У себя нашёл не очень много и не очень актуальных, но вообще пригодится, прикопаю.
beldmit: (Программизм)
Отображение русских букв в утилитах командной строки openssl. Она и раньше была, но существенно не везде.

То, что можно было доделать сравнительно малой кровью, я доделал. Subject и issuer сертификатов теперь будет выводиться по-русски, если указать опцию вывода -nameopt utf8. До X509 extensions так просто не добраться, так что завёл issue.

Спасибо [personal profile] vitus_wagner за сделанную в своё время сводку.
beldmit: (Программизм)
У меня метеопатия, как, в общем, у многих горожан категории «бледная немочь». Вылетает, как правило, сон (грядущий). В общем, за прошлую и эту неделю в результате у меня нашлось время, которое удалось позитивно использовать, породив 3 мелких патча к openssl.
Read more... )
На всякий случай прикопаю здесь ссылку на старый пост [personal profile] vitus_wagner на эту тему.
beldmit: (Программизм)
Сделал бету очередного микропроекта на python. Проект пока не публичный, если станет таковым — похвастаюсь.

Собственно, python там оказался (полу)случайно — альфу клиентской версии я сделал на Java, а когда мне заказчик сказал, что нужна серверная, я представил, как я бьюсь лбом о порог вхождения в экосистему Java на сервере и решил, что расшибу я тот лоб гораздо раньше. А со скриптовыми языками всё сравнительно просто, и пример того, что мне надо сделать, написанный на python, заработал с первого раза именно так, как мне требовалось. (На perl аналогичные модули работают несколько не так). Нина выбор тоже горячо одобрила. Я писал на python до того один раз 7 лет назад и воспоминания у меня были скорее положительные.

Некоторое время повозился с Django. Команд у manage.py больше, чем у git-а, документация в сети есть, но при гуглении есть шанс нарваться на какую-нибудь версию 1.4 (Cookbook-а для более новой версии я не нашёл, а удобнее всего для освоения с нуля именно он). Но типовые web-вещи там решаются просто и лучше, чем я бы написал с нуля, а учитывая, что мне нужно было всего-то пара страниц и раздача статики, то всё прошло идеально, хотя головой об стенку я побился. В Debian доступен 1.7.11, в upstream версия сейчас 1.10, а версия 1.7 значится на сайте как не поддерживаемая, я в итоге плюнул и поставил свежую версию через pip install. И прочие пакеты ставил так же, нарушая тем самым чистоту ленинских идей и отказываясь от менеджера пакетов.

Python я взял 2.7 (блин, посмотрел в предыдущие записи по тегу python — и осознал, что прошло 7 лет, а python 3 так и не завоевал мир). Из-за этого мне пришлось повоевать с указанием кодировок и, видимо, явной конвертацией в utf-8 в скрипте.

Финальным аккордом стала отладка cron-скрипта. То есть как нормальный скрипт он делал всё, что надо, а из cron-а он выдавал первое из серии диагностических сообщений, а затем падал с какой-то невнятицей. Через некоторое время нагуглилось, что надо выставлять переменную PYTHONIOENCODING=utf_8, и после этого всё заработало.

Вывод простой. Современные развитые скриптовые языки позволяют написать содержательный код без особого знания синтаксиса языка. Ну то есть я знал минимальные вещи, типа выравнивания пробелами и оформления циклов и управляющих конструкций, за чем-то сложнее лазил в учебник. И да, in stackoverflow we trust, но читать его надо очень внимательно и осмыслять, что же тебе посоветовали — просто копирование кода скорее всего не поможет.
beldmit: (Программизм)
Когда я впервые прочитал про введение не-ASCII доменов, я подумал "Что за идиотизм", и посочувствовал программистам, которым добавлять поддержку этого всего в свой код.
В 2006-2010 я работал в Мастерхосте, и сам оказался таким программистом.

Мемуар программиста )
beldmit: (Программизм)
Запрос для поиска пропущенных в базе индексов.

SELECT relname, idx_scan, seq_scan, seq_tup_read
FROM pg_stat_user_tables
ORDER BY seq_tup_read DESC;

И вообще интересная презентация.
beldmit: (Программизм)
Нашёл две ссылки у Алекса Семеняки в FB.

How to C in 2016 — это статья.

Modern C — а это книга.

Справедливости ради надо отметить, что макрос offsetof, о котором я узнал только в прошлом году — это вообще C90.
beldmit: (Программизм)
Вот этот коммит означает, что добавленная в OpenSSL реализация алгоритмов ГОСТ прекратила своё существование в рамках OpenSSL. Поддержка этих алгоритмов в TLS никуда не делась, я про это уже писал раньше.

ГОСТовый engine был добавлен в OpenSSL лет 10 назад силами «Криптокома» (а реализован в основном силами [livejournal.com profile] vitus_wagner), и с тех пор к нему успели приложить руку человек 5, в том числе и я. Убран он потому, что OpenSSL Team не готова поддерживать лишние алгоритмы, в которых не понимает.

Актуальную версию ГОСТ engine брать здесь. Мейнтейним её мы с Витусом. Сейчас мне необходимо догнать стремительно убежавшую вперёд версию openssl 1.1.0, где запретили обращение почти ко всем потрохам структур, а потом прикрутить витусову automake-овую сборку.
beldmit: (Человеческое лицо)
Никак я их не проспал.

В тудулисте осталось пара неспешных пунктов. Несколько раз вылезал в гости: гладил кошек у Айне и у Шатовского. Один раз гостей принимали. Сделали налёт на Красносельскую.

Допилил до очередной точки с запятой открытую реализацию ГОСТов для openssl. Заняло это пару-тройку дней. Сделал с помощью [livejournal.com profile] rousseau кусок задачи в рамках волонтёрской активности для ICANN. Ещё два запланированных куска осталось, их уже буду сам добивать.

Вчера сел за третьего «Ведьмака». Пока проходится бодренько, правда, с подсказками Нины, которая это некоторое время назад закончила. Думал купить седьмых «Героев», но испугался отзывов и забил.

Сгоняли Галку в матлагерь. Тем самым девица была обломана в минеральных планах на каникулы.

Купил и прочитал свежепереведённую на русский Джой Адамсон. «Королева Шабы» — книга про попытку реакклиматизации в природе леопарда (после львицы и гепарда). В этой книге есть рассуждения про телепатические способности живности — интересно, они и в прошлых были, но их вырезали? Впечатление такое, что леопарды из вышеперечисленной троицы наименее дружелюбны. Что логично: гепардов приручали в количестве, львов худо-бедно тоже и они стайные, а про леопардов навскидку не припоминаю.

Сегодня закрыл каникулы биатлоном ЧГК+бридж. Спасибо организаторам и партнёрам по команде, дотянули до серебра (правда, всего из 8 команд).

Завтра на работу. Планов есть.
beldmit: (Программизм)
Купил и пролистал по наводке [livejournal.com profile] alenacpp книгу Скотта Мейерса «Современный и эффективный C++». Как всегда, сколько-то советов по возможностям, предоставляемым стандартами C++11 и C++14.

Книга хороша, но то ли я недостаточно современный и эффективный, то ли бОльшая часть этих новых возможностей на самом деле возможности прострелить себе ногу. В общем, "C с классами" был мне более-менее понятен, алгоритмы и контейнеры тоже, а вот эти все новшества понятны весьма фрагментарно. Впрочем, пока что перспективы писать на C++ не предвидится.
beldmit: (Программизм)
Мой патч, обеспечивающий поддержку ГОСТов 2012 года, добавлен в openssl. Доступен он будет начиная с версии openssl 1.1.0.

Процесс занял почти полгода, считая от переговоров с Rich Salz во время IETF в Праге. Первая версия патча была отправлена 22 сентября, и вот, 2 месяца спустя, процесс сошёлся. За это время я немного разобрался с Git и GitHub как проявлением такового, пережил несколько перетрясок архитектуры openssl и существенно доработал патч в соответствии с указаниями Matt Caswell.

Хочу поблагодарить Андрея Колесникова за то, что он вдохновил меня на эту деятельность, и коллег из «Криптокома» за возможность воспользоваться их тестовой средой.

Следующее, что надо сделать, это отделить-таки open engine с реализацией ГОСТов в отдельный проект. В качестве части openssl ему неуютно.
beldmit: (Программизм)
Я давно хотел написать этот пост, но до разговора с Фёдором Сигаевым на PGConf.eu стеснялся.

Одно из позиционирований NoSQL-ных баз данных — отсутствие схемы. Я всегда этот момент не понимал. Собственно, у меня на рабочем столе (физическом) полное отсутствие схемы, и помойкой это не является только потому, что я её так не называю. В смысле, мало запихнуть данные в куда-нибудь, с ними надо ещё работать: искать по атрибутам или по их значениям, а значит где-то эти значения должны регламентироваться. Не будут регламентироваться — рано или поздно получите атрибуты topic, Topic и TOPICS с одной семантикой.

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

То есть по большому счёту летать вся эта структурированность будет в паре случаев.

1. Когда база используется как хранилище без обработки. Максимум - проверить, что то, что передали в качестве XML, таковым является.
2. Когда “структурированные” данные обрабатываются и пишутся локально (например, параметры для разных типов заданий в очереди). И то в этом случае приходится работать с такой структурой как минимум в 2 местах — при чтении и при записи.

Во всех остальных случаях получаются размазанные по приложению метаданные, которые удобней держать в одной точке — в базе. Удобнее, например, потому как grep-ать не надо, а можно описание таблицы посмотреть. Нельзя построить внешние ключи (ну, ORM это частично компенсирует) и навести типизацию тоже можно довольно ограниченно.

Лично я до сих пор использую из таких "бессхемных" типов в PostgreSQL ровно 2 — hstore и XML. XML при этом в моей задаче можно было бы заменить массивом hstore или отдельной таблицей, но из соображений отслеживания изменений оказалось проще внедрить XML. Можно было бы с таким же успехов json воткнуть, впрочем.

Конечно, недооценивать экономию усилий при добавлении новой колонки не надо. Это часто бывает самостоятельным геморроем, особенно если требуется zero downtime. Но пока что, по ощущениям, schemaless того не стоит.
beldmit: (Программизм)
... о командах ltrace и latrace. В отличие от любимого мной strace, позволяют отслеживать вызовы и из динамических библиотек, а не только системные.

strace я дёргаю регулярно, чтобы удостовериться, что позвали нужную версию библиотеки и вообще посмотреть, что за последовательность системных вызовов стоит за высокоуровневыми функциями. А эти ещё не пробовал.

Profile

beldmit: (Default)
beldmit

August 2017

S M T W T F S
  12345
678 9 101112
13 1415 1617 1819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 21st, 2017 01:57 pm
Powered by Dreamwidth Studios