Домой / Полезное / Неосновательный success php. Перезапуск демона на PHP без потери соединений к нему. Приветствую Вас, дорогой друг

Неосновательный success php. Перезапуск демона на PHP без потери соединений к нему. Приветствую Вас, дорогой друг

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

url — адрес запроса.
settings — в этом параметре можно задать настройки для данного запроса. Задается с помощью объекта в формате {имя:значение, имя:значение...} . Ни одна из настроек не является обязательной. Установить настройки по умолчанию можно с помощью метода $.ajaxSetup() .

Список настроек

↓ название :тип (значение по умолчанию)

При выполнении запроса, в заголовках (header) указываются допустимые типы содержимого, ожидаемого от сервера. Значения этих типов будут взяты из параметра accepts.

По умолчанию, все запросы без перезагрузки страницы происходят асинхронно (то есть после отправки запроса на сервер, страница не останавливает свою работу в ожидании ответа). Если вам понадобиться синхронное выполнение запроса, то установите параметр в false . Кроссдоменные запросы и запросы типа "jsonp" не могут выполняться в синхронном режиме.

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

Это поле содержит функцию, которая будет вызвана непосредственно перед отправкой ajax-запроса на сервер. Такая функция может быть полезна для модификации jqXHR-объекта (в ранних версиях библиотеки (до 1.5), вместо jqXHR используется XMLHttpRequest). Например, можно изменить/указать нужные заголовки (headers) и.т.д. Объект-jqXHR будет передан в функцию первым аргументом. Вторым аргументом передаются настройки запроса.

В этом поле можно указать дополнительные заголовки запроса (header). Эти изменения будут введены до вызова beforeSend, в которой могут быть произведены окончательные правки заголовков.

При переводе этой настройки в true , запрос будет выполнен со статусом "успешно", лишь в случае, если ответ от сервера отличается от предыдущего ответом. jQuery проверяет этот факт обращаясь к заголовку Last-Modified. Начиная с jQuery-1.4, кроме Last-Modified проверяется и "etag" (оба они предоставляются сервером и необходимы для оповещения браузера о том, что запрашиваемые данные с сервера не изменены с предыдущего запроса).

Позволяет установить статус источника страницы локальным (как если бы это происходило по протоколу file), даже если jQuery распознал его иначе. Библиотека решает, что страница запущена локально в случае следующих протоколов: file, *-extension, и widget.

Рекомендуется устанавливать значение параметраisLocal глобально — с помощью функциии $.ajaxSetup() , а не в настройках отдельных ajax-запросов.

Определяет имя параметра, который добавляется в url при jsonp-запросе (по умолчанию, используется "callback" — "httр://siteName.ru?callback=...").

Начиная с jQuery-1.5, указав в этом параметре false , вы предотвратите добавление в url дополнительного параметра. В этом случае необходимо явно установить значение свойства jsonpCallback. Например так: {jsonp:false, jsonpCallback:"callbackName"} .

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

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

По умолчанию, все передаваемые на сервер данные, предварительно преобразуются в строку (url-формата: fName1=value1&fName2=value2&...) соответствующую "application/x-www-form-urlencoded". Если вам необходимо отправить данные, которые нельзя подвергать подобной обработке (например документ-DOM), то следует отключить опцию processData.

Этот параметр используется для кроссдоменных ajax-запросов типа GET, dataType при этом может быть или "jsonp", или "script". Определяет кодировку, в которой будет выполнен кроссдоменный запрос. Это необходимо, в случае, если сервер на чужом домене использует кодировку, отличную от кодировке на сервере родного домена.

(Эта настройка появилась в jQuery-1.5) набор пар, в котором кодам выполнения запроса сопоставляются функции, которые при этом будет вызваны. Например, для кода 404 (страницы не существуют) можно сделать вывод сообщения на экран:

$.ajax ({ statusCode: { 404 : function () { alert ("Страница не найдена" ) ; } } } ) ;

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

