За месяц Сентябрь, 2010

jquery - ixedit - визуальный редактор JQuery

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

IxEdit is a JavaScript-based interaction design tool for the web. With IxEdit, designers can practice DOM-scripting without coding to change, add, move, or transform elements dynamically on your web pages. Especially, IxEdit must be useful to try various interactions rapidly in the prototyping phase of your web application.

Помимо очевидного преимущества визуального форматирования разработчики ixedit указывают на валидный кроссбраузерный Jquery код, генерируемый редактором и отмечают возможность локального сохранения полученного скрипта - не требует подключения к Internet (однако, для полноценной работы в IE и Mozilla Firefox потребуется установить Gears)

Опубликовано Сентябрь 30, 2010 | автор: levik  |  Нет комментариев »

Антивирус COMODO после обновления выдает черное окно

При попытке открыть Антивирус Comodo Internet Security (Premium)  после недавнего обновления до версии 5.0… получаем черное окно.

Если до этого была настроена нестандартная тема (с учетом особенностей цветовой гаммы предыдущей версии Comodo, не исключено, что это не редкость), возможно, проблема в несовместимости новой версии COMODO FireWall и ранее установленной темы к нему.

Решил просто - убрал (временно перенес) все файлы тем (за исключением CFP) из  каталога С:\Program Files\Comodo\COMODO Internet Security\ . После такой операции Comodo запустился в новом обличии:

Comodo Internet Security Premium v5

Опубликовано Сентябрь 29, 2010 | автор: levik  |  Комментарий (1) »

VPS-VDS настройка сервера на Debian Linux (шпаргалка)

Некоторые особенности первоначальной настройки VPS на DEBIAN linux

apt-get install mc - установка Midnight Commander

Debian restart apache 2 - перезапуск web-сервера Apache

При запуске apache2 выводится куча опций, в том числе -k restart. Однако, попытка перезапустить сервер apache2 на дебиан приводит к ошибке:

apache2: bad user name ${APACHE_RUN_USER}

Перезапускаем апач с указанием полного пути:

/etc/init.d/apache2 restart

Добавить модуль mod_rewrite в apache2 на debian

sudo a2enmod rewrite
sudo invoke.rc apache2 restart

Аналогично удалить (команда без параметра выведет список доступных модулей Apache2):

sudo a2dismod rewrite
sudo invoke.rc apache2 restart

Структура конфигов Apache в Debian может показаться непривычной на первый взгляд:
http://www.debian-administration.org/articles/412

a2ensite www.example.com

Ошибки

[date] [warn] NameVirtualHost *:0 has no VirtualHosts
[date] [warn] NameVirtualHost *:0 has no VirtualHosts

DEBIAN не отправляет почту

Только установленный сервер с Debian Linux не отправляет почту командой SendMail. Заглядываем в каталог /var/mail - если там присутствуют файлы, открываем и читаем:

Mailing to remote domains not supported

Всё дело в том, что по умолчанию MTA exim настроен на конфигурацию local - разрешает отправку только на локальные адреса. Debian Exim4 ошибка  Mailing to remote domains not supported исправляется переконфигурацией пакета:

$ dpkg-reconfigure exim4-config

Если при установке exim4 (или переустановке почты) вылетает с ошибкой

E: Could not perform immediate configuration on ‘exim4-daemon-light’. Please see man 5 apt.conf under APT::Immediate-Configure for details. (2)

Немного изменим порядок установки -
сначала apt-get install exim4-base exim4-config
затем apt-get install exim4-daemon-light

bash: mail: command not found
Устанавливаем mailutils : #apt-get install mailutils

Еще может оказаться полезным перенаправление root-почты (пересылка) на свой ящик. Прописываем в /etc/aliases (последней строчкой)
root: mymail@myhost.my
Если не помогло - ознакомиться:
http://www.howtoforge.com/forums/archive/index.php/t-316.html

