Архив рубрики: Разработка и кодинг

Как делать почтовую рассылку — 10 советов

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

Парадокс состоит в том, что лучшие сыщики получаются из преступников. Поэтому делая даже делая самые «белые» почтовые рассылки (так называемый директ-мейл), нужно знать как рассылать спам.

Крупные спаммеры не пользуются «наборами юного спаммера». Те товарищи, которые заливают отборными помоями наши почтовые ящики арендуют бот-сети, покупают оптом почтовые аккаунты и имеют инсайд с почтовых серверов. Те что поменьше — арендуют виртуальные сервера на абузоустойчивых площадках и пользуются более распостраненными программами для рассылок.
Читать далее

Оптима’s RSS

feed-icon-28x28.pngСделал себе RSS-канал новой музыки что выкладывает в локальный доступ провайдер. Дабы не караулить новинки на сайте. Со списком url’ов, чтоб сразу в качалку.

Конверсия парсера. Нефиг ему пылиться.

Будет интересно только клиентам Оптимы:

I, Parser. Как я пиратствовал. Я, Парсер

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

На этот раз все прошло существенно быстрее и комфортнее.

Работа закончена и теперь я с чистой совестью и полными карманами, отдаю в хорошие руки набор пирата. Почти новый.

Набор включает:
1. Человека с прямыми руками и со знанием PHP и регулярных выражений.
2. Сервер или локальную машина с апачем+пхп+mysql, подключенную к безлимитному каналу.
3. Скрипт загрузки индекса необходимых страниц и скрипт загрузки самих страниц.
4. Парсер, вытаскивающий нужные данные из выкачанной кучи мусора.
5. Красивый шаблон для оформления результатов. Excel, xml, csv или html.
6. Ну и какой же пират, без попугая-матершинника и черной повязки на глаз.

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

При загрузке данных все решается просто — через curl. Пока админы пьют пиво — качаем все в один поток, с одного IP, без refferer, с простым User agent. А пока они допьют — все ихнее золотишко уже у нас. Хе-хе.

Пункты 3 и 4 комбинируются по ситуации. Все скрипты можно объединить в один большой цикл с одновременной выкачкой-парсингом. Если база маленькая то лучше так и поступить.

Самое трудоемкое во всем этом — написать регулярное выражение и исправить в нем все ошибки. Дальше — дело техники.

И… соблюдайте копирайт! :)

Трансляция RSS. Технические вопросы

Созданный прежде RSS поток начал транслировать на открытые платформы.

Уже при эксплуатации потока появилось неожиданное ограничение. Информации на вход RSS-потока подается больше, чем тот может экспортировать. Экспорт выставлен в 30 записей (кто сказал, что робот не может подавиться?) и 6 часов обновления. Поначалу казалось этого будет хватать с запасом. Но специфика подаваемой информации оказалась таковой, что несколько дней ее может не быть вообще, а потом создается сразу пол сотни записей.

Поэтому придется в скрипт добавлять отложенную публикацию, публикуя посты с задержкой для роботов. Ну и для приличия. Ведь 50 постов за 2 секунды, а потом трое суток молчания — это как-то… ненормально.
Лучше реже, но регулярно ;)

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

И как оказалось, удобных открытых платформ для трансляции, вроде beta.ya.ru, можно пересчитать на пальцах. Но это уже другая история.

P.S. Да, да, проще купить ссылок на сапе :)

Красота кода и структуры

…красота кода и структуры — разговор отдельный.

С одной стороны красота это по большей части ООП-шные рюшечки с тоннами формальных деклараций и тормозящий код.

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

И компромисс — где-то посередине. И поиск его — весьма мучительное занятие.

RSS старт. Google sitemap — на очереди

This is a valid RSS feedRSS-канал (фида, лента, эрэсэс — нужное подчеркнуть) — создана, запущена в автоматическом режиме и опубликована.

Хотя у меня до сих пор недуомение по поводу необходимости замены html specialchars (&,>,<,’,»)  самих html tags внутри xml. Модуль работает с стандартным пространством имен RSS 2.0 плюс dc. Намеренно пропустил разве что проработку атрибутов enclosure, это пока незачем. Валидатор светит зеленым и это хорошо.

Есть большая надежда в то что лента повлияет на оперативность включения новых страниц. Во всяком случае в самых ближайших планах — google sitemap. Хотя кто придумал так называть список страниц сайта? Это определенно siteindex, а не sitemap. Поскольку карта на то и карта, что должна содержать структуру. В данном случае — сайта. Ведь в простейшем случае все эти sitemap’s — только список страниц тупому роботу, который почему-то кладет на под полку большую часть страниц.

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

Но красота кода и структуры — разговор отдельный…

Работа. Вкалываем потихоньку

Гугл практически перестал есть новые страницы сайта. Терзают смутные сомнения. Делаю rss ленту новых страниц. На очереди sitemap.

Кстати о RSS. Два года назад разбирался в формате (2.0) и написал модуль для создания. Тогда тема не особо пригодилась, хотя все еще используется. Вечер доработки и модуль с админкой встали под новый движок. От кошерного RSS с юникодом отказался ввиду возни с перекодировкой. Сейчас остро стоит вопрос времени.

«Изменились» приоритеты развития. Теперь в спешном порядке подключаю магазин к порталам. Для начала bigmir.net, на очереди объявления в ПС. С рекламой в ПС — идея плохая, но пока рекламный бюджет не откусил кусок больше прибыли — идея хорошая.

По мере работы копирайтер(ов) появляются факты плагиата и случаи успешной борьбы с ними. Пока что несистематической. Но об этом я еще напишу пост. А пока — вкалывать! :)

Перераспределение PR в ссылках меню

Проводя поиски истины о SEO-значении атрибута title у изображений и ссылок, наткнулся на одну старую статейку — «Растолкованный Pagerank» в переводе А. Садовского. Статейка припала толстым слоем пыли, а перевод скажем так не блистает качеством. (Старая моя учительница английского назвала бы это калькой. Поэтому переводчику ни малейшего спасибо) Так вот статья написана в стиле «for dummies», тем не менее, простота эта оказалась полезна для формализации моего понимания способов перераспределения PR.

Рекомендую, классика.

В тот же день, под впечатлением, слегка доработал движок, добавив возможность ссылкам меню иметь атрибут rel=nofollow. И соответственно еще больше перераспределил PR на страницах сайта. Ранее же это делалось вручную. Теперь можно выставить nofollow для сквозных ссылок на страницы вроде «О нас», «Контакты», разных справочных страниц и pdf-/xls- прайсов. Только не забыть оставить пару индексируемых ссылок на такие страницы.

Блуждая в трех березах

Всегда, выстраивая логику из трех переменных, вспоминаю своего преподавателя физики. Помню, любил при случае поговаривать, мол с двумя величинами в задачках разбираемся, а в трех березах — заблудились. И по-доброму так посмеивался. :)

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