Сергей Рудюк 16 июня 2015

Description и Keywords

Одним из наиболее частых вопросов, с которыми сталкиваются web-мастера и SEO-оптимизаторы, работающие с Wordcodess, - это добавление в данную CMS META тэгов Description и Keywords. Как правило, большинство новичков, не желая особо разбираться в возможностях движка, а также тратить время на то, чтобы изучать его код, ограничиваются установкой одного из расширений, тем более что количество seo плагинов для Wordcodess исчисляется десятками. Наиболее известным среди них является All in One Seo Pack.

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

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

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

В-третьих, создание МЕТА тэгов так, как делает All in One Seo Pack и другие ему подобные плагины, гораздо рациональнее осуществить при помощи возможностей самого Wordcodess, на основе которых все подобные расширения и работают.

И наконец, в-четвертых, все существующие в настоящее время плагины для создания META тэгов Description и Keywords не позволяют автоматизировать работу по их заполнению. Таким образом, каждый раз при создании очередной статьи вам придется обдумывать и текст, который вы вставите в Description, и ключевые слова. Зачем тратить на это время, если гораздо удобнее и проще предоставить эту задачу CMS?

Создание мета тэгов Description и Keywords в Wordcodess без использования плагинов

Способ № 1. Заполнение мета тэгов каждый раз при создании новой статьи.

Переходим на вкладку Добавить страницу или Добавить запись – кому как удобнее. В правой верхней части дисплея находится кнопка Настройка экрана, предназначенная для управления внешним видом панели управления. Щелкнув по ней, откроем меню, в котором необходимо поставить галочку возле надписи Произвольные поля.

После этого под областью для ввода основного текста появятся настройки для произвольных полей.

Для создания нового поля нажмите на кнопку Добавить произвольное поле. Далее в графе Имя впишите слово description, а в графе Значение - описание статьи, которое вы хотите включить в соответствующий мета тэг. Сохраните получившуюся запись или страницу.

После того, как вы выполните данные действия, на каждой странице у вас появятся соответствующее поле для ввода Meta Description.

Вновь кликнув на Добавить произвольное поле, создайте еще одно поле с названием keywords, в соответствующей графе Значение перечислите ключевые слова через запятую.

Теперь осталось только вывести содержание дополнительных полей в соответствующем месте HTML-страницы. Для этого в используемом шаблоне открываем файл header.php и вставляем после код

<meta name="description" content="<?php echo get_post_meta($post->ID, 'description', true); ?>" /> <meta name="keywords" content="<?php echo get_post_meta($post->ID, 'keywords', true); ?>" />

Способ № 2. Автоматизация создания мета тэга Description

Данный способ также не вызовет у вас никаких затруднений: вам надо будет только скопировать приведенный ниже код в соответствующее место PHP-файла.

Открываем header.php и в самый верх файла перед всем его содержимым вставляем следующий код:

//Для работы с записями, а не страницами замените is_page на is_single <?php if (is_page()) {//если это страница… if (have_posts()) : while (have_posts()) : the_post(); //Начинаем цикл WordPress $strDescr = wp_trim_words(get_the_content(), 100 ); //Получаем часть поста в размере ста слов // Количество можно варьировать по своему желанию $strDescr = preg_split("/[.?!] /", $strDescr); //Разделяем на предложения, чтобы Description не оказался оборванным на полуфразе. //При этом, каждое предложение записывается в отдельный элемент массива. endwhile; endif; } else { $strDescr="Альтернативное описание сайта"; //если это не страница, выводим иной текст }

Для вывода Description в HTML-коде страницы вставляем в header.php:

<meta name="description" content="<?php echo $strDescr[0].$strDescr[1].$strDescr[2].$strDescr[3]; ?>" />

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

Какой из способов работы с Description в Wordcodess выбрать, зависит только от вас. Кому-то кажется необходимым написание уникального авторского описания к каждой статье, другие же web-мастера могут предпочесть сэкономить свое время и полностью автоматизировать создание мета тэгов.

Источник: http://seo-praktika.com/cms-wordpress-meta-tags-description-plagin.html

Сергей Рудюк 16 июня 2015

Переименовали сервер на котором служба агента 1С

После переименования сервера Windows Server 2008 с установленным 1С:Предприятие 8.2, перестала работать служба «Агент сервера 1С:Предприятие 8.2». Она запускается, работает несколько секунд и останавливается. Если подключаться к серверу 1С:Предприятие 8.2 через консоль серверов, то возникает ошибка:

Ошибка соединения с сервером 1С:Предприятие 8.2 server_addr=tcp://SERVER:1540 descr=Ошибка сетевого доступа к серверу (Windows Sockets - 10061(0x0000274D). Подключение не установлено, т.к. конечный компьютер отверг запрос на соединение.) line=590 file=.\Src\DataExchangeTcpClientItmpl.cpp

При подключении к базе на этом сервере имеем следующую ошибку:

Не запущен ни один рабочий процесс. Соединение с базой невозможно.

Данная проблема связана с тем, что настройки кластера серверов 1С:Предприятие хранятся в файлах в каталоге srvinfo (путь к нему указывает параметр -d в свойствах службы «Агент сервера 1С:Предприятие»). Поэтому после изменения имени компьютера надо выполнить дополнительно следующие действия:

Для Windows зайдите в каталог c:\program files\1c\1cv82\srvinfo, если Linux - то файлы лежат в домашнем каталоге пользователя от имени которого запускается сервис: usr1cv8/home/.1cv8/1C/1cv8 ...

Отредактируйте в любом текстовом редакторе два файла: srvinfo\srvribrg.lst и srvinfo\reg_1541\1CV8Reg.lst. Замените в этих файлах старое имя сервера на новое.

Запустите службу «Агент сервера 1С:Предприятие».

После этого, все будет запускаться нормально.

Источник: https://helpf.pro/faq/view/1556.html

Сергей Рудюк 16 июня 2015

Автор: Рудюк С.А.

http://corp2.net

При задании ключевых слов я столкнулся с ограничением в 200 символов на поле Keywords. Это создавало большое количество неудобств, т.к. не давало должным образом определить ключевые слова для статей.

Начал изучать данный вопрос. Смотрю структуру базы данных, как оказалось, это поле - не ограниченной длины:

СтруктураТогда, стало понятно, что проблема в исходном коде. После анализа программного кода и плагинов, я обнаружил, что за вывод ключевых слов в моем случае отвечает плагин Custom Metas. И в настройках его можно указать тот размер, какой нам необходим:

Размер ключевых слов в Wordpress

Сергей Рудюк 16 июня 2015

По умолчанию, серверный процесс 1С8.3 нигде не выводит иформацию о запуске, как результат, при возникновении проблемы запуска вам может оказаться сложным определить причину аварийной ситуации.

Вы можете включить вывод логов создав такой файл:

cat /opt/1C/v8.3/i386/conf/logcfg.xml

В него запишите:

<config xmlns="http://v8.1c.ru/v8/tech-log">; <dump create="true" location="/var/log/1c/dumps" prntscrn="true" type="2"/> <log history="72" location="/var/log/1c"> <event> <eq property="name" value="EXCP"/> </event> <event> <eq property="name" value="EXCPCNTX"/> </event> <event> <eq property="name" value="PROC"/> </event> <event> <eq property="name" value="ADMIN"/> </event> <event> <eq property="name" value="MEM"/> </event> <event> <eq property="name" value="LEAKS"/> </event> <property name="all"/> </log> </config>

Укажите права достаточные для того, чтоб увидел данный файл процесс 1С для каталога conf и для самого файла logcfg.xml.

Информация о процессе запуска будет выводиться в /var/log/1c/dump.

Сергей Рудюк 16 июня 2015

Автор: Рудюк С.А.

http://corp2.net

Написали маленькую функцию, которая генерирует штрих-код в Linux и получает его в 1С.

Функция ШтрихКодПоказать(Штрихкод, Стандарт="128") Если Штрихкод="" Тогда // Если не указали штрих-код, тогда выводим в CODE 128 Предупреждение("Не указан штрих-код!",5); Иначе Файл="/tmp/"+Штрихкод; ЗапуститьПриложение("barcode -p letter -g 200x100 -u mm -b "+Штрихкод+" -e 128 -o "+Файл+".ps | convert -density 150 -trim "+Файл+".ps "+Файл+".png"); Файл=Файл+".png"; КонецЕсли; Возврат Файл; КонецФункции Процедура ОбработкаШтрихкодаНажатие(Элемент) S=ШтрихКодПоказать("58765", "ean13"); Предупреждение("На всякий случай ждем 1 секунду", 1); ЗапуститьПриложение(S); КонецПроцедуры

Параметры функции Штрих-код:

Штрих-код - буквенно-цифровое значение штрих-кода.
Стандарт - стандарт штрих-кода. Предусмотрены такие значения данного параметра, отвечающие за соответствующий стандарт:

 "ean", "ean13", "ean-13", "ean8", "ean-8" "upc", "upc-a", "upc-e" "isbn" "39", "code39" "128c", "code128c" "128b", "code128b" "128", "code128" "128raw" "i25", "interleaved 2 of 5" "cbr", "codabar" "msi" "pls", "plessey" "code93", "93"

Сергей Рудюк 16 июня 2015

Автор: Рудюк С.А.

http://corp2.net

В Linux есть отличная команда barcode, которая генерирует штрих-коды в векторном формате ps. Но, 1С не понимает такие форматы. Более того, barcode, генерирует штрих-код на размер листа А4 или Letter. Установка пользовательского размера листа не увенчалась успехом. Но, не будем же мы вставлять изображение штрих-кода размером с лист А4...

Однако, есть способ, как решить данные проблемы.

Генерируем штрих-код в формате ps с помощью команды barcode:

barcode -p letter -g 200x100 -u mm -b 13423432320 -e 128 -o sss.ps

Теперь, нужно преобразовать его в понятный для 1С формат - это или jpg или png. За это отвечает команда ImageMagic convert. Кроме того, есть возможность указать четкость изображения с помощью параметра -density 150. А так же есть очень полезный параметр для нашего случая -trim. Этот параметр обрезает изображение. Т.е. обрезает всё белое пространство нашего листа.

Получаем такую команду для генерации jpg:

convert -density 150 -trim sss.ps sss.jpg

Для генерации png:

convert -density 150 -trim sss.ps sss.png

Сравнивая изображения png и jpg видим, что jpg имеет размер 21,2Кб, а png - 2,7Кб. Т.е. получается, что png лучше использовать, т.к. размер такого файла в 10 раз меньше. Кроме того, в png нет фона.

Для того, чтоб не нужно было вызывать несколько команд из линукс и после каждой делать тайм-аут, рекомендую заключить обе команды в "одну команду", например так:

barcode -p letter -g 200x100 -u mm -b 13423432320 -e 128 -o sss.ps | convert -density 150 -trim sss.ps sss.png

Сергей Рудюк 16 июня 2015

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

Есть много разных редакторов — Photoshop, Lightroom и им подобных. Кроме того, появилось уже очень много всяких онлайн сервисов, которые позволяют сжимать и оптимизировать картинки.

Если этих картинок с десяток, то можно обойтись каким-нибудь сервисом. А вот если их больше, на помощь приходят консольные утилиты. Одни из таких ImageMagick, jpegoptim, optipng

ImageMagick представляет из себя кроссплатформенный набор утилит, который содержит очень много функций для работы с изображениями — конвертирование из одного формата в другой, различные трансформации (ресайз, обрезка, вращение, зеркальное отражение), применение разных эффектов, вроде размытия… и очень много других.

Jpegoptim и optipng позволяют сжать изображение без потери качества, а для jpegoptim также возможно сжатие с потерями.

Примеры с ImageMagick

Поиск и ресайз всех изображений до 500px

Для одного файла:

<code>convert -resize ‘500>’ input.jpg output.jpg</code>

Для нескольких изображений можно использовать такую магию:

<code>find -regex “.*[jpg|png]” -exec convert {} -resize ‘500>’ {} \;</code>

Разместить маленькое изображение внутри белого квадрата, заданного размера

<code>convert input.jpg -gravity center -background white -extent 500x500 output.jpg</code>

Создание пиктограмм 80×80

<code><span class="keyword">for</span> file <span class="keyword">in</span> *.jpg; <span class="keyword">do</span> convert <span class="variable">$file</span> -resize 80x80 -background white -gravity center -extent 80x80 80x80-<span class="variable">$file</span>; <span class="keyword">done</span></code>

Примеры с jpegoptim и optipng.

<code>jpegoptim input.jpg</code>

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

Сжатие с потерями, удаление всей мета-информации:

<code>jpegoptim input.jpg -m50 --strip-all</code>

Для оптимизирования всех png изображений можно использовать следующую команду

<code>find -name *.png -exec -optipng -o3 <span class="string">'{}'</span> \</code>

где -o может быть от -o0 до -o7
Чем выше этот параметр, тем больше фильтров будет использовано для оптимизации. Размер будет меньше, но и обрабатываться каждое изображение будет дольше.

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

Прочее

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

Скачивание картинок списком, удаление белого пространства вокруг них

Чтобы скачать картинки списком, удобнее всего использовать wget.
Переходим в нужный каталог, где у нас подготовлен файл с адресами url картинок и запускаем команду:

<code>wget -i list.txt</code>

