Ассиметричный ответ   нет откликов

Размещено 15/04/2009 в 23:50 в разделе ПО

Компания «Доктор Веб» сделала генератор ключей к вирусу Trojan.Winlock.19 :)

Написано 15-04-2009 автором goodguy

Сколько же записей обновилось?   откликов: 2

Размещено 30/03/2009 в 15:43 в разделе Базы данных,Языки

Вроде бы простой вопрос, сколько рядов было затронуто SQL-операцией UPDATE, но и здесь притаился подводный камень (о котором, правда честно предупреждают в документации). В MySQL в это число могут не попадать записи, у которых данные не потребовалось изменять. А значит, если REPLACE не подходит, то нужно проводить дополнительные проверки на тему того, сколько же данных вы обновили. Я споткнулся об этом в функции mysql_affected_rows в PHP. Там-же можно найти один из вариантов решения – использовать mysql_info, но в этом случае нужно парсить строку с ответом. Ну а дальше в вариантах SELECT‘ы и т.п.

Написано 30-03-2009 автором goodguy

Метки: ,

Совместимость на уровне Microsoft   нет откликов

Размещено 27/03/2009 в 12:55 в разделе Open Source,ПО

Имеем: Vista x64 и Outlook 2007. Оба наших друга имеют честные лицензионные ключи из MSDN. Последний причём нужен для единственной цели – синхронизации с КПК (поэтому ставиться отдельно от Офиса). Но, сделав нормальную установку без всяких подвохов получаем сообщение «Microsoft Outlook не был установлен для текущего пользователя». Явно дело нечисто. Начинаю поднимать форумы – в русскоязычной части никакого определённого решения нет (да и не поднимали особо вопрос, хотя видно, что у него уже давняя история). Ставим все обновления к Outlook на всякий случай. Переставляю, меняю права на файлах – одна ерунда. Решение находится странице на второй странице забугорного форума. Нужно скачать программу SetACL – Windows permission management, и с её помощью сбросить права администратора у компонент командой, выполненной от администратора:


setacl -ot reg -on "HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components" -actn setprot -op "dacl:np;sacl:nc" -rec yes

Итог: несовместимость между широко распространёнными продуктами Microsoft побеждается с помощью open source утилиты.

Написано 27-03-2009 автором goodguy

Метки:

OpenID   нет откликов

Размещено 16/03/2009 в 09:50 в разделе Разное

В стремлении сделать лучше хотя бы свой уголочек Сети, поставил в оба блога плагин к WordPress для подписи комментариев с помощью OpenID, а заодно он стал и моим OpenID-провайдером без всякого делегирования (хотя и такое тоже умеет).

Написано 16-03-2009 автором goodguy

Метки:

Болезнь велосипеда в криптосредствах   откликов: 5

Размещено 10/03/2009 в 17:48 в разделе ПО,Разное

Насколько мне известно, у нас в стране официально признан только криптопровайдер КриптоПро, и это всерьёз касается серьёзных банков и т.п. организаций. Недостаток его в том, что он сделан в виде COM-объекта, но решение как к нему подключиться, если потребуется, можно найти. А для всех остальных случаев, есть надёжный и удобный GPG/PGP с интерфейсами под кучи языков программирования, отлаженными библиотеками, и поддержкой всех платформ. Но вот как понять очередных «гениев», создающих свои библиотеки шифрования с какими-то бредовыми наворотами? Уже в третий раз за короткий срок сталкиваюсь с необходимостью прикрутить поделку неизвестных творцов и на этот раз это вообще шедевр — используются RSA ключи и нормальная PGP подпись, только в начало добавлены хэши и идентификатор ключа, да чуть изменены строковые разделители. Почему нельзя было обойтись обычной armor-записью и вытаскивать данные прямо из подписи? И ведь не поленились, написали версии под разные платформы и к тому же под C, C++, Delphi и Java.