Функция, которая будет вызвана в случае удачного завершения запроса к серверу. Ей будут переданы три параметра: данные, присланные сервером и уже прошедшие предварительную обработку (которая отлична для разных dataType). Второй параметр — строка со статусом выполнения. Третий параметр содержит объект jqXHR (в более ранних версиях библиотеки (до 1.5), вместо jqXHR используется XMLHttpRequest). Начиная с jQuery-1.5, вместо одной функции, этот параметр может принимать массив функций.

Время ожидания ответа от сервера. Задается в в миллисекундах. Если это время будет превышено, запрос будет завершен с ошибкой и произойдет событие error (см. описание выше), которое будет иметь статус "timeout".

Время отсчитывается с момента вызова функции $.ajax . Может случиться так, что в этот момент будет запущено несколько других запросов и браузер отложит выполнение текущего запроса. В этом случае timeout может завершиться, хотя фактически, запрос даже еще не был запущен.

В jQuery-1.4 и младше, при завершении времени ожидания, объект XMLHttpRequest перейдет в состояние ошибки и доступ к его полям может вызвать исключение. В Firefox 3.0+ запросы типа script и JSONP не будут прерваны при превышении времени ожидания. Они будут завершены даже после того как это время истечет.

Функция, которая предоставит объект XMLHttpRequest. По умолчанию, для браузеров IE этим объектом является ActiveXObject, а в остальных случаях это XMLHttpRequest. С помощью этого параметра вы можете внедрить собственную версию этого объекта.

(Эта настройка появилась в jQuery-1.5.1) Набор пар {имя:значене} для изменения/добавления значений соответствующих полей объекта XMLHttpRequest . Например, можно установить его свойство withCredentials в true , при выполнении кроссдоменного запроса:

$.ajax ({ url: a_cross_domain_url, xhrFields: { withCredentials: true } } ) ;

В jQuery-1.5 свойство withCredentials не поддерживается нативным XMLHttpRequest и при кроссдоменном запросе это поле будет проигнорировано. Во всех следующих версиях библиотеки, это исправлено.

Обработчики событий

Настройки beforeSend, error, dataFilter, success и complete (их описание есть в предыдущем разделе) позволяют установить обработчики событий, которые происходят в определенные моменты выполнения каждого ajax-запроса.

beforeSend происходит непосредственно перед отправкой запроса на сервер. error происходит в случае неудачного выполнения запроса. dataFilter происходит в момент прибытия данных с сервера. Позволяет обработать "сырые" данные, присланные сервером. success происходит в случае удачного завершения запроса. complete происходит в случае любого завершения запроса.

Пример простого использования. Выведем сообщение при удачном выполнении запроса:

$.ajax ({ url: "ajax/test.html" , success: function () { alert ("Load was performed." ) ; } } ) ;

Начиная с jQuery-1.5, метод $.ajax() возвращает объект jqXHR, который помимо прочего реализует интерфейс deferred , что позволяет задавать дополнительные обработчики выполнения. Помимо стандартных для объекта deferred методов .done(), .fail() и.then() , с помощью которых можно устанавливать обработчики, в jqXHR реализованы.success(), .error() и.complete() . Это сделано для соответствия привычным названиям методов, с помощью которых устанавливаются обработчики выполнения ajax-запросов. Однако начиная с jQuery-1.8 эти три метода станут нежелательными для использования .

Для некоторых типов запросов, таких как jsonp или кроссдоменных GET-запросов, не предусматривается использование объектов XMLHttpRequest. В этом случае, передаваемые в обработчики XMLHttpRequest и textStatus будут содержать значение undefined .

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

Параметр dataType

Функция $.ajax() узнает о типе присланных сервером данных от самого сервера (средствами MIME). Кроме этого, существует возможность лично указать (уточнить), как следует интерпретировать эти данные. Это делается с помощью параметра dataType . Возможные значения этого параметра:

"xml" — полученный xml-документ будет доступен в текстовом виде. С ним можно работать стандартными средствами jQuery (также как и с документом html). "html" — полученный html будет доступен в текстовом виде. Если он содержит скрипты в тегах , то они будут автоматически выполнены, только когда html-текст будет помещен в DOM. "script" — полученные данные будут исполнены как javascript. Переменные, которые обычно содержат ответ от сервера будут содержать объект jqXHR . "json", "jsonp" — полученные данные будут предварительно преобразованы в javascript-объект. Если разбор окажется неудачным (что может случиться, если json содержит ошибки), то будет вызвано исключение ошибки разбора файла. Если сервер, к которому вы обращаетесь, находится на другом домене, то вместо json следует использовать jsonp . Узнать о json и jsonp можно на википедии . "text" — полученные данные окажутся доступными в виде обычного текста, без предварительной обработки.

Замечание 1 : когда запрос отправляется на сторонний домен (что возможно только с dataType равным jsonp или script), обработчики ошибки выполнения (error), а так же глобальные события не сработают.

Замечание 2 : тип данных, заданный в dataType не должен противоречить предоставляемой сервером MIME-информации. Например, xml-данные должны быть представлены сервером как text/xml или application/xml . Если это не будет выполнено, jquery попытается конвертировать полученные данные в указанный тип (подробнее об этом в разделе Converters).

Отправка данных на сервер

По умолчанию, запрос к серверу осуществляется HTTP-методом GET. При необходимости сделать запрос методом POST, нужно указать соответствующее значение в настройке type . Данные, отправляемые методом POST будут преобразованы в UTF-8, если они находятся в другой кодировке, как того требует стандарт W3C XMLHTTPRequest.

Параметр data может быть задан либо строкой в формате key1=value1&key2=value2 (формат передачи данных в url), либо объектом с набором пар {имя:значение} — {key1: "value1", key2: "value2"} . В последнем случае, перед отправкой данных jQuery преобразует заданный объект в строку, с помощью $.param() . Однако, это преобразование можно отменить, указав в настройке processData значение false . Преобразование в строку нежелательно, например, в случае отправки на сервер xml-объекта. В этом случае, желательно изменить настройку contentType с application/x-www-form-urlencoded на более подходящий mime-тип .

Замечание: большинство браузеров не позволяют проводить ajax-запросы на ресурсы с доменами, поддоменами и протоколами, отличными от текущего. Однако, это ограничение не распространяется на запросы типа jsonp и script .

Получение данных с сервера

Полученные от сервера данные, могут быть предоставлены в виде строки или объекта, в зависимости от значения параметра dataType (см. пункт dataType выше). Эти данные всегда доступны в первом параметре обработчика выполнения ajax-запроса:

$.ajax ({ url: "some.php" , success: function (data) { alert ( "Прибыли данные: " + data ) ; } } ) ;

Для типов text и xml , присланные сервером данные будут доступны так же и в jqXHR , а именно в его полях responseText или responseXML соответственно.

Продвинутые настройки

Используя параметр global можно отключать выполнение обработчиков событий (.ajaxSend(), .ajaxError() и др.) для отдельных запросов. Это может быть полезно, например в случае, если в этих обработчиках запускается/останавливается анимация загрузки. Тогда если некоторые запросы выполняются очень часто и быстро, то для них полезно будет отключить выполнение обработчиков. Для кроссдоменных script и jsonp запросов параметр global отключается автоматически.

Если для совершения запроса к серверу необходимы данные аутентификации (логин/пароль), то их можно указать в настройках username и password ajax-запроса.

На выполнение запроса к серверу отводится определенное время. Если в течении этого времени сервер не присылает ответ, то запрос завершается с ошибкой (статус "timeout"). Время ожидания ответа от сервера можно изменить, задав необходимое значение (в миллисекундах) в настройке timeout .

Может так случиться, что кодировка хоста отличается от кодировки запрашиваемого в ajax-запросе javascript файла. В таких случаях необходимо указать кодировку последнего в настройке scriptCharset .

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

Примеры использования