Для того, чтобы обрезать одну картинку нужно запустить команду:

<code>convert input.jpg -trim output.jpg</code>

Чтобы обрезать несколько, то можно воспользоваться find:

<code>find ./ -name <span class="string">"*.jpg"</span> -exec convert {} -trim out/{} \;</code>

где out — папка, куда будут сохраняться обработанные картинки

Источник: http://diggitize.me/imageoptimize/

Сергей Рудюк 16 июня 2015

Для того, чтобы сконвертировать .xls в .csv, прибегнем к помощи утилиты xls2csv, установить которую в CentOS Linux можно, выполнив в командной строке следующую команду:

$ sudo yum -y install xls2csv

После успешной установки xls2csv, попробуем конвертировать наш файл .xls в .csv, для дальнейшего разбора данных. Для конвертации выполним команду:

$ xls2csv file.xls > file.csv

Как вы уже наверное догадались, file.xls - это исходный файл в формате Excel, а file.csv - это полученный файл в результате конвертации.

После выполнения последней команды, вы сможете получить все данные, присутствующие в файле file.xls, в файле .csv, согласно формату csv (данные разделенные запятой).

Источник: http://www.ithowto.ru/329-konvertirovanie-xls-v-csv-v-linux.html

Сергей Рудюк 16 июня 2015

change-hostname-ubuntu

Итак, давайте рассмотрим очередной глупый вопрос для матёрого линуксоида, но довольно сложную проблему для новичка, а именно - как сменить имя компьютера (hostname) в Ubuntu Linux. Сделать это очень просто, нужно просто отредактировать два текстовых файла и перезагрузить сеть. Всё.

Начнём. Для начала нужно отредактировать файл /etc/hosts:

sudo gedit /etc/hosts
		

Выглядеть он должен примерно так:

1 2
		
127.0.0.1 localhost 127.0.1.1 hostname
		

Где вместо "hostname" - имя вашего компьютера. Вот именно его то и нужно сменить. Изменяем, сохраняем.

Теперь нужно поправить файл /etc/hostname:

sudo gedit /etc/hostname
		

В этом файле содержится только название вашего компьютера и ничего более. Смело изменяем его и сохраняем файл.

Вот и всё. Теперь осталось только перезагрузить сеть и изменения вступят в силу:

sudo service hostname restart sudo service networking restart
		

Можно продолжать работать, но могут возникнуть небольшие проблемы, поэтому лучше будет перезагрузить компьютер.

Источник: http://ubuntovod.ru/instructions/change-hostname-ubuntu.html

Сергей Рудюк 16 июня 2015

Мы продолжаем рассказывать о технологиях, используемых на нашем сервисе email-маркетинга Pechkin-mail.ru. Одной из ключевых задач любого сервиса, связанного с данными клиентов, является загрузка этих данных на сервис. Для Печкина очень важно быстро и без проблем для пользователя загружать адресные базы, содержащие email-адреса, имена, фамилии и другие дополнительные данные.

то использовать в качестве инструмента?

В качестве базового стандарта, используемого при импорте адресных баз, мы взяли Microsoft Excel. Объясняется это просто:

  • это стандартный инструмент, которым на базовом уровне владеют 100% пользователей компьютеров. Более того, в бизнесе — это де-факто корпоративный стандарт и используется даже, если на рабочих компьютерах Mac или Linux.
  • Практически все CRM-, CMS-, облачные или десктопные системы имеют экспорт в Excel или CSV, который простым пересохранением приводится к формату XLS или XLSX.
  • Известно также, что “90% ошибок ПО сидит в полуметре от монитора”. Не в обиду будет сказано рядовым пользователям, но мы должны учитывать самый базовый уровень подготовки и тех. поддержке для объяснения достаточно сказать “Загрузите Excel-файл”, а не объяснять процедуру подготовки файла в нужном формате.

Проблему пользователей при импорте адресных баз сняли. Но тут возникает уже проблема непосредственно разработки.

Наша боль, как разработчиков

Excel — это не open-source разработка, а проприетарное решение. Формат данных, особенно в новых версиях после 2007 года (xlsx), нетривиален. На Печкине используется PHP, поэтому мы начали поиск библиотек, которые позволят нам решить данную задачу. Но тут столкнулись с проблемой, что целый ряд библиотек, не позволяют читать xlsx:

  • php-spreadsheetreader reads a variety of formats (.xls, .ods AND .csv)
  • PHP-ExcelReader (xls only)
  • PHP_Excel_Reader (xls only)
  • PHP_Excel_Reader2 (xls only)
  • XLS File Reader Коммерческая и xls only
  • SimpleXLSX Из описания способен читать xlsx, однако, автор ссылается только на xls
  • PHP Excel Explorer Коммерческая и xls only

