Категория ‘ручками’

siszyd32.exe или как Svchost.exe грузит процессор

При загрузке системы один из процессов svchost.exe грузит процессор на 99%. Причем, в данном конкретном случае от сети загрузка не зависела. Сам файл SVCHOST.exe вирусом не являлся, однако загрузка процессора зашкаливала.

Подробнее об удалении вируса Siszyd32.exe

Опубликовано Декабрь 16, 2009 | автор: levik  |  Комментарии (54) »

Импорт csv в virtuemart - Simple CSV (часть 2)

Не так давно публиковал заметку о реализации импорта csv в virtuemart

Когда потребовалось повторить установку “мода” Simple CSV - пока читал форум, забыл зачем пошел. :) На десяти страницах форума слишком много “воды” и повторяющихся вопросов. Решил собрать краткий ман-faq по мод-хаку  в одном месте. Может кому-нибудь окажется полезным.

Хак для версии virtuemart 1.0.* Читать целиком »

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

Импорт csv в virtuemart для больших файлов

Virtuemart + joomla - неплохой и “бесплатный” инструмент для организации интернет-магазина. Для синхронизации, например с 1с (что требуется довольно часто), в virtuemart используется инструмент импорт-экспорт через CSV. Все бы ничего - после определенной настройки данные импортируются, но при солидных объемах магазина - несколько тысяч товаров в csv-файле, даже без описаний, скрипт импорта выполняется несколько минут. Площадки виртуального хостинга же, частенько, имеют ограничение на это самое время выполнения скрипта. Вот и получаем Читать целиком »

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

Управляем кэшированием файлов

Кэширование

Кэширование - (в общем случае и упрощенно) временное сохранение информации для быстрого повторного доступа.

С точки зрения пользователя интернет, кэширование - это сохранение временных файлов на своем компьютере. Разные браузеры (internet explorer, mozilla firefox, google chrome, opera..) используют различные места для хранения временных файлов (Temporary Internet Files). Пользователь может и не подозревать о том, что часть файлов из интернета сохранена у него на компьютере.

Для администраторов (с увеличением оборудования увеличиваются и места для возможного сохранения информации) термин кэширование распространяется и на промежуточные устройства между веб-сервером и конечным пользователем (всевозможные Nat, proxy-серверы, маршрутизаторы.. и, возможно, другие сетевые устройства) Читать целиком »

Опубликовано Апрель 21, 2009 | автор: levik  |  Комментарии (3) »

И снова бланки - работа с word средствами javascript и php

В очередной раз стала актуальной задача с подготовкой бланков. Однако, способ с бланком в формате rtf не подходит - файл .doc весит ~2 Мб, файл же rtf ~ 34 Мб. Видимо, зависит от хранения рисунков…

Работать с COM-объектом Word можно непосредственно из PHP:

// Код PHP
$word=new COM("Word.application") or die("Couldn't start Word!");
//после создания объект невидимый
//сделаем его видимым и активизируем (разумеется, для работы на сервере это необязательно)
$word->visible =1;
$word->Activate();
//Создать документ по шаблону:
$word->Documents->Add("c:\\template.dot");
// действия - найти-заменить и т.д. Описаны в документации по VisualBasic for Application - в справке MS Word (по умолчанию не устанавливается)
$word->ActiveDocument->SaveAs("C:\\".$fname);
$word->Quit();

Однако, подобный способ подходит только для Windows-серверов.

Еще один вариант - работа с COM-объектом на стороне клиента через Active-X при помощи JavaScript:


><script language="javascript">
// Создание объекта MS Word:
word = new ActiveXObject ("Word.Application");
// Создание документа и установка параметров страницы:
with (word) {
Documents.Open('c:\\0.doc');
ActiveDocument.Label1.Caption = < ?=$sum?>;
ActiveDocument.SaveAs ('c:\\1.doc');
Quit (); // завершает работу MS Word
}
</script>

Предварительно следует сохранить документ-шаблон на диск C:\ с именем 0.doc.
В шаблоне - создать “Label”-ы и расположить их в соответствии с нужным расположением текста.
С учетом специфики задачи - получаем еще один небольшой выйгрыш - “основной” файл не качается с сервера.
Технология, думаю, понятна. Вариации - насколько фантазии хватит.

