За месяц Июнь, 2010

DrWeb Spider Gate - не удалось найти действительный ключевой файл

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

После обновления с версии 5 на версию 6 DrWeb при загрузке стал выдавать предупреждение:

Ошибка SpiDer Gate
Не удалось найти действительный ключевой файл. Приложение будет закрыто.

При получении такого сообщения следует первым делом проверить лицензионный файл. Это можно сделать при помощи менеджера лицензий DrWeb (или заглянуть в файл .key в каталоге DrWeb и посмотреть в строке Applications=). Если лицензия не распространяется на SpiderGate и Mail - оба компонента можно смело удалять… После удаления сообщение о закрытии приложения появляться не будет. Еще можно раскошелиться на лицензию для DrWeb Security Space Pro с поддержкой этих компонентов. Все-таки web-антивирус не помешает.

UPD похожая ситуация, однако с лицензиями всё в порядке…

Причиной ошибки послужило “кэширование” в Windows Vista

удалите папку \Users\[ваше имя пользователя]\AppData\Local\VirtualStore\Program Files\DrWeb и перезагрузитесь.
http://forum.drweb.com/index.php?showtopic=278183

Пользуйтесь лицензионными антивирусами и не забывайте обновляться (настройте автоматическое обновление антивирусных баз)

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

Хранение паролей сайта или восстанавливаем пароль, имея доступ к базе

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

Однако, довольно часто, требуется войти в панель управления или администрирования (админку), доступ к которой потерян (или вообще неизвестен). Восстановление тоже может не работать. Как быть?

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

  • Хранение пароля в открытом виде

На сегодняшний день многие CMS не используют этот способ хранения пароля. Однако, полностью исключать этот случай нельзя. Возможно комбинация “логин-пароль” непосредственно из базы данных подойдет для входа.

  • Хранение результата хеш-функции (хеш-суммы) пароля.

При задании (или генерации) пароля производится вычисление хеш-функции от строки пароля, и это значение записывается в таблицу. Наиболее распространенные функции для хранения паролей к сайтам - md5() , sha1(). Распознать хеш-функцию можно по характеным признакам:

md5-хеш содержит 128 бит (16 байт) и обычно представляется как последовательность из 32 шестнадцатеричных цифр. Например, MD5(”md5″) = 1bc29b36f623ba82aaf6724fd3b16718

sha1-хеш содержит 160 бит (20 байт) и представляется в виде последовательности 40 шестнадцатеричных цифр (5 групп по 8 символов). sha1(”sha”)   = d8f45903 20e1343a 915b6394 170650a8 f35d6926

  • Хранение хеш-суммы пароля и соль (salt)

Этот вариант имеет ещё более высокую степень защиты. В базе хранится хеш сумма и соль в виде hash:salt. (символ двоеточия приведен для примера, однако, именно его использование распространено)

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

Хранение паролей в некоторых CMS

MD5 c4ca4238a0b923820dcc509a6f75849b Используется в phpBB v2.x, Joomla версии ниже 1.0.13, а также во многих других форумах и CMS.Длина: 16 байт. shugarcrm (поле user_hash)
md5($pass.$salt) 6f04f0d75f6870858bae14ac0b6d9f73:1234 Используется в WB News, Joomla версии 1.0.13 и выше.Длина: 16 байт.
md5($salt.$pass) f190ce9ac8445d249747cab7be43f7d5:12 Используется в osCommerce, AEF, Gallery и других CMS.Длина: 16 байт.
md5(md5($pass)) 28c8edde3d61a0411511d3b1866f0636 Используется в e107, DLE, Koobi .Длина: 16 байт.
md5(md5($pass).$salt) 6011527690eddca23580955c216b1fd2:wQ6 Используется в vBulletin, IceBB.Длина: 16 байт.
md5(md5($salt).md5($pass)) 81f87275dd805aa018df8befe09fe9f8:wH6_S Используется в IPB.Длина: 16 байт.
md5(md5($salt).$pass) 816a14db44578f516cbaef25bd8d8296:1234 Используется в MyBB.Длина: 16 байт.
SHA-1 356a192b7913b04c54574d18c28d46e6395428ab Используется во многих форумах и CMS.Длина: 20 байт.Алгоритм: соответствует функции sha1() языка PHP.
sha1(strtolower($username).$pass) Admin:6c7ca345f63f835cb353ff15bd6c5e052ec08e7a Используется в SMF.Длина: 20 байт.
base64_encode($pass) * Используется в Shop Script .

