OScommerce boxes - пишем свой бокс

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

Бокс в OSCommerce - информационный блоки, который можно кэшировать отдельно и выводить в нужном месте шаблона. К примеру, перечень категорий или блок “текстовые страницы”, новинки каталога или хиты продаж. Создадим свой бокс, который для определенности назовем my_new_box.

1. определяемся с шаблоном бокса.

Скорее всего, тут сложностей не возникнет - обычно в шаблоне уже присутствуют боксы, которые внешне похожи на наш. Если же нет - совместными усилиями дизайнера+верстальщика (возможно, в одном лице вебмастера) сооружаем HTML код бокса. В общем виде что-то вроде:
Читать целиком »

Опубликовано Июль 2, 2011 | автор: levik  |  Без комментариев »

Кэшированный редирект или постоянно перебрасывает страница

Столкнулся с такой ситуацией. Страница (назовем её страница А) перенаправляет пользователя на форму входа-регистрации (Страница Б), если он не определяется как пользователь. Пользователь входит/регистрируется и при повторном переходе к Странице А вновь перенаправляется на Страницу Б.

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

Оказалось, дело в том, что сервер перед редиректом устанавливает кэширующие заголовки (видимо, в погоне за уменьшением нагрузки на сервер и, соответственно, увеличением скорости работы), которые “намекают” браузеру, что ответ надо бы сохранить (в данном случае на 2 часа). И тут же передается редирект с кодом ответа 301 или 302, который и попадает в кэш. При повторном обращении запрос к серверу (именно там производится проверка, вошел пользователь или нет) вообще не производится, а результат, полученный из кэша повторно перенаправляет на страницу Б. Помогла повторная отправка аналогичных заголовков, указывающих на то, что страницу кэшировать не нужно.

header(”Expires: Mon, 3 Apr 2000 07:00:00 GMT”);
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");

Вот такой вот “кэшированный редирект”.

Опубликовано Июнь 29, 2011 | автор: levik  |  Без комментариев »

Denwer, kaspersky и hosts - история одного фейла

Дано: Запускается denwer, однако… ни один хост кроме localhost недоступен.

Дополнительно: на компьютере установлен Kaspersky Internet Security 11

При этом файл hosts при запуске денвера тупо не изменяется. Однако никаких сообщений о запрете на запись нет. Поиски по сочетаниям kaspersky, Denwer, hosts сводятся к тому, чтобы добавить все исполняемые файлы  Denwer в доверенные, изменить разрешения файла.. включить DNS-клиент. Всё это вроде “нормально”…

Спустя некоторое время заметил, что файл hosts после запуска денвера возвращается в исходное состояние с датой изменения 18.08.2003.. однако при открытии в текстовом редакторе - отображается файл с хостами измененный только что. Ощущение идиота во мне усиливается )))

Отключаю Касперского.. повторяю манипуляцию с файлом - тоже самое.. Копирую файл 2003 года в другое место - копируется “новый” последний файл.. Сохраняю обратно - размер возвращается… Касперский отключен :)

Туплю… Долго туплю…

Повторяю ещё раз (ещё много-много раз) с самого начала -  туплю… Ухожу в форумы… читаю про наследование ограничений программ у Касперского (если программа запущена из другой программы, то она наследует её ограничения, если не указано другое).. вспоминаю, что касперский отключен… И ловлю себя на мысли, что запускаю всё это дело из Total Commander…

Редактирую hosts из проводника в блокноте - сохраняю… работает… Домысливаю, что версия Total - Portable (видимо, отслеживает изменения системных файлов.. и сохраняет их к себе.. редактор, который показывал “нужный” файл естественно запускался из Total )))

Вроде всё на местах - hosts изменен, DNS-клиент включен.. ан нет - нужные хосты не пингуются..

Оказывается, для VPN-подключения (компьютер использовался) был отключен lmhosts (галочка в свойствах сетевого подключения - TCP/IP - вкладка Wins) - ставим галочку, выбираем файл (?) - работает!

