Автонаполняемый аккаунт в Твиттере

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

1. Твиттер аккаунт.
2. Сайт акцептор.
3. Специальные сервисы.

Начнем по порядку.

Твиттер Аккаунт

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

Сайт акцептор

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

Сервисы

Нам потребуется три сервиса, для создания полностью автоматического, само наполняемого твиттер аккаунта. Сервис номер один :

1. Tweetlater

tlater 300x198 Создаем автонаполняемый аккаунт в Твиттере

Первый сервис это — TweetLater.com. Позволяет автоматическои фолоовить тех, кто зафолловил вас. Создайте одну учетную запись в этом сервисе и добавляйте к ней ваши твиттер аккаунты, если у вас их много. После регисрации, перейдите в меню Accounts — Add account — выберите Твиттер . Поставьте галочку — Автоматически приветствовать новых фолловеров и напишите приветственное сообщение со ссылкой на ваш сайт, оно будет отправляться автоматом директом тем, кто вас зафолловит. Так же поставьте галочки — Auto follow и autounfollow.

2. Twitrobot

trobot 300x236 Создаем автонаполняемый аккаунт в Твиттере

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

3. Twollow

twollow 300x233 Создаем автонаполняемый аккаунт в Твиттере

Третий сервис twollow.com Предназначен для автофолловинга людей по определенным ключевым запросам. В бесплатной версии позволяет добавлять пять запросов и фолловить по 5 человек за раз по каждому запросу. То есть по 25 человек в сутки, вполне достаточно. Не стоит говорить, что это должны быть ваши целевые запросы. Поставьте галочки — unfollow если не зафолловят в ответ.

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

Originally posted 2010-02-06 15:13:46. Republished by Vancouver Web Design

Когда я захотел сделать блог в который бы статьи добавлялись автоматически из выбранных мной новостных источников возникла проблема… все RSS-фиды по тематике моего блога отдавали статьи в RSS-ленту не полностью, а лишь анонсами… в то время как мне необходимы были полные тексты этих статей для размещения их на моем блоге……

В поисках способов автоматизированного получения полных текстов этих статей я потратил довольно много времени… многие писали что можно там наваять свой скрипт и т.д… но это мне не подходит поскольку я не знаю языков программирования, да и html то не знаю особо…  Однако благодаря небезызвестному многим Тормозу и его статье про применение Yahoo Pipes для робоблоггинга мне открылись широчайшие возможности Yahoo Pipes, которые позволили мне совершить задуманное…

Кратко о Yahoo Pipes:

“…Yahoo Pipes – это очень интересный инструмент для работы с RSS-потоками. Это не очередной онлайн-агрегатор, но инструмент куда более изящный и сложный. Одна из основных его возможностей — создание персональных RSS-потоков при помощи различных модулей, отвечающих за получение, фильтрацию, анализ, перевод, преобразование и сортировку потоков. Результат работы Pipes можно получить в виде нового RSS-потока, или же в формате JSON…”

Увидев вышеназванную статью Тормоза я стал усиленно изучать механизм работы описанной в его статье трубы… Изучение шло непросто, пришлось еще поработать с help`ом Yahoo Pipes, только тогда механизм работы трубы стал полностью мне понятен… Но время было потрачено не зря и поняв как работает его труба я на следующий же день легко реализовал поставленную самим собой задачу, сделав для этого свой пайп, который легко выдирает из rss-фида с анонсами новостей на Allboxing.ru полные тексты этих новостей…

Сама разработанная мной труба (pipe) представлена ниже:

Yahoo-pipes

Как видно на рисунке Yahoo Pipes имеет очень удобный графический интерфейс… Сама труба имеет модульную структуру, я использую только 5 модулей в своей трубе в то время как разработчики Yahoo Pipes придумали еще множество полезных модулей, которые вы можете использовать (например, перевод содержимого с одного языка на другой, сортировка элементов выходного фида по дате, различная фильтрация с целью убрать из фида, получаемого на выходе, ненужные вам элементы или выбрать только элементы посвещенные определенной тематике).

Чтобы получить короткую справку по любому из элементов и ссылку на пример нужно нажать на знак “?” в заголовке любого модуля.

Внизу есть Debugger в котором можно просмотреть что у вас получается на выходе каждого используемого вами модуля…

Итак рассмотрим работу трубы по порядку:

1. Fetch Feed.

Этот модуль позволяет получить содержимое выбранных фидов (у меня выбран один фид но можно вбить столько сколько нужно)… На выходе модуля имеем содержание нужного фида представленное в виде отделных item`ов: link, description и т.д. с каждым из которых можно затем работать… Как видно на рисунке, Yahoo Pipes не понимает кодировки выбранного мной русскоязычного фида, однако для меня это не важно поскольку из всего фида мне нужен только item link который содержит ссылку на страницу, содержащую полную версию искомой новости…