Cбрасываем пароль для JOOMLA
update `jos_users` set password = CONCAT(MD5(CONCAT('123','123')),':123') where id=1
пароль, как несложно догадаться - 123

Сброс пароля для Bitrix
http://www.vladsun.com/cms/bitrix_password_change.php
* с версии 7.1 checkword = (md5(salt+pass))

http://www.insidepro.com/hashes.php?lang=eng

Опубликовано Июнь 25, 2010 | автор: levik  |  Нет комментариев »

Кэширование в modx и очистка кэша

В системе modx предусмотрено кэширование документов. Если не вдаваться в подробности, то это значит, что данные, необходимые для формирования страницы сохраняются из базы данных в отдельный файл, к которому в дальнейшем происходит повторное обращение.

Конечно, для некоторых страниц в кэшировании необходимости нет, некоторые страницы и разделы при кэшировании теряют функционал. Настраивается кэширование как для отдельного документа (галочка “Кэшировать” на вкладке Настройка страницы), так и для любого сниппета (зачем каждый раз формировать данные, если они не изменяются?) - вызов сниппета в виде [[SnippetName]] ([!SnippetName!] -вызов без кэширования)

Очень часто неправильный тип вызова становится причиной некорректной работы сниппета (не работает разбивка на страницы, например)

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

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

Отключаем очистку кэша

mm_default('clear_cache', '0', '', '3', '0'); // 3 - номер шаблона
mm_default('clear_cache', '0', '', '', '0'); // или для всех шаблонов по умолчанию

альтернативный вариант от пользователя Kollad
http://modxcms.com/forums/index.php/topic,50843.msg295768.html#msg295768

Немного хакнув /plugins/managermanager/functions/fieldvalues.inc.php строка
$allowed_actions = array('85','4','72');
заменил на
$allowed_actions = array('85','4','72','27');
где, 27 = Editing document (manager/includes/actionlist.inc.php);

Опубликовано Июнь 23, 2010 | автор: levik  |  Нет комментариев »

Временный пользователь в Windows (Users/Temp) или где мой рабочий стол

При загрузке компьютера появляется сообщение об ошибке загрузки профиля и пустой (может и не совсем пустой, но точно не мой) рабочий стол Windows. Также пропали мои документы, рисунки.. осталось только стандартное-по умолчанию.

В чем дело?!

Видимо, действительно, произошла ошибка при загрузке профиля и Windows создала временную учетную запись пользователя с именем TEMP (все учетные данные находятся в каталоге Documents and Settings/TEMP или USERS/TEMP для Vista и windows 7)

Если ситуация возникла после длительного простоя компьютера, возможно, произошли проблемы при идентификации записи на контроллере домена. В этом случае можно попробовать перезагрузиться - возможно, повторная идентификация пользвателя будет успешной.

Более точную информацию ошибки загрузки профиля можно посмотреть в системном журнале событий. Ошибка “Произошла ошибка при загрузке профиля” может быть вызвана, например, сбоем системного реестра или ошибочным файлом ntuser.dat.

Переносить документы в каталог временной учетной записи не рекомендуется - при удачной загрузке она может быть удалена (вместе с документами.. ). Если уж такое случилось - постарайтесь как можно меньше работать с системного диска (чтобы не затереть удаленные файлы). Использование специальной утилиты для восстановления файлов при загрузке с другого носителя (я использую Alkid LiveCD) может частично (или полностью) восстановить “удаленные файлы”

forum.windowsfaq.ru/archive/index.php/t-124768.html - немного о похожей ситуации.

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

font size= и font-size: (html vs css)

При переносе верстки с использованием тегов <font size=”2″></font> в свойство CSS font-size, выяснилось, что различные браузеры,  воспринимают CSS-свойства xx-small, x-small, small, large…

Набор констант (xx-small, x-small, small, medium, large, x-large, xx-large) задает размер, который называется абсолютным.  По правде говоря, они не совсем абсолютны, поскольку зависят от настроек браузера
и операционной системы.

CSS xx-small x-small small medium large x-large xx-large
HTML 1 2 3 4 5 6 7

Действительно, в различных браузерах результаты применения одинакового стиля сильно отличаются: проверить себя можно тут http://rotorweb.ru/typography/css-font-size-conversion-chart.html

Условное обозначение Размер шрифта
в Firefox 3.6, Chrome, Safari 4, px
Размер шрифта
в Opera 10, IE6,7,8, px
xx-small 9 10
small 12 16
large 18 24
xx-large 32 48

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

