Использование ресурсов хостинга. HTTP-сервисы для тех, кто ничего не понимает в WEB

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

ИТАК . Основной задачей любой интеграции, будь то КД, Web-сервисы или HTTP-сервисы, является что-нибудь откуда-нибудь передать, что-нибудь с этим сделать и вернуть ответ. Вот в таком формате мы и рассмотрим новую технологию.

В дереве метаданных HTTP-сервисы располагаются в ветке Общие:

Добавляется новый HTTP-сервис точно так же, как и любой другой объект метаданных. Имя и синоним как хотите. Тут важен только "Корневой URL" - это, собственно, и есть идентификатор HTTP-сервиса в данной базе, т.е. именно то, что вы напишете в этом свойстве, вы передадите стороннему разработчику (ну или себе) в качестве ссылки на сервис.

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

Тут важно само свойство Шаблон:

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

Обязательные данные/параметры запихиваем в шаблон, тем самым если тот, кто обращается к сервису, их не заполнил, то сервис априори выдаст ошибку, а вы при разработке текста модуля обработчика будете уверены, что эти данные есть. Как это делается: в строке Шаблон в фигурных скобках "{}", чередуя с со знаком "/", пишем имена переменных. Например, нам обязательно нужен артикул - тогда пишем /{artikul}. Если нам надо получить артикул, имя и имя пользователя, строка шаблона будет выглядеть так: /{artikul} /{name}/{user} и т.д. Каждый из таких параметров в тексте модуля обработчика можно будет получить так: Запрос.ПараметрыURL["<имя параметра>"]. Если обязательных нет, то шаблон выглядит так: /*.

Не обязательные данные , которые мы хотим получать через сервис, в шаблоне НЕ описываются. При построении ссылки, для обращения к сервису они описываются в конце ссылки после знака "?", разделяются символом амперсанда "&" и имеют структуру <имя параметра>=<значение параметра>. В тексте модуля обработчика к ним можно обратиться конструкцией: Запрос.ПараметрыЗапроса.Получить("<имя параметра>"). НО: важно помнить, раз они не обязательны, то их может и не быть, соответственно значение проверяем на Неопределено.

Далее добавляем новый метод для нашего шаблона. Тут важно свойство HTTP-метод. Их тут огромное количество, НО мы не будем вдаваться во все тонкости. Для реализации любой вашей задачи вам нужны только 2: GET и POST .

Как выбрать: Если того, что мы с вами описали в двух предыдущих абзацах, для работы вам достаточно, т.е. все нужные вам данные вы сможете получить с помощью обязательных и не обязательных параметров самого запроса, то берем GET. В этом случае в любом браузере, если вы правильно введете адресную строку, вы увидите результат действия своего HTTP-сервиса - ПРОФИТ! Если вдруг для работы вашего сервиса нужны данные в более сложном виде (xml например, или еще чего), то, что нельзя запихнуть в простую адресную строку, то берем POST. Из минусов такая легкая проверка через адресную строку браузера, как с GET, не прокатит, но на просторах интернета легко можно найти какие-нибудь сайты, на которых можно проверить сервисы методом POST (например, сайт https://www.hurl.it). В случае, если выбран метод POST, то у запроса помимо URL (адреса) появляется тело, в которое можно запихнуть все, что угодно, а в обработчике метода обратиться к нему через конструкцию Запрос.ПолучитьТелоКакСтроку(). У любого шаблона может быть как GET метод, так и POST. У них будут соответственно разные обработчики, а 1С-ка в зависимости от того, как был отправлен запрос, будет выбирать тот или иной метод.

Обработчик HTTP-сервиса - это функция, которая всегда возвращает значение типа HTTPСервисОтвет, который строится конструктором Новый HTTPСервисОтвет(<КодСостояния>). <КодСостояния> - это число, чтобы не мучаться с выбором что писать, пишем: 200 - если все хорошо и вы возвращаете какое то логичное значение, 400 - если ошибка и вы возврщаете описание ошибки. У данного типа есть различные методы (можно почитать в синтакс помошнике, там все понятно написано). Опять же, всегда можно вернуть все что нужно в виде строки - метод УстановитьТелоИзСтроки(). (одна небольшая хитрость: если вы возвращаете html и хотите чтобы браузер при вводе в адресную строку адреса вашего сервиса на экране красиво отобразил его, в свойстве ответ Заголовки напишите: Ответ.Заголовки.Вставить("Content-Type","text/html; charset=utf-8") - тем самым вы укажите, что это не просто набор символов, а HTML и его надо показать соответствующе)

После того как вы все сделаете, HTTP-сервис надо опубликовать. Делается это на компьютере с установленным веб-сервером (про настройки писать не буду, есть полно статей) через меню:

Администрирование - Публикация на веб сервере.

Там закладка HTTP-сервисы. Ставим галки и нажимаем "Опубликовать"

Итак , мы получили готовый HTTP-сервис. КАК к нему обратиться? Если у нас используется метод GET то в адресной строке браузера пишем: http://<имя веб сервера>/<имя базы>/hs/<корневой URL>/<обязательный параметр1>/<обязательный параметр2> <имя не обязательного параметра 1>=<значение не обязательного параметра 1>&<имя не обязательного параметра 2> =<значение не обязательного параметра 2> .

Ну и, наконец, еще раз в картинках))):

Статистика использования ресурсов хостинга

На каждой услуге виртуального хостинга RU-CENTER ведётся учёт использования следующих ресурсов:

  1. Оперативная память - размер выделенной памяти для работы программного обеспечения на хостинге, устанавливается в мегабайтах в соответствии с тарифным планом.
  2. Процессорное время - время в секундах, которое потратил процессор сервера на выполнение задачи, например, скрипта сайта. Значение лимита 50% на процессорное время в тарифном плане означает, что за период в 1 минуту скрипт может полностью использовать 1 ядро процессора в течение 30 секунд. Лимит 200% означает, что за период в 1 минуту допустимо использовать полностью 2 ядра процессора, то есть 120 секунд процессорного времени.
  3. Число дисковых операций - количество операций ввода-вывода, выполняемых системой хранения данных за минуту.
  4. HDD чтение - скорость чтения информации с диска сервера, мегабайт в минуту.
  5. HDD запись - скорость записи информации на диск сервера, мегабайт в минуту.

Информация об использовании ресурсов размещена в разделе Ресурсы Статистика .

При нажатии на график происходит переход к детальной информации по использованию отдельного ресурса:

При наведении курсора на точку графика, вы увидите потребление ресурсов в этот момент времени.

Причины повышенного потребления ресурсов

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

Основные причины повышенного потребления ресурсов:

  1. Использование ресурсоёмкой CMS , например 1C-Bitrix. Выбирайте .
  2. Высокая посещаемость сайта . В этом случае рекомендуем переход на или .
  3. Неоптимизированные скрипты на сайте - скрипты, алгоритм выполнения которых является неэффективным. Например: подсчёт заведомо известных данных, неоптимальные методы расчёта, лишние циклы и др.
  4. Неоптимизированные запросы к базе данных MySQL . Проблемы могут возникать из-за неправильно сформированных индексов, большого объёма выбираемых данных, большой вложенности запроса и т.д.
  5. Активность поисковых роботов . Роботы могут замедлять работу сайта, если их много и они проводят одновременное сканирование для обновления своей поисковой базы.
  6. Вредоносный код на сайте . Нагрузка на сервер может быть вызвана работой вредоносных скриптов на хостинге.

Способы снижения потребления ресурсов

1. Отключите неиспользуемые модули веб-сервера Apache и расширения модуля PHP

По умолчанию на хостинге включены модули Apache: auth_module, cgi, realip_module, rewrite_module, autoindex_module, env_module, expires_module

Проверьте, включены ли у вас следующие модули Apache и отключите их: для работы большинства сайтов на PHP и MySQL они не требуются. Сделать это можно в разделе
Управление веб-сервером Управление модулем PHP панели управления хостингом. Для просмотра списка модулей необходимо нажать на ссылку Управление расширениями .

  • FastCGI - требуется, если вы самостоятельно устанавливаете на хостинге какое-либо программное обеспечение, работающее в качестве FastCGI-сервера.
  • gzip_module - требуется, если вы настраиваете gzip-сжатие. Помимо включения модуля требуется дополнительная настройка сжатия в файле .htaccess . Отключите модуль, если вы не пользуетесь данной функциональностью.
  • mime_magic_module - позволяет веб-серверу определять mime-типы файлов, для работы большинства сайтов достаточно стандартного mime_module.
  • Perl - он же mod_perl , требуется для работы perl-скриптов, специально написанных под mod_perl. Для запуска perl-скриптов в большинстве случаев используется модуль CGI (см. статью )
  • proxy_module - требуется, если вы планируете настроить проксирование запросов с помощью веб-сервера apache.
  • bandwidth_module, usertrack_module, speling_module, limitipconn_module - эти модули потребляют небольшой объем памяти, но их функциональность большинству сайтов не требуется, поэтому их также можно отключить.

Управление расширениями модуля PHP производится в разделе панели управления хостингом Управление веб-сервером Управление модулем PHP в соответствии с инструкцией .

  • Eaccelerator, APC - кэшируют данные в оперативной памяти, поэтому требуют большое ее количество. На виртуальном хостинге оперативной памяти недостаточно для эффективной работы данных модулей.
  • mysql, mysqli, pdo_mysql - модули для работы с базой данных MySQL, обычно сайту требуется какой-либо один из них, отключите неиспользуемые.
  • imagick, gd - модули для работы с графикой, если сайт может работать с библиотекой gd, лучше использовать ее, так как она потребляет значительно меньше памяти.
  • imap - позволяет работать с почтовыми серверами по протоколу imap, большинству сайтов эта функция не требуется.
  • dba, sqlite, pgsql, pdo_sqlite, pdo_pgsql - модули для работы с соответствующими СУБД. Большинство сайтов работает с использованием СУБД MySQL , эти модули можно отключить.

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

2. Проанализируйте лог-файлы сайта

На хостинге в каталоге /var/log/ размещаются лог-файлы:

  • /var/log/ваш_домен.access.log – лог обращений к сайту,
  • /var/log/ваш_домен.error.log – лог ошибок.

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

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

3. Проверьте работу скриптов сайта со сторонними серверами

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

4. Проанализируйте работу скриптов сайта и запросы к базе данных MySQL

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

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

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

Оптимизация запросов к БД должна сводиться к следующим результатам:

  • во всех запросах используются для выборки данных индексы,
  • минимизировано использование временных файлов и операций filesort.

Все эти данные для каждого из запросов можно получить с помощью команды EXPLAIN в соответствии с документацией по MySQL .

5. Проанализируйте верстку сайта

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

6. Проверьте сайт на наличие вредоносного кода

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

Проверьте хостинг на наличие вредоносного кода с помощью .

С версии 1.6 в Android существует «сервис специальных возможностей». Нетрудно догадаться, с какой целью он был создан, но нас, как людей, стремящихся как раз к неограниченным возможностям, этот сервис интересует с несколько другой стороны. Сегодня мы будем писать программу, которая позволит следить за вводом в других приложениях!

Зачем нужен сервис специальных возможностей?

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

В Android есть стандартный сервис спецвозможностей - TalkBack . При необходимости разработчики могут реализовать и свои собственные. Такие сервисы стало возможно писать с незапамятных времен (Android 1.6, API уровень 4), а с Android 4.0 (API уровня 14) они получили значительные улучшения. Через «библиотеку поддержки» эти улучшения реализованы и для устройств с API версией ниже 14.

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

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

Для этого требуется создать наследник AccessibilityService . В методе подключения onServiceConnected нам нужно задать фильтр событий (класс AccessibilityServiceInfo ) , которые будет слушать сервис. А в методе onAccessibilityEvent обрабатывать эти события.
В манифесте приложения обязательно следует добавить строчки описания сервиса:

Если все сделано верно, то в логе можно увидеть что-то вроде этого:

OnAccessibilityEvent: TYPE_VIEW_TEXT_CHANGED android.widget.EditText com.android.chrome 113326642 сайт

Класс AccessibilityServiceInfo позволяет выставить фильтры для определенных приложений (кто сказал «мобильных банков» или «клиентов социальных сетей»?). По нужному нам событию можно делать скриншоты.
Совсем просто это делается на рутованном устройстве, а если рута нет, то нужно искать сторонние библиотеки для получения скриншотов из сервиса.
Пример кода получения скриншота из сервиса на рутованном устройстве:

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

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

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

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

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

Каждый сторонний сервис владеет частью «пазла», зная о пользователе какую-то информацию. Однако, у магазина нет унифицированного и целостного профиля пользователя.

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

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

Это ведет к тому, что данные на стороне клиента никак не организованы. Нет никакого порядка, целостности и согласованности. Нет никакого контроля над тем, как и кем данные собираются и используются.

Попытки разобраться в этом хаосе данных отнимают огромное количество времени и денег, что совсем не соответствует быстрой и гибкой data-driven культуре. Сотрудникам интернет-магазинов приходиться тратить время на рутинные вещи и бесконечные интеграции, вместо того, чтобы работать над стратегическими задачами, напрямую влияющими на прибыль. Это значительно замедляет скорость и эффективность организации в целом.

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

Запущенный несколько дней назад проект http://digitaldata.readme.io как раз и призван решить эту проблему!

Что такое Digital Data Layer?

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

Для решения этой проблемы и был создан стандарт Digital Data Layer. Это открытый набор правил, определяющих стандарты взаимодействия и передачи данных между сайтом и сторонними системами.

Digital Data Layer (DDL) - это глобальный JavaScript объект, который содержит все динамически переменные, отражающие текущее состояние страницы и пользовательской сессии. Все переменные внутри DDL могут быть использованы внутри tag management систем, таких как Google Tag Manager, а также другими вендорами и скриптами, установленными на сайте.

К примеру, DDL может содержать информацию о просматриваемых товарах (id, цена, и т.д.), информацию о пользователе (имя, email, этот пользователь новых или вернувшийся, подписан он на рассылку или нет), или информацию о товарах, которые были только что куплены на e-commerce сайте.

Преимущества использования

ЧИСТОТА КОДА

Если вы заглянете в код своего Google Tag Manager вы увидите, какой хаос там творится. Данные не организованы. Нет порядка, целостности и согласованности. Нет контроля над тем, как и кем данные собираются и используются.

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

С Digital Data Layer код становится унифицированным и упорядоченным. Одни и те же данные используются много раз и просто преобразовываются в разные форматы.

ПРОДВИНУТАЯ СЕГМЕНТАЦИЯ

Наличие реализованного Digital Data Layer открывает возможности для продвинутого сегментирования. К примеру, DDL позволяет таргетировать маркетинговые кампании по определенным критериям:

  • Таргетировать на пользователей с LTV > 100 000 руб.
  • Которые за последний месяц не открыли ни одного письма из рассылки.

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

АНАЛИТИКА

На каждой странице, где реализован Digital Data Layer - аналитические системы получают возможность собирать информацию, которая в нем находится. Это открывает дополнительные возможности в аналитике и понимании, как влияют различные переменные на конверсию.

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

МЕНЕДЖМЕНТ СТОРОННИХ СЕРВИСОВ И ТЕГОВ

Каждому сайту очень часто приходит сталкиваться с необходимостью установки и настройки новых тегов (скриптов сторонних вендоров). Несложно заметить, что большинству тегов необходимы одни и те же данные, к примеру:

  • Order ID
  • Сумма заказа
  • Список купленных товаров
  • Название товара
  • ID товара
  • Тип страницы

Как только вы интегрируете Digital Data Layer - вы сможете устанавливать новые теги без какой-либо необходимости вносить изменения в код сайта. Все это можно будет делать непосредственно в вашей Tag Management системе.

ПЕРЕДАЧА ДАННЫХ МЕЖДУ СТОРОННИМИ СЕРВИСАМИ

Хотите показать ретаргетинг только пользователям, которые не открывают вашу email-рассылку? Раньше на подобную интеграцию могли уйти месяцы. Теперь же вам достаточно загрузить данные из ESP об открытии писем в Digital Data Layer, что даст возможность системе ретаргетинга построить нужный сегмент.

БЫСТРАЯ И БЕЗБОЛЕЗНЕННАЯ МИГРАЦИЯ

Хотите полностью заменить какую-либо стороннюю систему на другую, либо провести тест между ними?

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

ВЫГОДА ДЛЯ ВСЕЙ КОМАНДЫ

Интеграция Digital Data Layer станет неоценимой инвестицией в будущее вашего сайта, т.к. по сути, это фундамент маркетинга, основанного на данных.

С ЧЕГО НАЧАТЬ?

Подробную документацию и примеры использования DDL можно найти на сайте ddmanager.ru .

Внедрение DDL обычно занимает от 2 до 5 дней. После завершения, любые новые интеграции сторонних сервисов будут делаться в 8-10 раз быстрее (зачастую даже без привлечения IT-специалистов).

Digital Data Manager содержит много полезных функций для работы с событиями и изменениями внутри DDL. Более подробную техническию документацию можно найти на сайте проекта - http://digitaldata.readme.io/docs/работа-с-событиями

Кроме того, Digital Data Manager позволяет добавлять кастомные интеграции, при помощи которых можно использовать данные DDL и передавать их в Google Analytics, GTM, Driveback, Retail Rocket, Criteo и любую другую стороннюю систему.