Yahoo-pipes-fetchfeed

2. Loop + Fetch Page.

Модуль Loop с помещенным в него модулем Fetch Page вытаскивает страницы с полными новостями по ссылкам содержащимся в item`е link исходного фида. Модуль Fetch Page появился совсем недавно, именно с его появлением стало возможно быстро решать задачи парсинга страниц. Раньше для этого приходилось использовать сторонние сервисы вроде Feedity или собственные скрипты. Модуль позволяет получить содержимое любой странички, вырезать из неё лишнее, да ещё и разделить на отдельные элементы. Я вырезаю из страниц нужное мне содержимое начинающееся с “<h3 class=”title”>”  и заканчивающееся на “<div align=”right”>”, где содержится непосредственно сам текст новости и её заголовок. На выходе этого модуля имеем:

Yahoo-pipes-loop

Вообще модуль Loop циклически перебирает каждый item rss-фида, применяя к его элементам какие-то модификаторы или производя определенные действия с данными. Внутри Loop вы можете размещать модификаторы строк или элементы из раздела Sources, для этого необходимо перетащить модуль непосредственно на Loop блок. При этом опция “emit result” – перезапишет заново все содержимое rss-ленты, а “assign results to” – направит вывод результатов в какой-то из item`ов, и не повлияет на существующие данные.

3. Rename — модуль переименования и копирования.

Чтобы на выходе получить RSS-фид нужно, чтобы он имел хотя бы 2 item`а: title (заголовок) и description (описание)… для их создания я и использую этот модуль копируя содержимое item`а content, полученного на выходе модуля Fetch Page, в item title, а затем переименовывая item content в item description… На выходе получаем фид с двумя item`ами, что нам и было нужно:

Yahoo-pipes-rename

4. Regex.

На выходе Rename мы получили фид с двумя item`ами которые  имеют абсолютно одинаковое содержимое, которое раньше являлось содержимым item`а content и включает как полный текст новости так и заголовок новости… Дальше нам нужно сделать так, чтобы item title содержал только заголовок новости, а item description содержал только текст новости без заголовка…  Вот тут мы и воспользуемся модулем Regex, который позволяет оперируя регулярными выражениями легко вычистить содержимое item`ов, оставив в них только нужный нам текст. Для операции “очистка” я задал в модуле Regex три правила:

  • заменить в item`е title:  “^<h3 class=”title”>([^<]*).*” на “$1”, где “$1” – это как раз то, что находится в первом выражении в круглых скобках; этим правилом я заменяю всё содержимое item`а title на то, что находиться в нем между “<h3 class=”title”>” и “<”, после чего в нем остается только текст заголовка новости, чего собственно мы и добивались…
  • заменить в item`е description:  “^<h3 class=”title”>[^<]*</h3>” на – “пустой текст”; этим правилом я просто затираю содержимое item`а description находящееся в нем между “<h3 class=”title”>” и “</h3>”, то есть убираю из него заголовок новости, который в описании новости мне не нужен…
  • заменить в item`е description: “</p>.*$” на “</p><div align=”right”><small>Источник-<a href = ‘http://allboxing.ru’>Allboxing.ru</a> </small></div>”; этим правилом я подписываю внизу каждой новости ссылку на её источник…

Кроме того, в модуле Regex для каждого правила у меня выставлены чекбоксы “s” и “i”. При необходимости могут быть выставлены чекбоксы “g”, “i”, “s”, “m” – это т. н. модификаторы:

  • “g” – если не выставлен этот чекбокс, то замена происходит только в одном (первом) вхождении (например, если вы хотите заменить в слове “мамашка” буквы “м” на буквы “к” и не поставите чекбокс, то заменится только первая буква и получится “камашка”, а вот с выставленным чекбоксом вы получите как раз то чего и ожидали
  • “i” – если этот модификатор используется, символы в шаблоне соответствуют символам как верхнего, так и нижнего регистра
  • “s” – если данный модификатор используется, метасимвол “точка” в шаблоне соответствует всем символам, включая перевод строк. Без него — всем, за исключением переводов строк. Этот модификатор эквивалентен записи /s в Perl.

Подробнее о модификаторах здесь.

Подробнее о регулярных выражениях здесь и здесь.

Итак на выходе после очистки item`ов получаем:

Yahoo-pipes-regex

… то есть получаем то что хотели – item title содержит только заголовок новости, а item description только текст новости без заголовка…

