Parser, keep-alive и mod_gzip

August 27th, 2009 Begemot

Говорили мне люди нефик пользовать “малоизвестные” технологии, когда есть годами проверенный php, но с другой стороны php мне не нравится, а вот парсер очень даже по вкусу. Хотя кто знает, где бы я отгреб больше проблем:) Вот сегодня нарвался на новую.

Решил попробовать Google Website Optimizer, пытаюсь создать тест, ввожу урлы страниц на сайте – гугл говорит, что не может их найти. И так для всех страниц на основном хостинге, сайты на других хостингах - работают. Грешил на хостинг, на днс, месяц назад переезжал на новый хостинг, на гугл….

Потом набрел на сервис просмотра заголовков, опытным путем нашел закономерность – для всех проблемных сайтов в режиме http 1.0 \ connection Keep-Alive – выдает timeout… :( Опять подумал на хостера, провел сайты знакомых на нем же – все ок. Потом озарило – скормил сервису урл форума – работает. Значит дело в парсере.

После поисков в гугле вышел на этот пост, прочел до конца увидел внизу урл и офигел – сообщение писал я четыре года назад :) Почитал ответы, там нашлось решение – прописать в .htaccess

mod_gzip_on No

Теперь все работает. Какими однако извилистыми путями иногда находится правильный ответ, и если бы не цепь удачных случайностей и не нашел бы.:)

Кстати все чаще, после каждой проблемы с установкой\настройкой\багами, задумываюсь не перейти ли на схему когда движок сайта локально собирает статический html…

p.s.  Парсер все равно не брошу, потому что он хороший:)

UPDATE: про http 1.0 и connection Keep-Alive погорячился, проблема наблюдается при любом запросе, в частности при использовании http 1.0


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Через тернии к деньгам и лицензии

August 20th, 2009 Begemot

Никогда не думал что такое случится.
Но иногда случаются странности, недавно одна фирма захотела купить 5 лицензий, спросили quote, спросили W-9. А потом говорят - что платить могут только напрямую мне. Типа покупать через Плимус или Авангейт им юридический отдел не позволяет...

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

В общем спустя месяца полтора переписки пришел мне чек Feedex'om. Имя на конверте перевранно, а на самом чеке отсутствует вообще, есть только название "компании". Был уверен, что не смогу обналичить, но вчера все таки удалось сдать в Приват после уговоров (в других банках не приняли), хотя сказали что могут и тут завернуть. Теперь посмотрим что из этого выйдет в итоге.

А все-таки странно чего это вдруг серьозная контора не может купить через регистратора...


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


О безопасном приведении типов

August 3rd, 2009 Begemot

Семь раз отмерь - один отрежь (с)

Ну или вернее о той ерунде которую я сегодня написал.

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

Первое что приходит в голову - dynamic_cast<>(), читаем что бы освежить запас мудрости:

Безопасное приведение по иерархии наследования, в том числе и для виртуального наследования.
dynamic_cast(base_class_ptr_expr)
Используется RTTI (Runtime Type Information), чтобы привести один указатель на объект класса к другому указателю на объект класса. Классы должны быть полиморфными, то есть в базовом классе должна быть хотя бы одна виртуальная функция. Если эти условие не соблюдено, ошибка возникнет на этапе компиляции. Если приведение невозможно, то об этом станет ясно только на этапе выполнения программы и будет возвращен NULL.
dynamic_cast(base_class_ref_expr)
Работа со ссылками происходит почти как с указателями, но в случае ошибки во время исполнения будет выброшено исключение bad_cast.

Спасибо Алёне, там же читаем и про остальные возможности приведения типов в c++.

dynamic_cast<>() приведение конечно безопасное, но wParam в XXX* преобразовывать оно разумеется не хочет, не компилится. Выкрутился следующим образом, благо у меня был базовый класс:

XXXBase  * t = reinterpret_cast<XXXBase*>(wParam);
XXX * p = NULL;
try
{
   p = dynamic_cast<XXX>(t);
}
catch(...) {}

if (p)
{
// all ok...
}

Абсолютно не представляю насколько это идеологически правильно, переносимо или хорошо, скорее всего неправильно, криво и непереносимо:). Но у меня работает, почему dymamic_cast кидает исключение вместо того что бы вернуть NULL, я правда не понимаю, но практика (Visual Studio 2008) показывает что так и есть.

Тестировалось передачей 0 в качестве wParam и заменой первой строчки на