reason: 550 Unroutable address - ещё одна почтовая ошибка sendmail
myhost sendmail[###]: [ID ### mail.crit] My unqualified host name (myhost ) unknown; sleeping for retry
myhost sendmail[###]: [ID ### mail.alert] unable to qualify my own domain name (myhost) — using short name
как правило,причиной является неполное имя домена в /etc/hosts (myhost.mydomain, сойдет даже myhost.localhost)

Настройка часового пояса в Debian
dpkg-reconfigure tzdata - переходим к выбору часового пояса на уже установленной системе

Настройка локалей - локализация Debian
+ русификация консоли в Debian
+ более подробно про Locale ,  /etc/default/locale и  update-locale

make команда не найдена
apt-get install make

http://debian.pro/ - заметки debian-щика :)
http://www.openkazan.info/node/3629 - установка webmin + virtualmin на debian

Читать целиком »

Опубликовано Сентябрь 27, 2010 | автор: levik  |  Комментарии (2) »

php создает критическую нагрузку на сеть - m0f0,

Сообщение от хостера, краткий смысл которого примерно такой: файлом www/config.php создавалась критическая нагрузка на сетевую подсистему виртуального хостинга, отключаем до устранения проблемы.

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

Беглый анализ показал, что ряд файлов имеет более позднюю дату создания… Среди них особо выделялись файлы с такими именами:
www\2ndindex.php
www\httpdocs.pl
www\config.php
www\indexfixer.php

Проверка файлов антивирусом Касперского выявила всего один вредоносный файл: троянская программа Backdoor.PHP.C99Shell.au www/2ndindex.php

Если заглянуть внутрь - без особого труда можно узреть “злонамеренное” поведение -

for($i=0;$i<65000;$i++){
$out .= ‘X’;
}

fwrite($fp, $out);

find / -type f -name service.pwd

m0f0 ddos priv8 by t0fx
sub  udpflooder
скрипт коннектится к IRC :), и, управляется командами из чата…

и другое.

Если Вы получили сообщение о критической нагрузке на сеть, в особенности, если сайт “не громоздкий” и не работает “по сети” самостоятельно, то, лучше лишний раз перестраховаться и проверить. “Ниоткуда” нагрузка не берется.

Удачи!

Опубликовано Сентябрь 24, 2010 | автор: levik  |  Комментарии (2) »

VPS - ограничения VDS сервера (/proc/user_beancounters)

 Виртуальные сервера (VDS|VPS) имеют ряд ограничений, информацию о которых можно посмотреть в файле (для OpenVZ виртуализации)
/proc/user_beancounters

Расшифровка параметров (ограничений) VPS-сервера:

Основные лимиты VPS
numproc - Максимальное количество процессов и тредов (потоков).
numothersock - Максимальное количество сокетов, не являющихся TCP-сокетами (UDP, UNIX-сокеты и пр).
vmguarpages - Гарантированный объем оперативной памяти, которая может быть запрошена стандартными
механизмами резервирования памяти в Linux.

полная версия статьи про ограничения VDS сервера

Опубликовано Сентябрь 23, 2010 | автор: levik  |  Комментарии (2) »

Joomla делаем из абсолютных ссылок относительные

Сайт, работающий на Joomla выводит все ссылки, которые генерируются при помощи mod_mainmenu (upd. и не только) как абсолютные, то есть с http://:

http://joomla.site/link.htm

Насколько это корректно, хорошо или плохо - не скажу.. однако, я считаю, что внутренние ссылки должны быть именно внутренними, а точнее, относительными (т.е. без http:// ). Читать целиком »

Опубликовано Сентябрь 21, 2010 | автор: levik  |  Нет комментариев »

Vkontakte и Odnoklassniki просят отправить SMS

Странная ситуация: одновременно два популярных сайта - Одноклассники.ру и Вконтакте.РУ стали требовать отправку СМС на короткий номер для активации аккаунта (110521469 на номер 6681). Все как и положено - с предупреждением никому, никогда и нигде не сообщать свой пароль. Однако, не “без задоринки” - у одноклассников нет иконки (в строке браузера), в контакте выдает ошибку 404 при попытке зайти на страницы вида http://vkontakte.ru/idxxxxxxx . Естественно, что с другого компьютера всё открывается - никаких отправок СМС.

Вконтакте требует отправить СМС для активации аккаунта

Что делать, если вконтакте просит отправить СМС - читать дальше

Опубликовано Сентябрь 18, 2010 | автор: levik  |  Комментарии (7) »

virtuemart при добавлении товара белый экран-пустая страница

При входе в форму добавления товара virtuemart радует белым экраном ( в браузер выводится пустой html-документ). Обычно является это признаком fatal error в PHP. Заглядываем в LOG-файл - действительно:

[error] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 49 bytes) in …/includes/database.php on line 491

Итак, при выводе “пустой” страницы добавления товара скрипту не хватает памяти (32 МБ, конечно не так уж много, но куда??). Что самое интересное, при редактировании товара (страница та же, только установлен параметр product_id) ошибка не возникает. И ещё, раньше такого вроде не было.

В database.php на 491 строке ничего особо интересного нет - подсказка, что выводится LIST (чего - не совсем ясно)… Элементы “складируются” в массив.. и на очередном не хватает памяти.

Предварительная диагностика подсказывает, что “глюк” из-за большого количества товаров (~22 тыс). Протестировал с “обрезанной” до 7 тыс товаров - всё работает. И правда, в товарах проблема.

Смотрим в сторону файла с формой добавления/редактирования товара
administrator/components/com_virtuemart/html/product.product_form.php

Но как связана страница добавления/редактирования одного товара с количеством товаров? Точно! Есть ведь связанные товары.. Большой multiselect связанных товаров и правда содержит все записи.. однако он выводится и при редактировании товаров.. Странно.. но всякое бывает - проверяем (закомментировать строчку с выводом мультиселекта).. Ан нет.. не влияет.

Ладно.. пробуем по-другому ищем product_id (ведь для имеющегося товара все в порядке.. белый экран только при добавлении Нового товара). Из “сомнительных” (cомнительное в смысле без проверки на “корректность” product_id) мест использования этой переменной видим такое:

$db_items = $ps_product->items_sql($product_id);

После которого идет вывод формы с подстановкой значений.

Проверяем совсем наглым образом - убираем эту строку и последующие, и открываем страницу добавления товара - Открывается! :) Добавляем строку (без продолжения) - ошибка.

