Профессиональный блог

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

Строковые литералы

17 июля, 22:59

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

console.log('Some \'long\' string');  // Экранирование
console.log("Some string");;
console.log('Some "long" string');
console.log('Some "long" string'); // Можно переносить строки, при выводе этот перевод не отобразится
console.log('Hello ' + 'man!' ); // Конкатенация

Перенос строки \n (new line), табуляция \t.

var s = "my string"
console.log(s.charAt(0)); // возвращает указанный индекс строки
console.log(s.length); // получаем длину строки
console.log(s.charAt(s.length-1)); // получаем последний символ строки
console.log(s.substring(5, 10)); // возвращает подстроку исходной строки, в данном случае с 5 по 10 символ. Можно указывать без второго аргумента
console.log(s.slice(-10)); // Делает тоже самое, что и substring, но можно использовать отрицательные числа. Здесь получили последние 10 символов.
console.log(s.substr(0, 10)); // Указываем индекс начального символа и количество символов, которые нужно взять.
console.log(s.indexOf(my)); // возвращает индекс, можно искать слово
							//есть еще lastIndexOf
console.log(s.split(" ")); // разбивает строку на массив по заданному разделителю
console.log(s.toUpperCase()); // строка заглавными буквами
console.log(s.toLowerCase()); // строка прописными буквами
console.log(s[4]); //получаем символ по индексу, аналог charAt

И помним, что строки immutable!

Преобразование типов. Boolean

17 июля, 22:53

Эти пять значений всегда будут false, все остальные значения true.

console.log(!!""); // пустая строка
console.log(!!NaN); // NaN
console.log(!!undefined); // undefined
console.log(!!0); // ноль
console.log(!!null); // null

Числовые типы данных в JavaScript

13 июля, 23:53

1) Нужно начать с того, что все числа в JS вещественные.
2) Для побитовых операций числа преобразуются сначала в 32-битный целый тип из 64-битного.
3) Возведение двойки в степень с помощью побитовой операции работает медленнее, чем метод Math.pow()

console.log(2 << 3);

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

var i = -1;

5) Если первое число 0 , то это восмеричная система счисления. Если начинается с 0, но содержит цифры больше 7, то парсер автоматически будет считать число десятичным.

console.log(0563);
// вернет 371
console.log(02138);
// вернет 2138

6) Оператор присваивания «=»

var n;
n = 20;

7) Экспоненциальная запись

console.log(0.25e1)

8) Унарные операторы.

var i = 2;
-i;
+i;

9) Операторы декремента и инкремента ++i, —i.
Они делятся на префиксные и постфиксные.
При префиксном декременте сначала происходит вычисление и потом возвращается значение переменной.
В постфиксном сначала возвращается текущее значение переменной, а потом вычисление.
10) Бинарные операторы

console.log(1 + 1);
console.log(2 - 2);
console.log(3 * 3);
console.log(4 / 4); // не целочисленное
console.log(10 % 3); // остаток от деления

11) Присваивание с операцией

n += 20;
n -= 20; 
n *= 20;
n /= 20;

12) Операторы отношения (Relational Operators)

10 < 0; //false
10 > 0; // true
5 >= 5; // true
5 <= 0; //false

13) Сравнение на равенство

5 === 5; //true
5 !== 5 //false

14) Операторы равенства с приведением типа

15 == 15; // true
15 == "15" //true

Считается хорошей практикой использовать только строгое сравнение на равенство без приведения типа.
15) Объект Math. предоставляет широкий набор методов и констант для работы с числами.
16) При выходе за пределы диапазона чисел JS возвращает Infinity или -Infinity. Бесконечность ведет себя так как и вела бы себя в математике. То есть при умножении на бесконечность, мы получаем бесконечность и так далее.
17) При делении на 0 получаем Infinity.
18) При делении 0/0 получаем NaN.
19) Проверка NaN на равенство возвращает false.
20) У языков программирования, которые используют вещественные числа случаются погрешности при некоторых вычислениях.

0.2 + 0.1; // вернет 0.30000000000000004

Объекты обертки

Создаются при работе с простыми типами. Интерпретатор создает объекты обертки налету, поэтому мы можем вызывать методы у простых типов.
Интерпретатор вычислении берет значение i, создает объект и применяет метод.
Именно поэтому простые типы в JS могут вести себя как объекты, но не являются ими.

var i = 1;
i.toFixed(2);
2 .toFixed(2) // Пробел после числа обязателен. Иначе интерпретатор выдаст ошибку.

Типы данных в JavaScript

13 июля, 19:31

В JS существует два типа данных — объектные и простые.

// Простые типы

var myNumber = 3,
	myString = 'some text',
	myBool = false,
	myNull = null,
	myUndef = undefined;

// Объектные типы

var myObject = {name: "Vlad"},
	myArray = [1, 2, 3],
	myRegexp = /w+/g,
	myFuction = function(x) {
		return x * x;
	};

С помощью typeof(name) можно узнать тип объекта. При вызове typeof(myNull), null будет объектом — это ошибка. Ошибка о которой знают все, но уже поздно что-то менять. Если разработчики языка исправят данную ошибку на что-то более логичное, то многие программы перестанут работать.

JavaScript язык динамической типизации, тип переменной автоматически определяется интерпретатором.

Изменямые и неизменяемые типы (mutable and immutable)

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

// Изменяем объект
myObject.name = 'Vasya';

// Думаем, что изменяем строку
myString.toUpperCase();

//Значение переменной будет выводиться в верхнем регистре, но само значение не изменится

Ник Морган «JavaScript для детей»

13 июля, 1:29

Прочитал книгу Ника Моргана «JavaScript для детей. Самоучитель по программированию».

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

С учетом того, что с JS я знаком достаточно слабо, то с огромным удовольствием поиграл с jQuery и canvas :)

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

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

Rework: бизнес без предрассудков

13 декабря 2016, 12:34

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

Для себя я выделил некоторые моменты из книги:

  1. Идея так и остается просто идеей, пока вы не начнете хоть что-то делать.
    Не нужно фальшивых слов. Не нужно говорить, что каждый звонок клиента для вас важен и при этом оставлять его слушать голос автоответчика, который говорит, что все операторы заняты. Если звонок клиента имеет ценной — наймите еще нескольких операторов колл центра.
  2. Отстаивать свои убеждения — не означает просто записать их.
  3. Отбрасывайте лишнее, нужно избавляться от просто хорошего и оставлять только лучшее.
    «Чтобы сделать отличный альбом, музыканты не включают в него хорошие треки. Чтобы сделать книгу великолепной, писатели удаляют из нее хорошие страницы».
  4. «Когда что-то не работает, обычный подход заключается в том, чтобы бросать на решение проблемы больше ресурсов. Больше людей, больше времени и денег. Все в итоге приводит к разрастанию проблемы. Правильный подход — действовать в обратном направлении, то есть сокращать.»
    Вот этот момент у меня вызвал особую боль, напоминающую ситуацию из моего опыта.
    Под моим управлением находится рекламная кампания в которой ~500 000 ключевых слов.
    В один момент мы приходим к выводу, что многие посадочные страницы не отвечают полноценно запросам пользователей и нужно либо менять эту страницу на какую-то абсолютно новую, либо добавлять какой-то интересный фильтр отбора товара.
    У задачи по исправлению ссылок появляется повышенный приоритет и к ней подключается весь руководящий состав. Процесс исправления проходил следующим образом:
    вникали в семантику → к ключевому слову ставили новую ссылку без utm-метки → далее делалась выгрузка из 1с всех текущих активных ключей → с помощью excel убирали все кроме метки → функция ВПР() помогала добавить актуальную ссылку к объявлениям → ссылка сцеплялась с utm-меткой → затем с помощью специально написанного обработчика в 1с, ссылка отправлялась на сервер Яндекс Директ.
    Некоторые операции происходили на базе 1С, так как на ней написана автоматизация управления ставками и через коммандер слишком долго выгружать такое количество исправлений.
    В итоге мы столкнулись из-за некоторых нюансов с кучей проблем, то обработчик ссылки обрежет, то кто-то ошибется и сделает не по шаблону. Приходилось все переделывать и тратить множество времени на решения этой задачи.
    Сейчас я вижу, что нужно было сократить количество людей, которые принимали участие в этой задаче + выгрузить изменения только на значимые регионы, где у нас было много статистики и которую нельзя было терять, а затем просто скопировать новые кампании на регионы, где изменения не вносились.
    Это значительно бы сократило объем данных с которым приходилось возиться.
  5. Перестаньте думать о том, что будет работать, — выясните это на практике.
  6. Иногда прекращения работы — это правильный шаг, даже если вы уже вложили в нее много усилий. Не тратьте хорошее время на плохую работу. Нужно периодически задавать себе вопросы, которые помогут понять — действительно ли важным делом вы сейчас занимаетесь.
  7. Помните: ваш день находится в осаде постоянных перерывов, ваша задача — отвоевать его.
    В офисе очень много отвлекающих факторов, постоянно появляются какие-то задачи. Нужно уметь концентрироваться на деле, не отвлекаясь на внешние факторы и уделить текущему процессу максимум внимания. Тогда задачи будут проще и быстрее решаться.
  8. Принцип дзюдо.
    Очень понравилось названия и сам принцип.
    «Не идите напролом! Ищите решение в стиле дзюдо, решение которое будет наиболее эффективно при минимальном количестве затрат. Все „дзюдо-решения“ сводятся к тому, чтобы делая меньше, получать больше.» Принцип заключается в том, что не нужно искать сложные решения для задач. Большинство задач может быть решено простым и вполне приземленным способом. Например в дзюдо мы используем вес и инерцию противника, чтобы бросить противника на землю — очень просто и изящно.
  9. Разделяйте большие задачи на маленькие. В маленьких задачах невозможно совершать большие ошибки.
  10. Нанимайте великолепных писателей. Выбирая между двумя кандидатами на одну и ту же позицию, отдавайте предпочтение тому, кто лучше умеет писать. Умение ясно излагать свои мысли — признак ясного ума.
  11. Самые лучшие везде.
    Это безумие — не нанимать самых лучших кандидатов только потому, что они живут вдалеке от вас. География больше не имеет значения.
  12. Рассказывайте обо всем происходящем своим клиентам.
    Не пытайтесь умалчивать плохие новости, вы заслужите больше уважения, если проявите себя в кризисной ситуации честными открытыми и ответственными.
  13. Дело не в количестве часов, проведенных за рабочем столом, а в продуктивности этих часов.