ps. Не забудьте поставить разрешения в свойствах обозревателя.

( Свойства обозревателя - безопасность - Выбираем “Надежные узлы”. После чего, нажимаем “Другой..” - и устанавливаем все переключатели, где упоминается ActiveX в “Разрешено”.)

А в Надежные узлы следует добавить “Наш” сайт - где формируются бланки.

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

Устанавливаем модули Perl

При попытке запустить скрипт получил ошибку 500, а в логах:
Can't locate Archive/Zip
После пары минут поиска понимаем, что нужно установить модуль perl “Module Archive::Zip ”
Вариант первый - ручная установка модулей Perl
На сайте cpan.org находим (search.cpan.org) нужный модуль, сохраняем в каталоге (/tmp, например)# cd /tmp
# gzip -d Archive-Zip-1.26.tar.gz
# tar xvf Archive-Zip-1.26.tar
# cd Archive-Zip-1.26

Собираем: # perl Makefile.PL
...
# make
# make test
И установка модуля:
# make install
Вариант второй - Установка модуля Perl с использованием CPAN
Для установки модулей Perl при помощи CPAN следует убедиться, работает ли команда cpan:.# cpan
-bash: cpan: command not found

Если выдается сообщение “not found” - следует установить модуль CPAN. Для установки cpan с помощью yum следует набрать:
# yum install perl-CPAN
При первом запуске нужно будет “сконфигурировать” cpan в режиме вопрос-ответ. Большая часть ответов уже подставлена - достаточно нажатия ENTER. Некоторые вопросы требуют выбора из нескольких пунктов.
После настройки набираем:
# cpan
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install Archive::Zip
….
/usr/bin/make install — OK
cpan> quit

Итак, мы установили Модуль perl “Archive::Zip”.
По аналогии можно установить любой другой модуль. Однако при установке следует учитывать, что для некоторые модули зависят от других модулей. При использовании установки вторым методом cpan автоматически устанавливает необходимые для работы модули perl.

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

Массово переименовываем файлы скриптом vbs script

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

Конечно, же, средствами системы вполне успешно можно пользоваться и в этом случае.
Частично (или полностью) помочь в этом может простенький vbs-скрипт (редактируется в любом текстовом редакторе - вполне подойдет notepad.exe он же Блокнот). VBS - Visual Basic Script - язык программирования, который “распознает” Windows.
Под свои нужды не так уж сложно подогнать один из нижеприведенных скриптов массового копирования или переименования изображений.
Если желания разбираться в скриптах нет - для обработки нижеприведенными скриптами оригиналы изображений следует разместить в каталоге “C:\TMP\1\” и создать пустой каталог “C:\TMP\2\ для переименованных изображений.
Массовое переименование файлов - копируем в каталог \2\ “Изображение_1.jpg” и т.д.