перейти к решению проблемы пустого экрана

Опубликовано Сентябрь 15, 2010 | автор: levik  |  Комментарии (4) »

Экспорт в excel при помощи php

Параллельно с формированием бланков в rtf-формате, и работой с word из PHP или javascript иногда требуется сформировать средствами PHP документ EXCEL по уже готовому шаблону.

Готовых php-классов для работы с файлами xls (формат программы Microsoft excel) на сегодняшний день хватает. Однако, при заполнении таблицы предусмотреть все необходимые операции для нормального отображения (увеличение высоты строки, ширины строки и т.д.) довольно сложно.

Задачу экспорта в формате Excel решал на php следующим образом…

Тут стоит оговориться, все же основная хитрость не в конкретном языке, а в подходе - аналогичным способом можно поступить и с использованием любого другого языка, будь то серверный perl, python, или даже C-pascal без красивого оконного интерфейса. И даже при программировании под Windows использование такого способа даёт небольшой плюс - для формирования Excel-документа нам не требуется установленный на компьютере “офис”.

… продолжение статьи экспорт в EXCEL средствами PHP и не только

Опубликовано Сентябрь 13, 2010 | автор: levik  |  Комментарии (4) »

mysql update where select from update-target

MySQL не позволяет апдейтить таблицу, которая участвует в выборке условия select. То есть при попытке выполнить запрос типа

update categories set discount =  (select discount from categories where id=1)

Получим следующее сообщение об ошибке:
ERROR 1093 (HY000): You can't specify target table 'goods' for update in FROM clause

В документации по UPDATE находим простое объяснение - “Currently, you cannot update a table and select from the same table in a subquery.”

Как быть, если всё же требуется изменить записи в таблице, которая участвует в условии?
Конечно, вариант с ручным созданием временной таблицы будет работать, однако…

Статья на английском с примерами, а также интересные решения в комментариях по ссылке:
http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/

update webartCategories as cat     inner join
( [тут наш запрос на выборку] ) as x on cat.id = x.id
set level = level + 1

UPD - Ещё один запрос с подзапросом - UPDATE SELECT MIN MAX
upate user u inner join
(SELECT id_user, max(id_post) as maxid_post from post2user GROUP BY id_user) u2p
set u.lastpost = u2p.maxid_post

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