2010/02/13

OpenID, Zend И все-все-все

Внимание! позавчера вышла распрекрасная версия зенда 1.10.1, о чём нам сообщает доверенный источник в лице http://zend-framework.ru/zend-framework-1-10-1-release/
Рекомендую означенный блог к ознакомлению, масса информации для нубов в зенде; многого вы не найдёте в официальной документации.
Забавность произошла у меня с зендом. Есть у них такое место, как Developer Zone http://devzone.zend.com/. Резонно было бы ожидать, что статья http://devzone.zend.com/article/3581 "Getting Started with OpenID and PHP" содержит инфу про Zend_OpenID... А вот и нет! В статье описывается работа с библиотекой The PHP OpenID Library, by JanRain Inc.
Так-то!
Искренне ваш,
и.о. К.О.

зы: в упомянутом блоге описан баг зенд-оид и гугла и хак к нему http://zend-framework.ru/google-zend_openid/ Надеюсь, в новой версии баг исправили, надо глянуть.
Также не забываем про первую в РФ конфу ЗФ; предварительная регистрация http://www.zfconf.ru/pre-registration.php ; твитор @zfconf

2010/02/07

PHP и циклический битовый сдвиг

Возник на канале вопрос про циклический сдвиг в пхп... В качестве послеобеденного фана набросал концепт; надеюсь, кому-нибудь пригодится. Заметьте, функция для любой разрядности, хотя принимает и возвращает только десятичные.


function
circular_shift($what,$direction='<<',$steps=1,$wordlength=32)
{
$bits = base_convert((string)(int)$what,10,2);

for (
$i=0; $i < $steps; $i++)
{
$length = strlen($bits);

if (
'<<'==$direction)
{
if (
$length == $wordlength && '1' == $bits[0] )
// overflow
$bits = substr($bits,1).'1';
else
$bits = $bits.'0';
}
elseif (
'>>'==$direction)
{
if (
$length < $wordlength )
// shortage
$bits = $bits.'0';
else
$bits = $bits[$length-1].substr($bits,0,$length-1);
}
else
die(
'WTF?!');
}
return (int)
base_convert($bits,2,10);
}

print
circular_shift(8) ;


зы: Другие типы сдвигов делаются аналогично. Развивая тему, можно даже связать сдвиги с колбеками и завернуть в класс.

Успехов