Наиболее простым вариантом использования будет вызов $.ajax() без задания параметров:

$.ajax () ; // на сервер будет отправлен GET-запрос на url-адрес текущей страницы и без указания каких-либо параметров.

Если нужно подгрузить и выполнить js-файл, то это можно сделать следующим образом:

$.ajax ({ type: "GET" , url: "test.js" , dataType: "script" } ) ;

Сделаем POST-запрос на сервер, указав при этом два параметра и оповестим пользователя о удачно завершенном запросе:

$.ajax ({ type: "POST" , url: "some.php" , data: "name=John&location=Boston" , success: function (msg) { alert ( "Прибыли данные: " + msg ) ; } } ) ;

Обновим содержимое нужной html-страницы:

$.ajax ({ url: "test.html" , cache: false , success: function (html) { $("#results" ) .append (html) ; } } ) ;

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

// присланные от сервера данные, запишем в переменную html var html = $.ajax ({ url: "some.php" , async: false } ) .responseText ;

В качестве параметра, отправим на сервер xml-объект. Для его корректной передачи необходимо отменить предварительное преобразование параметров (processData:false). В качестве обработчика удачного завершения запроса укажем пользовательскую функцию handleResponse:

var xmlDocument = [ create xml document] ; $.ajax ({ url: "page.php" , processData: false , data: xmlDocument, success: handleResponse } ) ;

Расширенный подход

Начиная с jQuery-1.5 появились три новых направления, позволяющие использовать $.ajax() еще более глубоко. Первый из них (Prefilters) позволяет провести дополнительные манипуляции, непосредственно перед отправкой запроса. С помощью второго подхода (Converters) можно указать jQuery, как следует конвертировать полученные от сервера данные, если они не соответствуют ожидаемому формату. Третий подход (Transports) является наиболее низкоуровневым, он позволяет самостоятельно организовать запрос к серверу.

Prefilters

Этот подход состоит в установке обработчика, вызываемого перед выполнением каждого ajax-запроса. Этот обработчик предшествует выполнению любых других обработчиков ajax. Устанавливается он с помощью функции $.ajaxPrefilter() :

$.ajaxPrefilter (function (options, originalOptions, jqXHR) { } ) ;

Где
options — настройки текущего запроса,
originalOptions — настройки по умолчанию,
jqXHR — jqXHR-объект данного запроса.

В Prefilters удобно обрабатывать пользовательские настройки (т.е. новые, неизвестные библиотеке настройки, указанные в запросе). Например, можно ввести собственную настройку abortOnRetry , при включении которой незавершенные запросы будут сбрасываться, в случае, если на этот-же url поступает следующий запрос:

var currentRequests = { } ; $.ajaxPrefilter (function (options, originalOptions, jqXHR) { if (options.abortOnRetry ) { if (currentRequests[ options.url ] ) { currentRequests[ options.url ] .abort () ; } currentRequests[ options.url ] = jqXHR; } } ) ;

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

$.ajaxPrefilter (function (options) { if (options.crossDomain ) { options.url = "http://mydomain.net/proxy/" + encodeURIComponent( options.url ) ; options.crossDomain = false ; } } ) ;

Кроме этого, можно указывать значения dataType на которых сработает prefilter. Так, к примеру, можно указать типы json и script:

$.ajaxPrefilter ( "json script" , function (options, originalOptions, jqXHR) { // Изменяем настройки (options), проверяем базовые настройки (originalOptions) и объект jqXHR } ) ;

И наконец, можно изменить значение dataType , вернув необходимое значение:

$.ajaxPrefilter (function (options) { // изменим dataType на script, если url соответствует определенным условиям if (isActuallyScript(options.url ) ) { return "script" ; } } ) ;

Такой подход гарантирует не только то, что запрос изменит свой тип на script, но и то, что остальные prefilter-обработчики с указанием этого типа в первом параметре, будут также выполнены.

Converters

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

Converters является настройкой ajax, поэтому может быть задан глобально:

// так можно задать обработчик, который сработает, если вместо // указанного вами в dataType типа mydatatype придут данные типа text $.ajaxSetup ({ converters: { "text mydatatype" : function ( textValue ) { if (valid( textValue ) ) { // обработка переданного текста return mydatatypeValue; } else { // если присланные сервером данные совсем не соответствуют ожидаемым, // можно вызвать исключение. throw exceptionObject; } } } } ) ;

Converters поможет при введении собственного (пользовательского) dataType. Важно отметить , что в названии такого dataType должны использоваться только строчные буквы! Запрос данных, упомянутого выше типа "mydatatype", мог бы выглядеть следующим образом:

$.ajax ( url, { dataType: "mydatatype" } ) ;

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

Наиболее популярное решение - расширение phpredis . Достаточно установить расширение и настроить php.ini и сессии будут автоматически сохраняться в Redis без изменения кода приложений.

Однако такое решение имеет недостаток - отсутствие блокировки сессии.

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

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

Тестовый скрипт

Пункт 1 Пункт 2 Пункт 3 Пункт 4 Пункт 5 XML;

Пример 5

Используем данные JSON. Входные параметры можно использовать в качестве атрибутов получаемого объекта.

$.ajax({ dataType: "json", url: "response.php?action=sample5", success: function(jsondata){ $(".results").html("Name = " + jsondata.name + ", Nickname = " + jsondata.nickname); } });

Сервер должен возвращать данные в формате JSON:

$aRes = array("name" => "Andrew", "nickname" => "Aramis"); require_once("Services_JSON.php"); $oJson = new Services_JSON(); echo $oJson->encode($aRes);

Приветствую Вас, дорогой друг!

«Чем для Вас является успех в жизни???»

Прошу Вас, задумайтесь, остановитесь на минутку.

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

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

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

Любая реализация талантов души возможна только благодаря другим людям . Душа творит не для себя. Она творит для других – чтоб помочь им и сделать жизнь других наполненной и передать им частичку своего счастья. Счастливый человек передает другим частичку своего счастья, несчастный человек передает другим свое несчастье . Избегайте несчастливых людей!

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

Очевидно, что в этом нет смысла.

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

Хочу, чтоб Вы глубоко осознали, что люди, которые живут только для себя и собирают богатства только для себя, несчастны . Они собирают эти богатства с целью заполнить ту душевную пустоту, которая образовалась в результате бессмысленной жизни . Но эту пустоту можно заполнить только любовью, принося ценность другим людям. Душа счастлива, когда она отдает себя без избытка на то, чтоб делать этот мир лучше. А какой смысл во всех тех богатствах, которые собрал человек, когда он уйдет из жизни, ведь мы не долговечны. Душа приходит, чтоб создать ценность, реализовать себя и затем возвращается «домой». Если она не создает эту ценность, а занимается чем-то другим, она чувствует себя плохо. Она чувствует, что пришла в этот мир и не делает того, чего хочет. И причиной тому наш разум – он ослеплен «успехом» в общем понимание этого слова . Он гонится за иллюзорным, а когда достигает этого, если вообще достигает, он понимает бессмысленность достигнутого.

А что такое успех в общем понимание?
- богатство (деньги, материальные вещи)
- слава, власть, популярность
- статус

Но посмотрите это все исходит от эго. Человек хочет почувствовать свою значимость, но он не понимает, что богатства, слава, статус – это иллюзия. Они похожи на морскую воду, которую сколько не пей, никогда не удовлетворишь жажду. Потому люди всю жизнь и гонятся за ними. Они думают, вот заработаю столько денег и буду счастлив, вот выйду на уровень дохода в $100,000 в год и тогда буду счастлив, вот когда я выйду на сцену и буду петь я буду счастлива, вот выйду замуж, вот буду иметь детей... Вы можете это проверить, но я со 100% уверенностью утверждаю, что Вы не будете счастливы. Более того ваш уровень счастья станет еще меньше. Вы отдаляетесь от своего призвания, и понимая это душа становится еще более несчастной. Чем больше богатства, славы, статуса Вы получаете, тем больший контроль над жизнью берет разум и тем дальше отодвигается роль души. Но истинное счастье исходит от души !!!

Успех – это гармония между душой и разумом. Роль разума состоит в том, чтоб помочь душе самореализоваться. Мы неправильно ставим приоритеты. Недолговечное тело и материальные вещи мы ставим на первое место, а бессмертную душу и неисчерпаемые богатсва мы ставим на последнее. В Библии сказано: «собирайте богатсва на небе, а не Земле». Наше тело – это транспортное средство для души . Душа связана с Высшим Разумом и только она способна понять, что нужно для этого мира. Вселенная способствует людям, которые идут своим путем . Свой путь наименее энергозатратный, а в нашем мире все течет путем наименьшего сопротивления. Я всегда говорю, что успех – это нормальное течение событий. Неудача – это отклонение от нормы. Если сейчас Вы не настолько удачны, как вы этого хотите – значит Вы занимаетесь не тем, для чего предназначены. Душа и разум находятся в разладе. И чем больше этот разлад, тем более несчастен человек.

Но Вы не подумайте, что я говорю, что человеку не нужно материальное. Очень даже нужно. И вот почему: когда у человека нет денег, он вынужден идти на работу и заниматься какой-то "глупостью". Человек тратит 10 часов в сутки для того, чтоб заработать деньги, но делая это он не реализовывает себя. Шеф - вот тот человек, который за счет Вас реализовывает себя. (я говорю, как происходит в большинстве случаев. Большинство людей ненавидят свою работу, но работают потому что нужны деньги, чтоб выжить).

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

Душе для того, чтоб выразить себя нужно время. Только по прошествию некоторого времени созданная душой ценность может продаваться и продаваться в сотни, а то и тысячи раз дороже, чем человек получает на работе. Но чтоб создать такую ценность нужно время. Лично мне потребовалось 5 месяцев, чтоб выйти на какой-нибудь мизерный доход. Через 8 месяцев мой сайт начал приносить доход, на который бедная семья уже смогла бы прожить. И только через 17 месяцев мой сайт стал приносить доход, который уже заменит доходы с очень высокооплачиваемой работы.

Потребовалось 17 месяцев, чтоб заменить работу. Но теперь я свободен! Я занимаюсь любимым делом и это только начало. Для моих мечтаний нет ограничений - а значит и для меня нет ограничений. Когда Вы занимаетесь своим делом, Ваш доход ограничен только вашим воображением и только. Кто на работе зарабатывает $1,000,000 в год? Да, может есть единици. Но занимаясь своим делом даже это не придел.
Материальное важно, но только для того, чтоб удовлетворять потребности жить.

Скажу честно: не получая дохода, тяжелее творить и создавать шедевры . Разум постоянно говорит: «то, что ты делаешь это хорошо, но за что мы будем жить?». И этот вопрос постоянно и сильно отвлекает от творчества. Он отбирает наше счастье. Для того, чтоб выключить этот диалог любимое занятие должно приносить деньги. Конечно, разум потом начинает задавать другие вопросы, но чем больше денег приносит любимое дело, тем менее больными и отвлекающими стают эти вопросы.

Часто люди работают на работе, зарабатывают деньги, но еще имеют хобби. Что такое хобби?
Хобби – это занятие для души, которое не приносит дохода. Но почему хобби не превратить в работу? Самые счастливые люди – это те, у которых хобби является работой . Они нон-стоп занимаются любимым делом.
Все, о чем я говорю, о работе, о деньгах я хочу до Вас донести две важные мысли: 1) Душа и разум должны быть в гармонии
2) Нематериальное всегда должно стоять на первом месте

Фокус должен быть только на нематериальном! Материальное придасться, как следствие . Вот правильные жизненные приоритеты:
счастье -> здоровье -> богатство А многие люди живут по схеме
богатство->здоровье->счастье
А что еще хуже, есть люди, которые живут по схеме
богатство->богатство->богатство

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

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

Степан Овчинников, ИНТЕРВОЛГА

Компания: ИНТЕРВОЛГА
Год основания : 2003
Партнерский статус: Золотой, список компаний, рекомендованных для крупных внедрений
Сколько лет с «1С-Битрикс»: 7 лет
Специализация: технологически сложные сайты, интернет-магазины, корпоративные порталы, личные кабинеты.

Достижения:

  • С 2011 каждый год первые в ЮФО
  • Входим в список компаний, рекомендованных 1С-Битрикс для крупных внедрений
  • Ведем тематический блог о веб-разработке и интернет-маркетинге с посещаемостью до 800 человек в сутки
  • В штате компании 50 человек
История маленькой региональной компании, которая смогла вырасти за счет правильного выбора стратегии и технологий.

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

К 2005 году, когда я пришел работать, в «Интерволге» сделали более ста сайтов. Конечно, они были примитивными по нынешним меркам. Мы пробовали заниматься другими направлениями. Интернет-маркетингом не занимались, только SEO.

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

В 2009–2010 годах произошли серьезные изменения в компании, совпавшие с началом затяжного экономического кризиса. Я начал делегировать полномочия. Ранее я управлял всеми проектами сам.

Раньше в компании работал один программист, он обрабатывал задачи от двух менеджеров, и нам его хватало. Замена программистов происходила так: год-два человек работал и уходил, и каждый раз мы меняли культуру программного кода. Я понял, что заменить программиста - большая проблема. Примерно тогда состоялся разговор с Сергеем Рыжиковым. Он спросил: «А чего вы на «1С-Битрикс» не пишете?»


Инкубационный период длился примерно год - мы параллельно делали сайты на своем старом программном коде, на «1С-Битрикс» и на UMI. Мы сделали на «1С-Битрикс» шесть-восемь сайтов прежде, чем приняли решение, что будем работать только с этой платформой. Тогда же появилась возможность нанимать других программистов, и в 2010 году в компании их стало двое. А потом мы научились с этим справляться и наладили потоковую работу.

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

На семинарах я объяснял людям, что им не нужен интернет-магазин, достаточно каталога с формой заказа. Я это делал только потому, что у нас плохо удавались сложные задачи. Потом мы научились - все базовое берешь из «1С-Битрикс», все нетривиальное делаешь сам.

О специализации

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

Мы сделали форму подбора. Эта задача техническая - требует решения программистов, но когда мы работаем с «1С-Битрикс», мы именно эту задачу решаем. А если бы мы продолжали писать на своем коде, мы не могли бы решать стандартные задачи, которые уже есть в «1С-Битрикс» - например, «Корзина», «Поиск», «Оформление заказа», интеграция с «1С» и другие. Мы теперь занимаемся сразу нестандартными вещами.

У нас есть один из сильных проектов - «Клуб клиентов «Альфа-банка»». Мы делаем его на «1С-Битрикс» с использованием надстройки авторизации «банк-клиент». Этот сайт не использует базу данных «1С-Битрикс» - он интегрирован через специальные API с носителями информации заказчика и получает данные оттуда.

Крутейший проект этого года - личный кабинет для клиентов компании ЕВРАЗ. Мы в блоге подробно описали, как сделали и организовали его.

У нас к «1С-Битрикс», как к платформе, много вопросов и пожеланий, но с точки зрения бизнеса - это волшебная таблетка.

О доверии клиентов

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

Как нас - микроскопическую, убогую региональную студию - заметил Рыжиков? Я написал десяток статей на Хабре, которые сделали нас заметными. К нам обратился «Альфа-банк» с прямым вопросом: «Почему вы, ребята, такие красивые-умные, не участвуете в нашем тендере?» И мы поучаствовали.

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

Сложность проектов считаем в человекочасах. Оценить проект можем быстро - один-два рабочих дня. Есть такая единица измерения, которая называется «навороченный магазин» - 700–800–1000 часов работы. «Навороченных магазинов» может быть два и более.

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

Был период, когда мы в Волгограде сделали три конкурирующих магазина электроинструментов. Такие специфические проекты бывают и сейчас, например, интернет-магазин промышленной электроники Siemens, ABB, Schneider Electric. У них множество дилеров, и каждый хочет крутой интернет-магазин.

Иногда заказчики к нам приходят толпой: понравился один сайт, и всем хочется такой же. Но мы с каждым заключаем договор. Тираж не для нас.

Мы сделали несколько модулей для маркетплейса. Они очень простые, многократно окупились благодаря простоте: мы инвестировали 20–30 часов работы, а продали этот модуль 100 раз.

Как заявлять о себе

2009 года мы проводим семинары каждый год, а иногда несколько раз в год - сами и совместно с «1С-Битрикс». Первые десять раз это делал я, потом делал кто-то из руководителей отделов. Теперь в команде есть линейный менеджер, он занимается семинарами.

Мы участвуем практически во всех программах, рейтингах, мониторингах качества. Мы пишем кейсы про любую мало-мальски заметную работу. Я горжусь тем, что наш сайт - среди партнеров самый информационно насыщенный по тематике «Битрикс24» и, возможно, по «1С-Битрикс: Управление сайтом».

Зачем мы это делаем? Это повышает наш уровень. Мы прорабатываем и обдумываем выполненную работу, оформляем ее в статью. Это пиар - люди читают.

У сайта «Интерволги», который мы ведем в свободное время, посещаемость - 800 человек в день, и из них 80% это низкочастотные запросы. То есть блог, в котором 250 статей, посещает около 650 человек в день. Мы не журналисты, но статьи дают хороший трафик.

Я не раз участвовал в выставках на стенде «1С-Битрикс». Участвовали в выставках и сами. Честно говоря, я в них слегка разочаровался - они не дают клиентов и пиар, только разговоры. Если хочешь узнать, что люди думают, участвуй в выставках.

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

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

Полезно, когда компанию пиарят конкуренты - нас часто рекомендуют на внедрение «Битрикс24». Но лучше пиариться среди клиентов, а их еще где-то надо взять. Мы для этого участвовали в профильных технических выставках -например, «МеталлЭкспо», «Автокомпоненты» в Тольятти.

Там действительно поле непаханое клиентов, но проблема в том, что это «холодные» лиды. Они не понимают, чего хотят. Чтобы их довести до продажи, с каждым надо год общаться. А мы к этому не готовы, предпочитаем «теплых». Мы их получаем за счет контент-маркетинга.

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

Совет

Нужно все время пытаться повышать цены. В какой-то момент тебе рынок скажет, что ты больше не можешь повышать цены, но нужно продолжать. Наводить порядок в инфраструктуре, снижать потери, повышать эффективность работы. Сейчас мы еще сталкиваемся с эффектом масштаба. У нас работает больше 50 человек, и в бардаке такой большой коллектив не смог бы существовать.

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

Алексей Саминский, консультант, вообще формулирует это предельно жестко:

«Если у вас есть какие-то проблемы, приводящие к убыткам, или вы недовольны тем, как вы работаете, вы должны сначала повысить цены процентов на 40, потом сократить процентов 40 людей, и только потом заниматься вопросами качества. Если вы будете это делать в обратном порядке, вы точно сдохнете.»

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

Когда я начал работать в 2009 году, базовая цена за сайт в «Интерволге» была 11–16, может быть, 20 тысяч рублей. Это был сайт с дизайном, с кодом, с CMS, с инструкцией, с менеджментом - за 20 тысяч рублей. Если тогда средний уровень был 15 тысяч рублей, то сейчас сайты стоят в 10–20 раз больше. Это минимальная планка интернет-магазинов, которые мы сейчас делаем. На «тиражке» - 150, на заказном с дизайном - 350 тысяч.

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