modx - ditto, reflect, tags (tagging) - делаем тэги на MODx

Несмотря на довольно солидное сообщество, не только русскоязычное, на некоторые простые вопросы ответы найти удается с трудом. Без претензий, но факт. (Скорее, претензии к себе.. плохо ищу, или не могу правильно сформулировать вопрос.. хотя, ряд аналогичных вопросов на форуме оставлен без ответа).

Для начала, до разработки сайтов на MODx рекомендуется ознакомиться с некоторыми терминами, специфичными для этой системы..  Сниппеты, Чанки, TV, Шаблоны… организация документов. В качестве примера можно изучить DEMO-сайт, почитать WikiУчебник .

В статье описан работающий пример организации записей (постов) по датам и тэгам (по аналогии с блогом на wordpress) с удобным редактированием. Все подводные камни расписывать не буду.. Скажу лишь, что в DEMO-блоге этот механизм работает не совсем так, как описано, а привести его без особых ухищрений к привычному виду не удалось…

Итак, делаем тэги + даты на MODx

  1. Внимательно изучаем статью http://modx.ru/blog/add_tags/ и комментарии к ней. Делаем все, что там описано. Добавляем TV с именем tags, сниппеты Ditto, tagLinks и TvTagCloud нам пригодятся.
  2. Если планируются многословные тэги, а также есть желание упростить их ввод в “админке” (ткнул на тэг - он добавлен) читаем про пробелы и виджет тэгов MODx . После - добавляем mm_widget_tags(’tags’,’ ‘) , и исправляем, если требуется, &delimeter = ‘,’ (в вызове Ditto)
  3. Сниппет Reflect - своеобразная надстройка над Ditto. В месте вывода архива по датам (июнь 2010, май 2010…)
    [!Reflect? &config=`wordpress` &targetID=`3` &path=`3` &dittoSnippetParameters=`parents:3` &id=`wp` &getDocuments=`1`!]

Основная часть закончена. По идее, всё должно отображаться как нужно. Теперь бубен и напильник :)

При совместном использовании Ditto, Reflect и тэгов к ссылкам добавляются “лишние” параметры . К ссылкам дат добавляется &tags, а к ссылкам тэгов добавляются даты (wp_year…)

  1. Чистим ссылки в выводе Reflect. Сделано добавлением нового сниппета Leftmenu с кодом:
    <? php // snippet 'Leftmenu';
    $tmp=$modx->runSnippet('Reflect', array(
    'targetID' => 3,
    'config'=>'wordpress' ,
    'path'=>'3' ,
    'tplContainer'=>'reflect_tpl',
    'dittoSnippetParameters'=>'parents:3',
    'id'=>'wp',
    'getDocuments'=>'1'
    ));
    // echo $tmp; // для проверки корректности выполнения сниппета$tmp = preg_replace ('/(&)?(wp_)?tags=[^&"]*(&)?(start=0&)?/is','',$tmp);
    // регулярник для очистки от параметров wp_tags=xxx (от текущего ditto) tags=xxx (облако тэгов) и start=0
    echo $tmp;
    //[!Reflect? &config=`wordpress` &targetID=`3` &path=`3` &tplContainer=`reflect_tpl` &dittoSnippetParameters=`parents:3` &wp_tags=`` &id=`wp_` &getDocuments=`1`!]
    ?>
  2. 2. Чистим ссылки на страницы тэгов в выводе DITTO:
    В шаблоне вместо плейсхолдера [+tagLinks+] используем вызов сниппета - вывод тэгов со ссылками только на тэги
    [!tagLinks? &tv=`tags` &label=`
    Метки: ` &id=`[+id+]` &path=`3`!]

Если с первого раза не получится - отчаиваться не стОит. Опыт.. опыт.. и ещё раз опыт.

А вообще-то можно использовать стандартную конфигурацию из DEMO-сайта.

ps По умолчанию, Reflect считает, что в Ditto используется дата создания документа. Иногда удобнее использовать дату публикации документа. Кроме указания соответствующего параметра в Ditto, эту информацию следует  передать и в Reflect, примерно так: &dittoSnippetParameters=`parents:11|sortBy:pub_date`

Опубликовано Июнь 20, 2010 | автор: levik  |  Комментарии (3) »

modx - подборка сниппетов

О MODx можно почитать http://cad.kurganobl.ru/modx_book_01.html/