Сезонные акции

29 ноября 2016, 0:39

Недавно проводилась акция под названием «Черная пятница».

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

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

Ключевое слово «люстры черная пятница» появляется только один раз в году. Тоже самое было и с недвижимостью, правда в 2016 году интерес к акции явно не был так сильно подогрет, как в 2015 году.

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

  1. Конкуренты такими ключами не пользуются и мы выигрываем за счет более релевантного объявления — CTR выше.
  2. Благодаря тому, что мы даем рекламу именно на эти ключевые слова — стоимость клика у нас меньше.

Помимо добавления новых ключевых слов в семантику и проработку объявлений, стоит активнее рекламироваться в РСЯ и КМС.

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

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

Вывод

К маркетинговым акциям стоит готовиться заранее и подходить к вопросу ответственно.

Чек-лист запуска контекстной рекламы

6 сентября 2016, 13:07

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

  1. Пообщаться с клиентом
    Узнаем о конкурентных преимуществах, времени работы, географическом таргетинге, выявляем УТП.
  2. Узнать данные для расчета максимальной ставки
    Средний чек, рентабельность, конверсия сайта и конверсия оператора / исполняемость заказов.
  3. Дать доступ клиенту к аккаунту
    Создаем аккаунт для клиента. Фрилансер/агенство обязаны предоставить доступы к рекламным кампаниям, если доступы не дают, то пора паниковать. Клиент вправе сам следить за статистикой и держать руку на пульсе.
  4. Получить доступы к счетчикам аналитики
    Если счетчиков нет — ставим.
  5. Настроить цели для аналитики, установить колтрекинг
    С сайтами-конструкторами, где нельзя установить цели по техническим причинам — лучше не работать. Особенно если вас просят показать результат. Например установленный счетчик на сайте, сделанном на конструкторе wix работает через раз. Возможно, wix исправят эту проблему или уже исправили, но я не готов проверять.
  6. Собрать семантику
    Подбираем стартовые слова, парсим в Кей Коллекторе. Важно не упустить синонимы и опечатки.
  7. Очистить ключевые слова
    В Кей Коллекторе чистим ключевые слова от мусора, собираем попутно минус-слова для каждой кампании.
  8. Согласование семантики
    Согласовываем с клиентов семантическое ядро. Тут клиент может сам почистить ключевые слова, которые по его мнению не подходят и добавить новые слова, которые мы упустили ранее.
  9. Написание текста объявлений
    Пишем текст по собранным словам.
  10. Согласование текста
    Этот этап не всегда нужен, так как еще при согласовании УТП, текст вероятно обсуждался. Специалист должен писать текст сам, основываясь на своем опыте работы с Директом или Adwords.
  11. Подготовка файла для загрузки
    К написанным текстам добавляем ссылки на посадочные страницы, создаем быстрые ссылки, уточнения и прочие расширения.
  12. UTM-метки
    Обязательно добавляем метки к ссылкам. Меня поражают фрилансеры, которые не ставят метки или ставят только на тарифном плане «супер вип». Наличие метое обязательно! И это не зависит от того, сколько человек вам платит за рекламу.
    У каждого специалиста существует свой шаблон и свое видение на то, какие параметры мы должны передаваться в метке. Поэтому приводить в пример метку не буду.
  13. Загрузка на сервер
    После того как мы подготовили файл его нужно загрузить на сервер. Делается это с помощью Директ Коммандера или Google Adwords Editor.
  14. Старт
    После подтверждения со стороны клиента, в назначенный день и час, запускаем рекламу проекта.
  15. Оптимизация РК
    После того как рекламу запущена начинается самое интересное — оптимизация рекламных кампаний. Подробно описывать не буду, но скажу что первый месяц нужно ежедневно смотреть отчеты по поисковым фразам и отслеживать поведенческие показатели. После того как вы проработаете минус-слова и уберете лишнее из кампаний — смотрите эти отчеты реже.

Новый алгоритм от Яндекса. Показ по синонимам в Директе

6 сентября 2016, 11:53

В ближайшие дни Яндекс дополнит арсенал и добавит в обязательном порядке для рекламодателей показ по синонимам. В нововведении я вижу как минусы, так и плюсы:

Минусы

  1. Нужно больше времени для чистки «левых» запросов, которые подобрал Яндекс.
  2. Возможно упадет уровень маркетологов, который и так не высок. Спецы перестанут прорабатывать тщательно семантическое ядро: синонимы, опечатки и пр.
  3. Пока что не понятно насколько точные синонимы будет подбирать Яндекс, в случае с ДРР слова в 99% были не целевые.
  4. В интернете пишут, что функцию отключить не получится. Увеличатся расходы на дополнительные клики по автоматически подобранным фразам.
  5. Увеличатся расходы на дополнительные клики по автоматически подобранным фразам.
  6. Увеличится конкуренция по запросам.

Плюсы

  1. Теперь будет проще подбирать дополнительные ключевые слова по запросам Hyundai. Очень часто люди вбивает такое, что на моменте сбора семантики и не придумаешь.
  2. Спустя время появятся инструменты, которые позволят добавлять синонимы из интерфейса сразу в минус-слова или в список ключевых слов.
  3. Легче работать с огромной семантикой на Россию с отдельно выделенными городами-миллионниками, которая досталась вам от другого специалиста, так как сразу бывает не понятно, что до вас специалист внес, а что нет. При просмотре статистики по синонимам все станет ясно.

Ссылки на ДРР и показ по синонимам:
https://yandex.ru/support/direct/features/relevant-keywords.xml
https://yandex.ru/support/direct-news/n-2016-08-31.xml?lang=ru

Как рассчитать Max CPC

22 июля 2016, 12:50

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

  1. Средний чек
  2. Рентабельность
  3. Конверсия сайта
  4. Конверсия оператора
  5. Исполняемость

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

Для интернет-магазина:
MaxCPC = средний чек * конверсия сайта * рентабельность * исполняемость

В эту формулу еще можно заложить процент транзакций, которые совершаются по телефону.

Не для интернет-магазина:
MaxCPC = средний чек * рентабельность * конверсия сайта * конверсия оператора

Допустим у нас интернет-магазин мебели. Средний чек у нас 10 000 рублей, конверсия сайта — 1,2%, рентабельность — 30%, а исполняемость заказов — 80%.

10000*0,012*0,3*0,8 = 28,8 р.

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

Ctrl + ↓ Ранее