ps.

Опубликовано Июнь 22, 2011 | автор: levik  |  Без комментариев »

PHP - как удалить переменную из $_GET - редирект со склейкой

В продолжение статьи про “лишние” $_GET переменные выкладываю практическую часть - скрипт (сниппет-кусок готового кода) для редиректа на аналогичные страницы, но без лишних $_GET переменных. Т.е. склейка страниц c $_GET переменными и “основных” страниц, без них (или удаление $_GET переменных из URI)

if (!empty($_GET)) {
	$tounset = array('vmcchk','flypage');
	foreach ($tounset as $v)
		unset ($_GET[$v]);
	// new URI
	$request = substr($_SERVER['REQUEST_URI'],0,strpos($_SERVER['REQUEST_URI'],'?'));
	$qs = ''; // NEW query string
	if (!empty ($_GET)) {
		$qs = array();
		foreach ($_GET as $k=>$v) {
			$qs[] = '$k='.urlencode($v);
		}
		$qs = implode ('&',$qs);
		$qs = '?'.$qs;
	}
	header("HTTP/1.1 301 Moved Permanently");
	header ('Location:'.$request.$qs);
	exit();
}

Опубликовано Июнь 13, 2011 | автор: levik  |  Без комментариев »

vmcchk=1 - Virtuemart добавляет в конце URL vmcchk

В очередной раз порадовал Virtuemart - интернет магазин на Joomla. В этот раз красивые SEO-адреса были подпорчены непонятной припиской vmcchk=1 . Как и предпологалось из названия - это дело “рук” vm - virtuemart

Добавление этой переменной связано с проверкой Cookie у web-клиента (браузера т.е.). Чтобы убрать злостный vmcchk в конце УРЛ-ов следует подредактировать файл /classes/ps_session.php около 63 строки - проще всего закомментировать (в начале строки добавить // - двойной слэш)

if( @$_REQUEST['option'] == 'com_virtuemart' && USE_AS_CATALOGUE == '' ) {
$this->doCookieCheck(); // Introduced to check if the user-agent accepts cookies
}

Кроме того, не помешает для склейки страниц-дублей сделать 301 редирект на страницу без vmcchk

ps Что самое интересное, на форуме разработчиков склоняются к тому, чтобы убрать эту проверку, однако vmcchk до сих пор присутствует в URL-ах )))

Опубликовано Июнь 10, 2011 | автор: levik  |  Без комментариев »

Windows - как сменить IP из командной строки, утилиты для изменения сетевых настроек

Иногда при переходе от одного сетевого кабеля к другому (ноутбук с “проводным” подключением), часто бывает так, что требуется определенная настройка IP адреса - если DHCP  не включен (иногда так задумано некоторыми админами или провайдерами). Естественно, постоянное изменение параметров подключения может порядком надоесть, и появляется желание автоматически, одним кликом изменять IP адрес (а также другие параметры сетевого подключения)

Как сменить IP адрес из командной строки

Для смены параметров сетевого подключения из командной строки можно воспользоваться командой netsh (IP, маска, шлюз и флаг, указывающий, что шлюз основной)
netsh interface ip set address name="Подключение по локальной сети" static 192.168.0.111 255.255.255.0 192.168.0.1 1

Сетевое подключение с динамическими параметрами (DHCP)
netsh interface ip set address name="Подключение по локальной сети" dhcp

Справку по контексту netsh можно вызвать командой
netsh interface ip set address /?

Для задания статического или динамического DNS-сервера соответственно следует воспользоваться одной из команд:
netsh interface ip set dnsservers name="Подключение по локальной сети" source=dhcp
netsh interface ip set dnsservers "Подключение по локальной сети" static 10.0.0.1 primary

И, конечно же не забываем, что bat-файлы для корректной работы с русскими именами должны сохраняться в кодировке cp-866 (Notepad plus plus). Как вариант, можно просто переименовать “Подключение по локальной сети” в “Local Area Connection” или любой другой набор латинских символов