В системе управления cms/cmf MODx один из способов реализации дополнительного функционала  - так называемые Сниппеты (snippet). По сути Snippet в MODx это блок php-кода, который вызывается специальной конструкцией непосредственно из страницы. В сниппете доступны все переменные php (например, $_GET или $_POST..), кроме того могут быть переданы параметры, определяющие логику работы сниппета (чем-то похоже на вызов процедуры с параметром)

Однако, для работы со сниппетами не обязательно знать PHP код - можно воспользоваться уже готовыми. Все дополнения, как и дистрибутив системы, лучше скачивать непосредственно из репозитария (как минимум, гарантирована последняя версия с минимумом глюков ;) ).

Анатомия сниппетов
http://wiki.modxcms.com/index.php/Snippet_call_anatomy
http://sottwell.com/how-modx-works.html
http://modxcms.com/forums/index.php/topic,31097.0/topicseen.html - modx secrets

Краткий обзор сниппетов MODx

Полностью описать всю логику работы сниппетов в одной статье невозможно физически. Постараюсь в двух-трех строчках дать характеристику полезных на мой взгляд сниппетов. (Для полного-детального описания одного “сниппета-монстра” DITTO не хватит, пожалуй, даже десяти статей. Кстати, с него и начнем…)

Сниппет Ditto
Отображение нескольких документов на странице. Возможность группировки/сортировки/фильтрации..
[[Ditto? &id=`wp` &parent=`3` &display=`10` &dateFormat=`%d.%m.%Y` &sortBy=`createdon` &truncText=`»` &removeChunk=`Comments` &tpl=`ditto_blog` &paginate=`1` &extenders=`summary,dateFilter` &paginateAlwaysShowLinks=`1` &tagDelimiter=`, ` &tagData=`documentTags2`]]
http://www.alexuspro.ru/blog/2009/ditto-output-breaker/ - прерыватель вывода для Ditto

Сниппет Reflect
Представление архива с разбиением по месяцам/годам. Работает в связке с Ditto
[!Reflect? &config=`wordpress` &targetID=`3` &path=`3` &dittoSnippetParameters=`parents:3` &wp_tags=“ &id=`wp` &getDocuments=`1`!]

Сниппет tagLinks http://modxcms.com/extras/package/?package=448
Вывод ссылок с тэгами на странице документа (тэги прописаны для документа). Можно использовать совместно с Ditto для корректного отображения ссылок (вместо плейсхолдера [+tagLinks+])
[!tagLinks? &tv=`documentTags` &label=`Метки: ` &path=`172`!]

Сниппет Jot http://modxcms.com/extras/package/?package=216
отображение, редактирование и модерирование комментариев к документу
[[Jot? &subscribe=`1` &pagination=`10`]]
(доп. плагин JoCo позволяет удобно управлять комментариями в MODx)

Сниппет WayFinder
Меню с кучей настроек. можно вывести многоуровневое меню
http://www.prodevtips.com/2008/07/06/jquery-treeview-with-modx-wayfinder/ JQuery меню

Сниппет BreadCrumbs
“Хлебные крошки” - вывод “пути” к документу

Сниппет SEO Strict URLs
Перенаправляет все варианты обращения к странице на один в соответствии с настройками сайта. При установке не забыть раскомментировать пару строчек в .htaccess (www-редирект)
http://modxcms.com/extras/package/395 - качать тут.

Сниппет eForm
Позволяет создавать различного рода формы, при отправке формы отправить сообщение по E-mail, и конечно же добавить собственную обработку отправленных данных.
http://modxcms.com/forums/index.php?topic=35820.0 -отправка из Eform внутренней почты MODx

Сниппет GetField
поможет взять нужное поле у нужного документа
[!GetField? &docid=`_ID` &field=`pagetitle`!]

Плагин Doc Finder 1.6
Поиск документов в админке

сниппет tvsLinks - вставляет ссылки на нужные документы, используя значение tv-параметра;
http://modxcms.com/forums/index.php/topic,35096.0.html

Класс CakeMODx : Some different MODx APIs….
API modx для работы с документами, пользователями, группами, комментариями.. в общем, полноценное управление извне
http://modxcms.com/forums/index.php/topic,35663.0.html
http://community.modx-cms.ru/blog/research/79.html#comment1090 - пример работы

EasyEvents - организация календаря-событий в MODx
http://modxcms.com/extras/package/?package=118

FastContentCSV - импорт информации через CSV
http://modxcms.com/forums/index.php/topic,29616.0.html

Разблокировать пользователя / manager-а в MODx
http://modxcms.com/forums/index.php/topic,9934.0.html