int * tt = new int(4);
XXXBase  * t = reinterpret_cast<XXXBase>(tt);

Все ок - исключение ловится, замалчивается, указатель остается нулевой.


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Как обезопасить свой adsense аккаунт

July 22nd, 2009 Begemot

Сегодня мелькнул рецепт в сврус, спасибо Олегу Афонину. И я как порядочный человек, в полном соответствии с концепцией GTD или какой другой системы, решил что раз это можно сделать за 5 минут, то зачем же отладывать?

В двух словах в Adsense предусмотрен механизм защиты от подстав со стороны third-party товарищей или сайтов - можно разрешить показ объявлений только на ваших проверенных сайтах. Таким образом если кто-то тупо заимствует ваш контент\сайт вместе с кодом адсенса и крутит на "плохих" сайтах - вы уже как бы и не причем.

В общем логинимся в свой аккаунт адсенс, дальше AdSense Setup -> Allowed Sites (Настройка Adsense -> Разрешенные сайты). Выбираем "Only allow certain sites to show ads for my account" ("Разрешить только определенным сайтам показывать объявления для моего аккаунта") и вбиваем в текстовое поле список всех своих сайтов.

Тут главное ничего не забыть :) Потому как если сайт забудете - объявления показываться будут, но засчитаться вам нет. Ну и второе не забыть об этом при создании нового сайта.

И помните это занимает меньше 10 минут!
Почему 10 а не 5? Потому что пришлось пройтись по всем ftp и заглянуть к регистратору чтобы быть уверенным что ничего не забыл. Заодно и auto-renew отключил для пары сайтов.


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Старый домен никому не нужен?

July 19th, 2009 Begemot

Чтобы купить что-нибудь ненужное, нужно

сначала продать что-нибудь ненужное (с)

Никому старый домен не нужен, для всяких разных дел ?:)

Есть http://small-helpers.com/. ПР =  0 (упал с 4ки по-моему), народу примерно 300 в месяц, денег нету, но зато возраст 3 года:) Если кому надо, отдам за маленькую постоянную ссылку в  футере, единственное условие не для дорвеев и прочей нечисти.


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Рутина, вирусы и автосабмит

July 15th, 2009 Begemot

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

Comodo scaner нашел сотню подозрительных объектов и ничего серьезного, cureit как назло лежит. Вот сижу думаю, чо делать. Снести бы все нафиг и 7ку поставить, вот это было бы правильно – да времени нету.


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Следите и воздастся вам

July 11th, 2009 Begemot

Народ не в курсе, что на свете есть нейтрино,

И дуализм корпускулярно-волновой (c)

Недавно google reader принес мне в клюве полезную запись, повествующую, о том как использовать поиск твиттера для отслеживания упоминаний о своем продукте. Я сразу добавил, теперь отслеживаю, иногда упоминают:) И вы тоже можете

http://search.twitter.com/search.atom?q=product+name

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

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

http://blogs.yandex.ru/search.rss?text=product

все туда же, в rss читалку.

P.S. если вдруг тут есть севастопольцы или крымчане, или просто сочуствующие - выскажитесь про Севастополь.


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


глупый вечерний лог

July 9th, 2009 Begemot

Пришел с работы усталый

Пришло письмо от юзера, по дохлому продукту

Письмо бессмысленное, типа “круто, всегда хотел учить английский, инновации это хорошо”

Вопроса нет, что отвечать неясно, хотел забить

Решил что все-таки не стоит, написал “спасибо за комментарий”

Через 20 минут ордер.

Ляпота.

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


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


Шароварка в Ахтырке

June 25th, 2009 Begemot

Первая традиционная восточно-украинская шароварка в Ахтырке. Хотя шароваркой это назвать трудно - шаровару почти не обсуждали, тайн не открывали:) Все было ближе простой к встречи компанией на природе с шашлыками...

Приехали, посидели, пообщались, выпили, закусили, покупались на речке - красота:)

Больше рассказывать особо нечего, зато есть много фотографий, фотографировали все кому нелень - Карполан, Максим Рева, Сергей Кравченко и Вячеслав Колдовский, ( оказывается уже все фотки залили на сайте swrus'a)

Особое спасибо Сергею за организацию мероприятия и Жене за организацию неорганизованных.


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.


TrialPay жжот

June 21st, 2009 Begemot

Получил ордер с trialpay’a, мне перепало $36 - двойная стоимость обычной лицензии, радует:)


Если вам понравился этот пост вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.