Кроме того, можно воспользоваться утилитами сохранения сетевых настроек. Например, NetSwitcher (условно-бесплатная) - программа при запуске размещается в трее и позволяет переключаться между сетевыми конфигурациями буквально двумя щелчками.

upd. bat-скрипт, содержащий указанную строку или окошко CMD пользователям windows 7 следует запускать с правами администратора.

Опубликовано Июнь 2, 2011 | автор: levik  |  Без комментариев »

Чем перевернуть видео или как повернуть видео снятое вверх ногами

Иногда, снимая на камеру, можно случайно повернуть камеру… Когда придет время просматривать получившееся видео на компьютере, мы увидим повернутое на 90 или на 180 градусов видео. Аналогичная ситуация может возникнуть, если автомобильный видеорегистратор установить “вверх ногами” - машины, едущие по асфальту колёсами вверх - зрелище впечатляющее.

Итак, чем же повернуть видео?

Для просмотра видео под углом кратным 90 градусов можно использовать программу ACDSee (не самую старую - версия  6, если не ошибаюсь, видео не позволяет просматривать). После выбора файла, в режиме просмотра нажать правой кнопкой на области просмотра - будет пункт “Повернуть на 90 градусов по часовой стрелке” (Rotate Clockwise 90 degrees). К сожалению, функция Save As перевернутое видео сохранила только в JPG-кадр, состоящий из 4-х кадров. Функция Rotate (которая поворачивает изображения) для видеофайлов MOV была неактивна.

Также для просмотра повернутого видео можно воспользоваться проигрывателем VLC Media Player. После открытия видео файла нажимаем пункт меню Инструменты - Эффекты и фильтры - Видео-эффекты, далее - ставим галочку у слова Поворот , и вертим видео как нам нужно.

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

VirtualDub - бесплатный редактор видео с кучей возможностей. Чтобы повернуть видео в VirtualDub следует открыть файл, затем выбрать фильтр Rotate (Video - Filters - Add - Rotate), выбрать угол поворота (90 по часовой, 90 против часовой или 180), заглянуть в предпросмотр (Out Pane), выбрать желаемый метод сжатия (по умолчанию иногда стоит без сжатия) и в меню File - Save as AVI

Чтобы в VirtualDub открыть mov - файл (формат QuickTime), можно воспользоваться плагином Quicktime_VD к VirtualDub
http://declic-video-fx.com/Portals/0/studio/tips-tricks/Transcode/Quicktime_VD_v0.2.0.0_bin.zip

Avidemux как для Linux (ещё и Mac Os и PC BSD), так и для Windows
http://fixounet.free.fr/avidemux/download.html - скачать
http://avidemux.berlios.de/doc/ru/ - руководство

И, конечно же нельзя забывать о платных программах для редактирования видео (естественно, для того, чтобы просто повернуть видео, их покупать не обязательно.. однако, вдруг уже имеется установленная…)

С такими “монстрами” как Adobe Premiere , Pinnacle Studio (9 версия точно) повернуть видео не составит труда..

ps И постарайтесь в следующий раз держать камеру вертикально )))

Опубликовано Май 31, 2011 | автор: levik  |  Без комментариев »

Как изменить действие по умолчанию “Воспроизвести” для DVD дисков

При открытии DVD-диска в Windows Media Player компьютер выдавал ошибку - не установлен кодек. После установки K-Lite Mega Codec Pack ошибки нет, но при проигрывании DVD выдает черный экран. Просто нет изображения. При этом Media Player Classic нормально воспроизводит DVD

В качестве временного решения - изменяем действие по умолчанию для DVD-дисков. В реестре ищем в одной из веток DVD - Воспроизвести (F3 - поиск по фразе “Воспроизвести”) и меняем ключ, который там стоит (что-то вроде wmplayer.exe “%L%”…) на “C:\Program Files\K-Lite Codec Pack\Media Player Classic\mpc-hc.exe” “%L\” /dvd

