Analitycs

суббота, 3 декабря 2011 г.

Как сделать sharding картинок в PHP между несколькими серверами?

Сегодня небольшой хак - боюсь, что скоро их будет тут больше, чем методически грамотных решений. ;-(

Когда вам нужно разшардить картинки/статические ресурсы по разным поддоменам для ускорения загрузки - можно использовать очень-очень грязный хак.

Дано

4 поддомена:
  • http://st1.xxx.ru
  • http://st2.xxx.ru
  • http://st3.xxx.ru
  • http://s4.xxx.ru
По ним и нужно раскидывать превьюшки - особенно это актуально, когда их много на страницах.

Функция получения url для превьюшки картинки после небольшой доработки выглядит так

 public function thumb_url($file = false) {
  $path = $this->path_by_file($file);
  $url = CMS_URL.'/'.$path.'/thumbs/'.$file;
  
  $key = md5($url) & 3;
  
  $static_url = 'http://st'.($key+1).'.xxx.ru/'.$path.'/thumbs/'.$file;
  
  return $static_url;
 }

Чем плох этот вариант?

В случае если добавится еще сервер, то из-за изменения функции распределения - пропадут все кеши у пользователей - и все картинки будет грузиться заново. Неприятно, но несмертельно.

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

Короче - не делайте так.

А как правильно?

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

Секс в Skyrim: поисковики веселят

"Читал перед сном статистику посещений блога, долго думал" (с)

Ключевые слова для поиска

  • cannot use object of type example as array
  • fatal error: cannot use object of type stdclass as array
  • innodb_file_per_table что это
  • innodb_table_per_file
  • macos 10.6.8 зимнее время
  • rake time:zones moscow time zone 2011
  • как исправить время в snow leopard
  • посмотреть соедтнения netstat
  • распространение app с dylib
  • секс в skyrim
Сильно задумался... ;-)



вторник, 29 ноября 2011 г.

Как включить показ ошибок PHP в браузере?

Классический вопрос всех похапешников - "как показать ошибки PHP скрипта в окне браузера"

error_reporting(E_ALL);
ini_set("display_errors", 1);

P.S. Причем сам постоянно забываю, как точно пишется эта конструкция - особенно после переключения с языка на язык. Ненавижу переключать контекст мозга ;-)

четверг, 24 ноября 2011 г.

Почему не любят SEOшников?

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

Как и везде - люди бывают разные, но похоже, что ни одна профессия не вызывает такой нелюбви, как SEOшники.

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

Причин подобной нелюбви много, перечислю основные.

1) Маленький возраст бОльшей части сеошников

Когда 14 летний парень начинает строить из себя специалиста по SEO, SMM и контекстной рекламе, имея за душой один мелкий бложик и 20 фидов в ГуглоРидере как источник знаний - это еще ладно, допустим.

Но ведь это только начало, "возраст - это единственный недостаток, который проходит сам по себе - со временем" (с)

Дальше начинается - хуже.

2) Неумение писать и нежелание это делать

Знаете, что я больше всего ненавижу в сети? Копи-паст и рерайт, в который воткнуты реферральные ссылки. Если тебе нечего сказать/написать - так может - не стоит и браться?

Что, денег захотелось? Ну так иди работай - пиши, рисуй, код лабай, точи на заводе что-нибудь, переводи что-нибудь на худой конец - но не засирай интернет копи-пастой, пожалуйста.

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

Да и своего времени хотя бы пожалей - уж если чужого не жалко.

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

3) Вопиющий непрофессионализм/профанация

Чем больше человек знает, тем меньше в нем уверенности, что он знает много. Обратное - верно Как не почитаешь очередного мегасеошника - знает все обо всем, правда - преимущественно по другим блогам ;-)

4) ТИЦедрочерство

Простите мой французский, это вообще смешно. Будете писать интересно - будут ссылки, будет трафик, будет ТИЦ.

5) Нарушения причинно-следственной связи - ярко выраженный "культ карго"

Когда я смотрю якобы аналитическую статью, в которой человек пишет про исследования CTR объявлений Яндекс-Директа, основываясь на данных порядка 600 показов до изменения и потом 600 показов после...  вот именно тут хочется биться головой о стену...

Потому что финальный вывод  - "вот CTR подрос, значит мое предположение верно - все делайте как я"... Неверен в принципе!

Мальчики и девочки!

На статистических данных меньше 100 000 показов любые псевдоаналитические построения - пустая трата времени. Туева хуча случайных и неучтенных вами факторов полностью уничтожают всякую логическую конструкцию - там могло произойти все что угодно

Вот, например:
 * в прошлый раз пришло 3 человека с английских IP, которые вообще ни фига не понимают по-русски - зачем им кликать?
* и вообще - таки показалась ли подобным людям реклама?
* время в которое смотрели? Из дома или с работы? Параметры поведения - разные
* с каких устройств ходили люди?
* что это были за люди? Гики рекламу почти игнорируют, в отличии от простых людей...

И так далее - продолжать набор таких факторов можно почти до бесконечности.

Вы все это учли? - Нет? Ну так значит грош цена вашим подобным исследованиям.

Единственная возможность как-то нивелировать подобные нюансы - брать длительные промежутки времени и большое количество показов. Ну не 600 же штук!!!

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

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

Уф, "доклад окончен" (с) - сегодня что-то прорвало.



Как сделать автодополнение git в MacOS X?

При установке git возникает ошибка и автодополнение не работает

-bash: __git_ps1: command not found

Лечение (работаю со SnowLeopard)

Ставим MacPorts из .dmg, затем в консоли

$ sudo port selfupdate
$ sudo port install git-core +bash_completion

Если нужна дополнительная работа с SVN и docs, вторую строчку заменяем на:


$ sudo port install git-core +bash_completion +doc +svn

Затем добавляем в ваш ~/.profile или ~/.bash_profile:

# MacPorts Bash shell command completion
if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

среда, 23 ноября 2011 г.

Как распаковать содержимое rpm-пакета?

Довелось недавно устанавливать дополнительный софт на одну виртуалку со сломанным дистрибутивом. Предыдущий админ воткнул посторонние пакеты, переломав зависимости. Так как надо было поставить обычную софтинку на PHP - решил просто расковырять RPM пакет.

Обычный rpm-пакет - это архив формата cpio вместе с некоторым набором метаданных.

Распаковать его можно

# rpm2cpio package.rpm | cpio -dimv

Параметры и флаги



  • имя rpm-файла, который необходимо распаковать и перенаправить вывод на архиватор cpio.
  • -i - распаковать архив,
  • -d - сохранить структуру директорий.
  • -v - вывести список распакованных файлов,
  • -m - наследовать даты модификаций извлекаемых файлов.
  • PHP - хак быстрого логгирования в файл


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

    Это дополнительный метод в класс (или просто - функция) с минимальным количеством кода.

       function log($msg) {
           file_put_contents(SUPER_CMS_ROOT_PATH.'/cache/php-debug.log',"\n".$msg, FILE_APPEND);
       }
    

    Соотвественно, после отладки ее можно либо убить, либо оставить, закомментировав содержимое.

    P.S. И да -про некошерность данного метода и недопустимости этого при учете всех методик программирования - я в курсе, не нужно возбуждаться. ;-)
    Просто нужно пофиксить и отладить - БЫСТРО.