num = 1
Set filesys = CreateObject("Scripting.FileSystemObject")
Set objFolder = filesys.GetFolder("C:\TMP\1\")
For Each File in objFolder.Files
If LCase(filesys.GetExtensionName(File)) = "jpg" Then
filesys.CopyFile File, "..\2\Изображение_"& num & '.jpg'
num = num+1
End If
Next

Массовое переименование файлов - Добавляем префикс к имени файлу

Set filesys = CreateObject("Scripting.FileSystemObject")
Set objFolder = filesys.GetFolder("C:\TMP\1\")
For Each File in objFolder.Files
If LCase(filesys.GetExtensionName(File)) = "jpg" Then
filesys.CopyFile File, "..\2\t_"&filesys.GetFileName(File)
End If
Next

Скрипты, на всякий случай используют команду CopyFile (нетрудно догадаться, что она копирует файл, оставляя оригинал на прежнем месте). Если же Вам требуется переименовать (переместить) файл - её следует заменить на MoveFile.

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

HTTP заголовок - как передать?

Вебмастеру частенько нужно передать служебную информацию при помощи HTTP-заголовка. Как это можно сделать?

Передаем Http заголовок средствами HTML

Если быть совсем точным, то формулировка не совсем верна, поскольку мы передаем не заголовок, а служебную информацию, аналогичную информации заголовка, однако содержится она непосредственно в сообщении. Однако, META-теги, например могут влиять на кэширование страниц в браузере по аналогии с HTTP-заголовками.
<meta http-equiv=”Expires” content=”Mon, 19 Jan 2009 20:37:25 GMT”>
<meta http-equiv=”Pragma” content=”no-cache”>

Передаем HTTP-заголовок средствами PHP

В PHP (да и в любом серверном языке программирования) для передачи заголовков существует специальная функция. В PHP она носит название header(). В качестве параметра указывается текст http-заголовка:
header('Content-Language: ru');
header("HTTP/1.0 404 Not Found");
// далее следует вывод страницы
?>

Следует отметить, что  вывод заголовков должен предшествовать выводу содержимого документа. Иначе, php-интерпретатор выдаст предупреждение, а заголовок передан не будет.

Передаем HTTP-заголовок средствами сервера

Часть заголовков формируется без явного указания в скрипте, непосредственно сервером или его модулями (например, php-интерпретатор сообщает заголовок “X-Powered-By”). Мы можем подсказать серверу, какие заголовки выдавать в том или ином случае.

В частности, Apache-сервер позволяет формировать HTTP-заголовки при помощи служебного файла .htaccess
Header set Cache-Control “no-cache, must-revalidate”
Header set Expires “Mon, 19 Jan 2009 20:41:25 GMT”
Header set Pragma “no-cache”

Для этого случая при запросе любого файла с расширением .xml, будет передана служебная информация, запрещающая кэширование файла на стороне клиента.

Возможно, рассмотрены далеко не все варианты, но их вполне достаточно, чтобы использовать на практике.

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

анкор-лист? легко.

Делаем “человеческий” анкор-лист. Дешево и сердито.

Особенности:

  • уходим от «склейки» - для тех, кто в нее верит; 
  • даже для тех, кто не боится «тошноты» и «склейки» это пригодится, если нужно быстро создать большое количество различных анкоров для прогона по каталогам, сап-ксап и тд.
  • делаем анкор-лист больше похожим на естественный;
  • поднимаем по некоторым НЧ.

Технология:
1. Берем наш ключевик, к примеру, «проекты домов» и смотрим, в какие запросы он входит по статистике запросов. Лучше пользоваться статистикой Рамблера, так Яндекс выкидывает предлоги и найти по Яндексе такие запросы, как «из рук в руки», «муж на час» или «магазин на диване» вы не сможете. Найдутся только: «руки», «часы муж» и «магазины диванов».
Вместо окончаний ставим звездочки. Получится: «проект* дом*». Это еще не все. Чтобы уйти от ненужных нам запросов, типа: «проектирование домов», сделаем так:
проект* дом* !проектиров*
Запросы не совсем “по теме”  вроде «когда закроется проект дом 2» можно удалять вручную, но можно и оставлять – тоже разбавление анкор-листа, да и ключевик встречается.

2. Копируем странички получившегося списка в Excel, пока хватит терпения :).

3. Иногда Рамблер запрашивает авторизацию - не думаю, что велика проблема.

4. Подкорректируем списочек - удаляем “неугодные” и получаем результат..

Тоже самое можно проделать со статистикой от Яндекса.

Что с ним делать - на усмотрение.. :)

Опубликовано Декабрь 14, 2008 | автор: levik  |  Комментарий (1) »

Виртуальный выделенный сервер для начинающих

Наверное, у каждого наступает момент, когда хочется чего-то большего. Выражается это по-своему.. Кто-то покупает новые шмотки-машины-железяки.. Кто-то делает что-то грандиозное..

“Услышав невозможное, некоторые скажут “А почему? А зачем?”, а другие - “А почему НЕТ?”..

В общем, тестируем VDS-сервер от firstvds.ru - недорогой но полноценный. Естественно, по некоторым параметрам он уступает серверам от “монстров” хостинговой индустрии. Однако, в качестве ознакомительного - более чем достаточно.

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

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