Skip to Content

Обеспечиваем комплексное продвижение и поддержку в сети Интернет с 1997 года: анализируемформализуемрисуемразрабатывемпрограммируемпродвигаемсоздаемрассылаемподдерживаемразмещаемподсказываемремонтируемобучаем.

аудит сайта, конкурентный анализ, предметную область, задачи, ищем решения
пишем ТЗ, структуру БД, пишем бизнес план развития проекта
качественный индивидуальный дизайн сайта, и фирменного стиля, визитки, буклеты
интерфейсы, мобильные версии, улучшаем юзабилити
сложные аналитические системы, алгоритмы, базы данных, интерфесы
комплексное продвижение с оптимальным бюджетом. Гарантия результата. Подбираем маркетинговые инструменты под задачи клиента
имидж компании, бренда, поддерживаем отзывы, гасим негатив, работаем с рекламациями
прямые адресные рассылки по Email SMS информирование
собираем и наполняем сайт контентом, качественные фото, снимаем видео
обеспечиваем хостингом, регистрируем домены, настраиваем серверы
куруглосуточная поддержка VIP клиентов на русском и англиском
скорая помощь для вашего сайта, восставливаем после сбоев, чистка вирусов, устранение ошибок
семинары, трениги, курсы, вебинары и консультации

info@novikov.ua

 

Yaxy — proxy-сервер для веб-разработчика

2013-06-29

Yaxy — proxy-сервер, подменяющий различные части HTTP-запросов и ответов на указанные в config-файле значения. Я не буду здесь описывать, как поставить, настроить и запустить сервер, это всё описано в readme репозитория. Здесь я опишу различные случаи, в которых Yaxy очень помогает, а то и вовсе незаменим.

Замена файлу hosts


В простейшем случае у нас будут правила
 

    site.my => 127.0.0.1



В результате получим функциональность файла hosts с дополнительными плюшками:
 

  • Файл hosts кэшируется, иногда приходится несколько раз нажимать Ctrl+F5, чтобы увидеть изменения. Правила из конфига Yaxy применяются сразу после сохранения.
  • Локальность. Файл hosts влияет на всю систему, через проксю же ходят только нужные вам браузеры. Хотя в некоторых случаях это может быть недостатком.
  • А у вас есть виртуальные машины с различными браузерами в них? В каждой виртуальной машине приходится поддерживать файл hosts. А можно просто прописать всем браузерам один прокси-сервер.
  • Вы проверяете свои сайты в iPhone/iPad? Хорошо, если есть девелоперский сервер, а если нет — приходится олаживаться в продакшне. С Yaxy мы указываем в настройках прокси-сервер на нашем локальном компьютере и смотрим с телефона все локальные сайты.



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

    site.my => localhost:9898


 

Серверные ребята так долго всё делают



А мне позарез нужна поддержка HTTP-заголовока Origin на сайте, чтобы отладить свои скрипты. Не надо никого ждать.
 

     www.yandex.ru => $
        $SetResponseHeader Access-Control-Allow-Origin: *



Теперь на моём компьютере скрипты любого сайта смогут читать www.yandex.ru.
 

Тестируемся на нужных данных



У себя на сайте вы за данными ходите аяксом. Вдруг выясняется, что на определённых данных ваш скрипт падает, но воспроизвести именно такие данные штатными средствами системы не так-то просто. Да, честно говоря, и непонятно пока, какой именно должен быть JSON, чтобы всё сломалось. Можно попробовать пропатчить сервер, чтобы он на определённый урл выдавал константный JSON, а можно в конфиге прокси-сервера написать
 

    my-service.my/my-data.json => data:application/json;{"success":false,"error":"Большущая ошибка"}


 

Отлаживаем в продакшне



В JS-коде обнаружена ошибка, которая воспроизводится только в продакшне.
 

    my-service.ru/scripts/main.js => my-service.dev/scripts/main.js



Теперь весь сайт грузится с продакшна, а единственный скрипт main.js — с локального сайта.
 

Отлаживаемся на чужом сайте



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

Что ж, сохраняем исходный код какой-нибудь страницы сайта, а в конфиг Yaxy пишем
 

    bad-site.ru/page.html => file:///home/me/bad-site.html



Для браузера ничего не поменялось, а вы теперь сможете исправить код страницы по своему усмотрению. А дальше стандартно — удаляем в файле различные строки и смотрим, после удаления которой пропадёт ошибка. Обнаружили, что ошибка появляется при подключении файла script.js? Подменяем его таким же образом и смотрим, что именно в нём плохого. После этого по желанию — или пишете владельцу, что код у него в таком-то месте, мягко говоря, так себе, или (что предпочтительней) адаптируете свой скрипт к подобным ситуациям.
 

Сайт за 30 секунд



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

    new-site.my => file://c:/www/my-site



Теперь в папке c:/www/my-site лежат файлы сайта, открывающиеся в браузере по адресу new-site.my.
 

Тестируем аяксовую загрузку данных



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

    my-site.ru/data/data.json => $
        $Delay 5



Теперь файл data.json будет грузиться не менее 5 секунд.
 

Убираем мешающие HTTP-заголовки



Вам для тестов нужно открыть какой-то сайт в iframe, но сайт посылает заголовок X-Frame-Options: DENY. Добавляем правило
 

    site.ru => $
        $RemoveResponseHeader X-Frame-Options



Нет больше мешающего заголовка.
 

Заказ на доработку скриптов сайта



К вам обратился странный человек: он хочет, чтобы вы написали JS-скрипт для сайта, но доступ к сайту давать не хочет. А сайт достаточно сложен, скрипт нужно тестировать обязательно на нём. Нет никаких проблем. Выбираем на нужной странице сайта какой-нибудь подключенный JS-файл (например, /js/main.js), сохраняем его к себе (например в /home/me/main.js), добавляем в Yaxy правило
 

    site.ru/js/main.js => file:///home/me/main.js



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

А что если нужно менять вёрстку? Тоже никаких проблем. Сохраняем исходник главной страницы, добавляем правило
 

    !site.ru/ => file:///home/me/site.ru.html



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

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





+38(050) 837-25-64

(093) 119-63-11
Skype: nofikoff
Как у любой IT компании,
наш основной канал связи
это E-mail:
info@novikov.ua