Последовательность инициализации и сброса в расширениях PHP
Я сейчас занимаюсь написанием расширения PHP, которое меняет UID/EUID (а также GID/EGID) процесса PHP-интерпретатора на UID/GID владельца DocumentRoot сайта. При этом по замыслу расширение должно отключаться, если SAPI не используется (например, запущена CLI-версия интерпретатора).
Для этой задачи оказалось важным знать точную последовательность инициализации и финализации. Далее »
Автор: Vladimir, опубликовано в: C/C++, PHP, комментариев: нетАвг
2009
GCC: освобождение ресурсов для ленивых
Одной из, скажем так, “нетрадиционных” возможностей, которые предоставляет GCC, являются атрибуты типов, переменных и функций.
Я хочу рассказать об одном из них — а именно, отвечающем за удаление использованных ресурсов. Далее »
Автор: Vladimir, опубликовано в: C/C++, комментариев: 2Июнь
2009
PHP: зависимости времени выполнения между расширениями
Так (как, кстати, рекомендует Sara Golemon) нельзя:
static zend_module_dep php_afs_depencies[] ={
ZEND_MODULE_REQUIRED("krb5");
{NULL,NULL,NULL}
}
#endif
Потому что даже не скомпилируется, если с ZEND_MODULE_API_NO (не) повезёт. Далее »
Май
2009
О пользе избыточной инициализации, или, В исходный код смотреть вредно
То, что данные нужно инициализировать перед использованием, знают все. Но иногда правильная инициализация — хитрая штука. Я с этим столкнулся, когда писал расширение для PHP, работающее с Voxel Hosting API.
Одна из проблем PHP — плохая документация (отсутствие таковой) по внутреннему API. А из кода Zend Engine не всегда всё однозначно ясно, чо временами приводит к очень милым ошибкам вида «фиг ты меня найдешь» (смягчено из соображений цензуры).
Об одной из таких особенностей я хочу рассказать. Далее »
Автор: Vladimir, опубликовано в: C/C++, комментариев: нетМай
2009
Параллельная версия генерации и проверки подписи по алгоритму DSA
DSA — алгоритм для создания и проверки электронной подписи с использованием открытого ключа, основанный на вычислительной сложности взятия логарифмов в конечных полях.
Алгоритмы, использующие «большие числа» — всегда хорошие кандидаты на распараллеливание. Дело в том, что даже при современной мощности процессоров многие задачи являются довольно сложными с вычислительной точки зрения. Хотя криптографические алгоритмы, как правило, очень тяжело поддаются распараллеливанию (например, когда значение, вычисленное на предыдущем шаге алгоритма, используется на текущем шаге), чисто математические задачи все же дают определённый простор для распараллеливания.
В данной статье рассмотрим возможность распараллеливания алгоритма DSA. Далее »
Автор: Vladimir, опубликовано в: C/C++, OpenMP, Безопасность, комментариев: 1Май
2009

Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.