Обратила на себя наше внимание библиотека PHPExcel. Ее мы использовали еще несколько лет назад в сервисе sms-рассылок SMS24X7.ru. Петя Соколов (Petr_Sokolov), наш талантливый разработчик, написал обертку для этой библиотеки, исправляющую ряд ее недостатков и багов.

Библиотека, безусловно, интересная и развитая. Но для Печкина ее использовать стало невозможно уже через пару лет, когда выросли и мы и наши клиенты — ее катастрофическая требовательность к ресурсам и огромное время парсинга файлов. Например, нередки случаи загрузки на сервис адресных баз > 100 000 строк со сложной структурой. А если файл уже 500 000 строк и “весит” больше 30Мб?

И тут нас отпустило...

В процессе поисков мы наткнулись на коммерческую библиотеку libxl, увидев результаты “кустарного benchmark” на Stackoverflow.

Библиотека написана на C++, а благодаря великолепному объектно-ориентированному расширению для PHP от Ilia Alshanetsky, легка в освоении и интеграции (например, переписать наше текущее решение с PHPExcel на LibXL заняло около 3 часов). Что очень классно, учитывая, что, к сожалению, документации от разработчика расширения нет и необходимо пользоваться расширением Reflection.

Процесс установки очень прост.

<code>cd /usr/local/src/ wget http://libxl.com/download/libxl.tar.gz tar zxfv libxl.tar.gz cd libxl-3.5.4.1/ ln -s include_c include cd ../ wget https://github.com/iliaal/php_excel/archive/master.zip unzip master.zip cd php_excel-master/ ./configure --with-excel --with-libxl-libdir=../libxl-3.5.4.1/lib64 --with-libxl-incdir=../libxl-3.5.4.1/include_c make make test make install</code>

В результате компиляции вы получите файл excel.so в папке /usr/lib/php5/20090626/. Теперь достаточно создать файл /etc/php5/conf.d/excel.ini с содержимым.

<code>extension=excel.so</code>

Проверим установился ли модуль и перезагрузим веб-сервер.

<code>php -m | grep excel service lighttpd restart </code>

В коде все тоже очень просто. Подгружаете файл и читаете необходимые ячейки. Например, вот так:

<code><span class="variable">$doc</span> = <span class="keyword">new</span> ExcelBook(); <span class="variable">$doc</span>->loadFile(‘example.xls’); <span class="keyword">for</span>(<span class="variable">$r</span>=<span class="variable">$sheet</span>->firstRow();<span class="variable">$r</span><=<span class="variable">$sheet</span>->lastRow();<span class="variable">$r</span>++){ <span class="keyword">for</span>(<span class="variable">$c</span>=<span class="variable">$sheet</span>-> firstCol();<span class="variable">$c</span><=<span class="variable">$sheet</span>-> lastCol();<span class="variable">$c</span>++){ <span class="keyword">echo</span> ‘Строка: ’.<span class="variable">$r</span>.’ Столбец: ’.<span class="variable">$c</span>.’ Значение: ’.<span class="variable">$sheet</span>->read(<span class="variable">$r</span>,<span class="variable">$c</span>).’<br />’; } } </code>


Полученные результаты производительности

Отсутствие потребности в оперативной памяти (в процессе загрузки файла и его чтения) приятно порадовало.

06cbbe1e4598038cb5b16350059aa079 А вот и прирост скорости загрузки excel-файла и его чтения на различных размерах адресных баз.

c549159dbbee487c12bef0eb5eaa0ae0Данные тесты проводились на xlsx-файлах с N подписчиками в один стоблец с email. Реальные же адресные базы еще больше и сложнее и преимущество в скорости и потреблении памяти выглядит еще значительнее.

Стоимость библиотеки 199$ за девелоперскую лицензию, но, поверьте, это того стоит. Безусловно рекомендуем всем, кто сталкивается с проблемой импорта Excel-файлов на свой сервис.

Источник: http://habrahabr.ru/company/pechkin/blog/224207/
Адрес и телефон
E-mail: rs@corp2.net Skype: rudjuk
г. Киев, ул. Белорусская 30, офис. К2Р (схема проезда)
Мы в сети
Меню
www.megastock.ru Здесь находится аттестат нашего WM идентификатора 000000000000
Проверить аттестат
Наверх