Опубликовано Май 12, 2011 | автор: levik  |  Без комментариев »

Редирект без передачи REFERER - скрываем HTTP_REFERER

Задача: Есть сайт А, с которого совершается переход (кликом по ссылке) на сайт Z. При этом, сайту Z не обязательно знать, что переход совершается с сайта А. Обычно браузеры передают одним из заголовков данные об HTTP_REFERER (сайт-источник). Собственно, всё сводится к тому, чтобы убрать или подменить его неким промежуточным ресурсом X, Y :)

1. Простой редирект. На ресурсе А ссылка ставится на некий промежуточный X. Ресурс X перебрасывает посетителя на конечный ресурс Z ( HTTP-заголовок ‘Location: http://www.Z’). Однако, в этом случае REFERER-ом передается ресурс A, несмотря на наличие промежуточного ресурса X

2. Редирект javascript-ом. Имитируем щелчок на странице:

<html>
<head>
<script type='text/javascript'>
function navigateWithReferrer(url) {
var fakeLink = document.createElement('a');
if (typeof(fakeLink.click) == 'undefined')
location.href = url;
else {
fakeLink.href = url;
document.body.appendChild(fakeLink);
fakeLink.click();
}
}
</script>
</head>

3 Редирект с использованием Meta-заголовка REFRESH в HTML коде
<META HTTP-EQUIV=”Refresh” Content=”1; URL=http://Z”>
или HTTP-заголовка header(‘Refresh: 0; url=http://Z’);

4 Редирект с использованием flash-функции getURL(url,”_self”)  у пользователя должен быть установлен flash. Кроме того, (сам не проверял…) начиная с IE 7 для Flash-редиректа предусмотрена защита от подмены заголовка

Опубликовано Май 10, 2011 | автор: levik  |  Комментарий (1) »

LaserJet 3030 All-in-One - отсутствует бумага в податчике документов

В очередной раз странная ситуация со сканером HP. Однако, теперь сканер распознается, тест проходит корректно, однако при попытке отсканировать любой программой (они все через одно место сканируют.. ну через два..), в том числе стандартной программой сканирования Windows (мастер работы со сканером или цифровой камерой) получаем ошибку.

Отсутствует бумага в податчике документов

При этом, возможности планшетного сканирования просто нет - в выпадающем списке “откуда сканировать” можно выбрать только податчик. Принтер HP 3030 подключен через USB кабель, распознается как устройство и печатает вполне нормально. Сканер тоже отображается (при отключении - пропадает) в устройствах, драйвера, судя по всему стоят..

Интуитивно понимаю, что, видимо дело в драйверах, т.к. рядом стоящий ноутбук общий язык со сканером нашел без лишних движений - после установки стандартных драйверов и печатает и сканирует. Т.е. почти наверняка, аппаратная проблема со сканером исключается.

Танцы с бубном снос старых драйверов, установка новых, установка fix scan utility, утилиты сканирования от HP ни к чему не привели.

Невольно вспомнилось упоминание о качестве ПО HP (не в том смысле, что оно не качественное.. скорее “капризное”… ну и кривизна рук, конечно, не исключается)

Нашел аналогичную проблему с  HP Laser Jet 3055, обсуждение которой плавно переросло в возможность сканирования по сети. К сожалению, ввиду ряда причин эксперименты с выявлением проблемы наличием отсутствия бумаги в податчике вынужден был прекратить -> решение проблемы отложено на неопределенный срок.

Если кто знает, как заставить HP видеть бумагу в податчике (а ещё лучше - найти податчик и планшетник) - сообщайте.

ps/upd. Возможно, драйвера стоят от другого HP без возможности планшетного сканирования (что-то типа HP LaserJet M1319 MFP)..

Опубликовано Май 4, 2011 | автор: levik  |  Комментарии (4) »