<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ConsultApp.ru</title>
	<atom:link href="https://consultapp.ru/feed/" rel="self" type="application/rss+xml" />
	<link>https://consultapp.ru/</link>
	<description>Веб-разработка, сопровождение информационных систем</description>
	<lastBuildDate>Mon, 16 Jun 2025 15:51:40 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>Файлы правил разработки для Cursor</title>
		<link>https://consultapp.ru/cursor-rules/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Mon, 16 Jun 2025 15:47:19 +0000</pubDate>
				<category><![CDATA[React JS]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[cursor]]></category>
		<category><![CDATA[react]]></category>
		<category><![CDATA[typescript]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=2077</guid>

					<description><![CDATA[<p>Здесь я собираю промты для AI агентов, которыми пользуюсь сам или которые покажутся интересными. #react #typescript Скачать файл</p>
<p>Сообщение <a href="https://consultapp.ru/cursor-rules/">Файлы правил разработки для Cursor</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Здесь я собираю промты для AI агентов, которыми пользуюсь сам или которые покажутся интересными.</p>



<span id="more-2077"></span>



<h3 class="wp-block-heading">#react #typescript</h3>



<pre class="wp-block-code"><code lang="markdown" class="language-markdown">---
description: Правила для Front-End разработки на React и TypeScript
auto_attach:
  - "**/*.tsx"
  - "**/*.ts"
  - "**/*.jsx"
  - "**/*.js"
  - "**/*.css"
  - "**/*.scss"
---

Вы - Старший Front-End Разработчик и Эксперт в ReactJS, NextJS, JavaScript, TypeScript, HTML, CSS и современных UI/UX фреймворках (например, Material-UI, Mantine UI, Shadcn, Radix). Вы внимательны, даете детальные ответы и блестяще рассуждаете. Вы тщательно предоставляете точные, фактические, продуманные ответы и гениальны в анализе.

- Тщательно и точно следуйте требованиям пользователя.
- Сначала думайте пошагово - опишите ваш план построения в псевдокоде, детально расписанный.
- Подтвердите, затем пишите код!
- Всегда пишите корректный, соответствующий лучшим практикам, следующий принципу DRY (Don't Repeat Yourself), безошибочный, полностью функциональный и рабочий код, который также должен соответствовать правилам, перечисленным ниже в Руководстве по Реализации Кода.
- Фокусируйтесь на простоте и читаемости кода, а не на производительности.
- Полностью реализуйте всю запрошенную функциональность.
- Не оставляйте TODO, заглушек или отсутствующих частей.
- Убедитесь, что код завершен! Тщательно проверьте финальную версию.
- Включите все необходимые импорты и обеспечьте правильное именование ключевых компонентов.
- Будьте кратки. Минимизируйте любой другой текст.
- Если вы считаете, что может не быть правильного ответа, скажите об этом.
- Если вы не знаете ответ, скажите об этом вместо того, чтобы гадать.
- Тебе ЗАПРЕЩЕНО изменять типы TypeScript в файлах *.d.ts без непосредственного указания
- Тебе ЗАПРЕЩЕНО использовать экспорт или импорт типов в любом случае, как бы тебе это не хотелось.

### Среда Разработки
Пользователь задает вопросы о следующих языках программирования:
- ReactJS
- NextJS
- JavaScript
- TypeScript
- HTML
- CSS

### Руководство по Реализации Кода
Следуйте этим правилам при написании кода:
- Используйте ранние возвраты (early returns) везде, где это возможно, для повышения читаемости кода.
- Используйте "class:" вместо тернарного оператора в class тегах везде, где это возможно.
- Используйте описательные имена переменных и функций/констант. Также функции-обработчики событий должны иметь префикс "handle", например "handleClick" для onClick и "handleKeyDown" для onKeyDown.
- Реализуйте функции доступности на элементах. Например, тег должен иметь tabindex="0", aria-label, on:click и on:keydown, а также аналогичные атрибуты.
- Используйте const вместо функций, например, "const toggle = () =&gt;". Также определяйте тип, если это возможно.</code></pre>



<a href="/cursor/rules/front-end-react-ts-cursor-rules.mdc">Скачать файл</a>
<p>Сообщение <a href="https://consultapp.ru/cursor-rules/">Файлы правил разработки для Cursor</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CSS Container Query: Новый шаг в  адаптивность и независимость блоков страницы</title>
		<link>https://consultapp.ru/css-container-query-new-step-to-adaptive/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 10 Oct 2024 12:40:57 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[css]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=2027</guid>

					<description><![CDATA[<p>Новый функционал, который уже имеет широкую поддержку браузеров и позволяет делать html модули максимально независимыми от остальной страницы. Вы можете задавать поведение внутренних элементов основываясь только на запросы о параметрах контейнерного блока. В целом @container запросы работают так же, как @media запросы, только не к странице, а к определенному особым способом родительскому блоку. Достаточно указать&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/css-container-query-new-step-to-adaptive/">CSS Container Query: Новый шаг в  адаптивность и независимость блоков страницы</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Новый функционал, который уже имеет широкую поддержку браузеров и позволяет делать html модули максимально независимыми от остальной страницы. Вы можете задавать поведение внутренних элементов основываясь только на запросы о параметрах контейнерного блока.</p>



<span id="more-2027"></span>



<p>В целом <code>@container</code> запросы работают так же,  как <code>@media</code> запросы, только не к странице,  а к определенному особым способом родительскому блоку.</p>



<p>Достаточно указать блоку свойство <code><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/container-type" target="_blank" rel="noreferrer noopener">container-type</a>  (size, inline-size, or normal)</code> и он становится контейнером. Так же можно задать ему имя, для уточнения запросов.</p>



<pre class="wp-block-code"><code lang="css" class="language-css">.post {
  container-type: inline-size;
  container-name: sidebar;
}
</code></pre>



<h2 class="wp-block-heading">Базовый синтаксис</h2>



<p>Основываясь на <a href="https://developer.mozilla.org/">md</a><a href="https://developer.mozilla.org/" target="_blank" rel="noreferrer noopener">n</a>, получаем такой синтаксис запроса:</p>



<pre class="wp-block-code"><code lang="css" class="language-css">@container &lt;container-condition&gt;# {
  &lt;stylesheet&gt;
}

/* Пример: */
/* multiple queries in a single condition */
@container (width &gt; 400px) and style(--responsive: true) {
  h2 {
    font-size: 1.5em;
  }
}</code></pre>



<p>Самое интересное тут, что мы можем делать запросы не только о ширине, высоте. Функционал намного шире, мы можем описаться на стили и даже на определенные переменные! Те фактически можем управлять внутренним поведением блока, переопределяя CSS переменные в зависимости от необходимости например.</p>



<h2 class="wp-block-heading">Новые единицы изменения</h2>



<p>Для определения высоты и ширины относительно контейнера появились новые размерности:</p>



<ul class="wp-block-list">
<li><code>cqw</code>: 1% ширины контейенра;</li>



<li><code>cqh</code>: 1% высоты контейнера;</li>



<li><code>cqi</code>: 1% inline размер контейнера;</li>



<li><code>cqb</code>: 1% block размер контейнера;</li>



<li><code>cqmin</code>: меньшее из <code>cqi</code> or <code>cqb</code>;</li>



<li><code>cqmax</code>: большее из <code>cqi</code> or <code>cqb</code>.</li>
</ul>



<h2 class="wp-block-heading">Пример</h2>



<p>В приведенном примере мы постарались раскрыть базовый вариант использования контейнерных запросов на базе поведения блока <code>.item</code>, который опираясь на ширину и переменную, определяемую для одного из родителей, меняет свое поведение. Однако <code>style()</code> работает еще не во всех браузерах, проверяйте совместимость перед использованием в реальных задачах. (работает в Chrome)</p>



<style>
  .testWrapper {
    display: flex;
    flex-flow: row wrap;
    gap: 5px;
  }
  .items {
    container-type: inline-size;
    border: 1px solid black;
    display: flex;
    flex-flow: row wrap;
    justify-content: space-between;
    gap: 5px;
    margin: 10px;
  }
  .items1 {
    width: 300px;
  }
  .items2 {
    width: 200px;
  }
  .items3 {
    width: 100px;
  }

  .thumbnail {
    background-color: rgb(96, 195, 108);
  }
  .text {
    background-color: rgb(237, 57, 87);
  }
  .header {
    background-color: rgb(11, 179, 235);
  }

  .item {
    width: 100%;
    background-color: rgb(54, 54, 54);
    display: grid;
    gap: 5px;
  }

  .item__var2 {
    --variant2: true;
  }

  .item div {
    min-width: 25px;
    min-height: 25px;
  }

  .item div:last-child {
    display: none;
  }

  @container (width > 100px) and (width < 201px) {
    .item {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 10px;
      width: calc(50cqi - 2.5px);
    }
    .item div:last-child {
      grid-column: 1 / span 2;
      display: block;
    }
  }

  @container (width > 100px) and (width < 201px) and style(--variant2: true) {
    .item div:last-child {
      grid-row: 1 / span 2;
      grid-column: 1;
      display: block;
    }
  }

  @container (width > 200px) {
    .item {
      display: grid;
      grid-template-columns: 1fr;
      gap: 10px;
      width: 20cqi;
    }
    .item div:last-child {
      display: block;
    }
  }
</style>
<div class="testWrapper">
  <div class="items items1">
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
  </div>
  <div class="items items2">
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
  </div>
  <div class="items items2 item__var2">
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
  </div>
  <div class="items items3">
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
    <div class="item">
      <div class="thumbnail"></div>
      <div class="header"></div>
      <div class="text"></div>
    </div>
  </div>
</div>



<pre class="wp-block-code"><code lang="css" class="language-css">  .testWrapper {
    display: flex;
    flex-flow: row wrap;
    gap: 5px;
  }
  .items {
    container-type: inline-size;
    border: 1px solid black;
    display: flex;
    flex-flow: row wrap;
    justify-content: space-between;
    gap: 5px;
    margin: 10px;
  }
  .items1 {
    width: 300px;
  }
  .items2 {
    width: 200px;
  }
  .items3 {
    width: 100px;
  }

  .thumbnail {
    background-color: rgb(96, 195, 108);
  }
  .text {
    background-color: rgb(237, 57, 87);
  }
  .header {
    background-color: rgb(11, 179, 235);
  }

  .item {
    width: 100%;
    background-color: rgb(54, 54, 54);
    display: grid;
    gap: 5px;
  }

  .item__var2 {
    --variant2: true;
  }

  .item div {
    min-width: 25px;
    min-height: 25px;
  }

  .item div:last-child {
    display: none;
  }

  @container (width &gt; 100px) and (width &lt; 201px) {
    .item {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 10px;
      width: calc(50cqi - 2.5px);
    }
    .item div:last-child {
      grid-column: 1 / span 2;
      display: block;
    }
  }

  @container (width &gt; 100px) and (width &lt; 201px) and style(--variant2: true) {
    .item div:last-child {
      grid-row: 1 / span 2;
      grid-column: 1;
      display: block;
    }
  }

  @container (width &gt; 200px) {
    .item {
      display: grid;
      grid-template-columns: 1fr;
      gap: 10px;
      width: 20cqi;
    }
    .item div:last-child {
      display: block;
    }
  }</code></pre>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;div class="testWrapper"&gt;
  &lt;div class="items items1"&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="items items2"&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="items items2 item__var2"&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="items items3"&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="item"&gt;
      &lt;div class="thumbnail"&gt;&lt;/div&gt;
      &lt;div class="header"&gt;&lt;/div&gt;
      &lt;div class="text"&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</code></pre>



<h2 class="wp-block-heading">Итого</h2>



<p>В заключении можно отметить, что мы рассмотрели контейнерные запросы. Очевидно они отлично подходят для отображения различных карточек например, в том числе товарных. Модуль можно написать таким образом, что независимо от ширины экрана, он будет менять отображение относительно своего родителя.</p>
<p>Сообщение <a href="https://consultapp.ru/css-container-query-new-step-to-adaptive/">CSS Container Query: Новый шаг в  адаптивность и независимость блоков страницы</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Наименьший общий делитель JavaScript, TypeScript</title>
		<link>https://consultapp.ru/%d0%bd%d0%b0%d0%b8%d0%bc%d0%b5%d0%bd%d1%8c%d1%88%d0%b8%d0%b9-%d0%be%d0%b1%d1%89%d0%b8%d0%b9-%d0%b4%d0%b5%d0%bb%d0%b8%d1%82%d0%b5%d0%bb%d1%8c-javascript-typescript/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Mon, 12 Aug 2024 12:10:24 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=2019</guid>

					<description><![CDATA[<p>Код добавляет функцию nod() на прототип массива (Array).</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bd%d0%b0%d0%b8%d0%bc%d0%b5%d0%bd%d1%8c%d1%88%d0%b8%d0%b9-%d0%be%d0%b1%d1%89%d0%b8%d0%b9-%d0%b4%d0%b5%d0%bb%d0%b8%d1%82%d0%b5%d0%bb%d1%8c-javascript-typescript/">Наименьший общий делитель JavaScript, TypeScript</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Код добавляет функцию nod() на прототип массива (Array).</p>



<span id="more-2019"></span>



<pre title="nod.ts" class="wp-block-code"><code lang="typescript" class="language-typescript line-numbers">declare interface Array&lt;T&gt; {
  nod(): number;
}

Array.prototype.nod = function () {
  let x = this[0];
  for (let i = 1; i &lt; this.length; i++) {
    let y = this[i];
    while (x &amp;&amp; y) x &gt; y ? (x %= y) : (y %= x);
    x += y;
  }
  if (typeof x !== "number" || isNaN(x))
    throw new TypeError("Return type is not 'number'.");

  return x;
};

console.log([1.5, 2, 5, 6, 7].nod()); // 0.5</code></pre>



<pre title="nod.js" class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">Array.prototype.nod = function () {
  let x = this[0];
  for (let i = 1; i &lt; this.length; i++) {
    let y = this[i];
    while (x &amp;&amp; y) x &gt; y ? (x %= y) : (y %= x);
    x += y;
  }

  if (typeof x !== "number" || isNaN(x))
    throw new TypeError("Return type is not 'number'.");

  return x;
};

console.log([1.5, 2, 5, 6, 7].nod()); // 0.5</code></pre>
<p>Сообщение <a href="https://consultapp.ru/%d0%bd%d0%b0%d0%b8%d0%bc%d0%b5%d0%bd%d1%8c%d1%88%d0%b8%d0%b9-%d0%be%d0%b1%d1%89%d0%b8%d0%b9-%d0%b4%d0%b5%d0%bb%d0%b8%d1%82%d0%b5%d0%bb%d1%8c-javascript-typescript/">Наименьший общий делитель JavaScript, TypeScript</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Некоторые тонкости методов JSON stringify и parse в JavaScript</title>
		<link>https://consultapp.ru/interesting-moments-in-json-stringify-parse-in-javascript/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Wed, 26 Jun 2024 20:07:37 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1950</guid>

					<description><![CDATA[<p>Методы JSON.stringify() и JSON.parse() служат для преобразования объекта в json и восстановления json в объект JS соответственно. Однако, они работают не со всеми элементами объекта корректно, а некоторые в целом игнорируются, что следует учитывать при копировании. Здесь мы рассмотрим 2 момента, а именно невозможность перевода в JSON формат функций и символов, а так же ошибку/несоответствие&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/interesting-moments-in-json-stringify-parse-in-javascript/">Некоторые тонкости методов JSON stringify и parse в JavaScript</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Методы <code>JSON.stringify()</code> и <code>JSON.parse()</code> служат для преобразования объекта в json и восстановления json в объект JS соответственно. Однако, они работают не со всеми элементами объекта корректно, а некоторые в целом игнорируются, что следует учитывать при копировании. </p>



<span id="more-1950"></span>



<p>Здесь мы рассмотрим 2 момента, а именно невозможность перевода в JSON формат функций и символов, а так же ошибку/несоответствие при восстановлении данных на примере объекта типа <code>Date</code></p>



<h2 class="wp-block-heading">Введение</h2>



<p>Возьмем объект со свойствами разных типов данных и методом:</p>



<pre class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">const ticket = {
  isValid: true, // boolean
  price: 2000.0, // number
  cityFrom: "MSK", // string
  cityTo: "SPB", // string
  date: new Date(), // Date()
  *[Symbol.iterator]() {
    for (const item of Object.entries(this)) yield item;
  }, // function
};
console.dir(ticket);
// {
//     isValid: true,
//     price: 2000,
//     cityFrom: 'MSK',
//     cityTo: 'SPB',
//     date: 2024-06-27T10:05:33.522Z,
//     [Symbol(Symbol.iterator)]: [GeneratorFunction: [Symbol.iterator]]
// }</code></pre>



<p>Так же нам для наглядности понадобиться функция проверки типов свойств. Для нашего объекта она выдает ожидаемые значения <code>typeof</code>:</p>



<pre class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">function testTypes(obj) {
  for (const k in obj) console.log(k, typeof obj[k]);
}

testTypes(ticket);
// isValid boolean
// price number
// cityFrom string
// cityTo string
// date object</code></pre>



<h2 class="wp-block-heading">Стандартное преобразование</h2>



<p>Обычно объект преобразуют напрямую, следующий код показывает сопутствующие моменты:</p>



<ul class="wp-block-list">
<li>При упаковке мы потеряли метод Symbol(Symbol.iterator);</li>



<li>При восстановлении теряется тип данных даты, она становится строкой.</li>
</ul>



<pre class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">{
  const json = JSON.stringify(ticket);
  console.log(json);
  // json = {"isValid":true,"price":2000,"cityFrom":"MSK","cityTo":"SPB","date":"2024-06-27T10:05:33.522Z"}
  // Здесь мы встречаемся с первым моментом. Видно, что не все упаковалось, функцию мы уже потеряли.

  const parsedObject = JSON.parse(json);
  console.dir(parsedObject);
  // {
  //     isValid: true,
  //     price: 2000,
  //     cityFrom: 'MSK',
  //     cityTo: 'SPB',
  //     date: '2024-06-27T10:05:33.522Z'
  // }

  testTypes(parsedObject);
  //   Если проверить типы, что мы увидим, 
  //   что дата теперь не объект, а строка.
  //   isValid boolean
  //   price number
  //   cityFrom string
  //   cityTo string
  //   date string
}</code></pre>



<h2 class="wp-block-heading">JSON.stringify()</h2>



<p>При упаковке, мы можем передать методу <code>JSON.stringify</code> второй параметр в виде массива ключей, которые надо экспортировать в json.</p>



<pre class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">const json = JSON.stringify(ticket, ["isValid", "price", "cityFrom", "date"]);
console.log("json:", json);
// json: {"isValid":true,"price":2000,"cityFrom":"MSK","date":"2024-06-27T11:18:08.648Z"}
// Проблема с датой осталась, но мы
// можем фильтровать нужные данные для передачи</code></pre>



<h2 class="wp-block-heading">JSON.parse()</h2>



<p>С методом <code>JSON.parse</code> все интересней, вторым аргументом можем передать функцию восстановления, с ее помощью мы сможем отслеживать интересующие нас поля и изменять их в процессе распаковки. </p>



<p>Пример функции восстановления для Date:</p>



<pre class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">function R(k, v) {
  if (
    typeof v === "string" &amp;&amp;
    /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/.test(v)
  ) {
    return new Date(v);
  }
  return v;
}</code></pre>



<p>Код с функцией восстановления будет выглядеть так:</p>



<pre class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">{
  const json = JSON.stringify(ticket, ["isValid", "price", "cityFrom", "date"]);
  console.log("json:", json);
  // json: {"isValid":true,"price":2000,"cityFrom":"MSK","date":"2024-06-27T11:18:08.648Z"}
  // Проблема с датой осталась, но мы
  // можем фильтровать нужные данные для передачи

  // JSON.parse с функцией восстановления
  const recoveredObject = JSON.parse(json, function (k, v) {
    if (
      typeof v === "string" &amp;&amp;
      /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/.test(v)
    ) {
      return new Date(v);
    }
    return v;
  });

  console.dir(recoveredObject);
  //   {
  //     isValid: true,
  //     price: 2000,
  //     cityFrom: 'MSK',
  //     date: 2024-06-27T11:24:24.112Z
  //   }

  testTypes(recoveredObject);
  // isValid boolean
  // price number
  // cityFrom string
  // date object
}
</code></pre>



<p>Мы видим, что дата стала объектом, тем самым, который мы вернули в функции восстановления. Естественно ее можно расширить, для восстановления например собственных типов объекто, если у них реализован метод toJSON() и они свободно упаковываются методом JSON.stringify.</p>



<h3 class="wp-block-heading">Итоговый код с комментариями</h3>



<pre class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">function testTypes(obj) {
  for (const k in obj) console.log(k, typeof obj[k]);
}
const ticket = {
  isValid: true, // boolean
  price: 2000.0, // number
  cityFrom: "MSK", // string
  cityTo: "SPB", // string
  date: new Date(), // Date()
  *[Symbol.iterator]() {
    for (const item of Object.entries(this)) yield item;
  }, // function
};
console.dir(ticket);
// {
//     isValid: true,
//     price: 2000,
//     cityFrom: 'MSK',
//     cityTo: 'SPB',
//     date: 2024-06-27T10:05:33.522Z,
//     [Symbol(Symbol.iterator)]: [GeneratorFunction: [Symbol.iterator]]
// }
testTypes(ticket);
// isValid boolean
// price number
// cityFrom string
// cityTo string
// date object

{
  const json = JSON.stringify(ticket);
  console.log(json);
  // json = {"isValid":true,"price":2000,"cityFrom":"MSK","cityTo":"SPB","date":"2024-06-27T10:05:33.522Z"}
  // Здесь мы встречаемся с первым моментом. Видно, что не все упаковалось, функцию мы уже потеряли.

  const parsedObject = JSON.parse(json);
  console.dir(parsedObject);
  // {
  //     isValid: true,
  //     price: 2000,
  //     cityFrom: 'MSK',
  //     cityTo: 'SPB',
  //     date: '2024-06-27T10:05:33.522Z'
  // }

  testTypes(parsedObject);
  //   Если проверить типы, что мы увидим, что дата теперь не объект, а строка.
  //   isValid boolean
  //   price number
  //   cityFrom string
  //   cityTo string
  //   date string
}

{
  const json = JSON.stringify(ticket, ["isValid", "price", "cityFrom", "date"]);
  console.log("json:", json);
  // json: {"isValid":true,"price":2000,"cityFrom":"MSK","date":"2024-06-27T11:18:08.648Z"}
  // Проблема с датой осталась, но мы
  // можем фильтровать нужные данные для передачи

  // JSON.parse с функцией восстановления
  const recoveredObject = JSON.parse(json, function (k, v) {
    if (
      typeof v === "string" &amp;&amp;
      /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/.test(v)
    ) {
      return new Date(v);
    }
    return v;
  });

  console.dir(recoveredObject);
  //   {
  //     isValid: true,
  //     price: 2000,
  //     cityFrom: 'MSK',
  //     date: 2024-06-27T11:24:24.112Z
  //   }

  testTypes(recoveredObject);
  // isValid boolean
  // price number
  // cityFrom string
  // date object
}
</code></pre>



<p></p>
<p>Сообщение <a href="https://consultapp.ru/interesting-moments-in-json-stringify-parse-in-javascript/">Некоторые тонкости методов JSON stringify и parse в JavaScript</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pre-loader для сайта</title>
		<link>https://consultapp.ru/pre-loader-for-site/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sun, 05 May 2024 10:00:40 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1891</guid>

					<description><![CDATA[<p>Как показать предзагрузку сайта до загрузки каких-либо скриптов и полного HTML документа?</p>
<p>Сообщение <a href="https://consultapp.ru/pre-loader-for-site/">Pre-loader для сайта</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>В данной статье мы рассмотрим, как показать информацию о процессе загрузки сайта до самой загрузки каких-либо скриптов и полного HTML документа.</p>



<span id="more-1891"></span>



<p>Наша задача каким-то образом показать элемент на странице, до загрузки чего бы то ни было тяжелого вроде скриптов, как минимум полной загрузки <strong>&lt;body&gt;</strong>, а потом отследить загрузку и убрать этот элемент. На первый взгляд это кажется противоречащим самому себе. Как показать что-то, до загрузки части документа, который как раз и содержит визуальную информацию и убрать после? </p>



<p>Однако есть один момент. Теги<strong> &lt;html&gt;</strong>, <strong>&lt;head&gt;</strong> читаются раньше, плюс в CSS есть псевдоэлементы, нас интересует <strong>::before</strong>. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Псевдоэлементы <strong>::before</strong>, <strong>::after </strong>— это часть селекторов<strong>&nbsp;</strong><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements">CSS</a>, которые используют для вставки содержимого, которого нет в исходном коде.</p>
</blockquote>



<h2 class="wp-block-heading">Решение</h2>



<ol class="wp-block-list">
<li>Добавляем стилизованный псевдоэлемент <strong>::before</strong> на тег <strong>&lt;html&gt;</strong> с нужным нам элементом-прелоадером;</li>



<li>Отлавливаем в JS момент загрузки страницы (2 варианта). Убираем отображение загрузки, с помощью добавления класса конца загрузки тегу <strong>&lt;html&gt;</strong>.</li>
</ol>



<h2 class="wp-block-heading">Подробное описание</h2>



<p>Рассмотрим пример добавление прелоадера  на примере нашего сайта. </p>



<p>Добавляем в <strong>&lt;head&gt;</strong>, напрямую или через файл, стили:</p>



<pre title="style.css" class="wp-block-code"><code lang="css" class="language-css line-numbers">html::before {
  background-size: 150px !important;
  opacity: 1;
  content: "";
  display: block;
  position: fixed;
  z-index: 999;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: url("/logo-animate.svg") no-repeat center, #fff;
  transition: opacity 0.3s ease-in;
}

html.loaded::before {
  opacity: 0;
  pointer-events: none;
}</code></pre>



<p>Здесь видно, что в нашем случае <strong>content</strong> &#8212; пустая строка. Мы позиционируем по центру <strong>background</strong> с SVG лоадером, растягивая слой на весь экран, а так же выставляя большой <strong>z-index</strong>, что позволит нам скрывать постепенную загрузку/отображение элементов. Плюс небольшая анимация перехода.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" src="/logo-animate.svg" alt="/logo-animate.svg - background с SVG лоадером" style="width:150px"/><figcaption class="wp-element-caption">Файл /logo-animate.svg</figcaption></figure></div>


<p>Далее у нас есть 2 варианта работы с JS, мы можем поймать события:</p>



<ul class="wp-block-list">
<li><strong><code>DOMContentLoaded</code></strong>&nbsp;– браузер полностью загрузил HTML, было построено DOM-дерево, но внешние ресурсы, такие как картинки&nbsp;<code>&lt;img&gt;</code>&nbsp;и стили, могут быть ещё не загружены;</li>



<li><strong><code>load</code></strong>&nbsp;– браузер загрузил HTML и внешние ресурсы (картинки, стили и т.д.).</li>
</ul>



<p>Выбор за Вами, понятно, что первое событие будет раньше и Вы можете даже добавить дополнительный этап загрузки, между <strong>DOMContentLoaded</strong> и <strong>load</strong> соответственно. Мы же остановимся на load:</p>



<pre title="script.js" class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">window.addEventListener("load", () =&gt; {
  document.documentElement.classList.add("loaded");
});

setTimeout(()=&gt;{ 
    if(!document.documentElement.classList.contains("loaded"))
       document.documentElement.classList.add("loaded");
}, 10000);</code></pre>



<p>Объекту <strong>window</strong> добавляем событие <strong>load</strong>, по которому добавляем класс окончания загрузки на тег &lt;<strong>html</strong>&gt; (в JS к нему можно обращаться как к documentElement). </p>



<p>Так же, для очень медленных соединений, мы посчитали необходимым снимать loader (setTimeout) через 10 сек, после загрузки скрипта, если DOM дерево по каким-то причинам будет очень долго строиться и отображаться. Что-бы показать хоть какой-то процесс или возможно наличие обрыва соединения.</p>



<h2 class="wp-block-heading">Упаковка в plugin WordPress</h2>



<p>Для удобства управления, все вышеописанное можно упаковать в плагин WP. Например такой код позволит подключить стилевой и скриптовый файлы:</p>



<pre title="easy-page-preloader.php" class="wp-block-code"><code lang="php" class="language-php">&lt;?php
/*
Plugin Name: Easy Page Preloader
Plugin URI: http://consultapp.ru/pre-loader-for-site/
Description: Adding a preloader to the pages. No conflicts with SEO. You can set your own logo.
Version: 1.0
Author: Dmitry Egorov
Author URI: http://consultapp.ru/
License: GPLv2
*/

//********************************************************************
//*************************** PLUGIN CORE ****************************
//********************************************************************

function ca_epl(){
        wp_enqueue_style( 'html-loader', plugins_url( '/style.css', __FILE__ ) );
        wp_enqueue_script( 'html-loader-script', plugins_url( '/script.js', __FILE__ ), array(), '1.0.1', true );
}
add_action('wp_enqueue_scripts', 'ca_epl');</code></pre>



<h2 class="wp-block-heading">Заключение</h2>



<p>В статье мы рассмотрели, как с помощью прсевдоэлемента <strong>::before</strong> добавленного к тегу <strong>&lt;html&gt;</strong> добавить <strong>preloader</strong> на страницу, и отключать его по событию <strong>load</strong> на объекте <strong>window</strong>.</p>
<p>Сообщение <a href="https://consultapp.ru/pre-loader-for-site/">Pre-loader для сайта</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Простая настройка Gulp для верстальщика</title>
		<link>https://consultapp.ru/simple-gulp-for-front-developer/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Fri, 03 Nov 2023 09:21:12 +0000</pubDate>
				<category><![CDATA[Gulp]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1790</guid>

					<description><![CDATA[<p>Gulp &#8212; сборщик проекта, который на первый вгляд может показаться усложненным. Но как только Вы немного погрузитесь в него, то поразитесь, насколько он удобен и гибок для подстройки именно под Вашу структуру. В этой статье мы разберем простой пример настройки Gulp и его плагинов, делается это через gulpfile.js в корне проекта. Установка самого сборщика и&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/simple-gulp-for-front-developer/">Простая настройка Gulp для верстальщика</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Gulp &#8212; сборщик проекта, который на первый вгляд может показаться усложненным. Но как только Вы немного погрузитесь в него, то поразитесь, насколько он удобен и гибок для подстройки именно под Вашу структуру.</p>



<span id="more-1790"></span>



<p>В этой статье мы разберем простой пример настройки <a href="https://gulpjs.com/" target="_blank" rel="noreferrer noopener">Gulp</a> и его <a href="https://gulpjs.com/plugins" target="_blank" rel="noreferrer noopener">плагинов</a>, делается это через <strong>gulpfile.js</strong> в корне проекта. Установка самого сборщика и его плагинов осуществляется через пакетный менеджер <strong>npm</strong>.</p>



<h2 class="wp-block-heading">Что мы используем в обычном проекте?</h2>



<p>В простом проекте по верстке, в котором у нас будет <strong>папка исходников </strong>(<strong>src)</strong> и <strong>рабочего проекта</strong> (<strong>dist</strong>), мы работаем с:</p>



<ul class="wp-block-list">
<li><strong><a href="#html">HTML</a></strong> &#8212; в нашем случае все будет в различных .html файлах двух типов: страницы и темплейты компонентов (здесь мы будем использовать плагин <strong>gulp-file-include</strong>, что очень сильно облегчает разработку и соответствует DRY);</li>



<li><a href="#scss"><strong>SASS/SCSS</strong> </a>&#8212; будем использовать препроцессоры для удобства, те собирать будем все .scss файлы в один оптимизированный стилевой файл <strong>style.css</strong>;</li>



<li><strong><a href="#js">JS</a></strong> &#8212; те или иные скрипты, все .js файлы, хотелось бы тоже собрать по всему проекту в один оптимизированный<strong> script.js</strong>;</li>



<li><strong><a href="#images">Images</a></strong> &#8212; разные статические картинки, которые учавствуют в оформлении. Их будем собирать по всему проекту в одну папку без сохранения изначальной стркутуры папок,  а так же оптимизировать размер;</li>



<li><strong><a href="#helpers">Live Dev Server</a></strong> &#8212; хотелось бы как-то налету применять все изменения  при разработке, за это будет отвечать локальный сервер.</li>
</ul>



<p>Сначала мы рассмотрим отдельные части кода, потом соберем весь пазл.</p>



<h2 class="wp-block-heading">Необходимые плагины</h2>



<p>Плагины мы устанавливаем, как dev зависимости с помощью <strong>npm</strong> например. </p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">npm i -D gulp browser-sync gulp-flatten del...</code></pre>



<p>Соотвественно начало нашего настроечного файла будет содержать подключение всех установленных плагинов. Их смысл во многом понятен из названий и будет разобран ниже.</p>



<pre title="gulpfile.js" class="wp-block-code"><code lang="javascript" class="language-javascript">// COMMON
import gulp from 'gulp';
const { src, dest, watch, series } = gulp;

import { deleteAsync } from 'del';
import syncServer from 'browser-sync';
const sync = syncServer.create();

import flatten from 'gulp-flatten';

// STYLE
import * as dartSass from 'sass';
import gulpSass from 'gulp-sass';
const sass = gulpSass(dartSass);
import autoprefixer from 'gulp-autoprefixer';
import minify from 'gulp-clean-css';
import sourcemaps from 'gulp-sourcemaps';
import concat from 'gulp-concat';

// HTML
import include from 'gulp-file-include';

// IMAGES
import imagemin from 'gulp-imagemin';</code></pre>



<h2 class="wp-block-heading" id="html">HTML</h2>



<p>В HTML нас ждет один из самых приятных сюрпризов, это возможность разделять код на файлы и подключать и в любом месте других файлов, например так:</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">  &lt;head&gt;
    @@include('src/components/meta/index.html')
    &lt;title&gt;Title&lt;/title&gt;
  &lt;/head&gt;</code></pre>



<p>За работу с html будет отвечать одноименная функция, заметьте, что мы не берем все .html из проекта, а только те, что считаем страницами, при этом шаблоны подключаются из папки компонентов: </p>



<pre title="gulpfile.js" class="wp-block-code"><code lang="javascript" class="language-javascript">function html() {
  return src('src/pages/**/**.html') // берем все файлы по шаблону
    .pipe( 
      include({
        prefix: '@@',
        basepath: '@root',
      }),// запускаем плагин, который подставит все темплейты
    )
    .pipe(dest('dist')); // кладем файлы с сохранением структуры и проект
} </code></pre>



<h2 class="wp-block-heading" id="scss">SASS/SCSS</h2>



<p>Тут мы будем использовать последовательное включение разных плагинов для потока файлов, большинство названий говорящие, так что особых пояснений не требуется. Если что-то не ясно, можно уточнить по имени <a href="https://gulpjs.com/plugins" target="_blank" rel="noreferrer noopener">плагина</a>.</p>



<pre title="gulpfile.js" class="wp-block-code"><code lang="javascript" class="language-javascript">function scss() {
  return src('src/**/**.scss') // берем все файлы с расширением .scss
    .pipe(sourcemaps.init()) // начинаем собирать sourcemap информацию
    .pipe(autoprefixer()) // добавляем браузерные префиксы
    .pipe(sass().on('error', sass.logError)) // препроцессор sass
    .pipe(concat('style.min.css')) // собираем все в 1 файл
    .pipe(minify()) // минифицируем
    .pipe(sourcemaps.write('.')) // указываем sourcemap  туже директорию
    .pipe(dest('dist/assets/css')); // сохраняем конечный фалй
}</code></pre>



<h2 class="wp-block-heading" id="js">JS</h2>



<p>C JS все достаточно просто, собираем в один файл всё с расширением .js. Но Вы можете подключить дополнительные плагины для манификации кода например.</p>



<pre title="gulpfile.js" class="wp-block-code"><code lang="javascript" class="language-javascript">function js() {
  return src('src/**/**.js') // выбираем файлы по маске
    .pipe(concat('script.js')) // сиединяем в один файл script.js
    .pipe(dest('dist/assets/js')); // сохраняем в необходимую директорию
}</code></pre>



<h2 class="wp-block-heading" id="images">Images</h2>



<p>Собираем все картинки в папке, и обрабатываем необходимым образом.</p>



<pre title="gulpfile.js" class="wp-block-code"><code lang="javascript" class="language-javascript">function images() {
  return src('src/assets/images/*') // выбираем файлы по маске
    .pipe(imagemin()) // оптимизируем картинки
    .pipe(flatten()) // избавляемся от вложенности, можно убрать
    .pipe(dest('dist/assets/images/')); // сохраняем в проект
}</code></pre>



<h2 class="wp-block-heading" id="helpers">Вспомогательные функции</h2>



<p>Еще нам понадобится, как уже упоминалось, сервер и функция очистки проекта. Сервер работает по принципу слежения за соответствующими файлами и запуску функций при их изменении.</p>



<pre title="gulpfile.js" class="wp-block-code"><code lang="javascript" class="language-javascript">function clear() {
  return deleteAsync('dist'); // удаляем все файлы из итогового проекта
}

function serve() {
  // инициализируем сервер, который хостит нашу папку итогового проекта
  sync.init({ server: './dist' }); 

  // следим за файлами по маске и запускаем функции при их изменении
  // далее перезагружаем сервер
  watch(['src/**/**.html'], series(html)).on('change', sync.reload);
  watch(['src/**/**.scss'], series(scss)).on('change', sync.reload);
  watch(['src/assets/images/*'], series(images)).on('change', sync.reload);
  watch('src/**/**.js', series(js)).on('change', sync.reload);
}</code></pre>



<h2 class="wp-block-heading">Функции сборки проекта</h2>



<p>В итоге для удобства нам хотелось бы иметь короткие функции сборки всего проекта и запуска их из консоли. Нам понадобятся dev и build сборки. Запускать их будем так:</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">gulp dev
gulp build</code></pre>



<p>Для сборок будем использовать наборы функций, которые запускаются последовательно, для этого используем метод gulp &#8212; <strong>series</strong>. Он возвращает функцию, которую мы экспортируем и сможем использовать для запуска из коммандной строки.</p>



<pre title="gulpfile.js" class="wp-block-code"><code lang="javascript" class="language-javascript">// <strong>series</strong> последовательно запускает указанные функции
const build = series([clear, scss, html, js, images]);
const dev = series([clear, scss, html, js, images, serve]);

export { build, dev };</code></pre>



<p>Как видно из кода, различием dev сборки только в том, что она запускает тестовый сервер. Но Вы конечно можете кастомизировать порядок и настройки под ваши задачи и вкус.</p>



<h2 class="wp-block-heading">Итоговый файл настройки</h2>



<pre title="gulpfile.js" class="wp-block-code"><code lang="javascript" class="language-javascript line-numbers">// COMMON
import gulp from 'gulp';
const { src, dest, watch, series } = gulp;

import { deleteAsync } from 'del';
import syncServer from 'browser-sync';
const sync = syncServer.create();
import flatten from 'gulp-flatten';

// STYLE
import * as dartSass from 'sass';
import gulpSass from 'gulp-sass';
const sass = gulpSass(dartSass);
import autoprefixer from 'gulp-autoprefixer';
import minify from 'gulp-clean-css';
import sourcemaps from 'gulp-sourcemaps';
import concat from 'gulp-concat';

// HTML
import include from 'gulp-file-include';

// IMAGES
import imagemin from 'gulp-imagemin';

function html() {
  return src('src/pages/**/**.html')
    .pipe(
      include({
        prefix: '@@',
        basepath: '@root',
      }),
    )
    .pipe(dest('dist'));
}

function images() {
  return src('src/assets/images/*')
    .pipe(imagemin())
    .pipe(flatten())
    .pipe(dest('dist/assets/images/'));
}

function scss() {
  return src('src/**/**.scss')
    .pipe(sourcemaps.init())
    .pipe(autoprefixer())
    .pipe(sass().on('error', sass.logError))
    .pipe(concat('style.min.css'))
    .pipe(minify())
    .pipe(sourcemaps.write('.'))
    .pipe(dest('dist/assets/css'));
}

function js() {
  return src('src/**/**.js').pipe(concat('script.js')).pipe(dest('dist/assets/js'));
}

function clear() {
  return deleteAsync('dist');
}

function serve() {
  sync.init({ server: './dist' });

  watch(['src/**/**.html'], series(html)).on('change', sync.reload);
  watch(['src/**/**.scss'], series(scss)).on('change', sync.reload);
  watch(['src/assets/images/*'], series(images)).on('change', sync.reload);
  watch(['src/**/**.js'], series(js)).on('change', sync.reload);
}

const build = series([clear, scss, html, js, images]);
const dev = series([clear, scss, html, js, images, serve]);

export { build, dev };
</code></pre>



<h2 class="wp-block-heading">Заключение</h2>



<p>В этой статье мы описали простейший вариант настройки <strong>Gulp</strong>, при этом обладающий всеми необходимыми инструментами для сборки и оптимизации проекта. Вы, конечно, всегда можете дополнить его плагинами и настройками на Ваш вкус.</p>



<p>Если остались вопросы, <a href="mailto:info@consultapp.ru">напишите нам на почту</a>, мы постараемся помочь!</p>
<p>Сообщение <a href="https://consultapp.ru/simple-gulp-for-front-developer/">Простая настройка Gulp для верстальщика</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Переработка темы Themelia c PHP на React, для работы с WordPress в качестве Headless CMS без SSR</title>
		<link>https://consultapp.ru/themelia-php-to-react-wordpress-headless-cms-no-ssr/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Tue, 06 Jun 2023 09:56:52 +0000</pubDate>
				<category><![CDATA[React JS]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1656</guid>

					<description><![CDATA[<p>Переработка темы WordPress с PHP на Vite.js/React без SSR для использования WP, как Headless CMS, с помощью наивного REST API WordPress . Использован Redux для хранения ранее загруженной информации для избежания повторных обращений к серверу. Технологии/Пакеты: REST API WordPress Существует много готовых эндпоинтов в Rest Api WP, нас интересуют на данном этапе посты, страницы и&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/themelia-php-to-react-wordpress-headless-cms-no-ssr/">Переработка темы Themelia c PHP на React, для работы с WordPress в качестве Headless CMS без SSR</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Переработка темы WordPress с PHP на Vite.js/React без SSR для использования WP, как Headless CMS, с помощью наивного REST API WordPress . Использован Redux для хранения ранее загруженной информации для избежания повторных обращений к серверу.</p>



<span id="more-1656"></span>



<ul class="wp-block-list">
<li>Рабочий макет на примере нашего сайта: <a href="https://wp-themelia-vitejs.vercel.app/;"><a href="https://wp-themelia-vitejs.vercel.app/" target="_blank" rel="noreferrer noopener">https://wp-themelia-vitejs.vercel.app/</a></a>;</li>



<li>Репозиторий: <a href="https://github.com/consultapp/wp-themelia-vitejs">https://github.com/consultapp/wp-themelia-vitejs</a>;</li>
</ul>



<p>Технологии/Пакеты:</p>



<ul class="wp-block-list">
<li><a href="https://reactjs.org" target="_blank" rel="noreferrer noopener">React</a></li>



<li><a href="https://vitejs.dev" target="_blank" rel="noreferrer noopener">Vite.js</a></li>



<li>Redux</li>



<li>Redux/Toolkit</li>



<li><a href="https://developer.wordpress.org/rest-api/" target="_blank" rel="noreferrer noopener">REST API  WordPress</a></li>



<li><a href="https://kab.wordpress.org/themes/themelia/">Themelia WordPress Theme</a></li>
</ul>



<h2 class="wp-block-heading">REST API WordPress</h2>



<p>Существует много готовых эндпоинтов в Rest Api WP, нас интересуют на данном этапе <strong>посты, страницы и поиск</strong>.</p>



<h4 class="wp-block-heading"><a href="https://developer.wordpress.org/rest-api/reference/#rest-api-developer-endpoint-reference" target="_blank" rel="noreferrer noopener" style="text-decoration:none;">REST API Developer Endpoint Reference</a></h4>



<figure class="wp-block-table"><table><tbody><tr><th>Resource</th><th>Base Route</th></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/posts/">Posts</a></td><td><code>/wp/v2/posts</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/post-revisions/">Post Revisions</a></td><td><code>/wp/v2/posts/&lt;id&gt;/revisions</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/categories/">Categories</a></td><td><code>/wp/v2/categories</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/tags/">Tags</a></td><td><code>/wp/v2/tags</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/pages/">Pages</a></td><td><code>/wp/v2/pages</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/page-revisions/">Page Revisions</a></td><td><code>/wp/v2/pages/&lt;id&gt;/revisions</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/comments/">Comments</a></td><td><code>/wp/v2/comments</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/taxonomies/">Taxonomies</a></td><td><code>/wp/v2/taxonomies</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/media/">Media</a></td><td><code>/wp/v2/media</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/users/">Users</a></td><td><code>/wp/v2/users</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/post-types/">Post Types</a></td><td><code>/wp/v2/types</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/post-statuses/">Post Statuses</a></td><td><code>/wp/v2/statuses</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/settings/">Settings</a></td><td><code>/wp/v2/settings</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/themes/">Themes</a></td><td><code>/wp/v2/themes</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/search-results/">Search</a></td><td><code>/wp/v2/search</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/block-types/">Block Types</a></td><td><code>/wp/v2/block-types</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/blocks/">Blocks</a></td><td><code>/wp/v2/blocks</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/block-revisions/">Block Revisions</a></td><td><code>/wp/v2/blocks/&lt;id&gt;/autosaves/</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/rendered-blocks/">Block Renderer</a></td><td><code>/wp/v2/block-renderer</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/block-directory-items/">Block Directory Items</a></td><td><code>/wp/v2/block-directory/search</code></td></tr><tr><td><a href="https://developer.wordpress.org/rest-api/reference/plugins/">Plugins</a></td><td><code>/wp/v2/plugins</code></td></tr></tbody></table></figure>



<p>Весь API находится в разделе /wp-json/, те для <strong>постов</strong> например это:</p>



<pre class="wp-block-code"><code class="">https://example.com/wp-json/wp/v2/posts </code></pre>



<p>В ответ получаем массив постов вида (отдается кол-во постов равное установленному ранее параметром <strong>pre_page</strong>, при его отсутствии в запросе):</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://consultapp.ru/wp-content/uploads/2023/06/image.png"><img fetchpriority="high" decoding="async" width="700" height="347" src="https://consultapp.ru/wp-content/uploads/2023/06/image-700x347.png" alt="" class="wp-image-1688" srcset="https://consultapp.ru/wp-content/uploads/2023/06/image-700x347.png 700w, https://consultapp.ru/wp-content/uploads/2023/06/image-300x149.png 300w, https://consultapp.ru/wp-content/uploads/2023/06/image-768x381.png 768w, https://consultapp.ru/wp-content/uploads/2023/06/image.png 1082w" sizes="(max-width: 700px) 100vw, 700px" /></a><figcaption class="wp-element-caption">Результат обращения к endpoint posts, на примере нашего сайта.</figcaption></figure></div>


<p>/* СТАТЬЯ В  РАЗРАБОТКЕ. */</p>
<p>Сообщение <a href="https://consultapp.ru/themelia-php-to-react-wordpress-headless-cms-no-ssr/">Переработка темы Themelia c PHP на React, для работы с WordPress в качестве Headless CMS без SSR</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Простая конфигурация Nginx для SPA  приложения без SSR</title>
		<link>https://consultapp.ru/%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%b0%d1%8f-%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d1%8f-nginx-%d0%b4%d0%bb%d1%8f-spa-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sun, 04 Jun 2023 08:57:41 +0000</pubDate>
				<category><![CDATA[Nginx]]></category>
		<category><![CDATA[React JS]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1627</guid>

					<description><![CDATA[<p>Билд SPA приложения без SSR, в нашем случае это Vite.js + React, представляет собой набор статических файлов, с отдачей которых справится базовая настройка Nginx с минимальными изменениями. В нашем случае мы используем Webmin/Virtualmin для настройки, но это не особо влияет на саму конфигурацию. Для запуска SPA приложения на базовой конфигурации Nginx сервера, нам не хватает&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%b0%d1%8f-%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d1%8f-nginx-%d0%b4%d0%bb%d1%8f-spa-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8/">Простая конфигурация Nginx для SPA  приложения без SSR</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Билд SPA приложения без SSR, в нашем случае это Vite.js + React, представляет собой набор статических файлов, с отдачей которых справится базовая настройка Nginx с минимальными изменениями. </p>



<span id="more-1627"></span>



<p>В нашем случае мы используем Webmin/Virtualmin для настройки, но это не особо влияет на саму конфигурацию. </p>



<p>Для запуска SPA приложения на базовой конфигурации Nginx сервера, нам не хватает нескольких моментов:</p>



<ol class="wp-block-list">
<li>Переадресация всех путей на наш рут, <strong>/index.html </strong>в данном случае;</li>



<li>Зарезервированный путь для получения/обновления SSL сертификатов.</li>
</ol>



<h2 class="wp-block-heading">Переадресация путей</h2>



<p>Тут нам надо исправить 2 момента:</p>



<pre class="wp-block-code"><code lang="nginx" class="language-nginx">#Установим <strong>root и точку входа</strong>, у нас <strong>index.html</strong> в папка <strong>dist</strong>
root /home/my_domain/my_domain/dist/; 
index index.html;</code></pre>



<pre class="wp-block-code"><code lang="nginx" class="language-nginx"># Укажем, как обрабатывать пути, кроме статических файлов (отбор по расширениям)

location / {
        if (-f $request_filename) {
            	expires max;
            	break;
        }
        if ($request_filename !~ "\.(js|htc|ico|gif|jpg|png|css)$") {
            	rewrite ^(.*) /index.html last;
        }
}
</code></pre>



<h2 class="wp-block-heading">Получение/обновление SSL</h2>



<p>В данном случае мы используем Let&#8217;s Encrypt, Webmin для автоматической работы с этими сертификатами использует папку<strong> /.well-known</strong>, соответственно выделяем ее так, что бы она не обрабатывалась нашим SPA &#8212; например меняем для этого <strong>location</strong> <strong>root</strong>.</p>



<pre class="wp-block-code"><code lang="nginx" class="language-nginx">location /.well-known/ {
	root /home/my_domain/public_html;
}</code></pre>



<h2 class="wp-block-heading">Итоговый шаблон</h2>



<pre class="wp-block-code"><code lang="nginx" class="language-nginx line-numbers">server {
	server_name my_domain.ru www.my_domain.ru;

	# your server IP
	listen 00.00.00.00;

	root /home/my_domain/my_domain/dist/;
	index index.html;

	access_log /var/log/virtualmin/my_domain.ru_access_log;
	error_log /var/log/virtualmin/my_domain.ru_error_log;
	fastcgi_param GATEWAY_INTERFACE CGI/1.1;
	fastcgi_param SERVER_SOFTWARE nginx;
	fastcgi_param QUERY_STRING $query_string;
	fastcgi_param REQUEST_METHOD $request_method;
	fastcgi_param CONTENT_TYPE $content_type;
	fastcgi_param CONTENT_LENGTH $content_length;
	fastcgi_param SCRIPT_FILENAME /home/my_domain/public_html$fastcgi_script_name;
	fastcgi_param SCRIPT_NAME $fastcgi_script_name;
	fastcgi_param REQUEST_URI $request_uri;
	fastcgi_param DOCUMENT_URI $document_uri;
	fastcgi_param DOCUMENT_ROOT /home/my_domain/public_html;
	fastcgi_param SERVER_PROTOCOL $server_protocol;
	fastcgi_param REMOTE_ADDR $remote_addr;
	fastcgi_param REMOTE_PORT $remote_port;
	fastcgi_param SERVER_ADDR $server_addr;
	fastcgi_param SERVER_PORT $server_port;
	fastcgi_param SERVER_NAME $server_name;
	fastcgi_param PATH_INFO $fastcgi_path_info;
	fastcgi_param HTTPS $https;

	location /.well-known/ {
		root /home/my_domain/public_html;
	}

	location / {
        	if (-f $request_filename) {
            		expires max;
            		break;
        	}

        	if ($request_filename !~ "\.(js|ico|gif|jpg|png|css)$") {
            		rewrite ^(.*) /index.html last;
        	}
    	}

	# your server IP
	listen 00.00.00.00:443 ssl;
	ssl_certificate /etc/ssl/virtualmin/PATH_TO_KEY/ssl.combined;
	ssl_certificate_key /etc/ssl/virtualmin/PATH_TO_KEY/ssl.key;
}
</code></pre>



<h2 class="wp-block-heading">Итого</h2>



<p>Очевидно, что все папки и адреса Вам необходимо заменить на собственные, но идея остается прежней: перехватываем все пути и замыкаем на <strong>index.html</strong>, а отдельные служебные пути выделяем в <strong>location</strong> и оставляем например в стандартной <strong>public_html</strong>  для удобства. </p>



<p>Так же при необходимости использования API с этого же сервера, Вы можете самостоятельно добавить <strong>location</strong> по типу <strong>/api/</strong> и сделать редирект на обработчик например.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%b0%d1%8f-%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d1%8f-nginx-%d0%b4%d0%bb%d1%8f-spa-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8/">Простая конфигурация Nginx для SPA  приложения без SSR</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как установить gh на CentOS7 c yum?</title>
		<link>https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-gh-%d0%bd%d0%b0-centos7-c-yum/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 07 Jul 2022 14:31:43 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1543</guid>

					<description><![CDATA[<p>Тут самое интересное, что именно с yum будут максимальные проблемы с репозиториями и на наш взгляд проще всего установить gh из .rpm файла. Переходим на сайт https://github.com/cli/cli/releases, ищем необходимый нам пакет и копируем ссылку, в нашем случае это был gh_2.13.0_linux_386.rpm. Скачиваем файл в любую доступную для записи папку и запускаем узтановку из пакета .rpm коммандой&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-gh-%d0%bd%d0%b0-centos7-c-yum/">Как установить gh на CentOS7 c yum?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Тут самое интересное, что именно с yum будут максимальные проблемы с репозиториями и на наш взгляд проще всего установить <strong>gh</strong> из <strong>.rpm</strong> файла.</p>



<p>Переходим на сайт <a href="https://github.com/cli/cli/releases" target="_blank" rel="noreferrer noopener">https://github.com/cli/cli/releases</a>, ищем необходимый нам пакет и копируем ссылку, в нашем случае это был <a href="https://github.com/cli/cli/releases/download/v2.13.0/gh_2.13.0_linux_386.rpm" target="_blank" rel="noreferrer noopener nofollow">gh_2.13.0_linux_386.rpm</a>.</p>



<pre class="wp-block-code"><code>wget https://github.com/cli/cli/releases/download/v2.13.0/gh_2.13.0_linux_386.rpm

sudo yum localinstall gh_2.13.0_linux_386.rpm</code></pre>



<p>Скачиваем файл в любую доступную  для записи папку и запускаем узтановку из пакета <strong>.rpm</strong> коммандой <strong>yum localinstall</strong>, подтверждаем установку.</p>



<p>Все, можно проверить установку запустив <strong>gh &#8212;help</strong>.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-gh-%d0%bd%d0%b0-centos7-c-yum/">Как установить gh на CentOS7 c yum?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как изучить флаги международного свода сигналов?</title>
		<link>https://consultapp.ru/nautic-flags-study/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sun, 01 Aug 2021 14:13:52 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[Яхтинг]]></category>
		<category><![CDATA[яхтинг]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1434</guid>

					<description><![CDATA[<p>Флаги международного свода сигналов&#160;были разработаны в&#160;1857&#160;году. Они используются на&#160;флоте для передачи сообщений между кораблями. Как наиболее эффективно их изучить? Изучение флагов лучше всего производить в карточном формате. Тк в противном случае, при изучении с листа, содержащего весь перечень флагов, Вы можете запоминать много лишней информации &#8212; расположение на листе, последовательность на листе и тд. Наш&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/nautic-flags-study/">Как изучить флаги международного свода сигналов?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Флаги международного свода сигналов&nbsp;были разработаны в&nbsp;1857&nbsp;году. Они используются на&nbsp;флоте для передачи сообщений между кораблями. Как наиболее эффективно их изучить?</p>



<span id="more-1434"></span>



<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-499968f5 wp-block-buttons-is-layout-flex">
<div class="wp-block-button has-custom-width wp-block-button__width-50 has-custom-font-size is-style-fill has-normal-font-size"><a class="wp-block-button__link has-white-color has-text-color has-background wp-element-button" href="https://nauticflags.consultapp.ru" style="background-color:#f86161" target="_blank" rel="noopener">Перейти к изучению флагов</a></div>
</div>



<p>Изучение флагов лучше всего производить в карточном формате. Тк в противном случае, при изучении с листа, содержащего весь перечень флагов, Вы можете запоминать много лишней информации &#8212; расположение на листе, последовательность на листе и тд. </p>



<p>Наш мозг пытается облегчить себе задачу, но это приводит к нарушению логики, мы должны посмотреть на флаг, поднятый на корабле, и понять его смысл, а не вспоминать его расположение в методичке или запомнить связку в обратном направлении &#171;Буква -&gt; Флаг&#187; и пытаться на лету переворачивать эту схему.</p>



<p>Все эти моменты позволяет устранить карточный метод изучения &#8212; здесь логика прямая &#171;Флаг -&gt; Буква/Смысл&#187;. Те увидели флаг &#8212; поняли, что нам пытается сообщить судно. </p>



<p>Для реализации данного подхода к изучению основных флагов и вымпелов было написано простое веб приложение &#8212; <a href="http://nauticflags.consultapp.ru" target="_blank" rel="noreferrer noopener">Nauticflags</a>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://consultapp.ru/wp-content/uploads/2021/08/image.png"><img decoding="async" width="700" height="419" src="https://consultapp.ru/wp-content/uploads/2021/08/image-700x419.png" alt="Пример экрана приложения для изучения флагов международного свода сигналов" class="wp-image-1442" srcset="https://consultapp.ru/wp-content/uploads/2021/08/image-700x419.png 700w, https://consultapp.ru/wp-content/uploads/2021/08/image-300x180.png 300w, https://consultapp.ru/wp-content/uploads/2021/08/image-768x460.png 768w, https://consultapp.ru/wp-content/uploads/2021/08/image.png 877w" sizes="(max-width: 700px) 100vw, 700px" /></a></figure></div><p>Сообщение <a href="https://consultapp.ru/nautic-flags-study/">Как изучить флаги международного свода сигналов?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Запускаем Next.js приложение через PM2 на Nginx в простейшей конфигурации</title>
		<link>https://consultapp.ru/simple-start-next-js-app-with-pm2-on-nginx/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Tue, 20 Jul 2021 10:26:42 +0000</pubDate>
				<category><![CDATA[Next.js]]></category>
		<category><![CDATA[React JS]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[next.js]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[pm2]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1348</guid>

					<description><![CDATA[<p>После написания нашего прекрасного веб приложения встает вопрос, как запустить его покорять мир (на рабочем сервере с доменом и прочим). Здесь нам и понадобится Nginx, тк мы хотим получить полноценный вебсервер и SSL в том числе. Для начала стоит отметить, что без SSL для тестовых запусков достаточно и npm run start на 80 порту &#8212;&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/simple-start-next-js-app-with-pm2-on-nginx/">Запускаем Next.js приложение через PM2 на Nginx в простейшей конфигурации</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>После написания нашего прекрасного веб приложения встает вопрос, как запустить его покорять мир (на рабочем сервере с доменом и прочим). Здесь нам и понадобится  Nginx, тк мы хотим получить полноценный вебсервер и SSL в том числе.</p>



<span id="more-1348"></span>



<p>Для начала стоит отметить, что без SSL для тестовых запусков достаточно и <strong>npm run start</strong> на 80 порту &#8212; все заработает из коробки, ну почти, если домен напрямую прокинут на айпишники и в нашем распоряжении целый отдельный сервер.</p>



<h2 class="wp-block-heading">Схема работы</h2>



<p>Наша схема работы будет выглядеть максимально просто:</p>



<ol class="wp-block-list">
<li>Nginx  висит, как и подобает вебсерверу, на 80 и 443 портах, обеспечивая маршрутизацию и SSL;</li>



<li>Запросы мы проксируем на localhost с нужным портом, например 3000, тк он у нас по дефолту Next.</li>
</ol>



<h2 class="wp-block-heading">Nginx</h2>



<p>Для простоты мы будем править напрямую основной конфигурационный файл<strong>  /etc/nginx/nginx.conf</strong>, как Вы понимаете на рабочем проекте так делать не надо &#8212; разберитесь с &nbsp;папками /etc/nginx/sites-available/ и /etc/nginx/sites-enabled.</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">nano /etc/nginx/nginx.conf</code></pre>



<p>Как установить Nginx , подробно описано на <a href="https://www.nginx.com/resources/wiki/start/topics/tutorials/install/" target="_blank" rel="noreferrer noopener nofollow">официальном сайте</a>, все зависит от Вашей операционной системы очевидно.</p>



<p>Итак, наши настройки для сервера (выжимка), естественно *_INSERT_IP_ADRESS_* надо заменить на Ваш ip сервера и our_best_site на Ваш домен и всю структуру папок проверить (/home/our_best_site/public_html и тд):</p>



<pre class="wp-block-code"><code lang="nginx" class="language-nginx">server {
                server_name our_best_site.ru www.our_best_site.ru;
                listen *_INSERT_IP_ADRESS_*;
                root /home/our_best_site/public_html;
                index index.php index.htm index.html;
                access_log /var/log/virtualmin/our_best_site.ru_access_log;
                error_log /var/log/virtualmin/our_best_site.ru_error_log;
                fastcgi_param GATEWAY_INTERFACE CGI/1.1;
                fastcgi_param SERVER_SOFTWARE nginx;
                fastcgi_param QUERY_STRING $query_string;
                fastcgi_param REQUEST_METHOD $request_method;
                fastcgi_param CONTENT_TYPE $content_type;
                fastcgi_param CONTENT_LENGTH $content_length;
                fastcgi_param SCRIPT_FILENAME /home/our_best_site/public_html$fastcgi_script_name;
                fastcgi_param SCRIPT_NAME $fastcgi_script_name;
                fastcgi_param REQUEST_URI $request_uri;
                fastcgi_param DOCUMENT_URI $document_uri;
                fastcgi_param DOCUMENT_ROOT /home/our_best_site/public_html;
                fastcgi_param SERVER_PROTOCOL $server_protocol;
                fastcgi_param REMOTE_ADDR $remote_addr;
                fastcgi_param REMOTE_PORT $remote_port;
                fastcgi_param SERVER_ADDR $server_addr;
                fastcgi_param SERVER_PORT $server_port;
                fastcgi_param SERVER_NAME $server_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param HTTPS $https;

               <strong> location / {
                        proxy_pass http://localhost:3000/;
                }</strong>

                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                listen *_INSERT_IP_ADRESS_*:443 ssl;
                <strong>ssl_certificate /home/our_best_site/ssl.combined;
                ssl_certificate_key /home/our_best_site/ssl.key;</strong>
        }</code></pre>



<p>У Nginx куча настроек и улучшать можно постоянно, но основная магия в паре строк, те мы проксируем все запросы на &#171;/&#187; на наш node сервер, который мы скоро запустим:</p>



<pre class="wp-block-code"><code lang="nginx" class="language-nginx">location / {<br>proxy_pass http://localhost:3000/;<br>}</code></pre>



<p>Для работы SSL, нам надо получить сертификаты в сертификационном центре и указать пути к этим файлам:</p>



<pre class="wp-block-code"><code lang="nginx" class="language-nginx">ssl_certificate /home/our_best_site/ssl.combined;
ssl_certificate_key /home/our_best_site/ssl.key;</code></pre>



<h2 class="wp-block-heading">Запускаем приложение</h2>



<h3 class="wp-block-heading">Какие файлы нам нужны от Next.js для запуска?</h3>



<p>Для начала нам нужно запустить в терминале компиляцию проекта <strong>npm run build</strong>, в итоге мы увидим что-то похожее. Next создаст все необходимые файлы, статические и для рендеринга на сервере.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://consultapp.ru/wp-content/uploads/2021/07/image.png"><img decoding="async" width="626" height="318" src="https://consultapp.ru/wp-content/uploads/2021/07/image.png" alt="" class="wp-image-1352" srcset="https://consultapp.ru/wp-content/uploads/2021/07/image.png 626w, https://consultapp.ru/wp-content/uploads/2021/07/image-300x152.png 300w" sizes="(max-width: 626px) 100vw, 626px" /></a></figure></div>


<p>Осталось понять, что же нам нужно перенести на рабочий сервер в простейшем варианте, без Git и прочих полезных вещей. </p>



<p>Мы идем на сервер, создаем рабочую папку для Next и копируем туда файлы и папки:</p>



<ol class="wp-block-list">
<li><strong>/.next</strong> &#8212; основная рабочая папка;</li>



<li><strong>/public</strong>  &#8212; папка со статическими публичными файлами, например favicon.ico и robots.txt;</li>



<li><strong>next.config.js</strong> &#8212; конфигурационный файл next, куда надо не забыть включить домены для картинок и например webpack5: true;</li>



<li><strong>package.json</strong> &#8212; конфигурационный файл приложения.</li>
</ol>



<p>Далее осталось запустить в этой папке <strong>npm install</strong>, при этом менеджер проанализирует package.json и автоматически сгенерирует папку <strong>/node_modules</strong>, со всеми необходимыми пакетами. Ее не надо копировать из среды разработки.</p>



<p>Все, теперь достаточно запустить <strong>npm run start</strong> или любой нужный скрипт из package.json и, если Вы правильно указали порт, а у нас Nginx проксирует на 3000, все заработает. Но, это неудобно, тк стоит закрыть терминал &#8212; все умрет. Эту проблемы нам поможет решить отличный менеджер процессов PM2.</p>



<h3 class="wp-block-heading">Запускаем Nextjs через PM2 (менеджер процессов)</h3>



<p>Подробно прочитать про этот менеджер процессов можно в мануале на <a href="https://pm2.keymetrics.io/" target="_blank" rel="noreferrer noopener nofollow">официальном сайте</a>, мы же укажем только необходимый минимум</p>



<p>Итак, устанавливаем pm2 командой (возможно Вам потребуется использовать <strong>sudo</strong>):</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">npm install pm2 -g</code></pre>



<h4 class="wp-block-heading">Запуск процессов</h4>



<p>Для запуска проекта в простом варианте можно использовать что-то вроде, при этом не забудьте перейти в рабочую папку проекта nextjs.</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">pm2 start npm -- start</code></pre>



<p>А так же полезные ключи:</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash"># Указываем имя запущенного приложения
--name &lt;app_name&gt;

# Устанавливаем наблюдение за файлами проекта и перезапускаем приложение при их изменении
--watch

# Устанавливаем лимит памяти до перезагрузки приложения
--max-memory-restart &lt;200MB&gt;

# Определяем путь к файлу логов
--log &lt;log_path&gt;

# Прокидываем аргументы в скрипт
-- arg1 arg2 arg3

# Задержка между автоматическими перезапусками
--restart-delay &lt;delay in ms&gt;

# Добавлять префикс времени в логах
--time

# Не перезапускать автоматически приложение
--no-autorestart

# Определяем задачу крон для принудительного перезапуска (<code>forced</code> restart)
--cron &lt;cron_pattern&gt;</code></pre>



<h4 class="wp-block-heading">Управление и мониторинг процессов</h4>



<p>Для управления запущенными процессами можно использовать команды:</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">$ pm2 restart app_name
$ pm2 reload app_name
$ pm2 stop app_name
$ pm2 delete app_name</code></pre>



<p>Вместо app_name можно использовать:</p>



<ul class="wp-block-list">
<li><code><strong>all</strong></code>&nbsp;для управления всеми процессами;</li>



<li><code><strong>id</strong></code>&nbsp;для управления процессом по его id.</li>
</ul>



<p>Мониторить запущенные процессы можно парой удобных команд:</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">// онлайн мониторинг в экране терминала
$ pm2 monit

// список процессов
# pm2 list</code></pre>



<p>Пример вывода для <strong>pm2 monit</strong>:</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://consultapp.ru/wp-content/uploads/2021/07/image-2.png"><img loading="lazy" decoding="async" width="585" height="374" src="https://consultapp.ru/wp-content/uploads/2021/07/image-2.png" alt="Команда pm2 monit" class="wp-image-1359" srcset="https://consultapp.ru/wp-content/uploads/2021/07/image-2.png 585w, https://consultapp.ru/wp-content/uploads/2021/07/image-2-300x192.png 300w" sizes="auto, (max-width: 585px) 100vw, 585px" /></a></figure></div>


<h4 class="wp-block-heading">Итого по pm2</h4>



<p>Теперь мы можем запустить наш проект, со всеми ключами. Представим, что наше приложение лежит в папке <strong>/home/our_best_site/public_html/nextjs</strong>:</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">$ cd /home/our_best_site/public_html/nextjs
$ pm2 start npm --watch --ignore-watch="node_modules" --restart-delay=10000 --name "app_name1" -- start</code></pre>



<p>Из строки видно, что запускаем мы в рабочей папке наш процесс <strong>npm start</strong> с именем <strong>app_name1</strong>, при этом следим за изменениями с задержкой перезапуска <strong>10000мс</strong> и игнорируем папку <strong>node_modules</strong>. </p>



<p>При этом в терминале мы увидим наше приложение:</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://consultapp.ru/wp-content/uploads/2021/07/image-1.png"><img loading="lazy" decoding="async" width="558" height="68" src="https://consultapp.ru/wp-content/uploads/2021/07/image-1.png" alt="Команда pm2 start npm  --name &quot;app_name1&quot; -- start" class="wp-image-1358" srcset="https://consultapp.ru/wp-content/uploads/2021/07/image-1.png 558w, https://consultapp.ru/wp-content/uploads/2021/07/image-1-300x37.png 300w" sizes="auto, (max-width: 558px) 100vw, 558px" /></a></figure></div>


<h2 class="wp-block-heading">Заключение</h2>



<p>В результате мы получаем nextjs приложение, которое работает на 3000 порту и все запросы (80 и 443 портов) в него проксируются через nginx. Управление приложением происходит через менеджер <strong>pm2</strong>.  Стоит отметить, что все написанное будет работать и для React.js приложения с минимальными правками. </p>



<p>Ура, все работает)</p>
<p>Сообщение <a href="https://consultapp.ru/simple-start-next-js-app-with-pm2-on-nginx/">Запускаем Next.js приложение через PM2 на Nginx в простейшей конфигурации</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как убрать корзину из шапки и кнопку &#171;в корзину&#187; со страницы в WooCommerce?</title>
		<link>https://consultapp.ru/remove-button-addtocart-and-header-basket/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Mon, 02 Nov 2020 10:09:37 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1224</guid>

					<description><![CDATA[<p>Иногда надо что бы магазин работал в режиме каталога и не смущал пользователя кнопками купить и прочее, если этого функционала нет. Для WordPress + Woocommerce это делается очень просто. Убираем кнопки со страниц категорий и товаров Добавляем в конец нашего functions.php (файл в корне Вашей темы) следующие строки, которые убирают хуки, отвечающие за кнопки: Убираем&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/remove-button-addtocart-and-header-basket/">Как убрать корзину из шапки и кнопку &#171;в корзину&#187; со страницы в WooCommerce?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Иногда надо что бы магазин работал в режиме каталога и не смущал пользователя кнопками купить и прочее, если этого функционала нет. Для WordPress + Woocommerce это делается очень просто.</p>



<h2 class="wp-block-heading"> Убираем кнопки со страниц категорий и товаров</h2>



<p>Добавляем в конец нашего functions.php (файл в корне Вашей темы) следующие строки, которые убирают хуки, отвечающие за кнопки:</p>



<pre class="wp-block-code"><code>remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );</code></pre>



<h2 class="wp-block-heading">Убираем иконку корзины в шапке/меню</h2>



<p>С шапкой интереснее, а может и нет&#8230; Это не функционал самого вукоммерса, по-этому идем искать код в нашей теме, если Вы видите иконку/ссылку на корзину в шапке &#8212; значит авторы Вашей темы предусмотрели  ее использование вместе с Woocommerce и добавили код.</p>



<p>В случае нашего клиента он находился в header.php, легко отредактировать даже из веб-интерфейса ( Внешний вид =&gt; Редактор тем) и выглядел так:</p>



<pre class="wp-block-code"><code>if ( class_exists( 'WooCommerce' ) ) {
	global $woocommerce; 
    /* Тут было много html, сократили для удобства */
}</code></pre>



<p>Ищем упоминания WooCommerce и похожий на иконку/кнопку HTML, комментируем ( /* php code */) весь связанный php, в нашем случае, это весь оператор if, если корзина возможно понадобится потом. Или удаляем, если точно уверены, что она не нужна.</p>



<p>Профит! Ни кнопок, ни корзины&#8230; чистый каталог, еще не забудьте страницы оформления, корзины и прочие сделать личными, черновиками или удалить, если не жалко.</p>
<p>Сообщение <a href="https://consultapp.ru/remove-button-addtocart-and-header-basket/">Как убрать корзину из шапки и кнопку &#171;в корзину&#187; со страницы в WooCommerce?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Редактируем плагином тему WordPress без дочерних тем с возможностью обновления</title>
		<link>https://consultapp.ru/edit-wp-theme-without-child-theme/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Mon, 05 Oct 2020 16:45:08 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1219</guid>

					<description><![CDATA[<p>Часто бывает необходимо отредактировать код темы, например добавить что-то в functions.php, но создавать ради этого дочернюю тему нет смысла.</p>
<p>Сообщение <a href="https://consultapp.ru/edit-wp-theme-without-child-theme/">Редактируем плагином тему WordPress без дочерних тем с возможностью обновления</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Часто бывает необходимо отредактировать код темы, например добавить что-то в functions.php, но создавать ради этого дочернюю тему нет смысла.</p>



<span id="more-1219"></span>



<p>Для решения этой задачи мы нашли плагин c незатейливым названием Theme Customisations, правда скачать и загрузить его придется вручную с  гитхаба:</p>



<ol class="wp-block-list"><li>Скачиваем архив <a href="http://github.com/woothemes/theme-customisations" target="_blank" rel="noreferrer noopener">http://github.com/woothemes/theme-customisations</a>; </li><li>Говорим спасибо разработчикам, что сделали за нас чаcть работы;</li><li>Распаковываем папку на сервере /wp-content/plugins.</li></ol>



<h2 class="wp-block-heading">Работа с Theme Customisations</h2>



<p>Функционал плагина не затейливый, как и наша задача, а именно &#8212; после активации в папке &#171;/wp-content/plugins/theme-customisations-master&#187; плагина создается папка &#171;<strong>custom</strong>&#171;, в которой есть базовые файлы, которые мы можем менять &#8212; код PHP, стили CSS, код JS.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="700" height="206" src="https://consultapp.ru/wp-content/uploads/2020/10/theme-cust1-700x206.png" alt="" class="wp-image-1220" srcset="https://consultapp.ru/wp-content/uploads/2020/10/theme-cust1-700x206.png 700w, https://consultapp.ru/wp-content/uploads/2020/10/theme-cust1-300x88.png 300w, https://consultapp.ru/wp-content/uploads/2020/10/theme-cust1-768x226.png 768w, https://consultapp.ru/wp-content/uploads/2020/10/theme-cust1.png 773w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<h3 class="wp-block-heading">Использование / Usage из readme.txt</h3>



<ul class="wp-block-list"><li>Add any CSS snippets to <code>custom/style.css</code>. This file is found in this plugin.</li><li>Add any PHP snippets to <code>custom/functions.php</code>. This file is found in this plugin.</li><li>Add any jQuery snippets to <code>custom/custom.js</code>. This file is found in this plugin.</li><li>Add custom top level template files (page.php, single.php etc) to <code>custom/templates/</code>. You will need to create the templates folder.</li><li>Add any WooCommerce template files to <code>custom/templates/woocommerce</code>. You will need to create the templates and woocommerce folders.</li><li>Activate the plugin.</li></ul>



<p>В целом можно управлять разными файлами и все будет работать при обновлении тем (возможно обновления самого вордпреса или версии php все таки что-то могут сломать, но это как водится &#8212; бекапьтесь в любом случае) .</p>
<p>Сообщение <a href="https://consultapp.ru/edit-wp-theme-without-child-theme/">Редактируем плагином тему WordPress без дочерних тем с возможностью обновления</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Простой коллтрекинг своими руками. Часть JavaScript</title>
		<link>https://consultapp.ru/simple-calltracking-javascript/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Tue, 22 Sep 2020 11:08:18 +0000</pubDate>
				<category><![CDATA[Bitrix]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1201</guid>

					<description><![CDATA[<p>Появилась необходимость у клиента отслеживать некоторые сайты через статический коллтрекинг, для этого были написаны скрипты для Bitrix на php и часть на JavaScript, которую рассмотрим в этой статье. Клиент занимается автозапчастями, по-этому отслеживаем тематические площадки: farpost.ru drom.ru auto.ru ferio.ru Итак приступим Создадим файл в our_script.js в папке нашего шаблона Битрикс или любой другой CMS &#8212;&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/simple-calltracking-javascript/">Простой коллтрекинг своими руками. Часть JavaScript</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Появилась необходимость у клиента отслеживать некоторые сайты через статический коллтрекинг, для этого были написаны скрипты для Bitrix на php и часть на JavaScript, которую рассмотрим в этой статье. </p>



<span id="more-1201"></span>



<p>Клиент занимается автозапчастями, по-этому отслеживаем тематические площадки:</p>



<ul class="wp-block-list"><li>farpost.ru</li><li>drom.ru</li><li>auto.ru</li><li>ferio.ru</li></ul>



<h3 class="wp-block-heading">Итак приступим</h3>



<p>Создадим файл в our_script.js в папке нашего шаблона Битрикс или любой другой CMS &#8212; очевидно js часть не будет сильно отличаться.</p>



<p>Скрипт максимально простой, мы получаем заранее обработанные в php куки, анализируем их содержимое и подменяем телефоны на указанные. </p>



<p>Очевидно, что можно сделать модуль, в который пользователь сможет вносить признаки и телефоны, но для простоты мы оставили только самую суть. Далее все понятно из комментариев в скрипте:</p>



<pre class="wp-block-code"><code>// @consultapp.ru
// файл our_script.js в папке /ПУТЬ_К_ШАБЛОНУ/js/
function get_co (co_name){
  var res = document.cookie.match ( '(^|;) ?' + co_name + '=(&#91;^;]*)(;|$)' );
  if (res) return (unescape(res&#91;2]));
  else return null;
}
// по готовности документа получаем куки
$(document).ready(function() { 
		var lidsrc = get_co ( "ИМЯ_НАШЕЙ_КУКИ" );
		var tel=null;
		var telhref=null;

		// анализируем текст куки и указываем нужный телефон
		if((lidsrc.indexOf("farpost")>=0) || (lidsrc.indexOf("drom")>=0)){
			tel='8 (999) 999-99-99';
			telhref='tel:79999999999';
		}else if(lidsrc.indexOf("ferio")>=0){
			tel='8 (888) 888-88-88';
			telhref='tel:78888888888';
		}else if(lidsrc.indexOf("auto.ru")>=0){
			tel='8 (777) 777-77-77';
			telhref='tel:77777777777';
		}

		// заменяем телефоны на странице по признаку class
		// предварительно все ссылки (тег &lt;a>) надо отметить,
		// добавив в class атрибут cont_tel
		if(tel!=null){
			// все отмеченные телефоны
			$('.cont_tel').html(tel);
			$('.cont_tel').attr("href", telhref);
			$('.cont_tel_html').html(tel);
			$('.cont_tel_href').attr("href", telhref);
		}
	}
);</code></pre>



<p>Вставим в header шаблона строку php подключения js для Bitrix, в других CMS есть свои инструменты, ну или вставить в head напрямую, тут уж как кому нравится.</p>



<pre class="wp-block-code"><code>&lt;? 
// @consultapp.ru
// подключаем наш скрипт в шаблоне .php
$APPLICATION->AddHeadScript(SITE_TEMPLATE_PATH."/js/our_script.js");
?></code></pre>



<p>Куки мы используем, т.к. HTTP_REFERER постоянно меняется при переходе по страницам, а нам надо точно указывать одинаковый телефон на всех страницах сайта, который бы соответствовал источнику, с которого пришел клиент.</p>
<p>Сообщение <a href="https://consultapp.ru/simple-calltracking-javascript/">Простой коллтрекинг своими руками. Часть JavaScript</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Аферисты опять рассылают письма от имени RU-Center (nic.ru)</title>
		<link>https://consultapp.ru/%d0%b0%d1%84%d0%b5%d1%80%d0%b8%d1%81%d1%82%d1%8b-%d0%be%d0%bf%d1%8f%d1%82%d1%8c-%d1%80%d0%b0%d1%81%d1%81%d1%8b%d0%bb%d0%b0%d1%8e%d1%82-%d0%bf%d0%b8%d1%81%d1%8c%d0%bc%d0%b0-%d0%be%d1%82-ru-center-nic/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Tue, 15 Sep 2020 11:39:36 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1186</guid>

					<description><![CDATA[<p>Время, когда надо оплачивать домены на руцентре, легко узнать по сообщениям аферистов, которые грозят дословно: &#171;если в указанный срок оплата не будет произведена, обслуживание доменного имени будет прекращено&#187;, а срока отводят аж один календарный день! Расчет на абсолютную безграмотность в этом вопросе очевидно, тк домены так не работают&#8230; Но раз постоянно присылают, значит наверно работает&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%b0%d1%84%d0%b5%d1%80%d0%b8%d1%81%d1%82%d1%8b-%d0%be%d0%bf%d1%8f%d1%82%d1%8c-%d1%80%d0%b0%d1%81%d1%81%d1%8b%d0%bb%d0%b0%d1%8e%d1%82-%d0%bf%d0%b8%d1%81%d1%8c%d0%bc%d0%b0-%d0%be%d1%82-ru-center-nic/">Аферисты опять рассылают письма от имени RU-Center (nic.ru)</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Время, когда надо оплачивать домены на  руцентре, легко узнать  по сообщениям аферистов, которые грозят дословно: &#171;если в указанный срок оплата не будет произведена, обслуживание доменного имени будет прекращено&#187;, а срока отводят аж один календарный день!</p>



<span id="more-1186"></span>



<p>Расчет на абсолютную безграмотность в этом вопросе очевидно, тк домены так не работают&#8230; Но раз постоянно присылают, значит наверно работает на ком-то! И присылают сразу несколько писем с разных адресов, видать для солидности и нагнетания ужаса от удаления домена.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>https://money.yandex.ru/to/************ &#8212; ссылка по кнопке ОПЛАТИТЬ</p></blockquote>



<p>А ссылочка с оплатить ведет у нас куда? Конечно  прямо на Яндекс Деньги, очевидно же, что так намного удобней оплачивать услуги компаний!</p>



<p>Итого, будьте внимательны и доверяйте сопровождение доменов понимающим людям)</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%b0%d1%84%d0%b5%d1%80%d0%b8%d1%81%d1%82%d1%8b-%d0%be%d0%bf%d1%8f%d1%82%d1%8c-%d1%80%d0%b0%d1%81%d1%81%d1%8b%d0%bb%d0%b0%d1%8e%d1%82-%d0%bf%d0%b8%d1%81%d1%8c%d0%bc%d0%b0-%d0%be%d1%82-ru-center-nic/">Аферисты опять рассылают письма от имени RU-Center (nic.ru)</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Обезьяна vs Рынок #2</title>
		<link>https://consultapp.ru/%d0%be%d0%b1%d0%b5%d0%b7%d1%8c%d1%8f%d0%bd%d0%b0-vs-%d1%80%d1%8b%d0%bd%d0%be%d0%ba-2/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 23 Jul 2020 10:20:51 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1145</guid>

					<description><![CDATA[<p>Итого мы получили 1,37 за 2 месяца почти&#8230; Пока не густо) No. Ticker Company Price Change% Shares Cost Market Value Gain$ Gain% 1. GPI Group 1 Automotive, Inc. 82.77 11.64% 8 62.41 662.16 162.88 32.62% 2. ZYNE Zynerba Pharmaceuticals, Inc. 3.71 3.63% 90 5.52 333.90 -162.90 -32.79% 3. DFS Discover Financial Services 50.70 3.45% 10&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%be%d0%b1%d0%b5%d0%b7%d1%8c%d1%8f%d0%bd%d0%b0-vs-%d1%80%d1%8b%d0%bd%d0%be%d0%ba-2/">Обезьяна vs Рынок #2</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Итого мы получили 1,37 за 2 месяца почти&#8230; Пока не густо)</p>



<span id="more-1145"></span>



<figure class="wp-block-table"><table><tbody><tr><td>No.</td><td>Ticker</td><td>Company</td><td>Price</td><td><img loading="lazy" decoding="async" src="https://finviz.com/gfx/tab_arrow_d.gif" width="14" height="10" alt="">Change%</td><td>Shares</td><td>Cost</td><td>Market Value</td><td>Gain$</td><td>Gain%</td></tr><tr><td>1.</td><td><a href="https://finviz.com/quote.ashx?t=GPI"><strong>GPI</strong></a></td><td>Group 1 Automotive, Inc.</td><td>82.77</td><td>11.64%</td><td>8</td><td>62.41</td><td>662.16</td><td>162.88</td><td>32.62%</td></tr><tr><td>2.</td><td><a href="https://finviz.com/quote.ashx?t=ZYNE"><strong>ZYNE</strong></a></td><td>Zynerba Pharmaceuticals, Inc.</td><td>3.71</td><td>3.63%</td><td>90</td><td>5.52</td><td>333.90</td><td>-162.90</td><td>-32.79%</td></tr><tr><td>3.</td><td><a href="https://finviz.com/quote.ashx?t=DFS"><strong>DFS</strong></a></td><td>Discover Financial Services</td><td>50.70</td><td>3.45%</td><td>10</td><td>49.84</td><td>507.00</td><td>8.60</td><td>1.73%</td></tr><tr><td>4.</td><td><a href="https://finviz.com/quote.ashx?t=ROG"><strong>ROG</strong></a></td><td>Rogers Corporation</td><td>128.18</td><td>2.69%</td><td>4</td><td>109.62</td><td>512.72</td><td>74.24</td><td>16.93%</td></tr><tr><td>5.</td><td><a href="https://finviz.com/quote.ashx?t=CDW"><strong>CDW</strong></a></td><td>CDW Corporation</td><td>119.08</td><td>1.78%</td><td>5</td><td>111.91</td><td>595.40</td><td>35.85</td><td>6.41%</td></tr><tr><td>6.</td><td><a href="https://finviz.com/quote.ashx?t=ULTA"><strong>ULTA</strong></a></td><td>Ulta Beauty, Inc.</td><td>205.44</td><td>1.72%</td><td>2</td><td>239.09</td><td>410.88</td><td>-67.30</td><td>-14.07%</td></tr><tr><td>7.</td><td><a href="https://finviz.com/quote.ashx?t=LEA"><strong>LEA</strong></a></td><td>Lear Corporation</td><td>116.90</td><td>1.62%</td><td>4</td><td>110.49</td><td>467.60</td><td>25.64</td><td>5.80%</td></tr><tr><td>8.</td><td><a href="https://finviz.com/quote.ashx?t=AEIS"><strong>AEIS</strong></a></td><td>Advanced Energy Industries, Inc.</td><td>71.04</td><td>1.46%</td><td>7</td><td>66.39</td><td>497.28</td><td>32.55</td><td>7.00%</td></tr><tr><td>9.</td><td><a href="https://finviz.com/quote.ashx?t=OSUR"><strong>OSUR</strong></a></td><td>OraSure Technologies, Inc.</td><td>17.05</td><td>0.71%</td><td>35</td><td>14.12</td><td>596.75</td><td>102.55</td><td>20.75%</td></tr><tr><td>10.</td><td><a href="https://finviz.com/quote.ashx?t=GCP"><strong>GCP</strong></a></td><td>GCP Applied Technologies Inc.</td><td>22.13</td><td>0.55%</td><td>24</td><td>20.23</td><td>531.12</td><td>45.60</td><td>9.39%</td></tr><tr><td>11.</td><td><a href="https://finviz.com/quote.ashx?t=SPR"><strong>SPR</strong></a></td><td>Spirit AeroSystems Holdings, Inc.</td><td>22.89</td><td>0.22%</td><td>21</td><td>23.79</td><td>480.69</td><td>-18.90</td><td>-3.78%</td></tr><tr><td>12.</td><td><a href="https://finviz.com/quote.ashx?t=EXPE"><strong>EXPE</strong></a></td><td>Expedia Group, Inc.</td><td>87.68</td><td>0.17%</td><td>6</td><td>82.42</td><td>526.08</td><td>31.56</td><td>6.38%</td></tr><tr><td>13.</td><td><a href="https://finviz.com/quote.ashx?t=EXP"><strong>EXP</strong></a></td><td>Eagle Materials Inc.</td><td>78.01</td><td>0.14%</td><td>7</td><td>67.07</td><td>546.07</td><td>76.58</td><td>16.31%</td></tr><tr><td>14.</td><td><a href="https://finviz.com/quote.ashx?t=IIVI"><strong>IIVI</strong></a></td><td>II-VI Incorporated</td><td>45.25</td><td>-0.24%</td><td>10</td><td>47.28</td><td>452.50</td><td>-20.30</td><td>-4.29%</td></tr><tr><td>15.</td><td><a href="https://finviz.com/quote.ashx?t=GTHX"><strong>GTHX</strong></a></td><td>G1 Therapeutics, Inc.</td><td>18.15</td><td>-0.63%</td><td>28</td><td>17.61</td><td>508.06</td><td>14.98</td><td>3.04%</td></tr><tr><td>16.</td><td><a href="https://finviz.com/quote.ashx?t=QRTEA"><strong>QRTEA</strong></a></td><td>Qurate Retail, Inc.</td><td>9.30</td><td>-0.75%</td><td>57</td><td>8.63</td><td>530.10</td><td>38.19</td><td>7.76%</td></tr><tr><td>17.</td><td><a href="https://finviz.com/quote.ashx?t=BEAT"><strong>BEAT</strong></a></td><td>BioTelemetry, Inc.</td><td>41.41</td><td>-1.03%</td><td>10</td><td>47.28</td><td>414.10</td><td>-58.70</td><td>-12.42%</td></tr><tr><td>18.</td><td><a href="https://finviz.com/quote.ashx?t=PNTG"><strong>PNTG</strong></a></td><td>The Pennant Group, Inc.</td><td>22.04</td><td>-2.04%</td><td>20</td><td>23.95</td><td>440.80</td><td>-38.20</td><td>-7.97%</td></tr><tr><td>19.</td><td><a href="https://finviz.com/quote.ashx?t=ET"><strong>ET</strong></a></td><td>Energy Transfer LP</td><td>6.59</td><td>-2.23%</td><td>61</td><td>8.21</td><td>401.99</td><td>-98.82</td><td>-19.73%</td></tr><tr><td>20.</td><td><a href="https://finviz.com/quote.ashx?t=WYNN"><strong>WYNN</strong></a></td><td>Wynn Resorts, Limited</td><td>76.10</td><td>-3.90%</td><td>5</td><td>86.47</td><td>380.50</td><td>-51.85</td><td>-11.99%</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Итого</h3>



<p>В лидерах у нас Group 1 Automotive, Inc.  +11%, отстающими оказали на удивление Wynn Resorts, Limited  -3,9%, хотя их мы отмечали, как единственных знакомых во всем списке.</p>



<p>Пока предположение не особо оправдывается, хотя мы и в плюсе.</p>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link has-very-light-gray-color has-vivid-red-background-color has-text-color has-background wp-element-button" href="https://consultapp.ru/monkey-vs-market/" style="border-radius:9px" target="_blank" rel="noopener noreferrer">Обезьяна vs Рынок #1</a></div>
</div>
<p>Сообщение <a href="https://consultapp.ru/%d0%be%d0%b1%d0%b5%d0%b7%d1%8c%d1%8f%d0%bd%d0%b0-vs-%d1%80%d1%8b%d0%bd%d0%be%d0%ba-2/">Обезьяна vs Рынок #2</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Обезьяна сражается с фондовым рынком</title>
		<link>https://consultapp.ru/monkey-vs-market/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Tue, 02 Jun 2020 11:27:07 +0000</pubDate>
				<category><![CDATA[Инвестиции]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1108</guid>

					<description><![CDATA[<p>Есть такое предположение, что обезьяна может победить рынок: попробуем поставить эксперимент, приближенный к нашим реалиям. «Обезьяна с завязанными глазами, бросающая дротики в финансовые страницы газеты, может выбрать портфель, который будет столь же хорош, как и портфель, тщательно отобранный экспертами» – профессор Принстонского университета Бертон Мэлкил, книга «Случайная прогулка по Уолл-Стрит» Формируем портфель Возьмем акции иностранных&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/monkey-vs-market/">Обезьяна сражается с фондовым рынком</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Есть такое предположение, что обезьяна может победить рынок: попробуем поставить эксперимент, приближенный к нашим реалиям. </p>



<span id="more-1108"></span>



<blockquote class="wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow"><p>«Обезьяна с завязанными глазами, бросающая дротики в финансовые страницы газеты, может выбрать портфель, который будет столь же хорош, как и портфель, тщательно отобранный экспертами» – профессор Принстонского университета Бертон Мэлкил, книга «Случайная прогулка по Уолл-Стрит»</p></blockquote>



<h2 class="wp-block-heading">Формируем портфель</h2>



<p>Возьмем акции иностранных компаний, которые торгуются на <a href="https://spbexchange.ru">Санкт-Петербургской бирже</a>: всего в выгрузке на данный момент у нас получилось 1223 фишки, на самом деле, количество не так важно, главное, что их много.</p>



<p>Пойдем на первый попавшийся сайт по выборке случайных победителей из списка, хотим получить 20 компаний, по 5% капитала на каждую. Закидываем наш список:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="700" height="387" src="https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-1-1-700x387.png" alt="" class="wp-image-1112" srcset="https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-1-1-700x387.png 700w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-1-1-300x166.png 300w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-1-1-768x425.png 768w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-1-1-1280x708.png 1280w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-1-1.png 1440w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="700" height="388" src="https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-2-1-700x388.png" alt="" class="wp-image-1113" srcset="https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-2-1-700x388.png 700w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-2-1-300x166.png 300w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-2-1-768x425.png 768w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-2-1-1280x709.png 1280w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-list-2-1.png 1439w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<p>Да, можно было найти сайт и с более приятной выдачей, но зачем) Вот наш результат. Честно сказать, из всех компаний я знаю только одну, но самое смешное, что по показателям у нее самое плохое состояние долга в этом списке, кажется мартышки уже что-то лучше знают, чем я:</p>



<figure class="wp-block-table aligncenter is-style-stripes"><table><tbody><tr><td>AEIS</td><td>Advanced Energy Industries, Inc.</td></tr><tr><td>BEAT</td><td>BioTelemetry, Inc.</td></tr><tr><td>CDW</td><td>CDW Corporation</td></tr><tr><td>DFS</td><td>Discover Financial Services</td></tr><tr><td>EXP</td><td>Eagle Materials Inc.</td></tr><tr><td>ET</td><td>Energy Transfer LP</td></tr><tr><td>EXPE</td><td>Expedia Group, Inc.</td></tr><tr><td>GTHX</td><td>G1 Therapeutics, Inc.</td></tr><tr><td>GCP</td><td>GCP Applied Technologies Inc.</td></tr><tr><td>GPI</td><td>Group 1 Automotive, Inc.</td></tr><tr><td>IIVI</td><td>II-VI Incorporated</td></tr><tr><td>LEA</td><td>Lear Corporation</td></tr><tr><td>OSUR</td><td>OraSure Technologies, Inc.</td></tr><tr><td>QRTEA</td><td>Qurate Retail, Inc.</td></tr><tr><td>ROG</td><td>Rogers Corporation</td></tr><tr><td>SPR</td><td>Spirit AeroSystems Holdings, Inc.</td></tr><tr><td>PNTG</td><td>The Pennant Group, Inc.</td></tr><tr><td>ULTA</td><td>Ulta Beauty, Inc.</td></tr><tr><td>WYNN</td><td>Wynn Resorts, Limited</td></tr><tr><td>ZYNE</td><td>Zynerba Pharmaceuticals, Inc.</td></tr></tbody></table></figure>



<p>Своими деньгами пока в этом эксперименте участвовать не будем, но портфель-то составить никто запретить не может! Нормируем на 10 000 вечно зеленых рублей и получаем такой набор (напомню, дата входа 1-е июня 2020, а что если бы мы входили в начале марта!):</p>



<figure class="wp-block-table aligncenter is-style-stripes"><table><tbody><tr><td><strong>1</strong></td><td>AEIS</td><td>Advanced Energy Industries, Inc,</td><td>8</td><td>66,39</td><td>531,12</td></tr><tr><td><strong>2</strong></td><td>BEAT</td><td>BioTelemetry, Inc,</td><td>11</td><td>47,28</td><td>520,08</td></tr><tr><td><strong>3</strong></td><td>CDW</td><td>CDW Corporation</td><td>5</td><td>111,91</td><td>559,55</td></tr><tr><td><strong>4</strong></td><td>DFS</td><td>Discover Financial Services</td><td>10</td><td>49,84</td><td>498,4</td></tr><tr><td><strong>5</strong></td><td>EXP</td><td>Eagle Materials Inc,</td><td>8</td><td>67,07</td><td>536,56</td></tr><tr><td><strong>6</strong></td><td>ET</td><td>Energy Transfer LP</td><td>61</td><td>8,21</td><td>500,81</td></tr><tr><td><strong>7</strong></td><td>EXPE</td><td>Expedia Group, Inc,</td><td>6</td><td>82,42</td><td>494,52</td></tr><tr><td><strong>8</strong></td><td>GTHX</td><td>G1 Therapeutics, Inc,</td><td>28</td><td>17,61</td><td>493,08</td></tr><tr><td><strong>9</strong></td><td>GCP</td><td>GCP Applied Technologies Inc,</td><td>24</td><td>20,23</td><td>485,52</td></tr><tr><td><strong>10</strong></td><td>GPI</td><td>Group 1 Automotive, Inc,</td><td>8</td><td>62,41</td><td>499,28</td></tr><tr><td><strong>11</strong></td><td>IIVI</td><td>II-VI Incorporated</td><td>10</td><td>47,28</td><td>472,8</td></tr><tr><td><strong>12</strong></td><td>LEA</td><td>Lear Corporation</td><td>4</td><td>110,49</td><td>441,96</td></tr><tr><td><strong>13</strong></td><td>OSUR</td><td>OraSure Technologies, Inc,</td><td>35</td><td>14,12</td><td>494,2</td></tr><tr><td><strong>14</strong></td><td>QRTEA</td><td>Qurate Retail, Inc,</td><td>57</td><td>8,63</td><td>491,91</td></tr><tr><td><strong>15</strong></td><td>ROG</td><td>Rogers Corporation</td><td>5</td><td>109,62</td><td>548,1</td></tr><tr><td><strong>16</strong></td><td>SPR</td><td>Spirit AeroSystems Holdings, Inc,</td><td>21</td><td>23,79</td><td>499,59</td></tr><tr><td><strong>17</strong></td><td>PNTG</td><td>The Pennant Group, Inc,</td><td>20</td><td>23,95</td><td>479</td></tr><tr><td><strong>18</strong></td><td>ULTA</td><td>Ulta Beauty, Inc,</td><td>2</td><td>239,09</td><td>478,18</td></tr><tr><td><strong>19</strong></td><td>WYNN</td><td>Wynn Resorts, Limited</td><td>5</td><td>86,47</td><td>432,35</td></tr><tr><td><strong>20</strong></td><td>ZYNE</td><td>Zynerba Pharmaceuticals, Inc,</td><td>90</td><td>5,52</td><td>496,8</td></tr><tr><td></td><td></td><td></td><td></td><td></td><td>9953,81</td></tr></tbody></table><figcaption>Столбцы не подписаны, но думаю Вы справитесь)</figcaption></figure>



<p>Из-за маленького размера портфеля балансировка по 500$ очень примерная, но это тоже не страшно, может у Вас 100 000$ и Вы сделаете лучше)</p>



<h2 class="wp-block-heading">Смотрим на результат</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="700" height="216" src="https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-1-700x216.png" alt="" class="wp-image-1115" srcset="https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-1-700x216.png 700w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-1-300x93.png 300w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-1-768x237.png 768w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-1-1280x395.png 1280w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-1.png 1370w" sizes="auto, (max-width: 700px) 100vw, 700px" /><figcaption>Портфель на финвизе</figcaption></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="700" height="661" src="https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-2-700x661.png" alt="" class="wp-image-1116" srcset="https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-2-700x661.png 700w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-2-300x283.png 300w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-2-768x725.png 768w, https://consultapp.ru/wp-content/uploads/2020/06/monkey-portf-2.png 818w" sizes="auto, (max-width: 700px) 100vw, 700px" /><figcaption>Портфель на simplywall.st не выглядит совсем провально</figcaption></figure></div>



<figure class="wp-block-table aligncenter is-style-stripes"><table><tbody><tr><td><strong>GTHX</strong></td><td>G1 Therapeutics, Inc.</td><td><strong><span style="color:#1a7f24" class="has-inline-color">1.60</span></strong></td></tr><tr><td><strong>ROG</strong></td><td>Rogers Corporation</td><td><span style="color:#1a7f24" class="has-inline-color"><strong>1.70</strong></span></td></tr><tr><td><strong>BEAT</strong></td><td>BioTelemetry, Inc.</td><td><strong><span style="color:#1a7f24" class="has-inline-color">1.80</span></strong></td></tr><tr><td><strong>GPI</strong></td><td>Group 1 Automotive, Inc.</td><td><strong><span style="color:#1a7f24" class="has-inline-color">1.80</span></strong></td></tr><tr><td><strong>ZYNE</strong></td><td>Zynerba Pharmaceuticals, Inc.</td><td><strong><span style="color:#1a7f24" class="has-inline-color">1.90</span></strong></td></tr><tr><td><strong>ET</strong></td><td>Energy Transfer LP</td><td>2.00</td></tr><tr><td><strong>WYNN</strong></td><td>Wynn Resorts, Limited</td><td>2.00</td></tr><tr><td><strong>ULTA</strong></td><td>Ulta Beauty, Inc.</td><td>2.10</td></tr><tr><td><strong>EXP</strong></td><td>Eagle Materials Inc.</td><td>2.20</td></tr><tr><td><strong>IIVI</strong></td><td>II-VI Incorporated</td><td>2.20</td></tr><tr><td><strong>CDW</strong></td><td>CDW Corporation</td><td>2.30</td></tr><tr><td><strong>DFS</strong></td><td>Discover Financial Services</td><td>2.40</td></tr><tr><td><strong>LEA</strong></td><td>Lear Corporation</td><td>2.40</td></tr><tr><td><strong>EXPE</strong></td><td>Expedia Group, Inc.</td><td>2.50</td></tr><tr><td><strong>QRTEA</strong></td><td>Qurate Retail, Inc.</td><td>2.50</td></tr><tr><td><strong>AEIS</strong></td><td>Advanced Energy Industries, Inc.</td><td><span class="has-inline-color has-vivid-red-color">2.60</span></td></tr><tr><td><strong>SPR</strong></td><td>Spirit AeroSystems Holdings, Inc.</td><td><span class="has-inline-color has-vivid-red-color">2.70</span></td></tr><tr><td><strong>GCP</strong></td><td>GCP Applied Technologies Inc.</td><td><span class="has-inline-color has-vivid-red-color">3.00</span></td></tr><tr><td><strong>OSUR</strong></td><td>OraSure Technologies, Inc.</td><td><span class="has-inline-color has-vivid-red-color">3.00</span></td></tr><tr><td><strong>PNTG</strong></td><td>The Pennant Group, Inc.</td><td><span class="has-inline-color has-vivid-red-color">3.00</span></td></tr></tbody></table></figure>



<p>Судя по рекомендациям, только 5 бумаг нам покупать сейчас не надо, но мартышки-то лучше знают!</p>



<h2 class="wp-block-heading">Вместо заключения</h2>



<p>Будем следить за этим портфелем, постараемся выкладывать результаты оперативно! Пишите нам на почту <a href="mailto:info@consultaspp.ru">info@consultaspp.ru</a>, если хотите поговорить на тему портфеля или о чем-то еще)</p>
<p>Сообщение <a href="https://consultapp.ru/monkey-vs-market/">Обезьяна сражается с фондовым рынком</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Плагин Easy Upload to Farpost.ru</title>
		<link>https://consultapp.ru/ca-wpecomm-farpost/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sun, 31 May 2020 11:39:38 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Плагины WP]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1103</guid>

					<description><![CDATA[<p>Генерирует файл xml с товарами из WP eCommerce или Woocommerce в формате выгрузки для Farpost.ru . Файл автоматически обновляется каждый час, используя для вызова задачи базовый Cron вордпреса. Шаблон выгрузки: В настройках можно указать имя файла и выгрузить товары принудительно. 1.* Версия выводит в канал все товары магазина. Плагин не использует специфические функции последних версий&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/ca-wpecomm-farpost/">Плагин Easy Upload to Farpost.ru</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Генерирует файл xml с товарами из WP eCommerce или Woocommerce в формате выгрузки для <a href="http://farpost.ru">Farpost.ru</a> . Файл автоматически обновляется каждый час, используя для вызова задачи базовый Cron вордпреса.</p>



<span id="more-1103"></span>



<p>Шаблон выгрузки:                       </p>



<pre class="wp-block-code"><code>&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;!DOCTYPE yml_catalog SYSTEM "shops.dtd">
&lt;yml_catalog date="2010-04-01 17:00">
    &lt;shop>
        &lt;offers>
			&lt;offer id="ID">
				&lt;name>ИМЯ&lt;/name>
			      &lt;description>ОПИСАНИЕ&lt;/description>
				&lt;price>ЦЕНА&lt;/price>
				&lt;currencyId>RUR&lt;/currencyId>
				&lt;SKU>SKU&lt;/SKU>
				&lt;picture>ССЫЛКА&lt;/picture>
			&lt;/offer>
		&lt;/offers>
	&lt;/shop>
&lt;/yml_catalog></code></pre>



<p>В настройках можно указать имя файла и выгрузить товары принудительно.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="573" height="291" src="https://consultapp.ru/wp-content/uploads/2020/05/screenshot-1.png" alt="" class="wp-image-1091" srcset="https://consultapp.ru/wp-content/uploads/2020/05/screenshot-1.png 573w, https://consultapp.ru/wp-content/uploads/2020/05/screenshot-1-300x152.png 300w" sizes="auto, (max-width: 573px) 100vw, 573px" /></figure></div>



<p>1.* Версия выводит в канал все товары магазина.</p>



<p>Плагин не использует специфические функции последних версий WP и должнен работать на более старых версиях, чем 4.8, но не тестировался там.</p>



<p><a href="https://ru.wordpress.org/plugins/easy-wp-ecommerce-to-farpost/">Страница плагина</a> на <a href="https://ru.wordpress.org/">https://ru.wordpress.org/</a></p>
<p>Сообщение <a href="https://consultapp.ru/ca-wpecomm-farpost/">Плагин Easy Upload to Farpost.ru</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Простейший бот для Телеграма на PHP</title>
		<link>https://consultapp.ru/simple-bot-for-telegram-php/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sun, 12 Apr 2020 14:24:26 +0000</pubDate>
				<category><![CDATA[Telegram]]></category>
		<category><![CDATA[Telegram Bots]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">https://consultapp.ru/?p=1070</guid>

					<description><![CDATA[<p>Для написания простейшего бота для телеграмма будем использовать схему работы через webhook, те отдадим телеге ссылку, по которой она будет стучаться, когда происходит какое-нибудь событие. Всего у нас будет 2 файла: webhook.php, который содержит логику работы, и tg.class.php, который содержит методы для отправки сообщений и ответа на запросы. Для того, что бы телеграм знаю куда&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/simple-bot-for-telegram-php/">Простейший бот для Телеграма на PHP</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Для написания простейшего бота для телеграмма будем использовать схему работы через webhook, те отдадим телеге ссылку, по которой она будет стучаться, когда происходит какое-нибудь событие.</p>



<span id="more-1070"></span>



<p>Всего у нас будет 2 файла: webhook.php, который содержит логику работы, и tg.class.php, который содержит методы для отправки сообщений и ответа на запросы.</p>



<p>Для того, что бы телеграм знаю куда стучаться при наступлении события сообщим ему о нашем обработчике открыв в браузере страницу с адресом, обратите внимание, что обязательно нужен SSL: https://api.telegram.org/bot<strong>API_TOKEN_TG</strong>/setWebhook?url=https://<strong>YOUR_DOMAIN</strong>/webhook.php</p>



<h3 class="wp-block-heading">webhook.php</h3>



<pre class="wp-block-code"><code>&lt;?php
define('TGKEY', 'TELEGRAM_API_KEY-insert here your tg api key');
include_once('tg.class.php');

$body = file_get_contents('php://input');
$arr = json_decode($body, true); 

$tg = new tg(TGKEY);

$tg_id = $arr&#91;'message']&#91;'chat']&#91;'id'];
$rez_kb = array();

$message_text = $arr&#91;'message']&#91;'text'];
$tg->sendChatAction($tg_id);
$sms_rev='';
	
	switch($message_text){
		case '/start':
			$sms_rev = 'Здравствуйте, Вас приветсвует Простейший Бот Telegram!
';
		break;
		case '/help':
			$sms_rev = 'Я могу выполнить следующюю функцию:
			/rev - переворачиваею строку наоборот.
';	
		break;	

		case '/rev':
			$sms_rev = strrev($message_text);	
		break;	

		default:
			$sms_rev ='Команда не распознана';
		break;	
	}

$tg->send($tg_id, $sms_rev, $rez_kb);
exit('ok'); // говорим телеге, что все окей
?></code></pre>



<h3 class="wp-block-heading"> tg.class.php</h3>



<pre class="wp-block-code"><code>&lt;?php
class TG {
  
    public $token = '';
  
    public function __construct($token) {
        $this->token = $token; 
    }
      
    public function send($id, $message, $kb) {
        $data = array(
            'chat_id' => $id,
            'text'  => $message,
            'parse_mode' => 'HTML',
            'disable_web_page_preview'=>true,
            'reply_markup' => json_encode(array('inline_keyboard' => $kb))
        );
        $this->request('sendMessage', $data);
    }  

    public function editMessageText($id, $m_id, $m_text, $kb=''){
        $data=array(
             'chat_id' => $id,
             'message_id' => $m_id,
             'parse_mode' => 'HTML',
             'text' => $m_text
        );
        if($kb)
            $data&#91;'reply_markup']=json_encode(array('inline_keyboard' => $kb));

        $this->request('editMessageText', $data); 
    }


    public function editMessageReplyMarkup($id, $m_id, $kb){
        $data=array(
             'chat_id' => $id,
             'message_id' => $m_id,
            'reply_markup' => json_encode(array('inline_keyboard' => $kb))
        );
        $this->request('editMessageReplyMarkup', $data); 
    }
    
    public function answerCallbackQuery($cb_id, $message) {
        $data = array(
            'callback_query_id'      => $cb_id,
            'text'     => $message
        );
        $this->request('answerCallbackQuery', $data);
    } 

    public function sendChatAction($id,$action='typing') {
        $data = array(
            'chat_id' => $id,
            'action'     => $action
        );
        $this->request('sendChatAction', $data);
    }


    public  function request($method, $data = array()) {
        $curl = curl_init();
          
        curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $this->token .  '/' . $method);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); 
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
          
        $out = json_decode(curl_exec($curl), true);
          
        curl_close($curl);
        return $out;
    }
}</code></pre>



<h2 class="wp-block-heading">Разберем отдельно по функциям</h2>



<h3 class="wp-block-heading">Конструктор</h3>



<pre class="wp-block-code"><code>class TG {
  
    public $token = '';
  
    public function __construct($token) {
        $this->token = $token; 
    }</code></pre>



<p>Все крайне просто, в конструкторе сохраняем во внутреннюю переменную Api ключ, который получили от BotFather бота телеграмма. </p>



<h3 class="wp-block-heading">Функция отправки запроса в телегу</h3>



<pre class="wp-block-code"><code>    public  function request($method, $data = array()) {
        $curl = curl_init();
          
        curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $this->token .  '/' . $method);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); 
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
          
        $out = json_decode(curl_exec($curl), true);
          
        curl_close($curl);
        return $out;
    }</code></pre>



<p>Отправляем запрос вида https://api.telegram.org/botAPI_KEY/ИМЯ_МЕТОДА по протоколу post через curl.</p>



<h3 class="wp-block-heading">Функция отправки сообщения &#8212; sendMessage</h3>



<pre class="wp-block-code"><code>public function send($id, $message, $kb) {
        $data = array(
            'chat_id' => $id,
            'text'  => $message,
            'parse_mode' => 'HTML',
            'disable_web_page_preview'=>true,
            'reply_markup' => json_encode(array('inline_keyboard' => $kb))
        );
        $this->request('sendMessage', $data);
    }  </code></pre>



<p>Получаем в параметрах ID диалога, сообщение и инлайн клавиатуру, если она нужна.</p>



<h3 class="wp-block-heading">Функция редактирования текста сообщения &#8212; editMessageText</h3>



<pre class="wp-block-code"><code>public function editMessageText($id, $m_id, $m_text, $kb=''){
        $data=array(
             'chat_id' => $id,
             'message_id' => $m_id,
             'parse_mode' => 'HTML',
             'text' => $m_text
        );
        if($kb)
            $data&#91;'reply_markup']=json_encode(array('inline_keyboard' => $kb));

        $this->request('editMessageText', $data); 
    }</code></pre>



<p>Редактируем с помощью нее сообщение бота в телеграме всемсте с инлайн клавиатурой, если нужно. Получаем в качестве параметров ID  чата,  ID сообщения, новый текст сообщения, инлайн клавиатуру.</p>



<h3 class="wp-block-heading">Функция ответа на событие нажатия кнопки (обратного запроса) &#8212; answerCallbackQuery</h3>



<pre class="wp-block-code"><code>public function answerCallbackQuery($cb_id, $message) {
        $data = array(
            'callback_query_id'      => $cb_id,
            'text'     => $message
        );
        $this->request('answerCallbackQuery', $data);
    } </code></pre>



<p>Получаем в параметрах ID обратного запроса и текст ответа.</p>



<h3 class="wp-block-heading">Функция редактирования разметки/кнопок &#8212; editMessageReplyMarkup</h3>



<pre class="wp-block-code"><code>public function editMessageReplyMarkup($id, $m_id, $kb){
        $data=array(
             'chat_id' => $id,
             'message_id' => $m_id,
            'reply_markup' => json_encode(array('inline_keyboard' => $kb))
        );
        $this->request('editMessageReplyMarkup', $data); 
    }</code></pre>



<p>Получаем как параметр ID чата, ID сообщения, новую разметку/клавиатуру. Используем в паре с <strong>answerCallbackQuery</strong>, для ответа на запрос с заменой разметки.</p>
<p>Сообщение <a href="https://consultapp.ru/simple-bot-for-telegram-php/">Простейший бот для Телеграма на PHP</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Коронавирус (COVID-19), полезные материалы.</title>
		<link>https://consultapp.ru/covid19/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sun, 29 Mar 2020 13:31:53 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=1062</guid>

					<description><![CDATA[<p>Информация по ситуации с коронавирусом, ограничения правительства, графики и прочее. Собираем здесь полезные материалы. Графики распространения в мире/по странам; Распоряжение Правительства РФ от 27 марта 2020 г. No 762-р о перечне товаров первой необходимости &#8212; можно понять, разрешено Вам работать и продавать, или нет в нерабочий период; Ликбез по распираторам и маска; 12-04-2020 Цифровые пропуска:&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/covid19/">Коронавирус (COVID-19), полезные материалы.</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Информация по ситуации с коронавирусом, ограничения правительства, графики и прочее. Собираем здесь полезные материалы.</p>



<span id="more-1062"></span>



<ol class="wp-block-list"><li><a href="https://ru.tradingview.com/covid19/">Графики распространения в мире/по странам</a>;</li><li><a href="http://static.government.ru/media/files/44ZU60IhQrKZY5frWXGrIyZp5Ibe95jY.pdf">Распоряжение Правительства РФ от 27 марта 2020 г. No 762-р о перечне товаров первой необходимости</a> &#8212; можно понять, разрешено Вам работать и продавать, или нет в нерабочий период;</li><li><a href="https://habr.com/ru/post/488490/">Ликбез по распираторам и маска</a>;</li><li>12-04-2020 <a href="https://www.mos.ru/mayor/themes/2299/6434050/?onsite_from=live">Цифровые пропуска: как будет работать пропускная система в городе</a>;</li></ol>



<p></p>
<p>Сообщение <a href="https://consultapp.ru/covid19/">Коронавирус (COVID-19), полезные материалы.</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как настроить отправку почты через SMTP yandex.ru в 1С-Битрикс (BitrixVM)?</title>
		<link>https://consultapp.ru/bitrixvm-smtp-yandex/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Mon, 02 Mar 2020 18:50:13 +0000</pubDate>
				<category><![CDATA[Bitrix]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=1056</guid>

					<description><![CDATA[<p>Что мы знаем о настройке smtp.yandex.ru? Сайт https://help.yandex.ru/mail/mailer/popsmtp говорит следущее: адрес почтового сервера —&#160;smtp.yandex.ru; защита соединения —&#160;SSL; порт —&#160;465. Но для битрикса мы будем использовать 587 порт. Наша ошибка из проверки системы 1С-Битрикс. При запуске тестирования конфигурации битрикса можно увидеть подобную картину: Как исправить? Для начала зайдем в нужный раздел BitrixVM, пункты 6. Manage sites&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/bitrixvm-smtp-yandex/">Как настроить отправку почты через SMTP yandex.ru в 1С-Битрикс (BitrixVM)?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Что мы знаем о настройке smtp.yandex.ru?</h3>



<p>Сайт <a rel="noreferrer noopener" aria-label="https://help.yandex.ru/mail/mailer/popsmtp (откроется в новой вкладке)" href="https://yandex.ru/support/mail/mail-clients.html" target="_blank">https://help.yandex.ru/mail/mailer/popsmtp</a> говорит следущее:</p>



<ul class="wp-block-list"><li>адрес почтового сервера —&nbsp;<code>smtp.yandex.ru</code>;</li><li>защита соединения —&nbsp;SSL;</li><li>порт —&nbsp;465.</li></ul>



<span id="more-1056"></span>



<p>Но для битрикса мы будем использовать <strong>587 порт.</strong></p>



<h3 class="wp-block-heading">Наша ошибка из проверки системы 1С-Битрикс.</h3>



<p>При запуске тестирования конфигурации битрикса можно увидеть подобную картину:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="85" src="http://consultapp.ru/wp-content/uploads/2020/02/image-700x85.png" alt="" class="wp-image-1046" srcset="https://consultapp.ru/wp-content/uploads/2020/02/image-700x85.png 700w, https://consultapp.ru/wp-content/uploads/2020/02/image-300x37.png 300w, https://consultapp.ru/wp-content/uploads/2020/02/image-768x94.png 768w, https://consultapp.ru/wp-content/uploads/2020/02/image.png 893w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<h2 class="wp-block-heading">Как исправить?</h2>



<p>Для начала зайдем в нужный раздел BitrixVM, пункты 6. Manage sites in the pool =&gt; 4. Change a site&#8217;s email settings.</p>



<pre class="wp-block-code"><code>              Bitrix virtual appliance  version 7.3.3
                     Manage email settings

Found 2 sites:
------------------------------------------------------------------------------------
SiteName        | dbName          | Email |          Server |   TLS | From
------------------------------------------------------------------------------------
******.**       | dbb******       |     Y | smtp.yandex.ru:587 |    on | info@******.**
default         | sitemanager     |     N |                 |   off | 
------------------------------------------------------------------------------------
Available actions: 
                 
           Manage email settings
        0. Previous screen or exit</code></pre>



<p>Видим список сайтов, выберем интересующий нас и увидим текущие настройки:</p>



<pre class="wp-block-code"><code>Enter site name (default) or 0 to exit: ******.**

Email address is configured for the site ******.**
Email address       : info@******.**
SMTP server         : smtp.yandex.ru
SMTP port           : 587
SMTP login          : info@******.**
TLS status          : on</code></pre>



<p>Подтвердим желание изменить настройки:</p>



<pre class="wp-block-code"><code>Do you want to update email settings for ******.** (N|y): y</code></pre>



<p>Введем почту, от которой будут отправляться письма:</p>



<pre class="wp-block-code"><code>Enter From email address (ex. bob@example.org):info@******.**</code></pre>



<p>Введем адрес smtp сервера яндекса:<br></p>



<pre class="wp-block-code"><code>Enter server address or DNS (127.0.0.1): smtp.yandex.ru</code></pre>



<p>Введем рекомендуемый порт, и подтвердим наличие аутентификации:</p>



<pre class="wp-block-code"><code>Enter server port (25): 587

Do you want to use SMTP authentication on smtp.yandex.ru:587? (N|y)y</code></pre>



<p>Введем наши логин и пароль от ящика:</p>



<pre class="wp-block-code"><code>Enter login (info@******.**): info@******.**

Enter password: PASSWORD</code></pre>



<p>Выберем и подтвердим шифрование (можно оставить auto):</p>



<pre class="wp-block-code"><code>Available methods are plain,scram-sha-1,cram-md5,gssapi,external,digest-md5,login,ntlm

Enter SMTP authentication method (default: auto): auto

Do you want to enable TLS for smtp.yandex.ru:587 (n|Y):Y</code></pre>



<p>И вот он, конец настройки)</p>



<pre class="wp-block-code"><code>Configure email for the site ******.**

Press ENTER to exit</code></pre>



<p><strong>Все, готово</strong>. Лог ошибок по умолчанию можно посмотреть тут:</p>



<pre class="wp-block-code"><code>cat /home/bitrix/msmtp_*******.log </code></pre>



<p>Файл настроек здесь:</p>



<pre class="wp-block-code"><code>/home/bitrix/.msmtprc</code></pre>
<p>Сообщение <a href="https://consultapp.ru/bitrixvm-smtp-yandex/">Как настроить отправку почты через SMTP yandex.ru в 1С-Битрикс (BitrixVM)?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как настроить отправку почты через SMTP mail.ru в 1С-Битрикс (BitrixVM)?</title>
		<link>https://consultapp.ru/bitrix-send-mail-over-smtp-mail-ru/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Fri, 28 Feb 2020 08:29:20 +0000</pubDate>
				<category><![CDATA[Bitrix]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=1043</guid>

					<description><![CDATA[<p>Что мы знаем о настройке smtp.mail.ru? Сайт https://help.mail.ru/mail/mailer/popsmtp сообщает следущее: Электронный адрес Полное имя почтового ящика, включая логин, @ и домен Сервер исходящей почты&#160;(SMTP-сервер) smtp.mail.ru Имя пользователя Полное имя почтового ящика, включая логин, @ и домен Пароль Пароль, который вы используете для входа в почтовый ящик Порт SMTP —&#160;465 (протокол шифрования&#160;SSL/TLS) Аутентификация Обычный пароль (без&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/bitrix-send-mail-over-smtp-mail-ru/">Как настроить отправку почты через SMTP mail.ru в 1С-Битрикс (BitrixVM)?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Что мы знаем о настройке smtp.mail.ru?</h3>



<p>Сайт <a href="https://help.mail.ru/mail/mailer/popsmtp" target="_blank" rel="noreferrer noopener" aria-label="https://help.mail.ru/mail/mailer/popsmtp (откроется в новой вкладке)">https://help.mail.ru/mail/mailer/popsmtp</a> сообщает следущее:</p>



<table class="wp-block-table"><tbody><tr><td><strong>Электронный адрес</strong></td><td>Полное имя почтового ящика, включая логин, @ и домен</td></tr><tr><td><strong>Сервер исходящей почты&nbsp;(SMTP-сервер)</strong></td><td>smtp.mail.ru</td></tr><tr><td><strong>Имя пользователя</strong></td><td>Полное имя почтового ящика, включая логин, @ и домен</td></tr><tr><td><strong>Пароль</strong></td><td>Пароль, который вы используете для входа в почтовый ящик</td></tr><tr><td><strong>Порт</strong></td><td>SMTP —&nbsp;465 (протокол шифрования&nbsp;SSL/TLS)</td></tr><tr><td><strong>Аутентификация</strong></td><td>Обычный пароль (без шифрования)</td></tr></tbody></table>



<h3 class="wp-block-heading">Наша ошибка из проверки системы 1С-Битрикс.</h3>



<p>При запуске тестирования конфигурации битрикса можно увидеть подобную картину:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="85" src="http://consultapp.ru/wp-content/uploads/2020/02/image-700x85.png" alt="" class="wp-image-1046" srcset="https://consultapp.ru/wp-content/uploads/2020/02/image-700x85.png 700w, https://consultapp.ru/wp-content/uploads/2020/02/image-300x37.png 300w, https://consultapp.ru/wp-content/uploads/2020/02/image-768x94.png 768w, https://consultapp.ru/wp-content/uploads/2020/02/image.png 893w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<h2 class="wp-block-heading">Как исправить?</h2>



<p>Для начала зайдем в нужный раздел BitrixVM, пункты 6. Manage sites in the pool =&gt; 4. Change a site&#8217;s email settings.</p>



<pre class="wp-block-code"><code>              Bitrix virtual appliance  version 7.3.3
                     Manage email settings

Found 2 sites:
------------------------------------------------------------------------------------
SiteName        | dbName          | Email |          Server |   TLS | From
------------------------------------------------------------------------------------
******.**       | dbb******       |     Y | smtp.mail.ru:465 |    on | info@******.**
default         | sitemanager     |     N |                 |   off | 
------------------------------------------------------------------------------------
Available actions: 
                 
           Manage email settings
        0. Previous screen or exit</code></pre>



<p>Видим список сайтов, выберем интересующий нас и увидим текущие настройки:</p>



<pre class="wp-block-code"><code>Enter site name (default) or 0 to exit: ******.**

Email address is configured for the site ******.**
Email address       : info@******.**
SMTP server         : smtp.mail.ru
SMTP port           : 465
SMTP login          : info@******.**
TLS status          : on</code></pre>



<p>Подтвердим желание изменить настройки:</p>



<pre class="wp-block-code"><code>Do you want to update email settings for ******.** (N|y): y</code></pre>



<p>Введем почту, от которой будут отправляться письма:</p>



<pre class="wp-block-code"><code>Enter From email address (ex. bob@example.org):info@******.**</code></pre>



<p>Введем адрес smtp сервера Мейл-ру:<br></p>



<pre class="wp-block-code"><code>Enter server address or DNS (127.0.0.1): smtp.mail.ru</code></pre>



<p>Введем рекомендуемый порт, и подтвердим наличие аутентификации:</p>



<pre class="wp-block-code"><code>Enter server port (25): 465

Do you want to use SMTP authentication on smtp.mail.ru:465? (N|y)y</code></pre>



<p>Введем наши логин и пароль от ящика:</p>



<pre class="wp-block-code"><code>Enter login (info@******.**): info@******.**

Enter password: PASSWORD</code></pre>



<p>Выберем и подтвердим шифрование (можно пробовать plain или оставить auto):</p>



<pre class="wp-block-code"><code>Available methods are plain,scram-sha-1,cram-md5,gssapi,external,digest-md5,login,ntlm

Enter SMTP authentication method (default: auto): plain

Do you want to enable TLS for smtp.mail.ru:465 (n|Y):Y</code></pre>



<p>И вот он, конец настройки)</p>



<pre class="wp-block-code"><code>Configure email for the site ******.**

Press ENTER to exit</code></pre>



<p><strong>Все, готово</strong>. Лог ошибок по умолчанию можно посмотреть тут:</p>



<pre class="wp-block-code"><code>cat /home/bitrix/msmtp_******.ru.log </code></pre>
<p>Сообщение <a href="https://consultapp.ru/bitrix-send-mail-over-smtp-mail-ru/">Как настроить отправку почты через SMTP mail.ru в 1С-Битрикс (BitrixVM)?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Апгрейд дисплея на электросамокате Xiaomi Mijia M365</title>
		<link>https://consultapp.ru/%d0%b0%d0%bf%d0%b3%d1%80%d0%b5%d0%b9%d0%b4-%d0%b4%d0%b8%d1%81%d0%bf%d0%bb%d0%b5%d1%8f-%d0%bd%d0%b0-%d1%8d%d0%bb%d0%b5%d0%ba%d1%82%d1%80%d0%be%d1%81%d0%b0%d0%bc%d0%be%d0%ba%d0%b0%d1%82%d0%b5-xiaomi-mij/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Mon, 11 Nov 2019 21:56:57 +0000</pubDate>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=1015</guid>

					<description><![CDATA[<p>Итак, посмотрел я на свой дисплей самоката с 4 точками и кнопочкой, потом на aliexpress, потом опять на самокат&#8230; И понял, что грустный он какой-то, скорость не видно, зарядка бестолковая, надо что-то менять. А менять мы будем вот на эту красоту за 959,14 руб., на момент покупки, из страны откуда и сам чудо-самокат приехал. Тут&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%b0%d0%bf%d0%b3%d1%80%d0%b5%d0%b9%d0%b4-%d0%b4%d0%b8%d1%81%d0%bf%d0%bb%d0%b5%d1%8f-%d0%bd%d0%b0-%d1%8d%d0%bb%d0%b5%d0%ba%d1%82%d1%80%d0%be%d1%81%d0%b0%d0%bc%d0%be%d0%ba%d0%b0%d1%82%d0%b5-xiaomi-mij/">Апгрейд дисплея на электросамокате Xiaomi Mijia M365</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Итак, посмотрел я на свой дисплей самоката с 4 точками и кнопочкой, потом на aliexpress, потом опять на самокат&#8230; И понял, что грустный он какой-то, скорость не видно, зарядка бестолковая, надо что-то менять.</p>



<span id="more-1015"></span>



<p></p>



<p>А менять мы будем вот на эту <a href="https://ru.aliexpress.com/item/32924151370.html">красоту</a> за 959,14 руб., на момент покупки, из страны откуда и сам чудо-самокат приехал. Тут тебе и отдельный индикатор ECO, и скорость.. короче надо брать подумалось мне, хотя и заходил туда за заказом камер для колес.</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" decoding="async" src="http://consultapp.ru/wp-content/uploads/2019/11/xiaomi-0.png" alt="" class="wp-image-1017" width="375" height="335" srcset="https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-0.png 444w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-0-300x268.png 300w" sizes="auto, (max-width: 375px) 100vw, 375px" /></figure></div>



<p>Забрали на почте заветную коробочку и сразу к делу. Верхняя крышка, та что матовая черная приклеена, первая цель &#8212; ее аккуратно отдираем, вместе с кусочком, который над фонарем. Видим такую картину &#8212; плата без экрана (скучная) и 2 набора проводов сверху и снизу платы.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="525" src="http://consultapp.ru/wp-content/uploads/2019/11/xiaomi-1-700x525.jpg" alt="" class="wp-image-1022" srcset="https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-1-700x525.jpg 700w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-1-300x225.jpg 300w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-1-768x576.jpg 768w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-1-1280x960.jpg 1280w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<p>Откручиваем голову с рулем, та что на 4 болтах шестигранных. Меняем плату, отключаем все от старой, заменяем ее, что логично, на новую. Соединяем штекер, который идет вниз к мотору &#8212; для этого и скрутили голову бедняге. А под резиновым колпачком находим соединения (3 шт.), которые отвечают за газ, свет и тп &#8212; их соединяем в соответствии с цветами проводов, благо китайцы, на удивление, все сделали одинаково! Получаем такую картину.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="525" src="http://consultapp.ru/wp-content/uploads/2019/11/xiaomi-2-700x525.jpg" alt="" class="wp-image-1021" srcset="https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-2-700x525.jpg 700w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-2-300x225.jpg 300w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-2-768x576.jpg 768w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-2-1280x960.jpg 1280w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



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



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="525" src="http://consultapp.ru/wp-content/uploads/2019/11/xiaomi-4-700x525.jpg" alt="" class="wp-image-1019" srcset="https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-4-700x525.jpg 700w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-4-300x225.jpg 300w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-4-768x576.jpg 768w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-4-1280x960.jpg 1280w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<p>Et voilà (и вот), что получаем в результате. Красота&#8230;</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="525" src="http://consultapp.ru/wp-content/uploads/2019/11/xiaomi-5-700x525.jpg" alt="" class="wp-image-1018" srcset="https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-5-700x525.jpg 700w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-5-300x225.jpg 300w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-5-768x576.jpg 768w, https://consultapp.ru/wp-content/uploads/2019/11/xiaomi-5-1280x960.jpg 1280w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<p>Осталось только подключиться в программе, тк  мигает значек блютус, но нет тут то было.. Если Вы уже регистрировали скутер в родной программе Xiaomi (Mi Home), то &#8230;барабанная дробь&#8230; удаляем его, тк работать он не будет &#8212; модуль то другой уже) И добавляем снова, теперь все окей! И зарядку читает, и скорость и прочее. Все, что есть на сегментном дисплее картинкой выше.</p>



<p><em>P.S. Теперь вместо 2 режимов ECO и простого, переключается 3 &#8212; D, S и ECO. Однако понять разницы между ними пока не представляется возможным.. дожди.. Напишите на почту, если интересно, возможно к моменту прочтения Вами статьи, это уже станет известно).&nbsp;Так&nbsp;же&nbsp;в&nbsp;комплекте&nbsp;шел&nbsp;чехол, но&nbsp;он&nbsp;настолько&nbsp;убог, что&nbsp;не&nbsp;смог&nbsp;пережить&nbsp;моего&nbsp;эстетического&nbsp;шока&nbsp;и&nbsp;был&nbsp;сразу&nbsp;выброшен.</em></p>
<p>Сообщение <a href="https://consultapp.ru/%d0%b0%d0%bf%d0%b3%d1%80%d0%b5%d0%b9%d0%b4-%d0%b4%d0%b8%d1%81%d0%bf%d0%bb%d0%b5%d1%8f-%d0%bd%d0%b0-%d1%8d%d0%bb%d0%b5%d0%ba%d1%82%d1%80%d0%be%d1%81%d0%b0%d0%bc%d0%be%d0%ba%d0%b0%d1%82%d0%b5-xiaomi-mij/">Апгрейд дисплея на электросамокате Xiaomi Mijia M365</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Новый сервис Яндекс.Знатоки. Косвенная реклама для Вашей компании?</title>
		<link>https://consultapp.ru/znatoki-yandex-news/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Mon, 28 Oct 2019 11:40:46 +0000</pubDate>
				<category><![CDATA[Новости]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=1002</guid>

					<description><![CDATA[<p>Яндекс открыл Бета-тестирование нового сервиса &#8212; Яндекс.Знатоки. Можно зарегистрироваться, если Ваша компания есть в Справочнике Яндекса и отвечать на вопросы потенциальных, как считают в Я., клиентов. Сервис вопросов и&#160;ответов&#160;Яндекс.Знатоки&#160;— одно из&#160;приоритетных направлений в&#160;рамках контент-маркетинга, поскольку позволяет находить горячих клиентов, уже интересующихся тем или иным вопросом. Сейчас протестируем с несколькими клиентами и напишем свои впечатление и&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/znatoki-yandex-news/">Новый сервис Яндекс.Знатоки. Косвенная реклама для Вашей компании?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Яндекс открыл Бета-тестирование нового сервиса &#8212; <a href="https://webmaster.yandex.ru/blog/beta-versiya-novogo-instrumenta-prodvizheniya-stranitsa-organizatsii-na-yandeks-znatokakh">Яндекс.Знатоки</a>. Можно зарегистрироваться, если Ваша компания есть в Справочнике Яндекса и отвечать на вопросы потенциальных, как считают в Я., клиентов.</p>



<span id="more-1002"></span>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Сервис вопросов и&nbsp;ответов&nbsp;<a href="https://yandex.ru/znatoki/">Яндекс.Знатоки</a>&nbsp;— одно из&nbsp;приоритетных направлений в&nbsp;рамках контент-маркетинга, поскольку позволяет находить горячих клиентов, уже интересующихся тем или иным вопросом.</p></blockquote>



<p>Сейчас протестируем с несколькими клиентами и напишем свои впечатление и мануал, если будет интересно.</p>
<p>Сообщение <a href="https://consultapp.ru/znatoki-yandex-news/">Новый сервис Яндекс.Знатоки. Косвенная реклама для Вашей компании?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как восстановить/скачать удаленный из медиатеки альбом/трек в iTunes?</title>
		<link>https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d0%b2%d0%be%d1%81%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%82%d1%80%d0%b5%d0%ba-itunes/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Wed, 23 Oct 2019 14:21:42 +0000</pubDate>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=983</guid>

					<description><![CDATA[<p>Мало кто знает, что если нажать в Альбоме пункт меню Удалить из Медиатеки &#8212; то альбом исчезнет, но восстановить его просто зайдя в Покупки уже не получится, там его там не будет. При этом &#8212; если перейти в iTunes и найти в поиске этот альбом, он будет отмечен как купленный, но там его тоже закачать&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d0%b2%d0%be%d1%81%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%82%d1%80%d0%b5%d0%ba-itunes/">Как восстановить/скачать удаленный из медиатеки альбом/трек в iTunes?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Мало кто знает, что если нажать в Альбоме пункт меню <strong>Удалить из Медиатеки</strong> &#8212; то альбом исчезнет, но восстановить его просто зайдя в <strong>Покупки</strong> уже не получится, там его там не будет.</p>



<span id="more-983"></span>



<p>При этом &#8212; если перейти в iTunes и найти в поиске этот альбом, он будет отмечен как купленный, но там его тоже закачать не получится. Нет активных кнопок, кроме прослушать отрывок.</p>



<h2 class="wp-block-heading">Так что же делать?</h2>



<p>Как переодически бывает с Apple, задача простая, но странное решение &#8212; надо восстановить сначала объект в <strong>Скрытых покупках</strong>. Заходим в <strong>iTunes&gt;Магазин</strong>, далее в <strong>Учетную запись</strong>, вводим логин/пароль.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="296" src="http://consultapp.ru/wp-content/uploads/2019/10/itunes1-700x296.png" alt="" class="wp-image-985" srcset="https://consultapp.ru/wp-content/uploads/2019/10/itunes1-700x296.png 700w, https://consultapp.ru/wp-content/uploads/2019/10/itunes1-300x127.png 300w, https://consultapp.ru/wp-content/uploads/2019/10/itunes1-768x325.png 768w, https://consultapp.ru/wp-content/uploads/2019/10/itunes1-1280x541.png 1280w, https://consultapp.ru/wp-content/uploads/2019/10/itunes1.png 1440w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<p>На открывшейся странице находим  <strong>iTunes в облаке&gt;Скрытые покупки</strong>, нажимаем на <strong>Управлять.&nbsp;</strong></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="700" height="112" src="http://consultapp.ru/wp-content/uploads/2019/10/itunes2-700x112.png" alt="" class="wp-image-988" srcset="https://consultapp.ru/wp-content/uploads/2019/10/itunes2-700x112.png 700w, https://consultapp.ru/wp-content/uploads/2019/10/itunes2-300x48.png 300w, https://consultapp.ru/wp-content/uploads/2019/10/itunes2-768x123.png 768w, https://consultapp.ru/wp-content/uploads/2019/10/itunes2.png 883w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure>



<p>В результате окажемся на странице <strong>Скрытые покупки</strong>.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="427" height="165" src="http://consultapp.ru/wp-content/uploads/2019/10/itunes3.png" alt="" class="wp-image-986" srcset="https://consultapp.ru/wp-content/uploads/2019/10/itunes3.png 427w, https://consultapp.ru/wp-content/uploads/2019/10/itunes3-300x116.png 300w" sizes="auto, (max-width: 427px) 100vw, 427px" /></figure></div>



<p>Все, бинго, находим нужный нам объект и нажимаем <strong>Показать</strong>, теперь можно перейти в <strong>Медиатеку</strong>, найти там нужный объект и скачать его.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="322" height="283" src="http://consultapp.ru/wp-content/uploads/2019/10/itunes4.png" alt="" class="wp-image-987" srcset="https://consultapp.ru/wp-content/uploads/2019/10/itunes4.png 322w, https://consultapp.ru/wp-content/uploads/2019/10/itunes4-300x264.png 300w" sizes="auto, (max-width: 322px) 100vw, 322px" /></figure></div>



<p></p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d0%b2%d0%be%d1%81%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d1%83%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9-%d1%82%d1%80%d0%b5%d0%ba-itunes/">Как восстановить/скачать удаленный из медиатеки альбом/трек в iTunes?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как записать видео экрана на Мак?</title>
		<link>https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-%d0%b2%d0%b8%d0%b4%d0%b5%d0%be-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-%d0%bd%d0%b0-%d0%bc%d0%b0%d0%ba/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sat, 19 Oct 2019 11:57:58 +0000</pubDate>
				<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=972</guid>

					<description><![CDATA[<p>В MacOS есть встроенный видео плеер, который может в том числе записывать видео с экрана &#8212; QuickTime Player. Нажимаем F4 и открываем программу. Выбираем в меню QuickTime пункт &#171;Файл > Новая запись экрана&#187; . Открывается модуль записи экрана &#8212; нажимаем на красную кнопку. И получаем предложение с выбором двух вариантов записи: Запись полного экрана, тогда&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-%d0%b2%d0%b8%d0%b4%d0%b5%d0%be-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-%d0%bd%d0%b0-%d0%bc%d0%b0%d0%ba/">Как записать видео экрана на Мак?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>В MacOS есть встроенный видео плеер, который может в том числе записывать видео с экрана &#8212; <strong>QuickTime Player</strong>. Нажимаем F4 и открываем программу.</p>



<span id="more-972"></span>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="433" src="http://consultapp.ru/wp-content/uploads/2019/10/screen-video1-700x433.png" alt="" class="wp-image-973" srcset="https://consultapp.ru/wp-content/uploads/2019/10/screen-video1-700x433.png 700w, https://consultapp.ru/wp-content/uploads/2019/10/screen-video1-300x186.png 300w, https://consultapp.ru/wp-content/uploads/2019/10/screen-video1-768x475.png 768w, https://consultapp.ru/wp-content/uploads/2019/10/screen-video1-1280x792.png 1280w, https://consultapp.ru/wp-content/uploads/2019/10/screen-video1.png 1386w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<p>Выбираем в меню QuickTime пункт &#171;<strong>Файл > Новая запись экрана</strong>&#187; .</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="482" height="98" src="http://consultapp.ru/wp-content/uploads/2019/10/screen-video2.png" alt="" class="wp-image-975" srcset="https://consultapp.ru/wp-content/uploads/2019/10/screen-video2.png 482w, https://consultapp.ru/wp-content/uploads/2019/10/screen-video2-300x61.png 300w" sizes="auto, (max-width: 482px) 100vw, 482px" /></figure></div>



<p>Открывается модуль записи экрана &#8212; нажимаем на красную кнопку.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="292" height="106" src="http://consultapp.ru/wp-content/uploads/2019/10/screen-video3.png" alt="" class="wp-image-976"/></figure></div>



<p>И получаем предложение с выбором двух вариантов записи:</p>



<ul class="wp-block-list"><li><strong>Запись полного экрана</strong>, тогда просто кликаем в любое место экрана и запись начинается;</li><li><strong>Запись части экрана</strong>, для этого выделяем нужную область на экране, растягивая квадрат мышкой, после редактирования области по ширине и высоте &#8212; нажимаем кнопку &#171;Начать&#187; в центре.</li></ul>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="73" src="http://consultapp.ru/wp-content/uploads/2019/10/screen-video4-700x73.png" alt="" class="wp-image-977" srcset="https://consultapp.ru/wp-content/uploads/2019/10/screen-video4-700x73.png 700w, https://consultapp.ru/wp-content/uploads/2019/10/screen-video4-300x31.png 300w, https://consultapp.ru/wp-content/uploads/2019/10/screen-video4-768x80.png 768w, https://consultapp.ru/wp-content/uploads/2019/10/screen-video4.png 773w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure></div>



<p>Как утверждаем надпись &#8212; для окончания записи в меню, правой его части, там где дата и тд, нажимаем стоп. Далее просто сохраняем готовый файл через &#171;<strong>Файл &gt; Сохранить&#187;</strong>. Получается записанный видео файл с расширением <strong>&#171;.mov&#187;</strong>.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-%d0%b2%d0%b8%d0%b4%d0%b5%d0%be-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-%d0%bd%d0%b0-%d0%bc%d0%b0%d0%ba/">Как записать видео экрана на Мак?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>mail.ru: Новый удобный раздел для массовой отписки от рассылок</title>
		<link>https://consultapp.ru/mail-ru-upravlenie-podpiskami/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Fri, 13 Sep 2019 13:59:40 +0000</pubDate>
				<category><![CDATA[Разное]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=960</guid>

					<description><![CDATA[<p>На мейле появилась удобная функция, позволяет в одном месте управлять всеми подписками, а точнее просто отписаться от надоедливых ребят и удалить все письма от них. Очевидно, что анализируются все письма и собираются ссылки на отписку, выглядит все это так: Управление подписками Просматриваем все наши подписки, нажимаем &#8212; &#171;Отписаться&#187; и ждем: Мейл подумает, подумает, да и&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/mail-ru-upravlenie-podpiskami/">mail.ru: Новый удобный раздел для массовой отписки от рассылок</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>На мейле появилась удобная функция, позволяет в одном месте управлять всеми подписками, а точнее просто отписаться от надоедливых ребят и удалить все письма от них. </p>



<span id="more-960"></span>



<p>Очевидно, что анализируются все письма и собираются ссылки на отписку, выглядит все это так:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="700" height="322" src="http://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.10.01-700x322.png" alt="" class="wp-image-961" srcset="https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.10.01-700x322.png 700w, https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.10.01-300x138.png 300w, https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.10.01-768x353.png 768w, https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.10.01.png 1134w" sizes="auto, (max-width: 700px) 100vw, 700px" /><figcaption><br></figcaption></figure></div>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="283" height="611" src="http://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-16.47.54.png" alt="" class="wp-image-963" srcset="https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-16.47.54.png 283w, https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-16.47.54-139x300.png 139w" sizes="auto, (max-width: 283px) 100vw, 283px" /></figure></div>



<h3 class="wp-block-heading">Управление подписками</h3>



<p>Просматриваем все наши подписки, нажимаем &#8212; &#171;Отписаться&#187; и ждем:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="700" height="46" src="http://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.09.50-700x46.png" alt="" class="wp-image-962" srcset="https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.09.50-700x46.png 700w, https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.09.50-300x20.png 300w, https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.09.50-768x51.png 768w, https://consultapp.ru/wp-content/uploads/2019/09/Снимок-экрана-2019-09-13-в-15.09.50.png 770w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure>



<p>Мейл подумает, подумает, да и отпишется от выбранных назойливых или не очень товарищей. Ну и все ненужные письма можно удалить разом соответсвенно.</p>



<p>Пользуемся, радуемся более чистому ящику)</p>
<p>Сообщение <a href="https://consultapp.ru/mail-ru-upravlenie-podpiskami/">mail.ru: Новый удобный раздел для массовой отписки от рассылок</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Убрать Yoast Noindex Tag из RSS feed WordPress</title>
		<link>https://consultapp.ru/%d1%83%d0%b1%d1%80%d0%b0%d1%82%d1%8c-yoast-noindex-tag-%d0%b8%d0%b7-rss-feed-wordpress/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 11 Jul 2019 10:25:18 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=942</guid>

					<description><![CDATA[<p>Давно известная проблема, но почему-то до сих пор Yoast не исправил ситуацию. Мешается это например при попытке настроить Яндекс Турбо страницы &#8212; ошибка существования файла фида, при проверке доступности говорится &#8212; файл закрыт тегом &#171;noindex&#187; соответсвенно. Кстати, у нас есть простой бесплатный плагин для быстрого запуска Яндекс Турбо страниц на Вашем сайте на вордпресс &#8212;&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%83%d0%b1%d1%80%d0%b0%d1%82%d1%8c-yoast-noindex-tag-%d0%b8%d0%b7-rss-feed-wordpress/">Убрать Yoast Noindex Tag из RSS feed WordPress</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Давно известная проблема, но почему-то до сих пор Yoast не исправил ситуацию. Мешается это например при попытке настроить Яндекс Турбо страницы &#8212; ошибка существования файла фида, при проверке доступности говорится &#8212; файл закрыт тегом &#171;noindex&#187; соответсвенно. </p>



<span id="more-942"></span>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Кстати, у нас есть <strong>простой бесплатный плагин</strong> для быстрого запуска Яндекс Турбо страниц на Вашем сайте на вордпресс &#8212; <a href="https://wordpress.org/plugins/ca-yaturbo/">https://wordpress.org/plugins/ca-yaturbo/</a>.</p></blockquote>



<p>Итак, наши шаги для исправления ситуации:</p>



<ul class="wp-block-list"><li>Заходим в нашу админку Вордпресс или подключаемся файловым менеджером к серверу;</li><li>Переходим в папку: /wp-content/plugins/wordpress-seo/frontend;</li><li>Редактируем файл “class-frontend.php”, ищем строку:</li></ul>



<pre class="wp-block-code"><code>if ( ( is_feed() || is_robots() ) &amp;&amp; headers_sent() === false ) {</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="700" height="215" src="http://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.03-700x215.png" alt="" class="wp-image-943" srcset="https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.03-700x215.png 700w, https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.03-300x92.png 300w, https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.03-768x236.png 768w, https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.03.png 906w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure>



<ul class="wp-block-list"><li>Изменяем ее на:</li></ul>



<pre class="wp-block-code"><code>if ( is_robots() &amp;&amp; headers_sent() === false ) {</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="700" height="222" src="http://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.04.02-700x222.png" alt="" class="wp-image-944" srcset="https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.04.02-700x222.png 700w, https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.04.02-300x95.png 300w, https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.04.02-768x244.png 768w, https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.04.02.png 907w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure>



<ul class="wp-block-list"><li>Сохраняем, сбрасываем кеши на всякий случай, если подобные плагины установлены. В результате Яндекс и другие поисковики начинают видеть наши фиды.</li></ul>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="700" height="212" src="http://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.19.35-700x212.png" alt="" class="wp-image-945" srcset="https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.19.35-700x212.png 700w, https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.19.35-300x91.png 300w, https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.19.35-768x232.png 768w, https://consultapp.ru/wp-content/uploads/2019/07/Снимок-экрана-2019-07-11-в-13.19.35.png 803w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure>



<p>Так же есть пока не проверенный вариант, можно попробовать добавить <strong>action</strong>, по идее это тоже может сработать, вопрос будет в порядке отработки плагина и кода:</p>



<pre class="wp-block-code"><code>add_action( 'template_redirect', index_follow_rss, 999999 );
function index_follow_rss() {
    if ( is_feed() ) {
        header( 'X-Robots-Tag: index, follow', true );
    }
}</code></pre>
<p>Сообщение <a href="https://consultapp.ru/%d1%83%d0%b1%d1%80%d0%b0%d1%82%d1%8c-yoast-noindex-tag-%d0%b8%d0%b7-rss-feed-wordpress/">Убрать Yoast Noindex Tag из RSS feed WordPress</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Определитель номера от Яндекса</title>
		<link>https://consultapp.ru/%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b8%d1%82%d0%b5%d0%bb%d1%8c-%d0%bd%d0%be%d0%bc%d0%b5%d1%80%d0%b0-%d0%be%d1%82-%d1%8f%d0%bd%d0%b4%d0%b5%d0%ba%d1%81%d0%b0/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sat, 18 May 2019 04:55:21 +0000</pubDate>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=913</guid>

					<description><![CDATA[<p>Номер входящего звонка сравнивается с внутренней базой Яндекса, а также с Яндекс.Справочником, если информация по номеру есть &#8212; будет показано название компании или предполагаемая категория звонка. Вроде ничего необычного, но &#8212; можно пожаловаться на номер, если это спам, а так же отправить корректировку по категории звонка или просто оставить отзыв. Доступен для платформ: iOS &#8212;&#160;&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b8%d1%82%d0%b5%d0%bb%d1%8c-%d0%bd%d0%be%d0%bc%d0%b5%d1%80%d0%b0-%d0%be%d1%82-%d1%8f%d0%bd%d0%b4%d0%b5%d0%ba%d1%81%d0%b0/">Определитель номера от Яндекса</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Номер входящего звонка сравнивается с внутренней базой Яндекса, а также с Яндекс.Справочником, если информация по номеру есть &#8212; будет показано название компании или предполагаемая категория звонка.</p>



<span id="more-913"></span>



<p>Вроде ничего необычного, но &#8212; можно пожаловаться на номер, если это спам, а так же отправить корректировку по категории звонка или просто оставить отзыв.</p>



<h4 class="wp-block-heading">Доступен для платформ:<br></h4>



<ul class="wp-block-list"><li>iOS &#8212;&nbsp; <a href="https://yandex.ru/support/m-yandex/app/callerid-ios.html">оригинальная статья</a>, <a href="https://itunes.apple.com/ru/app/яндекс/id1050704155?mt=8">скачать</a>;</li><li>Android &#8212; <a href="https://yandex.ru/support/m-yandex/app/callerid-android.html">оригинальная статья</a>, <a href="https://mobile.yandex.ru/apps/android/search/">скачать</a>.</li></ul>



<h3 class="wp-block-heading">Включить/отключить определитель номера</h3>



<ul class="wp-block-list"><li>Откройте настройки устройства;</li><li> Выберите пункт Телефон → Блокировка и идентификация вызова;</li><li> В строке Яндекс включите или отключите определитель;</li><li> Оставить отзыв на номер</li></ul>



<h3 class="wp-block-heading">Заметили ошибку или это спам?</h3>



<p>Оставьте отзыв на номер. Сделать это можно в любое удобное время.</p>



<ul class="wp-block-list"><li>Откройте настройки устройства;</li><li>Выберите пункт Телефон → Сообщения спама (SMS/звонки) → Яндекс;</li><li>В открывшемся окне нажмите Включить;</li><li>Можете оставить свой отзыв на звонок</li></ul>



<h3 class="wp-block-heading">Номер Вашей организации?</h3>



<p>Если телефонный номер принадлежит Вашей организации,&nbsp;<a rel="noreferrer noopener" href="https://yandex.ru/support/sprav/add-company/add-org.html" target="_blank">добавьте ее</a>&nbsp;в Яндекс.Справочник.</p>



<p>Чтобы удалить информацию о номере из базы Яндекса, напишите в службу поддержки.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b8%d1%82%d0%b5%d0%bb%d1%8c-%d0%bd%d0%be%d0%bc%d0%b5%d1%80%d0%b0-%d0%be%d1%82-%d1%8f%d0%bd%d0%b4%d0%b5%d0%ba%d1%81%d0%b0/">Определитель номера от Яндекса</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Новый источник мобильного трафика от Яндекса</title>
		<link>https://consultapp.ru/%d0%bd%d0%be%d0%b2%d1%8b%d0%b9-%d0%b8%d1%81%d1%82%d0%be%d1%87%d0%bd%d0%b8%d0%ba-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b3%d0%be-%d1%82%d1%80%d0%b0%d1%84%d0%b8%d0%ba%d0%b0-%d0%be%d1%82/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Fri, 17 May 2019 10:36:14 +0000</pubDate>
				<category><![CDATA[Новости]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=898</guid>

					<description><![CDATA[<p>В&#160;поисковом приложении Яндекса появилось новое место показов на&#160;смартфонах. Все предложения Директа, которые могут быть интересны пользователю, собираются в&#160;единую рекламную ленту. Основное: На эту страницу попадает реклама из Директа; Для попадания рекламы в ленту достаточно иметь кампанию с активными показами в РСЯ; Оплата только за клики по объявлениям. Само попадание в эту ленту ничего не стоит.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bd%d0%be%d0%b2%d1%8b%d0%b9-%d0%b8%d1%81%d1%82%d0%be%d1%87%d0%bd%d0%b8%d0%ba-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b3%d0%be-%d1%82%d1%80%d0%b0%d1%84%d0%b8%d0%ba%d0%b0-%d0%be%d1%82/">Новый источник мобильного трафика от Яндекса</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow"><p>В&nbsp;поисковом приложении Яндекса появилось новое место показов на&nbsp;смартфонах. Все предложения Директа, которые могут быть интересны пользователю, собираются в&nbsp;единую <a href="https://yandex.ru/adv/news/reklamnaya-lenta-direkta-novyy-istochnik-mobilnogo-trafika">рекламную ленту</a>.</p></blockquote>



<span id="more-898"></span>



<h3 class="wp-block-heading">Основное:</h3>



<ul class="wp-block-list"><li>На эту страницу попадает реклама из Директа;</li><li>Для попадания рекламы в ленту достаточно иметь кампанию с активными показами в РСЯ;</li><li>Оплата только за клики по объявлениям. Само попадание в эту ленту ничего не стоит.</li></ul>
<p>Сообщение <a href="https://consultapp.ru/%d0%bd%d0%be%d0%b2%d1%8b%d0%b9-%d0%b8%d1%81%d1%82%d0%be%d1%87%d0%bd%d0%b8%d0%ba-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b3%d0%be-%d1%82%d1%80%d0%b0%d1%84%d0%b8%d0%ba%d0%b0-%d0%be%d1%82/">Новый источник мобильного трафика от Яндекса</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Фавикон быстро и без проблем</title>
		<link>https://consultapp.ru/%d1%84%d0%b0%d0%b2%d0%b8%d0%ba%d0%be%d0%bd-%d0%b1%d1%8b%d1%81%d1%82%d1%80%d0%be-%d0%b8-%d0%b1%d0%b5%d0%b7-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 16 May 2019 07:46:54 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=885</guid>

					<description><![CDATA[<p>Favicon (сокр. от англ. FAVorite ICON — «значок для избранного») — значок веб-сайта или веб-страницы. Отображается во вкладке перед названием страницы и в других элементах интерфейса. Фавикон должен отображаться на всех устройствах красиво, но их слишком много! Каждый айфон, андройд, виндоуз и тд хочет свой формат картинки для закладок, иконок на раб. экран. Генерировать их&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%84%d0%b0%d0%b2%d0%b8%d0%ba%d0%be%d0%bd-%d0%b1%d1%8b%d1%81%d1%82%d1%80%d0%be-%d0%b8-%d0%b1%d0%b5%d0%b7-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc/">Фавикон быстро и без проблем</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Favicon (сокр. от англ. FAVorite ICON — «значок для избранного») — значок веб-сайта или веб-страницы. Отображается во вкладке перед названием страницы и в других элементах интерфейса.</p></blockquote>



<p>Фавикон должен отображаться на всех устройствах красиво, но их слишком много! Каждый айфон, андройд, виндоуз и тд хочет свой формат картинки для закладок, иконок на раб. экран. Генерировать их руками не лучшая идея, в т.ч. и потому, что форматы часто меняются. </p>



<p>Самый простой способ сделать нормальный фавикон, а точнее целый набор под разные устройства — сервис&nbsp;<a href="https://realfavicongenerator.net">https://realfavicongenerator.net</a>, он автоматически генерирует картинки под большинство устройств на основании базового изображения, а также код для вставки этого богатства на сайт. При создании Вам будет предоставлена возможность отредактировать варианты под конкретные устройства &#8212; фон, обрезка и т.п.</p>



<p>Так же на сайте есть возможность быстро проверить Ваш сайт на текущее положение дел с фавиконом, его отображением на разных устройствах и интерфейсах.</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%84%d0%b0%d0%b2%d0%b8%d0%ba%d0%be%d0%bd-%d0%b1%d1%8b%d1%81%d1%82%d1%80%d0%be-%d0%b8-%d0%b1%d0%b5%d0%b7-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc/">Фавикон быстро и без проблем</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Оптимизации конверсий на поиске при ручном управлении ставками в Я.Директе</title>
		<link>https://consultapp.ru/%d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d0%b8-%d0%ba%d0%be%d0%bd%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b9-%d0%bd%d0%b0-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b5-%d0%bf%d1%80%d0%b8-%d1%80/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 16 May 2019 06:14:01 +0000</pubDate>
				<category><![CDATA[Новости]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=875</guid>

					<description><![CDATA[<p>Письмо от Яндекса с новостями по Директу. Во второй половине мая начнется постепенный запуск оптимизации конверсий на поиске при ручном управлении ставками. Сегодня соответствующие изменения отразились в оферте. А в интерфейсе Директа, API и Коммандере во всех кампаниях на поиске название стратегии «Ручное управление» сменилось на «Ручное управление с оптимизацией».Хотим напомнить вам о старте работы алгоритмов и поделиться ответами на частые вопросы, которые мы получили по следам первого анонса.1. Когда начнут работать&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d0%b8-%d0%ba%d0%be%d0%bd%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b9-%d0%bd%d0%b0-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b5-%d0%bf%d1%80%d0%b8-%d1%80/">Оптимизации конверсий на поиске при ручном управлении ставками в Я.Директе</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Письмо от Яндекса с новостями по Директу.</p></blockquote>



<noindex><table class="wp-block-table is-style-stripes"><tbody><tr><td>Во второй половине мая начнется постепенный запуск <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/3/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/adv/news/effektivnost-na-maksimum-bolshe-konversiy-na-poiske-za-prezhniy-byudzhet?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">оптимизации конверсий на поиске</a> при ручном управлении ставками. Сегодня соответствующие изменения отразились в <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/4/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/legal/direct_display_rules/?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">оферте</a>. А в интерфейсе Директа, API и Коммандере во всех кампаниях на поиске название стратегии «Ручное управление» сменилось на «Ручное управление с оптимизацией».Хотим напомнить вам о старте работы алгоритмов и <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/5/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/adv/news/optimizatsiya-konversiy-na-poiske-chastye-voprosy-i-podgotovka-k-zapusku?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">поделиться ответами на частые вопросы</a>, которые мы получили по следам первого анонса.<br><strong>1. Когда начнут работать алгоритмы и как можно оценить эффект от их внедрения?</strong><br>После 15 мая система будет предсказывать вероятность конверсий только для небольшой доли трафика на поиске, понижая или повышая ставки в зависимости от прогноза. Дальше мы будем постепенно расширять зону их действия на поиске, внимательно контролируя результаты.Полностью подвести итоги запуска можно будет не раньше, чем через несколько месяцев, когда алгоритмы заработают на всем трафике.<br><strong>2. На поиске вырастут цены?</strong><br>Нет. Средняя стоимость кликов в ваших рекламных кампаниях не изменится. А вот эффективность кампаний должна вырасти. Цель этого внедрения — привести больше конверсий на тот же бюджет.Что касается цен, то автоматическая корректировка ставок работает и вниз, и вверх: за более целевых пользователей система может торговаться активнее, за менее целевых — снижать ставку. Таким образом ваш средний CPC должен остаться на привычном уровне.Кроме того, на поиске работает модель VCG-аукциона, где списываемые деньги за клик, как правило, гораздо ниже выставленной ставки рекламодателя. Даже если для получения более конверсионного пользователя система применит к ставке повышающий коэффициент, списываемая цена с низкой вероятностью превысит вашу максимальную ставку.<br><strong>3. Как будут работать внешние системы по управлению ставками?</strong><br>Их работе ничего не помешает. Ваш биддер, как и раньше, cможет рассчитывать ставки по ключевым фразам, которые будут лежать в основе управления рекламными кампаниями.В некоторых случаях к ставке может применяться повышающий или понижающий коэффициент, но средняя цена за клик по фразе останется в пределах ваших ограничений и экономика, на которую рассчитывает ваша система управления ставками, продолжит сходиться.Наши алгоритмы оптимизации оперируют сигналами о поведении и интересах аудитории, которые не видит ни одна сторонняя система, и помогают вам сэкономить деньги на отдельных пользователях с меньшей вероятностью конверсии, никак не мешая биддеру в среднем закупать трафик по фразам по нужной вам цене и учитывать ваши цели.<br><strong>4. Почему оптимизация обязательная для всех?</strong><br>По той же причине, по которой мы не могли оставить аукцион второй цены для тех, кто не был готов сразу разобраться в тонкостях VCG-аукциона. Если внедрять новую логику закупок — с учетом эффективности и прогноза вероятности целевых действий — то внедрять для всех, чтобы рекламодатели получали равные преимущества в торгах.Ставки, выставленные вами вручную, продолжают использоваться для управления кампаниями. На некоторых отдельных кликах к ним применится понижающий или повышающий коэффициент, но в целом цены останутся на привычном вам уровне.В качестве альтернативных вариантов управления мы предлагаем использовать автоматические стратегии, которые умеют ограничивать CPC и закупать именно клики.<br><strong>5. Как работает оптимизация, если у меня очень много разных целей на счетчике Метрики? И работает ли она, если Метрики нет на сайте?</strong><br>Система анализирует пользовательские сессии напрямую и ориентируется на характерные полезные действия для вашего типа бизнеса — будь то оформление заказа или, например, просмотр страницы контактов. Разрабатывая технологию, мы научили Директ отличать конверсии от достижения рядовых действий на верхнем уровне воронки. Вы можете продолжать настраивать на сайте любые типы целей, которые вам нужны. Это никак не помешает корректной работе оптимизатора; более того, возможные ошибки в настройке целей на вашем счётчике не повредят работе алгоритмов.Применить автоматическую оптимизацию стоимости клика за более и менее конверсионный трафик можно даже для сайтов, на которых нет Метрики: Директ оперирует агрегированными данными из пользовательского профиля и может спрогнозировать, насколько пользователь заинтересован в покупке, в зависимости от его прошлых поисков и поведения в интернете.<br><strong>6. Какие альтернативы вы предлагаете по управлению рекламой на поиске? И какие у меня есть инструменты по управлению бюджетом?</strong><br>При ручном управлении ставками мы рекомендуем настроить <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/6/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/adv/news/kazhdoy-konversii-svoya-tsennost-upravlenie-klyuchevymi-tselyami-v-direkte?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">ключевые цели</a> и задать их ценность. Так алгоритмы оптимизации будут учитывать именно те целевые действия на сайте, которые вы выбрали сами.Для контроля за CPC в Директе есть стратегия «Средняя цена клика», которая выдерживает заданное среднее значение в течение недели, и «Недельный бюджет: максимум кликов», где можно указать максимальный CPC.Чтобы рекламные кампании работали на окупаемость, мы рекомендуем автоматические стратегии управления ставками: <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/7/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/support/direct/strategies/average-cpa.html?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">«Средняя цена конверсии»</a>, <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/8/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/support/direct/strategies/weekly-budget.html?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">«Недельный бюджет: максимальная конверсия»</a> или <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/9/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/support/direct/strategies/average-roi.html?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">«Средняя рентабельность инвестиций»</a>. Используя автоматические стратегии управления ставками, вы не только освобождаете время, но и получаете ряд важных технологических преимуществ по сравнению с ручным управлением ставками.<br><strong>7. На какую сумму максимально может быть превышена цена клика?</strong><br>Средняя стоимость клика в кампаниях не изменится, а корректировки индивидуальны для каждого рекламодателя. Они зависят от вашего среднего CPA и прогноза вероятности конверсии при каждом показе рекламы. В любом случае, система будет ориентироваться на ваши ставки и другие ограничения в рекламной кампании.<br><strong>8. Я считаю, что для моих кампаний прогноз конверсионности не применим и будет считаться неверно.</strong><br>Прогноз считается полностью индивидуально и учитывает среднюю конверсионность для вашей конкретной рекламной кампании. Даже если кампания имеет какую-то специфику и сильно отличается от других тематикой или поведением пользователей, корректировки применяются только в том случае, если вероятность конверсии значительно выше или ниже ваших же средних показателей в этой кампании.Чтобы сориентировать алгоритмы оптимизации, мы рекомендуем вам настроить <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/10/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/adv/news/kazhdoy-konversii-svoya-tsennost-upravlenie-klyuchevymi-tselyami-v-direkte?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">ключевые цели</a> и задать их ценность. Так алгоритмы оптимизации будут учитывать именно те целевые действия на сайте, которые вы выбрали сами.<br><strong>9. Повлияет ли запуск на средние позиции показа моих объявлений по той или иной фразе?</strong><br>Нет, автоматические корректировки ставок не повлияют на вашу среднюю позицию показов по фразе. Они применяются только для отдельных показов рекламы пользователям, более или менее конверсионным, чем в среднем в вашей кампании.Если вы ещё не настроили <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/11/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/adv/news/kazhdoy-konversii-svoya-tsennost-upravlenie-klyuchevymi-tselyami-v-direkte?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">ключевые цели</a>, рекомендуем вам это сделать. А если у вас появятся дополнительные вопросы, задавайте их <a rel="noreferrer noopener" href="https://click.sender.yandex.ru/l/94629/96356/12/L/SXhjbk9UTXhDRm85TnpzZVVVa2VYUU0rV1ZCMlRBY0pTMWRDV3cxK1hYa0dlWDlmQm50WlZnVUNCMXhsWkVaM2RXSkZkbGRlVFh4aQpmV0o0QldSd2UyWjViREl1SVRSeGVYUnlTRUY4Y1ZGVkV5RnhUR016T1Iwc0xoa0JiVTA1UEFBMlRGY01MVVJ0OjM1NDA6MA%3D%3D/*https://yandex.ru/adv/news/optimizatsiya-konversiy-na-poiske-chastye-voprosy-i-podgotovka-k-zapusku?utm_source=sender&amp;utm_medium=email&amp;utm_campaign=direct-news&amp;utm_content=bidcorrection_94629" target="_blank">в комментариях на сайте,</a> мы обязательно поможем вам разобраться.<br><br>С уважением, <br>команда Яндекс.Директа</td></tr></tbody></table></noindex>



<p></p>
<p>Сообщение <a href="https://consultapp.ru/%d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d0%b8-%d0%ba%d0%be%d0%bd%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b9-%d0%bd%d0%b0-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b5-%d0%bf%d1%80%d0%b8-%d1%80/">Оптимизации конверсий на поиске при ручном управлении ставками в Я.Директе</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Идеология интернет-маркетинга в недвижимости от Яндекса</title>
		<link>https://consultapp.ru/%d0%b8%d0%b4%d0%b5%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d1%8f-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5%d1%82-%d0%bc%d0%b0%d1%80%d0%ba%d0%b5%d1%82%d0%b8%d0%bd%d0%b3%d0%b0-%d0%b2-%d0%bd%d0%b5%d0%b4%d0%b2/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Wed, 15 May 2019 10:58:12 +0000</pubDate>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=871</guid>

					<description><![CDATA[<p>Яндекс выложил ролики об идеологии интернет-маркетинга в Недвижимости. В первой части рассматривают исследование о поведении пользователей, совершающих покупки недвижимости в интернете, и применение этих знаний при выстраивании маркетинговой коммуникации на всех этапах воронки. Во второй части рассказывают о портрете пользователей, интересующихся разными классами недвижимости, и приводят сравнение средней стоимости звонка на поиске и в сетях&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%b8%d0%b4%d0%b5%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d1%8f-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5%d1%82-%d0%bc%d0%b0%d1%80%d0%ba%d0%b5%d1%82%d0%b8%d0%bd%d0%b3%d0%b0-%d0%b2-%d0%bd%d0%b5%d0%b4%d0%b2/">Идеология интернет-маркетинга в недвижимости от Яндекса</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Яндекс выложил ролики об идеологии интернет-маркетинга в Недвижимости. </p></blockquote>



<p>В <a href="https://www.youtube.com/watch?v=t4JCxtdRFx8&amp;feature=youtu.be">первой части</a> рассматривают исследование о поведении пользователей, совершающих покупки недвижимости в интернете, и  применение этих знаний при выстраивании маркетинговой коммуникации на всех этапах воронки.</p>



<p>Во <a href="https://www.youtube.com/watch?v=Z9TSUT6f0LI&amp;feature=youtu.be">второй части</a> рассказывают о портрете пользователей, интересующихся разными классами недвижимости, и приводят сравнение средней стоимости звонка на поиске и в сетях по типам запросов в разных категориях жилья.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%b8%d0%b4%d0%b5%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d1%8f-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5%d1%82-%d0%bc%d0%b0%d1%80%d0%ba%d0%b5%d1%82%d0%b8%d0%bd%d0%b3%d0%b0-%d0%b2-%d0%bd%d0%b5%d0%b4%d0%b2/">Идеология интернет-маркетинга в недвижимости от Яндекса</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Подарок предпринимателям от Яндекса к грядущим праздникам</title>
		<link>https://consultapp.ru/%d0%bf%d0%be%d0%b4%d0%b0%d1%80%d0%be%d0%ba-%d0%bf%d1%80%d0%b5%d0%b4%d0%bf%d1%80%d0%b8%d0%bd%d0%b8%d0%bc%d0%b0%d1%82%d0%b5%d0%bb%d1%8f%d0%bc-%d0%be%d1%82-%d1%8f%d0%bd%d0%b4%d0%b5%d0%ba%d1%81%d0%b0/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Tue, 20 Feb 2018 13:12:54 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=830</guid>

					<description><![CDATA[<p>Яндекс отобрал и сгруппировал самые популярные запросы по теме грядущих праздников для корректировки рекламы. Посмотрите, возможно узнаете что-то новое о том, что и как люди ищут в такие дни! https://goo.gl/NjG4he</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bf%d0%be%d0%b4%d0%b0%d1%80%d0%be%d0%ba-%d0%bf%d1%80%d0%b5%d0%b4%d0%bf%d1%80%d0%b8%d0%bd%d0%b8%d0%bc%d0%b0%d1%82%d0%b5%d0%bb%d1%8f%d0%bc-%d0%be%d1%82-%d1%8f%d0%bd%d0%b4%d0%b5%d0%ba%d1%81%d0%b0/">Подарок предпринимателям от Яндекса к грядущим праздникам</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Яндекс отобрал и сгруппировал самые популярные запросы по теме грядущих праздников для корректировки рекламы. Посмотрите, возможно узнаете что-то новое о том, что и как люди ищут в такие дни!</p>
<p><a href="https://goo.gl/NjG4he">https://goo.gl/NjG4he</a></p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bf%d0%be%d0%b4%d0%b0%d1%80%d0%be%d0%ba-%d0%bf%d1%80%d0%b5%d0%b4%d0%bf%d1%80%d0%b8%d0%bd%d0%b8%d0%bc%d0%b0%d1%82%d0%b5%d0%bb%d1%8f%d0%bc-%d0%be%d1%82-%d1%8f%d0%bd%d0%b4%d0%b5%d0%ba%d1%81%d0%b0/">Подарок предпринимателям от Яндекса к грядущим праздникам</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Яндекс Турбо-страницы &#8212; плагин для WordPress от ConsultApp</title>
		<link>https://consultapp.ru/yandex-turbo-pages-plugin-for-wordpress/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Wed, 13 Dec 2017 11:09:18 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Плагины WP]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=791</guid>

					<description><![CDATA[<p>В процессе внедрения Яндекс Турбо-страниц в сайты на Вордпрес, мы пришли к тому, что лучше создать плагин для работы с ними. Установить плагин Вы можете через административную панель Вордпресс в разделе Плагины или вручную по ссылке &#8212;&#160;. Плагин добавляет отдельный RSS канал с разметкой под Яндекс Турбо-страницы сразу после установки и активации, который можно отдавать&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/yandex-turbo-pages-plugin-for-wordpress/">Яндекс Турбо-страницы &#8212; плагин для WordPress от ConsultApp</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>В процессе внедрения Яндекс Турбо-страниц в сайты на Вордпрес, мы пришли к тому, что лучше создать плагин для работы с ними.</p>
<p><span id="more-791"></span></p>
<blockquote><p>Установить плагин Вы можете через административную панель Вордпресс в разделе Плагины или вручную по ссылке &#8212;&nbsp;		<a href="https://consultapp.ru/go/consultapp-yandex-turbo-pages/">ConsultApp &#8212; Yandex Turbo Pages</a>
		.</p></blockquote>
<p>Плагин добавляет отдельный RSS канал с разметкой под Яндекс Турбо-страницы сразу после установки и активации, который можно <a href="http://consultapp.ru/%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b9-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b8/">отдавать Яндексу в Вебмастере</a> по адресу &#171;http(s)://YOUR_SITE/feed/yaturbo/&#187;.</p>
<p>Разметка соответствует требованиям Яндекса и выдает ошибки при тесте обычными xml валидаторами, тк имеет специфические теги.&nbsp;Проверить то, что создался новый канал вы можете с помощью&nbsp;<a href="https://validator.w3.org/feed/">https://validator.w3.org/feed/</a>. Обращать внимание на ошибки xml не надо.</p>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/12/screenshot-1.png"><img loading="lazy" decoding="async" class="size-large wp-image-798 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/12/screenshot-1-700x287.png" alt="" width="700" height="287" srcset="https://consultapp.ru/wp-content/uploads/2017/12/screenshot-1-700x287.png 700w, https://consultapp.ru/wp-content/uploads/2017/12/screenshot-1-300x123.png 300w, https://consultapp.ru/wp-content/uploads/2017/12/screenshot-1-768x315.png 768w, https://consultapp.ru/wp-content/uploads/2017/12/screenshot-1.png 1189w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></p>
<p>В настройках возможно задание таких параметров, как код Метрики и дополнительные ссылки (блок yandex:related).</p>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/12/screenshot-2.png"><img loading="lazy" decoding="async" class="size-large wp-image-796 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/12/screenshot-2-700x393.png" alt="настройки плагина Yandex Turbo pages от Consultapp" width="700" height="393" srcset="https://consultapp.ru/wp-content/uploads/2017/12/screenshot-2-700x393.png 700w, https://consultapp.ru/wp-content/uploads/2017/12/screenshot-2-300x169.png 300w, https://consultapp.ru/wp-content/uploads/2017/12/screenshot-2-768x432.png 768w, https://consultapp.ru/wp-content/uploads/2017/12/screenshot-2.png 1240w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></p>
<p>В случае возникновения проблем &#8212; <a href="http://consultapp.ru/%d0%b7%d0%b0%d0%b4%d0%b0%d0%b9%d1%82%d0%b5-%d0%b2%d0%be%d0%bf%d1%80%d0%be%d1%81/">напишите нам</a>.</p>
<p>Сообщение <a href="https://consultapp.ru/yandex-turbo-pages-plugin-for-wordpress/">Яндекс Турбо-страницы &#8212; плагин для WordPress от ConsultApp</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SEO-факторы ранжирования: 6 факторов юзабилити</title>
		<link>https://consultapp.ru/6-%d1%81%d0%b5%d0%be-%d1%84%d0%b0%d0%ba%d1%82%d0%be%d1%80%d0%be%d0%b2-%d1%80%d0%b0%d0%bd%d0%b6%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d1%8e%d0%b7%d0%b0%d0%b1%d0%b8%d0%bb%d0%b8%d1%82%d0%b8/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sat, 09 Dec 2017 15:39:30 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=783</guid>

					<description><![CDATA[<p>Юзабилити был и остается мощнейшим инструментом в руках оптимизатора. Создав красивый и удобный дизайн, можно добиться невероятных результатов SEO. Необходимо знать, какие SEO-факторы на это влияют. 6 SEO-факторов юзабилити 1. Скорость загрузки. Отключение ненужных плагинов или упрощение кода &#8212; вот два главных метода в борьбе за скорость. Помочь может включение плагина кеширования, если вы еще&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/6-%d1%81%d0%b5%d0%be-%d1%84%d0%b0%d0%ba%d1%82%d0%be%d1%80%d0%be%d0%b2-%d1%80%d0%b0%d0%bd%d0%b6%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d1%8e%d0%b7%d0%b0%d0%b1%d0%b8%d0%bb%d0%b8%d1%82%d0%b8/">SEO-факторы ранжирования: 6 факторов юзабилити</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Юзабилити был и остается мощнейшим инструментом в руках оптимизатора. Создав красивый и удобный дизайн, можно добиться невероятных результатов SEO. Необходимо знать, какие SEO-факторы на это влияют.</p>
<p><span id="more-783"></span></p>
<h2>6 SEO-факторов юзабилити</h2>
<h3>1. Скорость загрузки.</h3>
<p>Отключение ненужных плагинов или упрощение кода &#8212; вот два главных метода в борьбе за скорость. Помочь может включение плагина кеширования, если вы еще его не установили. Оценить скорость поможет сервис от гугл &#8212; 		<a href="https://consultapp.ru/go/google-page-speed-insights/">Google Page Speed Insights</a>
		.</p>
<h3>2. Количество рекламы.</h3>
<p>Первое, что бросается в глаза читателю &#8212; это реклама. Плохо, если ее много. Есть даже такой фактор юзабилити &#8212; соотношение рекламы с текстом на странице.</p>
<h3>3. Вид рекламы.</h3>
<p>На юзабилити плохо влияет такой SEO фактор: всплывающая реклама. Так что если на вашем сайте имеются различные блоки popup, popunder &#8212; это плохо. От такой навязчивой рекламы нужно отказываться при проектировании сайта.</p>
<h3>4. Наличие страницы 404.</h3>
<p>404 страница возникает, либо должна возникать в том случае, когда на сайте чего-то нет. К примеру, ищет пользователь коляски, и зашел на удаленную ранее страницу. Возникает страница 404 &#8212; &#171;Страница не найдена&#187;. Это важный фактор SEO, не стоит пренебрегать созданием страницы 404.</p>
<h3>5. Мобильность.</h3>
<p>У сайта есть два &#171;выхода&#187;:</p>
<ul>
<li>иметь мобильную версию;</li>
<li>являться адаптивным сайтом (с адаптивным дизайном).</li>
</ul>
<p>Оба варианта обеспечивают читабельность на мобильных устройствах. В первом случае оптимизаторы делают отдельную версию дизайна для мобильных. Во втором &#8212; код сайта сам настраивает вид веб-ресурса, и в зависимости от расширения экрана вид меняется.</p>
<h3>6. Доступность навигации.</h3>
<p>Тот, кто прячет меню кодом джаваскрипт &#8212; плохой оптимизатор. Поисковая система должна видеть, сколько в меню пунктов.</p>
<h2>Итого</h2>
<p>Использование данных правил, применение знаний о 6 сторонах юзабилити &#8212; все это поможет благоустроить сайт и сделать его оптимизированным для поисковых систем.</p>
<p>Важно помимо пользовательских факторов улучшать и документные, делать оптимизированным текст статьи и другие части страницы. Также нужно воздействовать на ссылочные и поведенческие показатели, ведь успех в SEO-продвижении достигается комплексно.</p>
<p>Сообщение <a href="https://consultapp.ru/6-%d1%81%d0%b5%d0%be-%d1%84%d0%b0%d0%ba%d1%82%d0%be%d1%80%d0%be%d0%b2-%d1%80%d0%b0%d0%bd%d0%b6%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d1%8e%d0%b7%d0%b0%d0%b1%d0%b8%d0%bb%d0%b8%d1%82%d0%b8/">SEO-факторы ранжирования: 6 факторов юзабилити</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Турбо-страницы — замена мобильной версии сайта в Яндексе! ч.2 Канал RSS</title>
		<link>https://consultapp.ru/%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%8b-%d1%87-2/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 23 Nov 2017 13:16:51 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=716</guid>

					<description><![CDATA[<p>Если не читали первую статью, то лучше начать с нее &#8212; Турбо-страницы &#8212; замена мобильной версии сайта в Яндексе! Поговорим о самом rss, для начала можете проверить свой канал на ошибки с помощью https://validator.w3.org/feed/.  Если ошибок нет, то Яндекс их добавит). В рекомендациях по настройке канала для прохождения проверок в Вебмастере видим основные моменты: Корневым элементом RSS-файла&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%8b-%d1%87-2/">Турбо-страницы — замена мобильной версии сайта в Яндексе! ч.2 Канал RSS</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Если не читали первую статью, то лучше начать с нее &#8212; <a href="http://consultapp.ru/%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b9-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b8/">Турбо-страницы &#8212; замена мобильной версии сайта в Яндексе!</a></p>
<p>Поговорим о самом rss, для начала можете проверить свой канал на ошибки с помощью <a href="https://validator.w3.org/feed/">https://validator.w3.org/feed/</a>.  Если ошибок нет, то Яндекс их добавит).<span id="more-716"></span></p>
<p>В рекомендациях по настройке канала для прохождения проверок в Вебмастере видим основные моменты:</p>
<ul>
<li>Корневым элементом RSS-файла является rss, атрибут version которого должен иметь значение 2.0.</li>
</ul>
<pre class="pre codeblock doc-c-codeblock doc-i-bem doc-c-monospace hljs vim doc-c-codeblock_js_inited" style="padding-left: 30px;"><code class="xml doc-c-codeblock__code" data-code-language="xml">&lt;rss xmln<span class="hljs-variable">s:yandex</span>=<span class="hljs-string">"http://news.yandex.ru"</span> xmln<span class="hljs-variable">s:media</span>=<span class="hljs-string">"http://search.yahoo.com/mrss/"</span> 
xmln<span class="hljs-variable">s:turbo</span>=<span class="hljs-string">"http://turbo.yandex.ru"</span> <span class="hljs-keyword">version</span>=<span class="hljs-string">"2.0"</span>&gt;</code></pre>
<ul>
<li>Для формирования Турбо-страницы передайте следующие данные:</li>
</ul>
<pre class="pre codeblock doc-c-codeblock doc-i-bem doc-c-monospace hljs xml doc-c-codeblock_js_inited" style="padding-left: 30px;"><code class="xml doc-c-codeblock__code" data-code-language="xml">...
    <span class="hljs-tag">&lt;</span><a class="xref doc-c-link" href="https://yandex.ru/support/webmaster/turbo/feed.html#rss-elements__channel"><span class="hljs-tag"><span class="hljs-name">channel</span></span></a><span class="hljs-tag">&gt;</span><span class="hljs-comment">&lt;!--Информация о сайте-источнике (RSS-канале)--&gt;</span>
        ...
        <span class="hljs-tag">&lt;</span><a class="xref doc-c-link" href="https://yandex.ru/support/webmaster/turbo/feed.html#rss-elements__item"><span class="hljs-tag"><span class="hljs-name">item</span></span></a><span class="hljs-tag"> <span class="hljs-attr">turbo</span>=<span class="hljs-string">"true"</span>&gt;</span><span class="hljs-comment">&lt;!--Информация о странице--&gt;</span>
            ...
            <span class="hljs-tag">&lt;</span><a class="xref doc-c-link" href="https://yandex.ru/support/webmaster/turbo/feed.html#rss-elements__turbo-content-details"><span class="hljs-tag"><span class="hljs-name">turbo:content</span></span></a><span class="hljs-tag">&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-name">turbo:content</span>&gt;</span><span class="hljs-comment">&lt;!--Содержание страницы--&gt;</span>
            ...
        <span class="hljs-tag">&lt;/<span class="hljs-name">item</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">channel</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">rss</span>&gt;</span></code></pre>
<p>После внесения таких изменений в шаблон &#8212; валидатор будет выдавать ошибки, зато Яндекс радостно сообщит:<br />
<a href="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-проверка-вебмастер.png"><img loading="lazy" decoding="async" class="size-large wp-image-717 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-проверка-вебмастер-700x84.png" alt="проверка вебмастер" width="700" height="84" srcset="https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-проверка-вебмастер-700x84.png 700w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-проверка-вебмастер-300x36.png 300w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-проверка-вебмастер-768x92.png 768w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-проверка-вебмастер.png 1096w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></p>
<h2>Хорошее решение</h2>
<p>На наш взгляд, хорошим решением в данном случае является создание отдельного rss канала под Яндекс страницы с соблюдением его требований. Берем пример кода с сайта и создаем на его основе шаблон для нашей feed-ленты. При этом основной канал остается и соответсвует мировым стандартам (если нет, то конечно исправляем ошибки и там).</p>
<h2>Решение для WordPress</h2>
<p>Как видно из принтскринов &#8212; все описанные в статьях работы были проведены на сайте consultapp.ru, решение есть в готовом виде и <strong>может быть внедрено у Вас</strong>, внедрение мы видим так:</p>
<ol>
<li>Подключаем Вебмастер (если нет);</li>
<li>Создаем отдельный канал rss;</li>
<li>Создаем шаблон под канал rss;</li>
<li>Настраиваем турбо-страницы в Вебмастере.</li>
</ol>
<p>Если у Вас есть вопросы &#8212; <a href="http://consultapp.ru/%d0%b7%d0%b0%d0%b4%d0%b0%d0%b9%d1%82%d0%b5-%d0%b2%d0%be%d0%bf%d1%80%d0%be%d1%81/">задайте их нам</a>.</p>
<h2>Итог</h2>
<p>После всех работ, можно радостно увидеть результат:</p>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-итого.png"><img loading="lazy" decoding="async" class="size-large wp-image-718 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-итого-700x575.png" alt="" width="700" height="575" srcset="https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-итого-700x575.png 700w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-итого-300x247.png 300w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-итого-768x631.png 768w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-2-итого.png 791w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></p>
<p>Плагин для работы с Турбо-страницами на Вордпресс &#8212; <a href="http://consultapp.ru/yandex-turbo-pages-plugin-for-wordpress/">Yandex Turbo Pages plugin от ConsultApp</a></p>
<p>Сообщение <a href="https://consultapp.ru/%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%8b-%d1%87-2/">Турбо-страницы — замена мобильной версии сайта в Яндексе! ч.2 Канал RSS</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Турбо-страницы &#8212; замена мобильной версии сайта в Яндексе! ч.1</title>
		<link>https://consultapp.ru/%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b9-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b8/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Wed, 22 Nov 2017 15:48:59 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=696</guid>

					<description><![CDATA[<p>С недавних пор в Я.Вебмастере появилась возможность подключения — лёгкие версии веб-страниц, которые быстро открываются на мобильных устройствах, а также ускоряет загрузку сайтов в Яндекс.Браузере. Получается, что это замена мобильной версии сайта. Что такое Турбо-страницы? У Яндекса читаем, что эти страницы формируются на основе контента сайта и технологий Яндекса по единому шаблону: логотип сайта; иллюстрация; полный текст страницы;&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b9-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b8/">Турбо-страницы &#8212; замена мобильной версии сайта в Яндексе! ч.1</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>С недавних пор в Я.Вебмастере появилась возможность подключения 		<a href="https://consultapp.ru/go/%d1%8f%d0%bd%d0%b4%d0%b5%d0%ba%d1%81-%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%8b/">Яндекс.Турбо-страницы</a>
		 — лёгкие версии <strong>веб-</strong><b>страниц</b>, которые быстро открываются на мобильных устройствах, а также ускоряет загрузку сайтов в Яндекс.Браузере. Получается, что это замена мобильной версии сайта.</p>
<p><span id="more-696"></span></p>
<h2 class="content__title">Что такое Турбо-страницы?</h2>
<p>У Яндекса читаем, что эти страницы формируются на основе контента сайта и технологий Яндекса по единому шаблону:</p>
<ol>
<li>логотип сайта;</li>
<li>иллюстрация;</li>
<li>полный текст страницы;</li>
<li>рекламный блок;</li>
<li>дополнительные материалы.</li>
</ol>
<p>Они быстро загружаются на смартфонах с медленным или нестабильным интернетом. В выдаче Турбо-страницы помечаются пиктограммой в виде ракеты. В целом, это rss &#8212; только страницы)</p>
<h2>Зачем это владельцам сайтов?</h2>
<p>		<a href="https://consultapp.ru/go/%d1%8f%d0%bd%d0%b4%d0%b5%d0%ba%d1%81-%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%8b/">Читаем в справке:</a>
		</p>
<div class="product-platforms__data">
<div class="product-platforms__column">
<ul>
<li class="product-platforms__column-title">При переходах с мобильных устройств уменьшаются потери трафика и растет число показов рекламы;</li>
<li>Снижается нагрузка на ваши серверы — для создания и хранения Турбо-страниц мы используем собственную сеть доставки контента;</li>
<li>Рост популярности Турбо-страниц у пользователей положительно влияет на посещаемость сайта.</li>
</ul>
<p>Надо пробовать!</p>
<h2>Как настроить Турбо-страницы?</h2>
<p>Заходим в Вебмастер -&gt; Информация о сайте -&gt; Турбо-страницы, <del>читаем мануал)</del> заполяем все попорядку.</p>
</div>
<h3>Добавить RSS-канал</h3>
<p>Вписываем адрес нашего RSS канала и ждем проверку, если есть ошибки &#8212; исправляем и повторяем.</p>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал.png"><img loading="lazy" decoding="async" class="size-full wp-image-702 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал.png" alt="турбо-страницы-Добавить RSS-канал" width="544" height="87" srcset="https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал.png 544w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал-300x48.png 300w" sizes="auto, (max-width: 544px) 100vw, 544px" /></a><a href="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал-проверка.png"><img loading="lazy" decoding="async" class="size-large wp-image-704 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал-проверка-700x82.png" alt="турбо страницы Добавить RSS канал проверка" width="700" height="82" srcset="https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал-проверка-700x82.png 700w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал-проверка-300x35.png 300w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал-проверка-768x90.png 768w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Добавить-RSS-канал-проверка.png 1172w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></p>
<h3 class="content__title content__title_level_2">Шапка страницы</h3>
<p>На выбор 3 варианта:</p>
<ul>
<li>Без логотипа. Только название сайта<a href="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-шапка-страницы-ссылка.png"><img loading="lazy" decoding="async" class="size-large wp-image-697 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-шапка-страницы-ссылка-700x297.png" alt="турбо-страницы-шапка-страницы-ссылка" width="700" height="297" srcset="https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-шапка-страницы-ссылка-700x297.png 700w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-шапка-страницы-ссылка-300x127.png 300w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-шапка-страницы-ссылка.png 718w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></li>
<li>Квадратный + Название сайта<a href="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название.png"><img loading="lazy" decoding="async" class="size-large wp-image-699 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название-700x279.png" alt="турбо-страницы-Шапка-страницы-квадрат-название" width="700" height="279" srcset="https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название-700x279.png 700w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название-300x120.png 300w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название.png 732w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></li>
<li>Прямоугольный<a href="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название.png"><img loading="lazy" decoding="async" class="size-large wp-image-699 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название-700x279.png" alt="турбо-страницы-Шапка-страницы-квадрат-название" width="700" height="279" srcset="https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название-700x279.png 700w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название-300x120.png 300w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-Шапка-страницы-квадрат-название.png 732w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></li>
</ul>
<h3 class="content__title content__title_level_2">Счетчики</h3>
<p>Добавляем сюда счетчики, которые хотим использовать для статистики, Яндекс говорит, что собрал самые хорошие!</p>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-счетчики.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-700" src="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-счетчики.png" alt="турбо-страницы-счетчики" width="387" height="314" srcset="https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-счетчики.png 387w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-счетчики-300x243.png 300w" sizes="auto, (max-width: 387px) 100vw, 387px" /></a></p>
<h3>Реклама</h3>
<p>Так как они понимают, что без возможности монетизации их сервисом не будут пользоваться крупные ребята, есть позможность добавить отображение для:</p>
<ul>
<li><a class="link link_theme_normal i-bem link_js_inited" href="https://yandex.ru/support/partner2/mobile/turbo-pages.html" target="_blank" rel="noopener">Рекламной сети Яндекса</a> &#8212; ID блока для Турбо-страниц;</li>
<li><a class="link link_theme_normal i-bem link_js_inited" href="https://sites.help.adfox.ru/page/225/" target="_blank" rel="noopener">ADFOX</a> &#8212; Код площадки для Турбо-страниц.</li>
</ul>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-реклама.png"><img loading="lazy" decoding="async" class="size-large wp-image-701 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-реклама-700x269.png" alt="турбо-страницы-реклама" width="700" height="269" srcset="https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-реклама-700x269.png 700w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-реклама-300x115.png 300w, https://consultapp.ru/wp-content/uploads/2017/11/турбо-страницы-реклама.png 746w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></p>
<p>Продолжение в статье &#8212; <a href="/турбо-страницы-ч-2/">Турбо-страницы — замена мобильной версии сайта в Яндексе! ч.2 Канал RSS</a></p>
<p>Плагин для работы с Турбо-страницами на Вордпресс &#8212; <a href="http://consultapp.ru/yandex-turbo-pages-plugin-for-wordpress/">Yandex Turbo Pages plugin от ConsultApp</a></p>
</div>
<p>Сообщение <a href="https://consultapp.ru/%d1%82%d1%83%d1%80%d0%b1%d0%be-%d1%81%d1%82%d1%80-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b0-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b9-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b8/">Турбо-страницы &#8212; замена мобильной версии сайта в Яндексе! ч.1</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Сайты-аффилиаты: Что это? Как не попасть под фильтр?</title>
		<link>https://consultapp.ru/%d1%81%d0%b0%d0%b9%d1%82%d1%8b-%d0%b0%d1%84%d1%84%d0%b8%d0%bb%d0%b8%d0%b0%d1%82%d1%8b/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Mon, 13 Nov 2017 11:08:01 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=664</guid>

					<description><![CDATA[<p>Сайты-аффилиаты — группа ресурсов одного владельца и одной тематики, направленные на монополизацию первой страницы результатов поиска. Аффилиат-фильтр — фильтр, который сильно занижает позиции всех сайтов группы аффилиатов, за исключением наиболее релевантного. Чаще всего данный фильтр накладывается автоматически. Но возможно наложение и в ручном режиме после жалобы конкурентов. По каким критериям поисковая система осуществляет поиск аффилиатов:&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%81%d0%b0%d0%b9%d1%82%d1%8b-%d0%b0%d1%84%d1%84%d0%b8%d0%bb%d0%b8%d0%b0%d1%82%d1%8b/">Сайты-аффилиаты: Что это? Как не попасть под фильтр?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>Сайты-аффилиаты</strong> — группа ресурсов одного владельца и одной тематики, направленные на монополизацию первой страницы результатов поиска.<span id="more-664"></span></p>
<p><strong>Аффилиат-фильтр</strong> — фильтр, который сильно занижает позиции всех сайтов группы аффилиатов, за исключением наиболее релевантного.</p>
<p>Чаще всего данный фильтр накладывается автоматически. Но возможно наложение и в ручном режиме после жалобы конкурентов.</p>
<h2>По каким критериям поисковая система осуществляет поиск аффилиатов:</h2>
<ol>
<li>Одинаковые контактные данные на сайтах (телефон, email, название компании);</li>
<li>Схожесть доменных имен, названий компаний, логотипов;</li>
<li>Скопированная или похожая информация на разных сайтах;</li>
<li>Схожесть дизайна или структуры сайта;</li>
<li>Одинаковый каталог услуг или товаров;</li>
<li>Один прайс-лист;</li>
<li>Один хостинг;</li>
<li>Наличие комбинированных данных с разных ресурсов (например, указан адрес, встречающийся на одном сайте, а телефон — на другом);</li>
<li>Переадресация телефонного звонка с разных номеров на одну компанию (выявляется при ручной проверке);</li>
<li>Внимание! В этот момент они уже придумывают что-то новое.</li>
</ol>
<p>Поводом для того, чтобы система тщательно проверила сайты на наличие аффилиатов, могут быть пересекающиеся аккаунты систем статистики (например, в Яндекс.Метрике), размещения контекстной рекламы (Яндекс. Директ), вспомогательных инструментов (Яндекс.Вебмастер).</p>
<p>Иногда поисковая система может принять за аффилиаты неоптимизированные сайты, где некорректно настроен редирект, либо сайты одной компании различной тематики, где дублируется одна и та же общая информация (к примеру, контактные данные).</p>
<p>Если ваш сайт попал под аффилиат-фильтр Яндекса, то на возвращение в ТОП потребуется несколько месяцев и частая переписка со службой поддержки поисковика.</p>
<h2>Как не попасть под фильтр?</h2>
<p>Чтобы не попасть под этот фильтр, следует соблюдать следующие правила:</p>
<ol>
<li>Закрыть сайты-аффилиаты от индексации или сделать их неосновными зеркалами продвигаемого ресурса;</li>
<li>Изменить один из аффилиатов так, чтобы сайты относились к разным направлениям деятельности и продвигались по разным запросам.</li>
</ol>
<p>Выбор одного из вышеперечисленных вариантов зависит от многих факторов: ограничений на сайте, возможностей SEO-специалиста, требований владельца ресурса.</p>
<h2>Вывод</h2>
<p>Если вы собираетесь создать одну или несколько копий сайта, перед тем как проводить их внутреннюю оптимизацию и начинать продвижение, убедитесь, что все возможные причины аффилированности сайтов устранены. А еще лучше — не создавайте клонов. Сайтам, не нарушающим требования поисковых систем, санкции не страшны.</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%81%d0%b0%d0%b9%d1%82%d1%8b-%d0%b0%d1%84%d1%84%d0%b8%d0%bb%d0%b8%d0%b0%d1%82%d1%8b/">Сайты-аффилиаты: Что это? Как не попасть под фильтр?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WebArchive Folderizer: Как распаковать веб-архив Safari?</title>
		<link>https://consultapp.ru/webarchive-folderizer-%d1%80%d0%b0%d1%81%d0%bf%d0%b0%d0%ba%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d0%b2%d0%b5%d0%b1-%d0%b0%d1%80%d1%85%d0%b8%d0%b2-safari/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Tue, 07 Nov 2017 17:02:05 +0000</pubDate>
				<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Полезные программы]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=618</guid>

					<description><![CDATA[<p>Safari сохраняет веб-страницы со всеми файлами (графикой, стилями, скриптами и т. д.) в виде одного файла формата &#8212; webarchive. Это не всегда удобно, особенно, если Вы сохранили страницу с целью обработки содержимого. Хорошим решением оказалась программа WebArchive Folderizer, которая все составляющие «веб-архива» сохраняет в виде отдельных файлов, с сохранением структуры каталогов оригинальной веб-страницы. Для обработки&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/webarchive-folderizer-%d1%80%d0%b0%d1%81%d0%bf%d0%b0%d0%ba%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d0%b2%d0%b5%d0%b1-%d0%b0%d1%80%d1%85%d0%b8%d0%b2-safari/">WebArchive Folderizer: Как распаковать веб-архив Safari?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Safari сохраняет веб-страницы со всеми файлами (графикой, стилями, скриптами и т. д.) в виде одного файла формата &#8212; webarchive. Это не всегда удобно, особенно, если Вы сохранили страницу с целью обработки содержимого. <br>Хорошим решением оказалась программа WebArchive Folderizer, которая все составляющие «веб-архива» сохраняет в виде отдельных файлов, с сохранением структуры каталогов оригинальной веб-страницы. Для обработки достаточно перетащить вебархив в рабочую область программы — результат сохраняется в виде папки с названием вебархива в том же каталоге.</p>



<span id="more-618"></span>
<p>Сообщение <a href="https://consultapp.ru/webarchive-folderizer-%d1%80%d0%b0%d1%81%d0%bf%d0%b0%d0%ba%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d0%b2%d0%b5%d0%b1-%d0%b0%d1%80%d1%85%d0%b8%d0%b2-safari/">WebArchive Folderizer: Как распаковать веб-архив Safari?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как включить кеш браузера для сайта в .htaccess?</title>
		<link>https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d0%b2%d0%ba%d0%bb%d1%8e%d1%87%d0%b8%d1%82%d1%8c-%d0%ba%d0%b5%d1%88-%d0%b1%d1%80%d0%b0%d1%83%d0%b7%d0%b5%d1%80%d0%b0-%d0%b2-htaccess/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 02 Nov 2017 09:57:33 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=602</guid>

					<description><![CDATA[<p>Часто в рекомендация по оптимизации встречается совет по включению кеша браузера для сайта (например в Google Pagespeed). Благодаря кешированию пользователи, повторно посещающие сайт, тратят меньше времени на загрузку страниц. Кеширование должно применяться ко всем кешируемым статическим ресурсам, а не только к некоторым из них. Кешируемые ресурсы включают файлы JavaScript и CSS, графические и другие файлы&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d0%b2%d0%ba%d0%bb%d1%8e%d1%87%d0%b8%d1%82%d1%8c-%d0%ba%d0%b5%d1%88-%d0%b1%d1%80%d0%b0%d1%83%d0%b7%d0%b5%d1%80%d0%b0-%d0%b2-htaccess/">Как включить кеш браузера для сайта в .htaccess?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Часто в рекомендация по оптимизации встречается совет по включению кеша браузера для сайта (например в <a href="http://consultapp.ru/%d0%be%d1%86%d0%b5%d0%bd%d0%ba%d0%b0-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d0%b8-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b8-%d1%81%d0%b0%d0%b9%d1%82%d0%b0/">Google Pagespeed</a>). Благодаря кешированию пользователи, повторно посещающие сайт, тратят меньше времени на загрузку страниц.</p>
<p><span id="more-602"></span></p>
<p>Кеширование должно применяться ко всем кешируемым статическим ресурсам, а не только к некоторым из них. Кешируемые ресурсы включают файлы JavaScript и CSS, графические и другие файлы (файлы PDF, мультимедиа и т. д.).</p>
<p>Для включения кеширования необходимо в файл .htaccess добавить следующие строки:<br />
<code># кеш браузера<br />
&lt;ifModule mod_expires.c&gt;<br />
ExpiresActive On<br />
#по умолчанию кеш в 5 секунд<br />
ExpiresDefault "access plus 5 seconds"<br />
# по типам файлов<br />
ExpiresByType text/html "access plus 15 min"<br />
ExpiresByType image/x-icon "access plus 7 day"<br />
ExpiresByType image/jpeg "access plus 7 day"<br />
ExpiresByType image/png "access plus 7 day"<br />
ExpiresByType image/gif "access plus 7 day"<br />
ExpiresByType application/x-shockwave-flash "access plus 7 day"<br />
ExpiresByType text/css "access plus 7 day"<br />
ExpiresByType text/javascript "access plus 7 day"<br />
ExpiresByType application/javascript "access plus 7 day"<br />
ExpiresByType application/x-javascript "access plus 7 day"<br />
ExpiresByType application/xhtml+xml "access plus 7 day"<br />
# нестандартные шрифты<br />
ExpiresByType application/x-font-ttf "access plus 1 month"<br />
ExpiresByType font/opentype "access plus 1 month"<br />
ExpiresByType application/x-font-woff "access plus 1 month"<br />
ExpiresByType image/svg+xml "access plus 1 month"<br />
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"<br />
</code><br />
Естественно, что время кеширования подбирается под поставленные задачи. Такой код устраивает тот же гугл, тк если указать слишком короткие интервалы, он все-равно будет настаивать на включении кеширования, хотя оно будет уже работать.</p>
<p>Возможно указание следующих временных интервалов:</p>
<ul>
<li>month</li>
<li>weeks</li>
<li>days</li>
<li>minutes</li>
<li>seconds</li>
</ul>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d0%b2%d0%ba%d0%bb%d1%8e%d1%87%d0%b8%d1%82%d1%8c-%d0%ba%d0%b5%d1%88-%d0%b1%d1%80%d0%b0%d1%83%d0%b7%d0%b5%d1%80%d0%b0-%d0%b2-htaccess/">Как включить кеш браузера для сайта в .htaccess?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Сжатие изображений JPEG, PNG на MacOS</title>
		<link>https://consultapp.ru/%d1%81%d0%b6%d0%b0%d1%82%d0%b8%d0%b5-%d0%b8%d0%b7%d0%be%d0%b1%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-imageoptim-%d0%bd%d0%b0-macos/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Tue, 24 Oct 2017 12:25:05 +0000</pubDate>
				<category><![CDATA[MacOS]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Полезные программы]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=563</guid>

					<description><![CDATA[<p>Часто встает вопрос сжатия изображений, в том числе для сайта, тк обычно материалы сбрасываются заказчиком в виде тяжеленных фотографий. Программа ImageOptim &#8212; очень удобный способ сжатия изображений оффлайн на Мак. Важно в нем то, что сжатые изображения сразу заменяют оригинал, не меняя имени файла, что удобно при обработке большого количества изображений например для сайтов. А&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%81%d0%b6%d0%b0%d1%82%d0%b8%d0%b5-%d0%b8%d0%b7%d0%be%d0%b1%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-imageoptim-%d0%bd%d0%b0-macos/">Сжатие изображений JPEG, PNG на MacOS</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Часто встает вопрос сжатия изображений, в том числе для сайта, тк обычно материалы сбрасываются заказчиком в виде тяжеленных фотографий. Программа ImageOptim &#8212; очень удобный способ сжатия изображений оффлайн на Мак.<span id="more-563"></span></p>
<p>Важно в нем то, что сжатые изображения сразу заменяют оригинал, не меняя имени файла, что удобно при обработке большого количества изображений например для сайтов. А также обладает минималистичным дизайном, который служит только одной функции &#8212; быстро обработать файлы.&nbsp;Данная программа способна работать и с PNG изображениями, а не только JPG. Что является ее большим плюсом.</p>
<p><figure id="attachment_565" aria-describedby="caption-attachment-565" style="width: 578px" class="wp-caption aligncenter"><a href="http://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-1.png"><img loading="lazy" decoding="async" class="wp-image-565 size-full" src="http://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-1.png" alt="ImageOptim сжатие изображений на Мак" width="578" height="320" srcset="https://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-1.png 578w, https://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-1-300x166.png 300w" sizes="auto, (max-width: 578px) 100vw, 578px" /></a><figcaption id="caption-attachment-565" class="wp-caption-text">Рис. 1. ImageOptim &#8212; сжатие изображений на Мак.</figcaption></figure></p>
<p>Для сжатия изображений достаточно перетянуть их в окно программы или добавить с помощью «+». Так же возможно перетянуть в программу целые папки, при этом вложенность не изменится. Сразу после этого начинается обработка и сохранение результатов (<strong>Внимание! Исходные фалы будут перезаписаны.</strong>).</p>
<p>Программа не содержит большого количества настроек и они все понятны:</p>
<ul>
<li>Основные &#8212; выбираем способы сжатия и удаляемые метаданные;
<p><figure id="attachment_568" aria-describedby="caption-attachment-568" style="width: 665px" class="wp-caption aligncenter"><a href="http://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-1.png"><img loading="lazy" decoding="async" class="size-full wp-image-568" src="http://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-1.png" alt="ImageOptim сжатие изображений на Мак - настройки - Основные" width="665" height="398" srcset="https://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-1.png 665w, https://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-1-300x180.png 300w" sizes="auto, (max-width: 665px) 100vw, 665px" /></a><figcaption id="caption-attachment-568" class="wp-caption-text">Рис. 2. Основные.</figcaption></figure></li>
<li>Качество &#8212; выбираем выходное качество, чем больше ухудшаем, тем меньше размер файла. 80-90% от исходного качества практически не видны глазу, а размер файлов уменьшается;
<p><figure id="attachment_567" aria-describedby="caption-attachment-567" style="width: 664px" class="wp-caption aligncenter"><a href="http://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-2.png"><img loading="lazy" decoding="async" class="size-full wp-image-567" src="http://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-2.png" alt="ImageOptim сжатие изображений на Мак - настройки - Качество" width="664" height="398" srcset="https://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-2.png 664w, https://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-2-300x180.png 300w" sizes="auto, (max-width: 664px) 100vw, 664px" /></a><figcaption id="caption-attachment-567" class="wp-caption-text">Рис. 3. Качество.</figcaption></figure></li>
<li>Скорость оптимизации &#8212; настройка абсолютно бесполезна, в челом программа работает достаточно быстро и у меня стоит по-умолчанию.</li>
</ul>
<p><figure id="attachment_566" aria-describedby="caption-attachment-566" style="width: 663px" class="wp-caption aligncenter"><a href="http://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-3.png"><img loading="lazy" decoding="async" class="size-full wp-image-566" src="http://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-3.png" alt="ImageOptim сжатие изображений на Мак - настройки - Скорость оптимизации" width="663" height="398" srcset="https://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-3.png 663w, https://consultapp.ru/wp-content/uploads/2017/10/image-optim-mac-os-nastroyki-3-300x180.png 300w" sizes="auto, (max-width: 663px) 100vw, 663px" /></a><figcaption id="caption-attachment-566" class="wp-caption-text">Рис. 4. Скорость оптимизации.</figcaption></figure></p>
<p>&nbsp;</p>
<h3>Ответы на частые вопросы по работе программы от разработчиков</h3>
<h4>Чем ImageOptim отличается от TinyPNG, MozJPEG или Guetzli?</h4>
<p>Вы можете получить то же самое сжатие или улучшить его, если включите параметр минимизации Lossy в настройках ImageOptim.</p>
<p>Такие инструменты, как ImageAlpha / pngquant / TinyPNG / JPEGMini / MozJPEG, делают файлы меньше, используя сжатие с потерями, что снижает качество изображения, которое ImageOptim не делает по умолчанию, но может, если вы его разрешите.</p>
<h4>Могу ли я сохранить встроенную информацию об авторских правах, информацию о камере?</h4>
<p>Да. Снимите флажок «Сбрасывать метаданные JPEG» в «Настройках».</p>
<h4>Файлы PNG обрабатываются медленно. Как я могу сделать это быстрее?</h4>
<p>В настройках снимите флажок PNGOUT и Zopfli. Без этих инструментов оптимизация будет работать намного быстрее, но будет немного менее эффективной.</p>
<h4>Будет ли ImageOptim в App Store?</h4>
<p>Нет, и, пожалуйста, остерегайтесь подделок в App Store! Apple уже продала три экземпляра.</p>
<p>ImageOptim предоставляется бесплатно на условиях, которые в основном говорят: «Вы можете делать все, что хотите, кроме того, что освобождаете эту свободу от других». Apple не допускает таких разрешительных терминов. Apple требует, чтобы все пользователи App Store принимали DRM (защиту от копирования) и юридические ограничения в EULA iTunes.</p>
<p>Вы можете получить ImageOptim без DRM. Его лицензия позволяет вам делиться ею, изменять ее, использовать ее в любой стране мира &#8212; даже продать ее &#8212; если вы не запретите кому-либо еще делать то же самое.</p>
<h2>Где скачать ImageOptim</h2>
<p>Программа бесплатная и доступна для скачивания на <a href="http://consultapp.ru/go/imageoptim-downloadpage/">сайте разработчиков</a>.</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%81%d0%b6%d0%b0%d1%82%d0%b8%d0%b5-%d0%b8%d0%b7%d0%be%d0%b1%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-imageoptim-%d0%bd%d0%b0-macos/">Сжатие изображений JPEG, PNG на MacOS</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Получение лицензии не ПРОФ конфигурации 1С на Мак ОС</title>
		<link>https://consultapp.ru/%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bb%d0%b8%d1%86%d0%b5%d0%bd%d0%b7%d0%b8%d0%b8-%d0%bd%d0%b5-%d0%bf%d1%80%d0%be%d1%84-1%d1%81-%d0%bd%d0%b0-%d0%bc%d0%b0%d0%ba-%d0%be%d1%81/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sun, 03 Sep 2017 13:59:05 +0000</pubDate>
				<category><![CDATA[1С]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=509</guid>

					<description><![CDATA[<p>Недавно столкнулся с проблемой получения лицензии для 1С конфигурации на яблоке. При попытке получения лицензии выдается ошибка: &#171;Ошибка ввода пинкода. Пин-код не укомплектован&#187;. В чем же дело? Суть в том, что платформа запрашивает пин-код для ПРОФ версий, состоящий из 15 цифр (5 групп по 3 цифры). А пин других версий состоит из 16 цифр, соответственно форма&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bb%d0%b8%d1%86%d0%b5%d0%bd%d0%b7%d0%b8%d0%b8-%d0%bd%d0%b5-%d0%bf%d1%80%d0%be%d1%84-1%d1%81-%d0%bd%d0%b0-%d0%bc%d0%b0%d0%ba-%d0%be%d1%81/">Получение лицензии не ПРОФ конфигурации 1С на Мак ОС</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Недавно столкнулся с проблемой получения лицензии для 1С конфигурации на яблоке. При попытке получения лицензии выдается ошибка: &#171;Ошибка ввода пинкода. Пин-код не укомплектован&#187;. В чем же дело?<br />
<span id="more-509"></span><br />
Суть в том, что платформа запрашивает пин-код для ПРОФ версий, состоящий из 15 цифр (5 групп по 3 цифры). А пин других версий состоит из 16 цифр, соответственно форма обрезает один символ и выдает ошибку.</p>
<h2>Решение</h2>
<ol>
<li>Для начала надо получить саму конфигурацию, а так как часто она при покупке лицензии спрятана в exe установщике, то нужен компьютер на Windows, где запускаем установщик и устанавливаем все по умолчанию, если есть платформа 1С, то можно только конфигурацию;</li>
<li>В папке %AppData%\1C\1cv8\tmplts\1c ищем папку с нашей конфигурацией и копируем ее на мак например в документы;</li>
<li>На маке запускаем 1С предприятие и нажимаем кнопку &#171;Настройка&#187;, в &#171;Каталоги шаблонов конфигураций и обновлений&#187; добавляем путь к нашей конфигурации, нажимаем &#171;ОК&#187;;<img loading="lazy" decoding="async" class="size-full wp-image-512 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.08.55.png" alt="" width="367" height="515" srcset="https://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.08.55.png 367w, https://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.08.55-214x300.png 214w" sizes="auto, (max-width: 367px) 100vw, 367px" /></li>
<li>Закрываем платформу;</li>
<li>Запускаем 1С с администраторскими правами, для этого в терминале пишем: <code>sudo /opt/1cv8/8.3.9.2170/1cv8</code>, вводим пароль администратора;</li>
<li>Создаем новую конфигурацию из загруженного нами шаблона:<a href="http://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.20.23.png"><img loading="lazy" decoding="async" class="size-full wp-image-514 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.20.23.png" alt="" width="388" height="188" srcset="https://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.20.23.png 388w, https://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.20.23-300x145.png 300w" sizes="auto, (max-width: 388px) 100vw, 388px" /></a><img loading="lazy" decoding="async" class="size-full wp-image-513 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.20.40.png" alt="" width="388" height="81" srcset="https://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.20.40.png 388w, https://consultapp.ru/wp-content/uploads/2017/09/Снимок-экрана-2017-09-03-в-16.20.40-300x63.png 300w" sizes="auto, (max-width: 388px) 100vw, 388px" /></li>
<li>Запускаем и получаем лицензию, только сейчас уже запрашивается нужный пин-код;</li>
<li>Если проблема сохранилась, то можно попробовать проверить права на доступ к папке /var/1C/licenses/;</li>
<li>Все вышесказанное делалось на технологической платформе 1С 8.3.</li>
</ol>
<h2>Вывод</h2>
<p>Работа с 1С, которая зачастую и так не усыпана розами, на Мак может доставить гораздо больше проблем, чем на Windows. Позиция 1С по этому вопросу примерно такая: &#171;Обращаем Ваше внимание, что хотя есть вариант платформы 1С:Предприятия для MAC, но эта платформа имеет больше ошибок, чем платформа для Windows, а некоторые дистрибутивы конфигурации  под MAC OS не тестируются&#187;.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bb%d0%b8%d1%86%d0%b5%d0%bd%d0%b7%d0%b8%d0%b8-%d0%bd%d0%b5-%d0%bf%d1%80%d0%be%d1%84-1%d1%81-%d0%bd%d0%b0-%d0%bc%d0%b0%d0%ba-%d0%be%d1%81/">Получение лицензии не ПРОФ конфигурации 1С на Мак ОС</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Снаряжение на Эльбрус</title>
		<link>https://consultapp.ru/%d1%81%d0%bd%d0%b0%d1%80%d1%8f%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0-%d1%8d%d0%bb%d1%8c%d0%b1%d1%80%d1%83%d1%81/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sat, 05 Aug 2017 15:54:26 +0000</pubDate>
				<category><![CDATA[Разное]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=490</guid>

					<description><![CDATA[<p>В начале подготовки к восхождению на Эльбрус встал вопрос о необходимом снаряжении, пересмотрев половину Ютуба и перечитав много блогов, составил свой список. Тк много вопросов по моей подготовке у людей, решил оформить все это в статью. Не претендую на истину в последней инстанции и постараюсь дополнить этот список в соответсвии с полученным опытом после восхождения&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%81%d0%bd%d0%b0%d1%80%d1%8f%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0-%d1%8d%d0%bb%d1%8c%d0%b1%d1%80%d1%83%d1%81/">Снаряжение на Эльбрус</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>В начале подготовки к восхождению на Эльбрус встал вопрос о необходимом снаряжении, пересмотрев половину Ютуба и перечитав много блогов, составил свой список. Тк много вопросов по моей подготовке у людей, решил оформить все это в статью. Не претендую на истину в последней инстанции и постараюсь дополнить этот список в соответсвии с полученным опытом после восхождения (<span style="color: #339966;">эти</span>&nbsp;<span style="color: #339966;">комментарии выделены зеленым</span>).</p>



<span id="more-490"></span>



<p>Ценники на многие вещи начинаются с &#171;не дешево&#187; и заканчиваются в космосе, по-этому есть смысл покупать то, что можно использовать впоследствии в походах, зимой и тд. Все остальное можно взять в аренду на месте, говорят там огромный выбор. Некоторое снаряжение дублирует друг друга, например высокогорный пуховик можно заменить теплой кофтой и курткой-мембраной, все зависит от температуры.</p>



<h2 class="wp-block-heading">Список снаряжения</h2>



<p>Итак, мой список с собранными советами по некоторым пунктам. Разделим снаряжение на группы:</p>



<ul class="wp-block-list"><li>Нижний слой одежды;</li><li>Средний слой одежды;</li><li>Верхний слой одежды;</li><li>Экипировка;</li><li>Разное;</li><li>Аптечка.</li></ul>



<h3 class="wp-block-heading">Нижний слой одежды</h3>



<ol class="wp-block-list"><li>Термо носки теплые &#8212; 4 пары (<span style="color: #339966;"><em>это конечно избыточно, но я не жалел по этому поводу</em></span>);</li><li>Термо носки легкие (современные материалы) 4 пары;</li><li>Термобелье спорт &#8212; основной элемент, должен отводить влагу от тела, не должно быть теплым!;</li><li>Термобелье теплое &#8212; на крайний случай, я с собой взял (<span style="color: #339966;"><em>Оказалось нужно для штурма, в целом очень важно правильно оценивать погоду во время выходов &#8212; не перегреваться важней, чем чуть-чуть подмерзнуть на мой взгляд</em></span>);</li><li>Нижнее термобелье легкое 3 шт. (знающие люди говорят, что очень помогает);</li><li>Нижн белье + носки &#8212; много (если будет где стирать &#8212; лишнее, тк по мелочи набирается куча барахла);</li><li>Плавки (<span style="color: #339966;"><em>купаться можно в водопаде Девичьи косы например, хотя там народ и в термухах залезал</em></span>).</li></ol>



<h3 class="wp-block-heading">Средний слой одежды</h3>



<ol class="wp-block-list"><li>Флисовая кофта или SoftShell &#8212; тонкий флис;</li><li>Флисовая кофта &#8212; очень толстый флис, полартрек (<em><span style="color: #339966;">Если есть пуховка, то брать не нужно</span></em>);</li><li>Утепляшка штаны &#8212; очень толстый флис, полартрек;</li><li>Buff на горло &#8212; синтетика;</li><li>Балаклава;</li><li>Кепка или Панамка;</li><li>Футболки, хлопковые, кол-во по вкусу;</li></ol>



<h3 class="wp-block-heading">Верхний слой одежды</h3>



<ol class="wp-block-list"><li>Ботинки трекинговые &#8212; 2000-4000 метров, ботинок износостойкий, защита голеностопа (<span style="color: #339966;">разносить после покупки &#8212; не менее 2 месяцев</span>);</li><li>Куртка мембрана &#8212; по типу Гортекс (на сам гортекс ценник космический, тут по вкусу) &#8212; без швоф на плечах (рюкзак не давит), карманы выше обычных (не мешает альп обвязке), вентиляционные отверстия, капюшон, дышимость от 10 000 (<span style="color: #339966;">Самая крутая вещь, спасает постоянно</span>);</li><li>Штаны самосбросы, сноуборд штаны или тп &#8212; 5000 дышымость, мембрана желательна;</li><li>Флисовые перчатки 2-3 пары (менять, если намокли);</li><li>Перчатки утеплённые (на синтепоне, лыжные, сноубордические утепленные &#8212; <span style="color: #339966;"><em>мне не пригодились, было тепло и в целом почти без перчаток ходили, только на штурм</em></span>);</li><li>Перчатки верхонки (В ПРОКАТЕ);</li><li>Ботинки высокогорные (пластик или тп) 5000+ (В ПРОКАТЕ);</li><li>Пуховка (Теплая куртка на 5000+) (В ПРОКАТЕ);</li><li>Бахилы или фонари, иногда называют гамаши (В ПРОКАТЕ);</li><li>Бивачная обувь &#8212; пуховые тапочки, для комфорта (<span style="color: #339966;"><em>не стал брать, в целом и в обычных кроссовках было нормально бегать по лагерю</em></span>);</li><li>Шапка 2 шт. (непродуваемая).</li></ol>



<h3 class="wp-block-heading">Экипировка</h3>



<ol class="wp-block-list"><li>Солнцезащитные очки &#8212; закрывают глаза с боков &#8212; степен защиты больше 3, вы должны спокойно смотреть не щурясь на яркое солнце &#8212; <strong>Обязательная вещь!;</strong></li><li>Горнолыжная/сноубордическая маска, также со степенью защиты 3-4 (линза темная или зеркальная)(<span style="color: #339966;">для фоток возможно или зимой, а так и очков нормальных хватает</span>);</li><li>Штурмоввой рюкзак &#8212; объем 30 литров,<span style="color: #339966;"> <em>у кого-то меньше, должен залезть термос, пара батончиков, крем, перчатки и пуховка или мембрана и верхонки, должно быть легко переодеваться из одного в другое</em></span>;</li><li>GPS трекер &#8212; это никто не советовал, кроме человека, который попал зимой в метель на склоне, говорил видимость не дальше руки &#8212; <span style="color: #339966;"><em>так и не использовал, протаскал зря, если идете с гидом, то вещь явно излишняя</em></span>;</li><li>Рюкзак грузовой на 80 литров для подъема (заброски) всех вещей в хижину, штурмовой лагерь на ночевку (<span style="color: #339966;">подойдет спортивная сумка</span>);</li><li>Обвязка альпинистская (В ПРОКАТЕ);</li><li>Ледоруб (В ПРОКАТЕ);</li><li>Телескопические палки &#8212; мягкая ручка (В ПРОКАТЕ, <span style="color: #339966;"><em>задумался о покупке, тк вещь очень интересная и сильно помогает при любых подъемах. Выкручивающиеся для удлинения палки &#8212; это постоянная проблема</em></span>);</li><li>Спальник &#8212; вид утеплителя(пух(плохо переносит влагу и дорого), синтетика) + темпер. режим (комфорт(красный) &#8212; тепло спать 10-12 часов, средний(температура для мужчин, девочкам будет холодно скорей всего), экстрим(НЕ ориентируемся, переохлаждение))+вес+фил повер (насколько хор распушается после раскладки &#8212; для пуха);</li><li>Фонарик на голову (<span style="color: #339966;">штурм начинается ночью + света нет вокруг хижины и палатки ночью, но не очень яркий, а то все слепнут вокруг и сам, тк от снега сильно отражается. При восхождении прям чтоб еле теплился под ноги себе и все</span>).</li></ol>



<h3 class="wp-block-heading">Разное</h3>



<ol class="wp-block-list"><li>Батарейки для GPS литий варта;</li><li>Нож &#8212; по вкусу, небольшой не повредит думаю;</li><li>Термос &#8212; хороший термос объемом не больше 1 литра;</li><li>Фляга (<span style="color: #339966;">я не взял, не знаю зачем она</span>);</li><li>Кружка;</li><li>Вилка + Ложка;</li><li>Накидка на рюкзак от дождя;</li><li>Внешний аккумулятор (power bank);</li><li>Губная помада гигиеническая с UF фактором;</li><li><strong>Крем от загара с максимальным фактором &#8212; <span style="color: #339966;">ОБЯЗАТЕЛЬНО</span>!;</strong></li><li>Предметы личной гигиены, только самое необходимое;</li><li>Непромокаемый чехол под документы.</li></ol>



<h3 class="wp-block-heading">Аптечка</h3>



<p>В целом аптечку можно не брать, если идете с гидами. Обычно у них все есть.</p>



<ol class="wp-block-list"><li>Колдрекс &#8212; болеть грустно, особенно в горах, где можно перепутать синдромы простуды или ОРВИ с горной болезнью;</li><li>Стрепсилс &#8212; горло (или кому что по вкусу);</li><li>Трентал &#8212; сосуды, кровообращение(<span style="color: #339966;">?</span>);</li><li>Аспирин &#8212; простуда, головная боль и тп;</li><li>Ксимелин спрей &#8212; заложенный нос явно не поможет на восхождении;</li><li>Цитрамон &#8212; головная боль;</li><li>Что-то для желудка на всякий случай;</li><li>Аскорбиновая кислота &#8212; помогает с усвоением кислорода на высоте.</li><li><span style="color: #339966;">Брать только то, что понимаете 100%, тк все равно не сможете использовать вовремя, стрепсилс &#8212; ок, колдрекс &#8212; возможно, трентал &#8212; эммм&#8230;</span></li></ol>



<h2 class="wp-block-heading">Вместо заключения</h2>



<p>Многое из списка я буду использовать первый раз, во всяком случае в условиях высокогорья точно, так что голову на плечах никто&nbsp;не отменял. Выбирайте снаряжение в поход, понимая зачем берете ту или иную вещь. Как её будете использовать, нести и тд. <strong>Удачного похода! </strong>(<span style="color: #339966;">Если сомневаетесь &#8212; идти или нет, идти обязательно!</span>)</p>



<p></p>
<p>Сообщение <a href="https://consultapp.ru/%d1%81%d0%bd%d0%b0%d1%80%d1%8f%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0-%d1%8d%d0%bb%d1%8c%d0%b1%d1%80%d1%83%d1%81/">Снаряжение на Эльбрус</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как убрать дубли страниц wp json oembed в WordPress</title>
		<link>https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d1%83%d0%b1%d1%80%d0%b0%d1%82%d1%8c-%d0%b4%d1%83%d0%b1%d0%bb%d0%b8-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86-wp-json-oembed-%d0%b2-wordpress/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Wed, 02 Aug 2017 13:34:57 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=468</guid>

					<description><![CDATA[<p>История наверно у всех одинаковая, Вы заходите в Вебмастер и обнаруживаете кучу найденных роботом страниц со странными адресами вида &#171;/wp-json/oembed/1.0/embed?url=http://site_name.ru/page_name&#187; которые или выдают ошибку, или даже 200 OK, но зачем они нужны? Всем известно, что поисковики сильно недолюбливают дубли и кучу ошибочных страниц на сайте. Понять, что у Вас на сайте есть эти ссылки, можно&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d1%83%d0%b1%d1%80%d0%b0%d1%82%d1%8c-%d0%b4%d1%83%d0%b1%d0%bb%d0%b8-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86-wp-json-oembed-%d0%b2-wordpress/">Как убрать дубли страниц wp json oembed в WordPress</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>История наверно у всех одинаковая, Вы заходите в Вебмастер и обнаруживаете кучу найденных роботом страниц со странными адресами вида &#171;/wp-json/oembed/1.0/embed?url=http://site_name.ru/page_name&#187; которые или выдают ошибку, или даже 200 OK, но зачем они нужны? Всем известно, что поисковики сильно недолюбливают дубли и кучу ошибочных страниц на сайте. Понять, что у Вас на сайте есть эти ссылки, можно поискав в коде страниц строку вида &#171;&lt;link rel=&#8217;https://api.w.org/&#8217; href=&#8217;/wp-json/&#8217; /&gt;&#187;.</p>
<p><span id="more-468"></span></p>
<h2>Что такое wp json oembed 1.0?</h2>
<p>Wp json это нововведение от версии WordPress 4.4 и выше. Разработчики ввели новый API REST, который создает кучу мусорных страниц в виртуальной директории wp-json.</p>
<p>WordPress REST API – это общий интерфейс данных и программирования, который позволяет считывать и записывать информацию в WordPress через разные приложения. Это позволяет разработчикам, которые нацелены на работу с WordPress, не углубленно разбираться в WP.</p>
<h2>Как отключить WordPress REST API?</h2>
<p>Как и обычно, добавляем следующий код в конец файла &#171;functions.php&#187; в теме. Сделать это можно в редакторе темы WordPress или напрямую в файле через FTP на сервере например.</p>
<blockquote><p><strong>Внимание!!! Данный метод может сломать работу некоторых планигов и в целом работу json (Например Contact From 7). Обязательно сделайте полный бекап перед изменением файлов!!!</strong></p></blockquote>
<p><code>// Отключаем сам REST API<br />
add_filter('rest_enabled', '__return_false');<br />
// Отключаем фильтры REST API<br />
remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );<br />
remove_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 );<br />
remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );<br />
remove_action( 'auth_cookie_malformed', 'rest_cookie_collect_status' );<br />
remove_action( 'auth_cookie_expired', 'rest_cookie_collect_status' );<br />
remove_action( 'auth_cookie_bad_username', 'rest_cookie_collect_status' );<br />
remove_action( 'auth_cookie_bad_hash', 'rest_cookie_collect_status' );<br />
remove_action( 'auth_cookie_valid', 'rest_cookie_collect_status' );<br />
remove_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );<br />
// Отключаем события REST API<br />
remove_action( 'init', 'rest_api_init' );<br />
remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );<br />
remove_action( 'parse_request', 'rest_api_loaded' );<br />
// Отключаем Embeds связанные с REST API<br />
remove_action( 'rest_api_init', 'wp_oembed_register_route');<br />
remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );<br />
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );</code></p>
<p>В результате ссылка вида &#171;&lt;link rel=&#8217;https://api.w.org/&#8217; href=&#8217;/wp-json/&#8217; /&gt;&#187; должна пропасть из кода страницы.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%b0%d0%ba-%d1%83%d0%b1%d1%80%d0%b0%d1%82%d1%8c-%d0%b4%d1%83%d0%b1%d0%bb%d0%b8-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86-wp-json-oembed-%d0%b2-wordpress/">Как убрать дубли страниц wp json oembed в WordPress</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Закон &#171;О персональных данных&#187; 27.07.2006 N 152-ФЗ (ред. от 29.07.2017). Что делать?</title>
		<link>https://consultapp.ru/%d1%84%d0%b7-152-%d1%80%d1%84/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sat, 29 Jul 2017 08:08:31 +0000</pubDate>
				<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=626</guid>

					<description><![CDATA[<p>Выдержка из закона: &#171;Настоящим Федеральным законом регулируются отношения, связанные с обработкой персональных данных, осуществляемой федеральными органами государственной власти, органами государственной власти субъектов Российской Федерации, иными государственными органами (далее &#8212; государственные органы), органами местного самоуправления, иными муниципальными органами (далее &#8212; муниципальные органы), юридическими лицами и физическими лицами с использованием средств автоматизации, в том числе в информационно-телекоммуникационных&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%84%d0%b7-152-%d1%80%d1%84/">Закон &#171;О персональных данных&#187; 27.07.2006 N 152-ФЗ (ред. от 29.07.2017). Что делать?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Выдержка из закона:</h2>
<p>&#171;Настоящим Федеральным законом <strong>регулируются отношения, связанные с обработкой персональных данных</strong>, осуществляемой федеральными органами государственной власти, органами государственной власти субъектов Российской Федерации, иными государственными органами (далее &#8212; государственные органы), органами местного самоуправления, иными муниципальными органами (далее &#8212; муниципальные органы), <strong>юридическими лицами и физическими лицами с использованием средств автоматизации, в том числе в информационно-телекоммуникационных сетях</strong>, &#8230;&#187;</p>
<p>После редакции от 29.07.2017 стал обязательным почти для всех сайтов. До этого галочки о пользовательских соглашениях и хранении персональных данным можно было увидеть только у крупных интернет-магазинов и тп.</p>
<h2>Кто является оператором персональных данных?</h2>
<p>Вы являетесь оператором персональных данных, если на вашем сайте есть:</p>
<ul>
<li>Обратная связь
<ul>
<li>форма обратной связи;</li>
<li>заказ обратного звонка;</li>
<li>форма любой заявки.</li>
</ul>
</li>
</ul>
<ul>
<li>Продажи
<ul>
<li>корзина;</li>
<li>оплата;</li>
<li>доставка.</li>
</ul>
</li>
</ul>
<ul>
<li>Пользователи
<ul>
<li>Регистрация;</li>
<li>Авторизация;</li>
<li>Социальные сети.</li>
</ul>
</li>
</ul>
<ul>
<li>Email-маркетинг
<ul>
<li>Подписка на новости;</li>
<li>Авторизация;</li>
<li>Социальные сети.</li>
</ul>
</li>
</ul>
<h2>Что нужно сделать?</h2>
<ol>
<li>Сделать предупреждающие чекбоксы на формах запроса почти любых данных;</li>
<li>Разместить документы на сайте &#8212; &#171;Политика конфиденциальности&#187; и &#171;Пользовательское соглашение&#187;;</li>
<li>Пройти регистрацию в Роскомнадзоре. (Если вы сомневаетесь, надо или нет высылать в Роскомнадзор уведомление &#8212; лучше вышлите).</li>
</ol>
<p>Сообщение <a href="https://consultapp.ru/%d1%84%d0%b7-152-%d1%80%d1%84/">Закон &#171;О персональных данных&#187; 27.07.2006 N 152-ФЗ (ред. от 29.07.2017). Что делать?</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как убрать ссылки feed с сайта на WordPress</title>
		<link>https://consultapp.ru/%d1%83%d0%b1%d1%80%d0%b0%d1%82%d1%8c-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8-feed-%d1%81-%d1%81%d0%b0%d0%b9%d1%82%d0%b0-%d0%bd%d0%b0-wordpress/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 22 Jun 2017 15:02:45 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=413</guid>

					<description><![CDATA[<p>Ссылки вида &#171;ссылка_на_страницу/feed/&#187; по умолчанию генерируются для большинства страниц сайта, что часто создает кучу мусора и ошибки при индексировании страницы поисковиками. В вебмастере можно увидеть столько же 404 ошибок, сколько и страниц на сайте вообще. Отключить их может быть полезно, если вы используете WordPress исключительно как систему управления контентом (а не для ведения блога). Есть&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%83%d0%b1%d1%80%d0%b0%d1%82%d1%8c-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8-feed-%d1%81-%d1%81%d0%b0%d0%b9%d1%82%d0%b0-%d0%bd%d0%b0-wordpress/">Как убрать ссылки feed с сайта на WordPress</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Ссылки вида &#171;ссылка_на_страницу/feed/&#187; по умолчанию генерируются для большинства страниц сайта, что часто создает кучу мусора и ошибки при индексировании страницы поисковиками. В вебмастере можно увидеть столько же 404 ошибок, сколько и страниц на сайте вообще. Отключить их может быть полезно, если вы используете WordPress исключительно как систему управления контентом (а не для ведения блога).</p>
<p><span id="more-413"></span></p>
<p>Есть несколько вариантов борьбы с этими ссылками:</p>
<ul>
<li>Отключить их в файле functions.php темы сайта;</li>
<li>Использовать разнообразные плагины, например Disable Feeds.</li>
</ul>
<h2>Отключаем ссылки в файле functions.php</h2>
<p>Заходим в административную панель сайта. Переходим в &#171;Внешний вид -&gt; Редактор&#187;, где открываем файл functions.php. Дописываем в самый конец php код и сохраняем файл:</p>
<p><code>// убираем feed<br />
function fb_disable_feed() {<br />
wp_redirect(get_option('siteurl'));<br />
}<br />
add_action('do_feed', 'fb_disable_feed', 1);<br />
add_action('do_feed_rdf', 'fb_disable_feed', 1);<br />
add_action('do_feed_rss', 'fb_disable_feed', 1);<br />
add_action('do_feed_rss2', 'fb_disable_feed', 1);<br />
add_action('do_feed_atom', 'fb_disable_feed', 1);<br />
remove_action( 'wp_head', 'feed_links_extra', 3 );<br />
remove_action( 'wp_head', 'feed_links', 2 );<br />
remove_action( 'wp_head', 'rsd_link' );<br />
</code></p>
<p>Все, ссылки из текста убраны. Обязательно проверяем результат, делаем поиск по исходному коды страниц &#171;/feed&#187;. Ссылки должны исчезнуть из раздела &lt;head&gt;.</p>
<h2>Плагин Disable Feeds</h2>
<p>Плагин для WordPress &#8212;  Disable Feeds отключает все каналы RSS / Atom / RDF на вашем сайте. Все запросы для каналов будут перенаправлены на соответствующий HTML-контент.</p>
<p>Есть несколько вариантов настройки поведения плагина &#8212; перейдите в Настройки -&gt; Чтение, чтобы увидеть их.</p>
<p>Когда плагин Disable Feeds активен. По умолчанию все каналы отключены, и все запросы для каналов перенаправляются на соответствующий HTML-контент.</p>
<p>Доступные варианты для управления плагином:</p>
<ul>
<li>Перенаправить запросы на соответствующий HTML-контент;</li>
<li>Выдать сообщение об ошибке «Не найдено» (404).</li>
</ul>
<p>Так же Вы можете отметить галочку: &#171;Не отключать общий почтовый фид и общий канал комментариев.&#187;</p>
<p>Сообщение <a href="https://consultapp.ru/%d1%83%d0%b1%d1%80%d0%b0%d1%82%d1%8c-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8-feed-%d1%81-%d1%81%d0%b0%d0%b9%d1%82%d0%b0-%d0%bd%d0%b0-wordpress/">Как убрать ссылки feed с сайта на WordPress</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Оценка скорости загрузки сайта</title>
		<link>https://consultapp.ru/%d0%be%d1%86%d0%b5%d0%bd%d0%ba%d0%b0-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d0%b8-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b8-%d1%81%d0%b0%d0%b9%d1%82%d0%b0/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 22 Jun 2017 14:59:28 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=411</guid>

					<description><![CDATA[<p>Page Speed Insights отличный бесплатный сервис от Google, оценивает скорость загрузки веб-страниц и примененные методы оптимизации. URL проверяется дважды – с помощью обычного и мобильного агента пользователя. Оценка PageSpeed может составлять от 0 до 100 баллов. Чем больше оценка – тем лучше. Если страница набрала более 85 баллов, значит она загружается быстро. Обратите внимание, что PageSpeed Insights постоянно развивается, поэтому&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%be%d1%86%d0%b5%d0%bd%d0%ba%d0%b0-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d0%b8-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b8-%d1%81%d0%b0%d0%b9%d1%82%d0%b0/">Оценка скорости загрузки сайта</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://consultapp.ru/go/google-page-speed-insights/">Page Speed Insights</a> отличный бесплатный сервис от Google, оценивает скорость загрузки веб-страниц и примененные методы оптимизации. URL проверяется дважды – с помощью обычного и мобильного агента пользователя.</p>
<p><span id="more-411"></span></p>
<p>Оценка PageSpeed может составлять от 0 до 100 баллов. Чем больше оценка – тем лучше. Если страница набрала более 85 баллов, значит она загружается быстро. Обратите внимание, что PageSpeed Insights постоянно развивается, поэтому по мере добавления новых правил или усовершенствования аналитических алгоритмов оценка иногда меняется.</p>
<p>Вводим адрес сайта в строку для анализа. И нажимаем кнопку &#171;Анализировать&#187;.</p>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.36.47.png"><img loading="lazy" decoding="async" class="size-large wp-image-434 aligncenter" src="http://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.36.47-700x71.png" alt="" width="700" height="71" srcset="https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.36.47-700x71.png 700w, https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.36.47-300x31.png 300w, https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.36.47-768x78.png 768w, https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.36.47-1280x131.png 1280w, https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.36.47.png 1372w" sizes="auto, (max-width: 700px) 100vw, 700px" /></a></p>
<p>В итоге получаем 2 оценки:</p>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.37.48.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-437 size-full" src="http://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.37.48.png" alt="результат работы Page Speed Insights" width="589" height="196" srcset="https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.37.48.png 589w, https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.37.48-300x100.png 300w" sizes="auto, (max-width: 589px) 100vw, 589px" /></a></p>
<p>Также Google подсказывает варианты для оптимизации сайта:</p>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.37.58.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-436 size-full" src="http://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.37.58.png" alt="Предложения по оптимизации сайта от Page Speed Insights" width="660" height="404" srcset="https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.37.58.png 660w, https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.37.58-300x184.png 300w" sizes="auto, (max-width: 660px) 100vw, 660px" /></a></p>
<p>И, что самое приятное, часть работы делает за нас. Предлагает скачать оптимизированные css, js и картинки. Которые аккуратно (с предшествующим бекапом оригиналов естественно) можно закинуть на сайт, таким образом оптимизировав хотя бы эти файлы.</p>
<p><a href="http://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.38.05.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-435 size-full" src="http://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.38.05.png" alt="" width="607" height="104" srcset="https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.38.05.png 607w, https://consultapp.ru/wp-content/uploads/2017/06/Снимок-экрана-2017-07-25-в-16.38.05-300x51.png 300w" sizes="auto, (max-width: 607px) 100vw, 607px" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%be%d1%86%d0%b5%d0%bd%d0%ba%d0%b0-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d0%b8-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b8-%d1%81%d0%b0%d0%b9%d1%82%d0%b0/">Оценка скорости загрузки сайта</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Кластеризация семантического ядра</title>
		<link>https://consultapp.ru/%d0%ba%d0%bb%d0%b0%d1%81%d1%82%d0%b5%d1%80%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f-%d1%81%d0%b5%d0%bc%d0%b0%d0%bd%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%be%d0%b3%d0%be-%d1%8f%d0%b4%d1%80%d0%b0/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Thu, 02 Mar 2017 15:28:37 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=359</guid>

					<description><![CDATA[<p>Автоматическая кластеризация ключевых слов &#8212; это автоматическая группировка ключевых слов на основе выдачи поисковых систем. Особенно мне нравится слово &#171;автоматическая&#187;. Кто работал с более-менее объемным семантическим ядром ручками, меня поймут. Зачем делать кластеризацию? Можно сэкономить много времени при группировке ключевых слов для SEO или контекста &#8212; в 10-30 раз быстрее чем вручную; Сгруппированные по выдаче&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%bb%d0%b0%d1%81%d1%82%d0%b5%d1%80%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f-%d1%81%d0%b5%d0%bc%d0%b0%d0%bd%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%be%d0%b3%d0%be-%d1%8f%d0%b4%d1%80%d0%b0/">Кластеризация семантического ядра</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Автоматическая кластеризация ключевых слов &#8212; это автоматическая группировка ключевых слов на основе выдачи поисковых систем. Особенно мне нравится слово &#171;автоматическая&#187;. Кто работал с более-менее объемным семантическим ядром ручками, меня поймут.<br />
<span id="more-359"></span></p>
<h2>Зачем делать кластеризацию?</h2>
<ul>
<li>Можно сэкономить много времени при группировке ключевых слов для SEO или контекста &#8212; в 10-30 раз быстрее чем вручную;</li>
<li>Сгруппированные по выдаче ключевые слова, которые гарантированно выходят в ТОП поисковых систем.</li>
</ul>
<h2>Простейший алгоритм кластеризации с нуля</h2>
<ol>
<li>Придумываем базовые слова по которым нас могут искать пользователи, можно использовать способ перемножения сущностей, например перемножить &#171;действие*продукт*тип_1..n*города_поиска&#187;;</li>
<li>Собираем семантическое ядро &#8212; вооружаемся программой SlovoEb или подобными, загружаем список и предыдущего пункта и собираем все, что можно включая поисковые подсказки. После чего собираем базовую частотность для всего списка, если не собралась автоматически;</li>
<li>Убираем совсем низкочастотные ключи, использовать меньше 5-10 не надо. Сортируем по частотности и убираем лишние;</li>
<li>Загружаем полученную таблицу &#171;ключ+частотность&#187; в кластеризатор, например <a href="/rush-analytics-semanticheskoe-yadro-klasterizaciya">Rush Analytics</a>, и получаем полностью кластеризованные запросы.</li>
</ol>
<p>Основной красотой этого метода я вижу практически полное отсутствие необходимости лезть в чтение ключей до получения нормального &#8212; структурированного, отфильтрованного и релевантного поиску семантического ядра, с которым дальше уже можно работать вручную.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%ba%d0%bb%d0%b0%d1%81%d1%82%d0%b5%d1%80%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f-%d1%81%d0%b5%d0%bc%d0%b0%d0%bd%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%be%d0%b3%d0%be-%d1%8f%d0%b4%d1%80%d0%b0/">Кластеризация семантического ядра</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Перед началом работы по СЕО</title>
		<link>https://consultapp.ru/%d0%bd%d0%b0%d1%87%d0%b0%d0%bb%d0%be-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d0%bf%d0%be-%d1%81%d0%b5%d0%be/</link>
		
		<dc:creator><![CDATA[Дмитрий]]></dc:creator>
		<pubDate>Sun, 05 Feb 2017 11:09:04 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Статьи]]></category>
		<guid isPermaLink="false">http://consultapp.ru/?p=233</guid>

					<description><![CDATA[<p>В статье я кратко опишу шаги, которые надо делать и базовые вещи, которые надо понимать в начале работы с проектом по улучшению его видимости поисковиками. На самом деле, простейшие шаги по приведению сайта к здравому смыслу, что сильно помогает поисковым системам понять, о чем сайт и что он может дать посетителю. Сервисы по контролю за сайтом&#8230;</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bd%d0%b0%d1%87%d0%b0%d0%bb%d0%be-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d0%bf%d0%be-%d1%81%d0%b5%d0%be/">Перед началом работы по СЕО</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>В статье я кратко опишу шаги, которые надо делать и базовые вещи, которые надо понимать в начале работы с проектом по улучшению его видимости поисковиками. На самом деле, простейшие шаги по приведению сайта к здравому смыслу, что сильно помогает поисковым системам понять, о чем сайт и что он может дать посетителю.<br />
<span id="more-233"></span></p>
<h2>Сервисы по контролю за сайтом</h2>
<p>Для контроля за основными показателями посещаемости, внешними ссылками и т.д. сайта отлично подойдут бесплатные сервисы от Yandex и Google, тем более, что рейтинг в тих системах нас в основном и интересует, просто регистрируем аккаунты в этих системах и устанавливаем следующие инструменты:</p>
<ul>
<li><a href="https://metrika.yandex.ru">Яндекс Метрика</a>;</li>
<li><a href="https://webmaster.yandex.ru/">Яндекс Вебмастер</a>;</li>
<li><a href="https://analytics.google.com">Google Analytics</a>;</li>
<li><a href="https://www.google.com/webmasters/">Google Search Console</a>.</li>
</ul>
<p>В каждом есть свои интересные инструменты. Пробежавшись быстро по меню, сможете определить начальные действия по сайту.</p>
<h2>Настройка robot.txt</h2>
<p>Robots.txt — текстовый файл, который содержит параметры индексирования сайта для роботов поисковых систем.Находится в корне сайта. Основные необходимые теги и разделы это:</p>
<ul>
<li>User-agent &#8212; указывает для какой поисковой системы создаем правила</li>
<li>Allow, Disallow &#8212; разрешаем, запрещаем индексирование разделов;</li>
<li>Sitemap &#8212; ссылка на файл sitemap сайта;</li>
<li>host &#8212; указываем адрес сайта, который мы считаем главным (например используя www или нет)</li>
</ul>
<h3>User-agent</h3>
<p>Указывает для какой поисковой системы мы создаем правила, например:<br />
<code>User-agent: Yandex # для Yandex<br />
User-agent: * # для всех поисковых систем</code><br />
Также можно указывать правила для отдельных роботов поисковиков, например робот, который ищет картинки и т.д., точнее можно посмотреть в справках необходимых поисковых систем.</p>
<h3>Disallow</h3>
<p>Тег Disallow скрывает от индексирования указанные разделы сайта. Для начала прячем служебные папки и файлы например нашей CMS за тегом Disallow:<br />
<code>User-agent: Yandex<br />
Disallow: / # блокирует доступ ко всему сайту<br />
User-agent: Yandex<br />
Disallow: /cgi-bin # блокирует доступ к страницам,<br />
# начинающимся с '/cgi-bin'</code></p>
<p>Стоит отметить, что большинство CMS самостоятельно умеют прятать от поисковиков служебные файлы и папки.</p>
<h3>Allow</h3>
<p>Тег Allow наоборот указывает разрешенные разделы для индексации, однако все, что не запрещено Disallow, все равно скорей всего будет проиндексировано. Необходимость возникает, только если надо разрешить какой-то раздел внутри заблокированного сегмента. При конфликте между двумя директивами с префиксами одинаковой длины приоритет отдается директиве Allow.<br />
<code>User-agent: Yandex<br />
Allow: /cgi-bin<br />
Disallow: /<br />
# запрещает скачивать все, кроме страниц<br />
# начинающихся с '/cgi-bin'</code></p>
<h3>Sitemap</h3>
<p>Тег sitemap указывает на файл с картой сайта, что ускоряет индексацию нового сайта поисковиками.<br />
<code>sitemap: http://your_site.ru/sitemap.xml</code></p>
<h3>Host</h3>
<p>Если у сайта есть зеркала, специальный робот определит их и сформирует группу зеркал сайта. В поиске будет участвовать только главное зеркало. Вы можете указать его для всех зеркал в файле robots.txt: имя главного зеркала должно быть значением директивы Host. Это не гарантирует 100% выбор поисковой системой именно этого зеркала в качестве главного, но сильно повышает его рейтинг.<br />
Чаще всего, просто указываем адрес сайта, т.к. поисковые системы все равно будут выдавать рекомендации о наличии этой строчки, например Яндекс в Вебмастере.<br />
<code># если вы используете домен без www<br />
Host: your_site.ru<br />
# или используя www.<br />
Host: www.your_site.ru</code></p>
<h2>Настройка title, description, H1, H2, H3</h2>
<p>Стоит немного обратить внимание на структуру самих страниц сайта. Для нас самое главное &#8212; это понимание посетителем и поисковиком о чем эта страница, что повысит заинтересованность обоих. Для этого важны базовые теги на странице, такие как:</p>
<ul>
<li>title &#8212; заголовок сайта(страницы сайта) в разделе HEAD, отражается в результатах поиска и названии вкладки</li>
<li>H1, H2, H3 &#8212; заголовки в теле страницы, раздел BODY. С увеличением нумерации, уменьшается важность заголовка.</li>
<li>description &#8212; краткое описание страницы,</li>
</ul>
<h3>&lt;Title&gt;</h3>
<p>Заголовок сайта(страницы сайта) в разделе &lt;HEAD&gt;, отражается в результатах поиска и названии вкладки. Крайне важен для поисковых роботов. Обычно примерно равен &lt;H1&gt;.</p>
<h3>&lt;H1&gt;</h3>
<p>Заголовок страницы, должен полностью отражать суть контента. Крайне важен для поисковых роботов. Главная ключевая фраза страницы (ключ, по которому мы будем продвигать ее) обязательно должна входить в &lt;H1&gt; и &lt;Title&gt;. Должен быть краток и лаконичен.</p>
<h3>&lt;H2&gt;, &lt;H3&gt;</h3>
<p>С помощью этих тегов, генерируется основная структура текстовой информации страницы. В них можно включать второстепенные для данной страницы ключевые фразы. Дальнейшие номера заголовков H4-6 практически не влияют на поисковики, да и текст будет слишком усложнен.</p>
<h3>Внешний вид текста</h3>
<p>Внешний вид текста в любых тегах, а особенно H1-3, желательно задавать внутри файла CSS, не стоит перегружать html код. HTML это все таки инструмент для разметки теста, для внешнего вида и управления есть классы и стили, задаваемые в CSS.</p>
<h2>Регистрация в справочниках. Яндекс.Справочник</h2>
<p>Прежде всего идет речь про регистрацию в <a href="https://yandex.ru/sprav/">Яндекс.Справочнике</a>, что поможет Яндексу быстрее понять серьезность компании и ее региональность, помимо той, которую укажете в Вебмастере. Тут будут проверять звонком из Яндекса. Так что есть смысл указывать только настоящие данные.</p>
<p>Сообщение <a href="https://consultapp.ru/%d0%bd%d0%b0%d1%87%d0%b0%d0%bb%d0%be-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d0%bf%d0%be-%d1%81%d0%b5%d0%be/">Перед началом работы по СЕО</a> появились сначала на <a href="https://consultapp.ru">ConsultApp.ru</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
