понедельник, 14 декабря 2009 г.

ps_robox и FTP

При копировании по FTP всей сборки VirtueMart,на котором стоял рабочий модуль оплаты Robox, получалось, что в конечном месте работа данного модуля загибалась. Вместо того, чтобы при совершении покупки вывести все доступные способы оплаты, появлялась фактически полностью пустая страничка.
Чтение логов привела меня к следующей ошибке:
Fatal error: Unable to read X bytes in ps_robox.php on line 0

Как оказалось, в силу того, что файл зашифрован и расшифровывался за счет установленного Zend Optimizer, возникала проблема, если этот файл передавать по FTP не в бинарном режиме (я передавал в ASCII)... Переключение режима в бинарный решило проблему...

© 2009, web-vamg.com

четверг, 26 ноября 2009 г.

Закругленные уголки (продолжение)

Было рассмотрено еще одно решение с использованием библиотечки DD_roundies.

Проверка все на тех же браузерах показала, что по внешнему виду и по удобству данное решение схоже с CurvyCorners, но по скорости работы ничуть не уступает Rocon'у.

Что же касаемо кроссбраузерности, то новое решение отказалось рабтать лишь в Опере.

Что же, объединение двух последних методов устраняет это обидное упущение:


<script type="text/JavaScript">
function initCorners() {
var settings = {
tl: { radius: 10 },
tr: { radius: 10 },
bl: { radius: 10 },
br: { radius: 10 },
antiAlias: true
}
curvyCorners(settings, "my_div.my_class");
}
if (navigator.userAgent.indexOf('Opera') >= 0) {
addEvent(window, 'load', initCorners); //Для оперы применяем КурвиКорнерс
}
else {
DD_roundies.addRule('my_div.my_class', '10px', true);//Для остальных - ДиДиРаундис
}
</script>

Закругление углов скриптами

Сегодня в своей работе пришлось столкнуться с задачей реализации у блоков круглых углов. Причем, как с нулевой границей, так и с существующей. Немаловажна прозрачность. И без всяких картинок. Без лишних div-ов.

Подобные вещи реализуются, насколько мне известно, только скриптами.

Было рассмотрено пока два (не было времени) варианта:

1. Проект Сергея Чикуенка Rocon
2. Проект СurvyСorners.

Оба решения достаточно легко внедряются на страничку. Причем, вариант Сергея обладает большей лаконичность, а 2-й - большей гибкостью.

Итого, плюсы и минусы:

1. Скорость. Работа Rocon незаметна. CurvyCorners заметно тормозит, так как взаимодействует с целевыми элементами после загрузки страницы. При изменении размеров окна, блоки не меняют своих размеров, так как скрипт заменяет все относительные величины на статичные (те, что были высчитаны на момент работы скрипта). Поэтому, это несколько косяк.
2. Внешний вид. Уголки Чикуенка,, на мой взгляд - пример для подражания, в то время, как у КурвиКорнерсов они слегка "грязноваты".
3. Кроссбраузерность. Тестировалось на последних версиях Firefox, Safari, Google Chrome, Opera и на 7-м Осле Мелкософта. Вот тут работа Чикуенка разочаровала. Десятая Опера оставляла рудиментарные острые углы наряду с уже округленными. А Осел кроме того в некоторые моменты оставлял целые куски каркаса (если блок был с границей), оставляя что-то крайне ужасное. В данном случае речь идет о div-ах с display: inline-block).
CurvyCorners пока оправдывают свою заявленную кроссбраузерность.

Собственно, пока мой выбор за СurvyСorners.

© 2009, web-vamg.com

вторник, 24 ноября 2009 г.

Местоположение посетителя сайта по его ip на русском языке

Как-то делал собственный модуль сбора статистики о посещениях сайта. В какой-то момент потребовалось определить в удобочитаемой форме местоположение посетителя. Базы данных RIPE у меня нет, потому решил воспользоваться одним из сайтов, предоставляющую услугу предоставления информации по ip-адресу. Я извлекаю эту информацию, парсю и в большинстве удачных случаев получаю адрес посетителя. Но на английском языке. Опять же, модуля какого-нибудь транслятора нет. Воспользовался Goggle.Translate. Ему скармливаю адрес на английском, парсю и получаю то, что нужно в достаточно приемлемой форме.

воскресенье, 22 ноября 2009 г.

Register-Globals or not?

Возможно, ситуация не совсем распространена, но я столкнулся с таким вот моментом: в компании VAMG, в которой я работаю, есть еще один web-программист. Он делает сайты с обязательной настройкой php.ini, в которой register globals включен.
Естественно, когда приходится редактировать его код (с переносом на локальный сервер), либо тупо переносить на другой хостинг его сайт, возникает проблема в случае, если на новом месте register globals отключено.
Как вариант, конечно, можно включить. Но это не есть правильно.
Я использовал следующий хак:

//Имеем набор переменных формы: n1, n2, n3.
$params = array ('n1', 'n2', 'n3');
foreach ($params as $param) {
eval("$".$param." = '".((isset($_POST[$param]))? $_POST : ((isset($_GET[$param]))? $_GET[$param] : NULL))."';");
}

© Ivan Khramkov, http://web-vamg.com