Конкурс от ag.ru

08.09.2011

Читая рецензию на Deus Ex: HR (кстати классная игра всем советую) наткнулся на конкурс рабочих мест от Absolute Games. Просмотрев список участников мелькнула мысль, что у меня не хуже, и недолго думая загрузил недавно сделанную фотографию своего рабочего места.

Сама фотография сделана для экспиремента со съемкой в HDR. Ну и раз уж решил поучаствовать было бы глупо не попросить пользователей моего сайта поддержать и проголосовать за мой снимок. Все что нужно сделать это зайти по ссылке – http://www.ag.ru/iclubby/36 и поставить 3 балла моему рабочему месту. Если возникли сложности – под катом раскажу подробнее.
Остальное

Обновил закладочник до 2.1.1

08.02.2011

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

Импорт статистики на бирже сайтов

08.12.2010

По моим наблюдениям самые частые комментарии на бирже сайтов это просьбы показать или открыть статистику. Продавец зачастую ничего не скрывает, но существует проблема если статистика закрыта и нет возможности предоставить к ней доступ широкой аудитории (пример – google analytics). Раньше в этом случае покупателям приходилось довольствоваться лишь устными заявлениями продавца либо скриншотами.

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

В итоге потенциальный покупатель на одной странице видит почти все начиная от показателей тИЦ, PR и заканчивая статистикой переходов по ключевым словам за месяц.

Ну и какой смысл сидеть в прошлом веке и покупать/продавать на форумах?

Скриншоты в анализе сайта

27.11.2010

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

Поддержка .РФ в панели вебмастера

25.11.2010

Ну вот как я и обещал появилась поддержка русскоязычных доменов в панели вебмастера. Правда пока не определяется число страниц в индексе яндекса (у него почему то не работает оператор site: с РФ зоной), но в остальном вроде работает. Честно говоря панель давно пора основательно переделать, чем возможно вскоре и займусь.

Система скриншотов на бирже сайтов

24.11.2010

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

Класс Cacher (специально для Тормоза)

22.11.2010

В очередной раз Тормоз устроил дичайший холивар в своем блоге.

Я туда боюсь заходить – зашибут ещё ненароком. Между тем, задача как мне кажется легко решается. Вот накидал за 10 минут:

  1. <?php
  2.  
  3. class Cacher {
  4.     // Время жизни кэша в секундах
  5.     public $timeout = 10;
  6.  
  7.     // Массив с кэшем (хранится в памяти т. к. это всего лишь пример)
  8.     private $cache = array();
  9.  
  10.     public function __call($name, $args) {
  11.         return $this->realCall($name, $args);
  12.     }
  13.  
  14.     public function call($callback) {
  15.         $args = array();
  16.         if (func_num_args() > 1) {
  17.             $args = array_slice(func_get_args(), 1);
  18.         }
  19.         return $this->realCall($callback, $args);
  20.     }
  21.  
  22.     private function realCall($callback, $args = array()) {
  23.         $cacheKey = $this->getKey($callback, $args);
  24.  
  25.         // Выводим из памяти если существует кэш и он не просрочен
  26.         if ($this->hasCache($cacheKey)) {
  27.             echo "From cache with love.<br/>\r\n";
  28.             return $this->getCache($cacheKey);
  29.         }
  30.  
  31.         $data = call_user_func_array($callback, $args);
  32.         $this->setCache($cacheKey, $data);
  33.  
  34.         return $data;
  35.     }
  36.  
  37.     // Генерирует хэш ключ для кэша :)
  38.     private function getKey() {
  39.         $serialized = serialize(func_get_args());
  40.         $key = md5($serialized);
  41.         return $key;
  42.     }
  43.  
  44.     private function hasCache($key) {
  45.         if (isset($this->cache[$key])) {
  46.             if ($this->cache[$key]->expire > time()) {
  47.                 return true;
  48.             } else {
  49.                 // Удаляем просроченный кэш
  50.                 unset($this->cache[$key]);
  51.             }
  52.         }
  53.         return false;
  54.     }
  55.  
  56.     private function getCache($key) {
  57.         return $this->cache[$key]->data;
  58.     }
  59.  
  60.     private function setCache($key, $data) {
  61.         $this->cache[$key] = (object) array(
  62.             'expire' => time() + $this->timeout,
  63.             'data' => $data,
  64.         );
  65.     }
  66. }
  67.  
  68.  
  69. ?>

И пример использования:

  1. <?php
  2.  
  3. require './Cacher.php';
  4.  
  5. $cacher = new Cacher;
  6.  
  7. // Через __call
  8. $cacher->file_get_contents('http://jeck.ru');
  9. $cacher->file_get_contents('http://jeck.ru');
  10.  
  11. class TestClass {
  12.     private $param = 'paramValue';
  13.  
  14.     public function testMethod($url) {
  15.         return file_get_contents($url);
  16.     }
  17. }
  18.  
  19. $testClass = new TestClass;
  20. // Через call что бы передать имя и метод класса
  21. $cacher->call(array($testClass, 'testMethod'), 'http://jeck.ru');
  22.  
  23. ?>

Ушлые спамеры

19.11.2010

Вот такое письмо сейчас прибыло на почту:

Здравствуйте!

Высылаю анкету на организацию рекламной кампании для Вашего сайта – jeck.ru

Пожалуйста, заполните необходимые поля и вышлите ее на Email: valimaster@yandex.ru

После чего, Вам будет предоставлен доступ к личному кабинету и счет для оплаты.

С уважением, Владислав.

По любым возникшим вопросам обращайтесь:
Телефон: +7 (495) 585-62-89
ICQ: 569775857

Надеюсь теперь их email и icq попадут в спам базы.

PR-CY теперь поддерживает .РФ

17.11.2010

Вот например – http://pr-cy.ru/analysis/президент.рф.
Анализ президент.рф
Кроме того весь анализ был полностью переписан, он стал гораздо шустрее особенно с учетом того что кешируется только контент самого сайта, а тИЦ и PR проверяются каждый раз заново.

Работа с AntiCaptcha

16.11.2010

Снова решил поделится удобной библиотечкой, на этот раз для наглого спама удобного прохождения CAPTCHA. Код лежит на assembla.
Пример работы с библиотекой:

  1. <?php
  2.  
  3. require './anticaptcha.php';
  4.  
  5. try {
  6.     // 5a2e55b49179066bc702342412cf5cbc - ключ AntiCaptcha
  7.     $ac = new AntiCaptcha('5a2e55b49179066bc702342412cf5cbc');
  8.  
  9.     // Задаем ограничивающие параметры
  10.     $ac->numeric = true;
  11.     $ac->min_len = 6;
  12.     $ac->max_len = 6;
  13.  
  14.     // Получаем каптчу
  15.     $captcha = file_get_contents('http://jeck.ru/labs/captcha');
  16.  
  17.     // Расшифровываем налету
  18.     echo "Start auto recognizing\r\n";
  19.     $code = $ac->recognize($captcha, true);
  20.     echo "Recognized code - ".$code."\r\n";
  21.     // Сохраняем каптчу в файл
  22.     file_put_contents('./captcha.png', $captcha);
  23.  
  24.     // Расшифровываем из файла
  25.     echo "Start file recognizing\r\n";
  26.     $code = $ac->recognize('./captcha.png');
  27.     echo "Recognized code - ".$code."\r\n";
  28. } catch (Exception $e) {
  29.     // Обработка исключений
  30.     echo $e->getMessage();
  31. }
  32.  
  33. ?>

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

И не стесняйтесь – подписывайтесь.

Старые записи →