Code snippets

Найпростіша plugin-архітектура на python

Так вже вийшло, що мені вдруге довелося писати модульну систему на пітоні. Причому вдруге довелося йти по одних і тих самих граблях, бо приклад минулої реалізації залишився на ноуті, який зараз лежить в сервісному центрі. Шлях нижче не являється оптимальним чи там найкращим, але головне, що він 100% робочий і задовольняє моїм потребам :) А потреби полягають в тому, що кожен плагін представляє собою реалізацію класу з певним набором функцій та має засіб для інстанціювання об’єкту цього класу не знаючи його імені. Отож…
Read the rest of this entry »


Заміна URL для Live search в IE

Одразу маленька відмазка: те, що надалі описане мені потрібно було виключно по роботі. Сам я IE не користуюсь - лише Оперою та Файрфоксом ;)

Не дивлячись на те, що сабжева задача здається вельми і вельми тривіальною насправді все не атк просто. Мається на увазі URL, по якому переходить браузер, якщо ви введети якусь маячню в Location Bar (напр. набір слів, або неіснуючий домен). Точніше велику проблему це становить для IE6. Для Internet Explorer 7 все вирішується просто - URL для закачки міняється правкою ключа реєстру:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes\{0633EE93-D776-472f-A0FF-E1416B8B2E3A}\URL

Міняємо прописаний там майкрософтівський Live search на щось типу:

http://www.google.com.ua/search?hl=uk&q={searchTerms}&meta=

де {searchTerms} - макрос, на місце якого підставляється введені в рядку браузера лексеми. І все ОК. А от в IE6 такого ключа нема. І там все робиться через дупу. Саме цей романтичний шлях і буде далі описано…


Доступ до Event’у, що створюється в сервісі

Сьогодні мав кількагодинний геморой з написанням сервісу. Точніше завдяки кодпроджекту сам сервіс написався на раз (стаття про те як написати сервіс [англ.]), а от взаємодія його з експлореровським BHO вилилась в здоровецьку проблему. А все через кляті права доступу до об’єктів ядра. Проблема, власне, була в тому, що Windows service який мну написав запускається по дефолту як і всі інші сервіси - від користувача SYSTEM. І от з тим-то і халепа, бо права на доступ до об’єктів ядра, що створються в сервісі виявляються спартанськими і звичанйому смертному, чи то пак додатку запущенному користувачем його не відкрити. Була купа ідей як його зробити, але зрештою як завжди допоміг Гугль, який вивів мене спочатку сюди, а потім і сюди. В результаті і народилось рішення.


Read the rest of this entry »