Originally posted 2010-01-31 16:44:50. Republished by Vancouver Web Design

Safari CSS хак

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


@media screen and (-webkit-min-device-pixel-ratio:0)

{
#div {margin-left: 10px;}
}

другой пример

<code>@media screen and (-webkit-min-device-pixel-ratio:0) {
 .b-hat .b-login-box .b-field input {
 width: 110px;
 }
 }</code>
<code>

У кого какие идеи по этой теме оставляем в коментах.

Originally posted 2011-03-14 23:12:00. Republished by Vancouver Web Design

CSS хаки для Internet Explorer

Продолжаем изучение хаков для Internet Explorer. Занимаясь html версткой приходится сталкиваться с багами IE. Появляется необходимость задания дополнительных инструкций CSS. Такие инструкции часто называют хаками. Вот примеры инструкций для IE свойства height:

* height: 10px; /* этот CSS хак увидит только IE */

_height: 10px; /* эту инструкцию воспримут только IE 5.5 и IE 6.0 */

_heig\ht: 10px; /* а этот CSS хак увидит только IE 6.0 */ 

Примеры хаков IE для свойства display:


_display: none;

_disp\lay: block; /* только IE 5.5 не отобразит блок */ 

На самом деле CSS хаки это плохо, так как код не проходит валидацию. Если Вам хочется, чтобы код был валидным, используйте условные комментарии.

Originally posted 2010-05-13 15:07:17. Republished by Vancouver Web Design

Yahoo Pipes — Убираем тэги

Все тэги можно удалить выражением типа <[^>]*>, и галкой на глобальной замене (g).

P.S. Для удаления тегов помимо <[^>]*> ещё подойдёт выражеие <.*?>
P.S. Если бы я записал <.*>, тогда будет так, как ты говоришь, потому что звёздочка — прожорливый квантификатор. Если же мы добавляем знак вопроса <.*?>, то мы искусственно убираем прожорливость и заставляем звёздочку жрать как можно меньше.

Originally posted 2010-02-03 20:24:05. Republished by Vancouver Web Design

Список поисковых систем 2

Русскоязычные поисковики: Яндекс (Yandex), Гугл (Google), Рамблер (Rambler), gogo (mail.ru), Aport, Nigma, Черепаха (Turtle), MSN.LiveSearch, Webfind, Yottos, Эй.Ру, Codavr, Яху (Yahoo!).

Русскоязычные региональные поисковики: Мета.

Русскоязычные поисковики (для блогов): Яндекс.Блоги, Гугл.Блоги.

Зарубежные поисковики: Alexa, Scrub The Web, SearcНramp, Coil, NetSearch, Netscape, Altavista, AOL, search, ASK, unasked.com, admcity.com, searchwho.com, Axxasearch.com.

Бета-поисковики: bing.com, (он же ru.msn.com),  wolfram.com.

Из зарубежных поисковиков интерес представляет в основном Alexa — рейтинг сайтов в интернете — из-за свего рейтинга (рейтинги выдаются также поисковыми системами Гугла — ПР (PR) и Яндекса — тИЦ (CY), называемыми на жаргоне ВМ — пузомерками).

Originally posted 2010-02-02 22:11:31. Republished by Vancouver Web Design

Буржуйские RSS каталоги

В основном в базе англоязычные каталоги.
Кроме каталогов в базе присутсвуют несколько ссылок для пинга
(например, technorati.com) + есть какой-то сервис для массового пинга +
возможно еще что-нибудь подобное. Отбирал все сам, проверял руками.
Толк от базы конечно же есть, даже для русскоязычных сплогов.

Вот сама база:

http://www.2rss.com/index.php
http://www.religious-podcasts.net/submitrss.php
http://www.myrss365.com/submitrss.php
http://job-feeds.net/submitrss.php
http://66.39.28.229/submitrss.php
http://64.130.24.166/submitrss.php
http://66.39.152.64/submitrss.php
http://216.92.132.204/submitrss.php
http://216.92.26.114/submitrss.php
http://216.146.213.87/submitrss.php
http://www.realty-feeds.net/submitrss.php
http://www.videocasting-station.com/submitrss.php
http://government-central.com/submitrss.php
http://www.medical-feeds.com/submitrss.php
http://www.educational-feeds.com/submitrss.php
http://www.sports-feeds.com/submitrss.php
http://www.podcasting-station.com/submitrss.php
http://www.security-protection.net/submitrss.php
http://political-humor.net/submitrss.php
http://www.finance-investing.com/submitrss.php
http://www.rsslock.com/submitrss.php
http://www.blogdigger.com/add.jsp
http://blogstreet.com/bsibin/add.cgi
http://www.rssbuffet.com/submit.php
http://www.feedbase.net/Add.php
http://www.rssmotron.com/feed_submission.php
http://www.octora.com/add_rss.php
http://www.swipp.com/add_rss.php
http://www.rssmicro.com/feedsubmit.web
http://rss-feeds-submission.com/RSS/l_op=Addrss.html
http://automotive-links.mustangv8.com/RSS-directory/RSS/l_op=Addrss.html
http://photopress-spain.com/RSS/l_op=Addrss.html
http://www.annuairerss.info/RSS/l_op=Addrss.html
http://www.labview.pl/RSS/l_op=Addrss.html
http://www.aspin.com/func/addres/rss-support
http://www.codango.com/asp/fnc/addres/rss-support/
http://www.411asp.net/func/addres/rss-support
http://www.sarthak.net/blogz/add.php
http://ngoid.sourceforge.net/sub_rss.php
http://www.leighrss.com/rss-add.html
http://feedfury.com/submit
http://www.newsmob.com/index.php?m=c
http://www.rss-verzeichnis.de/anmelden.php
http://rssxpress.ukoln.ac.uk/
http://4guysfromrolla.aspin.com/func/addres/rss?cob=4guysfromrolla
http://www.devasp.com/search/AddRSS.asp
http://www.feeds.com.br/index.php?ax=add
http://demohost.net/rssdirectory3/addfeed.html?catid=59
http://www.weblogalot.com/Ping/
http://www.feedsubmitter.com/
http://www.goldenfeed.com/AddFeed.aspx
http://www.technorati.com/ping
http://search.yahoo.com/mrss/submit
http://www.blogbunch.com/suggest/
http://www.searchforvideo.com/misc/submit.php
http://findrss.net
http://www.solarwarp.net/submitrss.php
http://directory.eponym.com/blogs/new
http://www.blog-directory.org/add-blog.php
http://www.feedboy.com/addfeed.html?catid=
http://feedshark.brainbliss.com/
http://www.blogs.com/submit
http://www.theblogresource.com/submit.php
http://www.blogarama.com/add-a-site/
http://www.lontechltd.com/modules.php?name=Multiheadlines&rss=SubmitRSS
http://www.bloglisting.com/addablog.html
http://zir.it/submitrss.php
http://www.rsselectronics.com/submitrss.aspx
http://www.phpldnews.com/demo/live/submitrss.php
http://www.rsspodcastdirectory.com/submitrss.php
http://www.ourchristianplace.com/news/submitrss.php
http://www.sales.com.sg/news/submitrss.php
http://www.worldweatherdirectory.com/submitrss.php
http://www.blogadr.com/addablog.html
http://www.blogs-collection.com/submit/
http://www.spillbean.com/sug_url.php?cat_id=47
http://www.superblogdirectory.com/submit.php
http://www.hirank.com/semantic-indexing-project/census/index.html

Originally posted 2010-02-01 15:49:59. Republished by Vancouver Web Design

Ошибка 404 Создание Правильной Страницы

C помощью станицы 404 ошибки можно хорошо собирать трафик. По статистике 20-30% посещений приходится на страницу ошибки 404.
Сделай это можно несколькими методами.
Для начала вам конечно же нужно создать файл для ошибки 404(да и для остальных тоже не помешает), если вы конечно это еще не сделали.
Далее редактируем файл 404.php
Первый способ это просто редирект на главную или любую другую страницу. Делается это с помощью js кода.
Второй способ – можно выводить рекламу на странице ошибки. Полюбому кто-то клацнет :)
третий способ – вывод списка постов, может найдутся желающие просмотреть интересные посты.

Originally posted 2010-01-15 13:49:46. Republished by Vancouver Web Design

Плагины счетчиков для WordPress

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

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

Originally posted 2010-01-15 13:10:36. Republished by Vancouver Web Design

Удаление мусора в базе

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

Следующий этап это удаление всей информации, вернее мусора, с самой базы. Это можно сделать через phpmyadmin или специальными плагинами. Плагины можно найти на сайте вордпресса. Не рекомендую заниматься очисткой базы не опытным пользователям. Даже при наличии опыта необходимо сделать бекап базы(через phpmyadmin, ssh или другим способом)

Originally posted 2010-01-15 16:03:32. Republished by Vancouver Web Design

Создание сплогов на blogger.com (blogspot.com)

Автопостинг в blogger.com основывается на следующем: разработчики blogger.com ввели такую возможность, как публикацию поста на блоге путем отправки электронного письма на специальный адрес электронной почты (адрес этот устанавливается в настройках блога самим владельцем) — поэтому автопостинг тупо сводится к выполнению по расписанию скрипта, который будет отсылать на специальный адрес электронное письмо. Обратившись к гуглу можно найти пару версий скрипта, однако протестированные мной готовые варианты скрипта годятся лишь для чисто текстового контента — для полноценного HTML-контента с картинками они не подходят — не знаю как вам, но мне нужны сплоги, максимально приближенные к нормальным блогам. Скрипт я переделал под свои цели.

Скачать скрипт для автопостинга в blogger.com можно здесь. Естественно, источником контента служит любая RSS-лента.

Алгоритм по пунктам для создания сплога на blogger.com:

  1. Создаем учетную запись на gmail.com — поскольку blogger принадлежит google и является одним из его сервисов, то, чтобы начать пользоваться этим сервисом, нам необходим аккаунт на google, т.е. учетная запись электронной почты от google на gmail.com
  2. Заходим на blogger.com и авторизируемся под созданным на gmail аккаунтом.
  3. Создаем блог — на одном аккаунте можно создавать много блогов, конечно же это чревато тем, что могут забанить все сплоги на этом аккаунте разом, но тем не менее я создаю 25-50 сплогов на одном аккаунте. Для генерации названий/адресов я пользуюсь сервисом для подбора доменных имен, вот один из них
  4. Идем в настройки созданного блога, переходим на вкладку “Электронная почта”, затем “Адрес электронной почты Blogger” — видим что-то типа этого “aaaqe0.[ПУСТОЕ ТЕКСТОВОЕ ПОЛЕ]@blogger.com” — в пустое тектовое поле пишем любое слово, я чтобы не запутаться пишу первую часть из адреса соданного блога, например, если аlрес блога http://testsplog.blogspot.com, то в пустое текстовое поле прописываем testsplog — жмем Сохранить настройки. Полученный адрес электронной почты это и есть тот самый специальный адрес, куда мы будем слать наши письма с постами.
  5. Дальше переходим в макет и добавляем модули для adsense/вставляем в HTML шаблона любой свой код — в общем, обвешиваем наш сплог инструментами для его же монетизации. Поскольку сплогов мы будем делать много, то конечный вариант шаблона мы сохраним к себе, дабы потом просто подсовывать его для вновь создаваемых сплогов. Например, в своем шаблоне я удаленно вызываю javascript-код — сам код прописан в .js файле, который расположен на одном из моих доменов — в итоге, извенив только лишь этот .js файл я смогу весь трафик с 1000 сплогов направить куда захочу.
  6. Теперь переходим к редактированию скрипта для автопостинга: прописываем в нужном месте Специальный адрес электронной почты ну и адрес подготовленного заранее источника контента — контент вы подбираете по мере своих сил и способностей.
  7. На своем платном или бесплатном хостинге создаем задание Cron для запуска нашего скрипта по расписанию — я запускаю скрипт примерно каждые 2-3 часа, т.е. получается около 10 постов в сутки. Если вы планируете обзавестись не одной тысячью сплогов на blogger.com, то советую вам подобрать качественный хостинг, ибо не каждый хостинг справится с задачей запуска 1000 и более скриптов каждые 2 часа.
  8. Ну и последнее, желательное, но не обязательное: неплохо бы хоть как-то и хоть немного проспамить наши сплоги. Сплоги лучше всего спамить по каталогам RSS-лент/RSS-каталогам — для этого я использую программу RSS Submit — очень простая программа, требующая от вас только ввода адреса вашей RSS-ленты, в арсенале программы около 50 каталогов, по которым ваша RSS-лента прогоняется на полном автомате. Скорость прогона:  с моим ADSL-подключением к интернету на 1Mb/s за ночь прогоняется около 250 RSS-лент. Программа платная, версию с лекарством берите здесь.

Увы, без Cron тут не обойтись. И без платного хостинга скорей всего тоже. Что прописывать в самом Cron — это разбирайтесь с администраторами хостинга, у каждого хостера свои пути до php, да и панели управления разные — или же ищите в google.

По поводу бана сплогов на blogger.com: у меня еще не было опыта создания большого количества сплогов на одном аккаунте, поэтому сказать ничего не могу. Но слоги, созданные по одной штуке на аккаунт, живут уже больше года.

Результатом эксперимента я доволен. Изначально мной был поставлен вопрос: смогут ли 1000 сплогов на blogger.com давать хотя бы 1000 хостов трафика в сутки? мои сплоги, будучи только запущенными, уже дают под 5000 хостов.

Originally posted 2010-02-03 01:39:22. Republished by Vancouver Web Design