Мультидоменный MODx Evo (несколько сайтов в одной установке MODx), спасибо Fuzzy
http://www.modxcms.de/multiple-domains-with-modx.html

MultiPhotos - прикрепляем к одной страничке несколько изображений
http://community.modx-cms.ru/blog/addons/1146.html

Многоязычные сайты на MODx - несколько языковых версий сайта
http://forums.modx.com/index.php/topic,29597.0.html
YAMS

CurrentDate - вывод текущей даты в нужном формате (формат date php)

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

Photoshop - сообщение об ошибке «…not enough memory (RAM)»

При попытке выполнить некоторые операции Photoshop выдает ошибку«Could notnot enough memory (RAM)»

Возможно, пришло время очередного апгрейда - фотошопу действительно не хватает памяти. Либо, память эта забита чем-то другим.. Попробуем её освободить… Возможно, удастся обойтись без апгрейда..

Увеличиваем объем памяти, доступной Photoshop

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

Временно можно убрать из каталога загрузки photoshop (\Program Files\Adobe\Photoshop CS\Plug-Ins\) все плагины, за исключением нужного нам (названия плагинов обычно соответствуют функциям)

Если есть возможность пожертвовать качеством, попробуйте уменьшить размер изображения.

Можно увеличить объем виртуальной памяти  на диске, куда система автоматически выгрузит неиспользуемые приложения.

Когда для выполнения одной из операций программе Photoshop не хватает объема ОЗУ( оперативной память, RAM), она использует для записи текущий рабочий диск. Но поскольку некоторые операции требующие большой объем памяти могут быть выполнены только в RAM (например, использование фильтра Distort), при ее недостатке Photoshop прерывает начатую операцию и возвращает ошибку «Could not complete your request because there is not enough memory (RAM)» .

А так как дополнительные модули загружаются вместе с Photoshop и используют выделенную программе оперативную память, снижение их числа (перенос из каталога модулей) увеличит объем памяти, доступной Photoshop для выполнения других операций.

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

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

php-шпаргалка

Шпаргалка php.

Пополняется

Вывод на php полного URL (протокол + адрес + путь + GET-строка)

<?=$_SERVER['SERVER_PROTOCOL']
.$_SERVER['SERVER_NAME']
. $_SERVER['REQUEST_URI ]
.$_SERVER[’QUERY_STRING] ?>

Порядок аргументов

int substr ( string $string , int $start [, int $length ] )
int strpos ( string $haystack , string $needle [, int $offset ] )

array explode ( string $separator , string $string [, int $limit ] )
string implode ( string $glue , array $pieces )

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int $&count ] )

pathinfo() -> array_keys ( dirname, basename, extension);

Шпаргалка сбивается для собственных нужд, однако пополнения приветствуются…

Опубликовано Июнь 17, 2010 | автор: levik  |  Нет комментариев »

Эта страница имеет потенциальный изъян в системе безопасности. Продолжить?

Эта страница имеет потенциальный изъян в системе безопасности. Продолжить?

При попытке скопировать документ (оба компьютера - windows XP) из сетевой папки на другом компьютере каждый раз появлялось сообщение:

Эта страница имеет потенциальный изъян в системе безопасности. Продолжить?

Аналогичные ситуации возникали при попытке копировать с компьютера под управлением LINUX (+samba) на рабочую станцию windows, при копировании по сети  с Vista на winXP…

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

Установка уровня безопасности на “Низкий” для местной интрасети (Local Intranet) также результат не дала. (Сервис -> Cвойства обозревателя -> Безопасность -> Местная интрасеть (Local Intranet), выбираем “Низкий”). Добавление в надежные узлы - аналогично.

Убираем сообщение об изъяне в системе безопасности при помощи редактирования групповых политик - gpedit.msc
Конфигурация пользователя -> Административные шаблоны -> Компоненты Windows -> Internet Explorer -> Панель управления браузером -> Вкладка безопасности
Шаблон зоны интрасети (Включить, Низкий)
Список назначений зоны безопасности для веб-сайтов (либо %domain_name%, либо %IP_второй_машины%, значение = 1)

http://social.technet.microsoft.com/forums/ru-RU/windowsserverru/thread/efcfb154-06cc-4c5e-ae29-4acea8153c51/

UPD Также сообщение о потенциальном изъяне в системе безопасности пропадает после установки Internet Explorer 8 (ie 7 не проверялся)

Опубликовано Июнь 16, 2010 | автор: levik  |  Нет комментариев »