Болезнь придумывания своего, походу, поражает только российские умы. Работали с британскими аутсорсерами одних наших партнеров — сразу предложили GPG. А наши всё пытаются или какую-то .NET DLL пропихнуть, или ещё какое-нибудь чудо, которому из настроек можно только адрес сервера дать и гадай какие у неё таймауты на соединение и логика запроса. А могли бы упростить работу по поддержке и себе. Но, пока им удобнее сотворить некое Windows DLL, а вы там уж сами разбирайтесь.

Написано 10-03-2009 автором goodguy

Метки:

SQLite и JOIN   нет откликов

Размещено 06/03/2009 в 12:25 в разделе Базы данных

Обычно по работе, когда требуется сохранить какую-то информацию (вроде справочников абонентов) в компоненте, которая отвязана от основного проекта, я стараюсь использовать BerkleyDB. Она быстра, когда для доступа используется только какой-то ключ и вполне практична. Но в одном из проектов с ростом количества доступов к файлу базы от разных потоков стали происходить коллизии и терялись части данных (частично виню в этом механизм доступа, реализованный в PHP, частично – недоработки в компоненте). К тому же усложнялась структура данных, хранящихся в каждом ключе. Для разрешения вопроса был выбран SQLite, т.к. с ним возможно разрисовать структуру данных, и поддерживается одновременная работа с одной базой.

В ходе проверок запросов выяснился весьма интересный момент. В привычных мне ранее PostgreSQL или MySQL конструкция вида:

SELECT b.id, f.title as foo_title, b.title
FROM bar b LEFT JOIN foo f ON f.id=b.foo_id

будет отрабатывать вполне успешно. Но не в SQLite. И дело не только в том, что конструкцию с JOIN надо заключать в круглые скобки. Внутренняя логика SQLite превращает это выражение в один источник и не позволяет выделить из какой именно таблицы тебе нужно взять поле. И в данном примере значение title из foo перекроет значение title из bar. Т.е. результатом запроса вида:

SELECT id, title
FROM (bar b LEFT JOIN foo f ON f.id=b.foo_id)

Будут значения id и title из таблицы foo. Выход один: делать объединение таблиц в конструкции WHERE, тем более, как говорит документация потери быстродействия в этом случае не будет.

Написано 06-03-2009 автором goodguy

Метки: ,

Русский брат большого брата   нет откликов

Размещено 09/09/2008 в 13:26 в разделе Разное

Если у Google есть Google Labs, то у Яндекса есть мини-брат в виде Яндекс.нано, в котором живут забавные и полезные проекты, вроде «Склонятора», разных виджетов для поиска и не только и даже немного радости для любителей iPhone или русского языка. Можно поразвлекаться на досуге :)

Написано 09-09-2008 автором goodguy

Метки:

Полезные дополнения к datetime   нет откликов

Размещено 04/09/2008 в 12:09 в разделе Разное

Есть такое удобное дополнение к модулю datetime в python, как dateutil. Из часто встречающихся нужд позволяет упростить:

  • Разбор строки в объект datetime;
  • Работу с временными зонами (включая их справочник и использование информации системы);
  • Разнообразные вычисления дат исходя из правил, вроде «первый понедельник марта».

Написано 04-09-2008 автором goodguy

Метки:

Внимательное отношение к стандартам   нет откликов

Размещено 26/08/2008 в 17:32 в разделе Разное

По ходу работы пришлось мне немного освоить 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.

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

Написано 26-08-2008 автором goodguy

Метки: , ,

Удаление всех файлов из списка   откликов: 2

Размещено 25/08/2008 в 11:06 в разделе Разное

Всё время вылетает из головы написание команды, поэтому записываю как для себя так и для интересующихся. Как просто в bash грохнуть все файлы, названия которых сохранены в некотором somefile:

for name in `cat <somefile>` ; do rm $name ; done;

Подсказка из комментов: есть более простой вариант: xargs rm < somefile

Написано 25-08-2008 автором goodguy

Метки: