Pull to refresh
24
0
Send message

Чему мы научились потратив $100.000 в AdWords

Reading time 6 min
Views 17K
С 1 октября 2015 по 1 октября 2017 года мы инвестировали в рекламные кампании Google AdWords более $100.000 долларов. Пришло время проанализировать эффективность различных стратегий на основании Google Analytics и подсчитать сколько заказов получено в CRM.

Часть 1. Принцип формирования рекламных кампаний AdWords


В октябре 2015 владелец бизнеса принял решение реорганизовать компанию и увеличить рекламный бюджет. В течение 2 лет было проведено было более 30 рекламных кампаний. Из них только 6 показались интересными для целевой аудитории. Более 25 кампаний мы протестировали на рынке но на практике не получили ожидаемой реакции.

Вывод: 80% рекламных компаний AdWords провалилось. Они просто не заинтересовали целевую аудиторию.
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 23

Сделай сам веб-сервис с асинхронными очередями и параллельным исполнением

Reading time 5 min
Views 28K

rq Каждый должен делать свою работу качественно и в срок. Допустим, вам нужно сделать веб-сервис классификации картинок на базе обученной нейронной сети с помощью библиотеки caffe. В наши дни качество — это асинхронные неблокирующие вызовы, возможность параллельного исполнения нескольких заданий при наличии свободных процессорных ядер, мониторинг очередей заданий… Библиотека RQ позволяет реализовать все это в сжатые сроки без изучения тонны документации.


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

Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Comments 20

Сервис от компании Percona для создания оптимальной конфигурации MySQL серверов и анализа SQL-запросов

Reading time 2 min
Views 17K
Предлагаю ознакомиться с сервисом от компании Percona, который позволяет правильно настроить конфигурацию MySQL сервера на основе конкретных условий использования и проанализировать используемые SQL-запросы на наличие ошибок и недочетов.



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

Читать дальше →
Total votes 22: ↑17 and ↓5 +12
Comments 8

Поисковые технологии или в чем загвоздка написать свой поисковик

Reading time 3 min
Views 58K
Когда-то давно взбрела мне в голову идея: написать свой собственный поисковик. Было это очень давно, тогда я еще учился в ВУЗе, мало чего знал про технологии разработки больших проектов, зато отлично владел парой десятков языков программирования и протоколов, да и сайтов своих к тому времени было понаделано много.

Ну есть у меня тяга к монструозным проектам, да…

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

На данный момент у меня есть собственный, обучающийся поисковик от и до, со многими нюансами – подсчетом PR, сбором статистик-тематик, обучающейся функцией ранжирования, ноу хау в виде отрезания несущественного контента страницы типа меню и рекламы. Скорость индексации примерно полмиллиона страниц в сутки. Все это крутится на двух моих домашних серверах, и в данный момент я занимаюсь масштабированием системы на примерно 5 свободных серверов, к которым у меня есть доступ.
Читать дальше →
Total votes 69: ↑60 and ↓9 +51
Comments 76

Реализация поискового движка с ранжированием на Python (Часть 1)

Reading time 5 min
Views 34K
Просматривая ленту новостей я наткнулся на рекомендацию от Типичного Программиста на статью «Implementing a Search Engine with Ranking in Python», написанную Aakash Japi. Она меня заинтересовала, подобного материала в рунете не очень много, и я решил перевести её. Так как она довольно большая, я разделю её на 2-3 части. На этом я заканчиваю своё вступление и перехожу к переводу.

Каждый раз как я использую Quora, я в конечном итоге вижу по крайней мере вопрос вроде этого: кто-нибудь спрашивает, как работает Google и как они могли бы превзойти его по поиску информации. Большинство вопросов не настолько смелые и дезинформирующие, как этот, но все они выражают подобное чувство, и в этом они передают значительное непонимание того, как работают поисковые системы.

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

Это то, что я буду описывать в этой статье: как сделать поисковую систему для локальных текстовых файлов, для которых можно обрабатывать стандартные запросы (по крайней мере, одно из слов в запросе есть в документе) и фразу целиком (появляется вся фраза в тексте) и может ранжировать с использованием базовой TF-IDF схемы.

Есть два основный этапа в разработке поискового движка: построение индекса, а затем, используя индекс, ответить на запрос. А затем мы можем добавить результат рейтинга (TF-IDF, PageRank и т.д.), классификацию запрос/документ, и, возможно, немного машинного обучения, чтобы отслеживать последние запросы пользователя и на основе этого выбрать результаты для повышения производительности поисковой системы.

