В стремлении сделать лучше хотя бы свой уголочек Сети, поставил в оба блога плагин к WordPress для подписи комментариев с помощью OpenID, а заодно он стал и моим OpenID-провайдером без всякого делегирования (хотя и такое тоже умеет).
Архивы по Категориям: Разное - Page 2
Болезнь велосипеда в криптосредствах
Насколько мне известно, у нас в стране официально признан только криптопровайдер КриптоПро, и это всерьёз касается серьёзных банков и т.п. организаций. Недостаток его в том, что он сделан в виде COM-объекта, но решение как к нему подключиться, если потребуется, можно найти. А для всех остальных случаев, есть надёжный и удобный GPG/PGP с интерфейсами под кучи языков программирования, отлаженными библиотеками, и поддержкой всех платформ. Но вот как понять очередных «гениев», создающих свои библиотеки шифрования с какими-то бредовыми наворотами? Уже в третий раз за короткий срок сталкиваюсь с необходимостью прикрутить поделку неизвестных творцов и на этот раз это вообще шедевр — используются RSA ключи и нормальная PGP подпись, только в начало добавлены хэши и идентификатор ключа, да чуть изменены строковые разделители. Почему нельзя было обойтись обычной armor-записью и вытаскивать данные прямо из подписи? И ведь не поленились, написали версии под разные платформы и к тому же под C, C++, Delphi и Java.
Болезнь придумывания своего, походу, поражает только российские умы. Работали с британскими аутсорсерами одних наших партнеров — сразу предложили GPG. А наши всё пытаются или какую-то .NET DLL пропихнуть, или ещё какое-нибудь чудо, которому из настроек можно только адрес сервера дать и гадай какие у неё таймауты на соединение и логика запроса. А могли бы упростить работу по поддержке и себе. Но, пока им удобнее сотворить некое Windows DLL, а вы там уж сами разбирайтесь.
Русский брат большого брата
Если у Google есть Google Labs, то у Яндекса есть мини-брат в виде Яндекс.нано, в котором живут забавные и полезные проекты, вроде «Склонятора», разных виджетов для поиска и не только и даже немного радости для любителей iPhone или русского языка. Можно поразвлекаться на досуге
Полезные дополнения к datetime
Есть такое удобное дополнение к модулю datetime в python, как dateutil. Из часто встречающихся нужд позволяет упростить:
- Разбор строки в объект datetime;
- Работу с временными зонами (включая их справочник и использование информации системы);
- Разнообразные вычисления дат исходя из правил, вроде «первый понедельник марта».
Внимательное отношение к стандартам
По ходу работы пришлось мне немного освоить perl, для того, чтобы помочь нашим партнёрам написать SOAP-клиента для нашей системы (уже забавно, помогать знающим язык, параллельно его изучая). Использовалась там более-менее стандартная библиотека SOAP::Lite. Но, когда я работал над клиентом у меня стояла её довольно ранняя версия, под которой я успешно отладил пример, и отдал его для дальнейшей эксплуатации. Проблема всплыла позже, когда партнёры стали заводить систему у себя. И обнаружили, что сообщения об ошибке возвращаются от них не в совсем том виде, в котором ожидает наша система, а именно подробности об ошибке в detail были как-то странно закодированы. Для наших компонент эта часть сообщения была весьма критичной и начали разбираться. Сначала выкопал, что ребята вообще не запарились включить поддержку юникода в своём скрипте, а потом стало ясно, что версии библиотек у нас не совпадают. Обновил свою и радостно увидел ту-же самую муть, что приходила от них. В поисках решения перекопал кучу страниц, и в одном документе увидел интересный момент в описании SOAP::Fault:
Note that fault detail content in a message is represented as tag blocks.
Что привело меня на волшебный документ — спецификацию, в которой подразумевается, что в detail должны быть дочерние элементы:
All immediate child elements of the detail element are called detail entries and each detail entry is encoded as an independent element within the detail element.
Авторы библиотеки явно строго последовали этому принципу и не оставили лазейки для передачи там обычной строки. Система, не рассчитанная на такую возможность, оказалась без возможности взаимодействовать по стандартам и требует доработки. Отсюда вывод: даже если инструментарий позволяет немножко нарушать стандарты, это не повод о них забывать — они могут аукнуться совсем неожиданно.
Удаление всех файлов из списка
Всё время вылетает из головы написание команды, поэтому записываю как для себя так и для интересующихся. Как просто в bash грохнуть все файлы, названия которых сохранены в некотором somefile:
for name in `cat <somefile>` ; do rm $name ; done;
Подсказка из комментов: есть более простой вариант: xargs rm < somefile
Elisa
В который раз это имя оказывается связанным с искусством, причём с давних пор. И современный пример прекрасно дополняет вклад классиков в поддержании его на слуху. Обнаружился он совершенно случайно, когда озадачился тем, что пора превращать свой домашний сервер во что-то более увлекательное, чем просто хранилище файлов и веб-проектов. И оказалось, что есть очень симпатичный проект медиа–центра, с удобным интерфейсом и возможностями, отлично вписывающимися в моё представление того, что должно получиться в итоге. И с версиями как под Linux так и под Windows! А самое интересное — посмотрите, на чём оно написано
Что бывает от нехватки тестирования
За последние пару дней коллеги на моей работе организовали два прокола, один крупный, потребовавший потом откаты потока платежей, а другой менее заметный (но тоже был бы весьма неприятным, случись он в других условиях). Что примечательно — в обоих случаях повинно недостаточное тестирование. А стало оно таковым из-за целого клубка недочётов, может быть недостаточной жёсткости временами и некоторой неорганизованности. По сути, весьма сложная система почкуется аки гидра на отдельные проекты, каждый из которых стремительно набирает вес. И каждый килограммчик должен придирчиво осмотреть тестер, чтобы проверить, что там только полезный вес без жирков и опухолей. Но, тестер смотрит на гидру и видит верхушку айсберга, а внутренние особенности могут проплыть мимо, потому что увы и ах, но некому описать анатомию нашей малышки (и уж тем более не успеть, когда ей то вшивают силикон, то вырезают аппендикс). Дитё уходит с осмотра с записью «здоров», и вдруг выясняется что у неё геморрой. Или оказывается у неё есть вторая почка, которую никто не проверил. И чем дальше оно растёт, тем меньше знают о том, что у неё вообще нужно осмотреть. И это при том, что используются весьма неплохие инструменты для управления процессом, но вот беда — далеко не все используют их разумно и в полную силу.
«Крендельки» в API ЖЖ
Свершилась тут недавно маленькая радость — взял я себя в руки и дописал бота для постинга RSS-лент в LiveJournal, и обновил свой ЖЖ с его помощью. Заодно и проверил опции редактирования записей и т.п. Очень приятное оказалось XML-RPC API у этой системы, но есть одна вещь, о которой явно в документации не упоминается. Я, следуя рекомендациям, выбрал путь авторизации с помощью credentials, как самый надёжный и исключающий прямую передачу пароля по сети. И по идее, полученную строку можно использовать несколько раз, до истечения срока действия (даже был сделан учёт расхождений во времени у сервера ЖЖ и у меня). Но, как выяснилось, действует строгое правило — один «крендель» на один запрос постинга/редактирования. Что в принципе правильно. Так что, кто будет сталкиваться — учтите
PS: Кому не понравились вылезшая вчера кучка постов в моём ЖЖ — извините!
последние отклики