Итак, без дальнейших церемоний, давайте начнем!
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 4

Автоматизация тестирования веб-приложения с использованием Selenium WebDriver, Python, и Behave

Reading time 4 min
Views 71K
Всем привет!
Сегодня я хочу поделится нашим опытом автоматизации тестирования веб-приложения с использованием Selenium WebDriver и фреймворка Behave.
Если интересно добро пожаловать под кат.
Читать дальше →
Total votes 13: ↑6 and ↓7 -1
Comments 13

50+ лучших дополнений к Bootstrap

Reading time 5 min
Views 202K


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

Для статьи я подобрал наиболее полезные дополнения «на все случаи жизни».
Читать дальше →
Total votes 123: ↑111 and ↓12 +99
Comments 25

Техническая сторона Supl.biz

Reading time 3 min
Views 15K
Добрый день. Меня зовут Алексей Красноперов и я являюсь основателем и техническим директором проекта Supl.biz — торговой площадки для малого и среднего бизнеса. Хочу рассказать, как устроен проект изнутри.

Общая архитектура проекта


Техническая сторона Supl.biz
Читать дальше →
Total votes 25: ↑19 and ↓6 +13
Comments 30

Простые решения. Прокачиваем картинки

Reading time 9 min
Views 22K


Все мы любим простые решения. Есть мнение, что мы так ценим религию, тренинги по личностному росту и поддаёмся разводам потому, что мозг с большим удовольствием принимает простые решения вместо сложных, щедро награждая нас дофамином. В этой статье я расскажу о таком решении на одном из наших проектов. В нём нет ничего сложного, ничего особенно остроумного, но оно надежно работает, относительно просто реализуется и решает множество задач сразу. Очень надеюсь, что оно принесёт вам практическую пользу или натолкнёт на идею дальнейшего развития вашего проекта.
Читать дальше →
Total votes 33: ↑28 and ↓5 +23
Comments 25

Оптимизируем VPS за 5$ (512MB RAM / 1 CPU) так, что сайт на wordpress выдерживает нагрузку в 42,735,587 хитов в день

Reading time 9 min
Views 95K
Когда вы приобретаете сервер VPS с 256MB или 512MB оперативной памяти на борту и лишь часть мощности процессора, то использовать для таких сервисов как MySQL/PHP/Apache настройки по умолчанию является очень плохой идеей. В настоящее время у меня запущено 3 сайта на самом дешевом тарифном плане с 512MB RAM/1 CPU. Не уверен полностью, но посещаемость составляет порядка 5-10 тысяч посетителей в день. Далее я хочу поделиться инструкцией как оптимизировать LAMP используя всего лишь 512 MB и при этом не уходя в swap. Обычно при такой настройки используется 256 – 378Mb памяти и все работает довольно быстро.

Определяем доступную память и активность swap.

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

$ free -m

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

$ ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less


Настраиваем LAMP сервер для потребления малого количества оперативной памяти. Останавливаем, отключаем ненужные сервисы

Первый и очевидный вопрос, который необходимо задать — это «какие сервисы мне не нужны в использовании?». Недавно, я обнаружил очень удобную утилиту для управления сервисами. Она называется "sysv-rc-conf" и управляет сервисами при помощи псевдографики и флажками. Выгдялит вот так:



Здесь представлен список сервисов, которые я изменил.

  • Postfix. Этот сервис позволяет отправлять и получать почтовые email сообщения для домена. Я использую для этих целей Google Apps для отправки почты и mailchimp для новостных подписчиков. Таким образом я остановил и отключил этот сервис.
  • Bind9. Он нужен для управления DNS записями Вашего домена. Его можно отключить, так как все DNS записи хранятся у хостера.
  • SSHD. Имеются и другие реализации, которые используют гораздо меньше памяти, но они не поддерживают sftp, поэтому данный сервис я оставил без изменений.


Не запускайте X-сервер, выключите все ненужные сервисы и настройте Apache, MySQL, PHP только с базовой необходимой функциональностью.
Читать дальше →
Total votes 131: ↑81 and ↓50 +31
Comments 85

Печатаем документ в виде чека с помощью Python и Parse

Reading time 3 min
Views 27K
Не так давно передо мной встала задача: распечатка документа определенного формата с помощью мобильного устройства. На телефоне должны были вводиться определенные значения, отправляться на сервер (для того, чтобы потом можно было использовать эти данные на веб сайте) и печать документ с этими данными. С самого начала мой выбор пал на Google cloud print, так как он максимально прост в использовании и решении подобных задач. Но при использовании этого варианта есть несколько недостатков:

  • Очень медленная обработка запроса
  • Нужно где-то формировать PDF документ и возвращать ссылку на него
  • Постоянно нужно выбирать принтер (если у вас подключен только один принтер к Google cloud print, то все равно нужно выбирать между ним и сохранением на Google Drive)

Поэтому я решил написать свой скрипт для подобных операций.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 7

Интеграция Fail2ban с CSF для противодействия DDoS на nginx

Reading time 12 min
Views 34K
Набор скриптов ConfigServer Security & Firewall (CSF) изначально обладает достаточно богатыми возможностями по организации защиты сервера хостинга Web с помощью фильтра пакетов iptables. В частности с его помощью можно противостоять затоплению атакуемого хоста пакетами TCP SYN, UDP и ICMP слабой и средней силы. Дополняет CSF встроенный Login Failure Daemon (lfd), который осуществляет мониторинг журналов на предмет наличия многочисленных неудачных попыток авторизации в различных сетевых сервисах с целью подбора пароля. Такие попытки блокируются путем внесения адреса IP злоумышленника в черный список CSF.
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Comments 14

CloudFlare + nginx = кешируем всё на бесплатном плане

Reading time 2 min
Views 56K

В бесплатной версии Cloudflare все замечательно (ей-богу сказка!), но список кешируемых форматов файлов весьма ограничен.
К счастью кеширование всего подряд (до 512 Мб на файл) можно настроить в одно два действия.

Читать дальше →
Total votes 54: ↑51 and ↓3 +48
Comments 6

WordPress для параноиков, часть 1

Reading time 9 min
Views 62K
Итак, если вы счастливый владелец nginx, знатный параноик и за каким-то чертом решили поставить wordpress, то… Первое, что пришло в голову — это «надо ограничить сему творению свободу!».

Настройки учетной записи, как и настройки php5-fpm, я опущу, так как у каждого свои тараканы, а кто-то вообще на apache запускает. Но вот общие для Wordpress я опишу в этой части. Напишу о том, что сделал, что получилось и почему.
Читать далее
Total votes 55: ↑49 and ↓6 +43
Comments 10

Ответственный за разработку iOS покинул компанию Apple

Reading time 1 min
Views 97K
image

Старший вице-президент Apple Скотт Форстолл (Scott Forstall), отвечавший за разработку мобильной операционной системы iOS, покинул компанию. Об уходе Форстолла в понедельник, 29 октября, объявил глава Apple Тим Кук.
Читать дальше →
Total votes 54: ↑50 and ↓4 +46
Comments 86

Ускоряем раздачу фоток

Reading time 8 min
Views 14K

С проблемой медленной отдачи статического контента рано или поздно сталкивается каждый сисадмин.

Проявляется это приблизительно так: иногда 3Kb картинка грузится так, как будто бы она весит 3Mb, на ровном месте начинают «залипать» (отдаваться очень медленно) css-ы и JavaScript-ы. Вы нажимаете ctrl + reload — и уже, вроде, проблемы нет, потом спустя всего несколько минут все повторяется опять.

Не всегда истинная причина «тормозов» очевидна и мы косо поглядываем то на nginx, то на хостера, то на «забитый» канал, то на «тормозной» или «глючный» браузер :)

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

В этой статье я предложу Вам свое решение этой проблемы, основанное на практическом опыте использования SSD дисков совместно с web-сервером nginx.
Читать дальше →
Total votes 128: ↑126 and ↓2 +124
Comments 69

Настройка телефона Cisco серии 79XX для работы с Asterisk

Reading time 13 min
Views 214K


В статье будут описаны нюансы настройки IP-телефона Cisco на примере цискофона 7942G.
Итак, если вы присматриваетесь к VoIP-устройствам Cisco серии 79XX, то добро пожаловать под кат.
Читать дальше →
Total votes 38: ↑35 and ↓3 +32
Comments 30

Information

Rating
Does not participate
Registered
Activity